GIS基础系列(一)-GIS数据及存储

一、GIS数据类型

1. 矢量数据(Vector Data)

矢量数据用于表示地理要素(如点、线、面),主要存储在以下几种格式中:

  • 点(Point):用于表示离散的地理位置,如城市、井、标志等。
  • 线(Polyline):用于表示线性地理要素,如河流、道路、电力线等。
  • 面(Polygon):用于表示封闭区域,如湖泊、建筑物、行政区划等。

存储格式:

  • Shapefile(SHP):一种常见的矢量数据格式,包含 .shp(几何)、.shx(索引)、.dbf(属性)。
  • Geodatabase(GDB/MDB):Esri 专有的数据库格式,支持复杂的拓扑关系和版本管理。
  • GeoJSON:一种基于 JSON 的轻量级地理数据格式,适用于 Web 应用。

2. 栅格数据(Raster Data)

栅格数据是以像素(像元)为基本单位的网格数据,每个像素具有一个值,适用于遥感影像、地形数据等。

  • 遥感影像(Satellite/Aerial Imagery):如卫星影像、航拍照片。
  • 数字高程模型(DEM):用于表示地形高程。
  • 栅格分类数据:如土地利用类型、温度分布等。

存储格式:

  • TIFF(GeoTIFF):支持地理坐标信息的 TIFF 文件。
  • JPEG2000:压缩栅格数据格式,适用于大规模遥感数据。
  • Esri Grid:Esri 专有的栅格格式,支持 GIS 分析。

3. 表格数据(Tabular Data)

表格数据用于存储与空间数据相关的属性信息,如人口统计数据、土地使用信息等。

  • 存储格式
    • DBF(Shapefile 伴随的属性数据)
    • CSV、Excel(可通过 ArcGIS 进行连接)
    • Geodatabase Table(存储在 GDB/MDB 中)

4. 网络数据(Network Data)

用于存储网络拓扑结构,如道路网、河流水系等。

  • Network Dataset(网络数据集):用于分析最短路径、最优路线等。
  • Turn Feature Class(转向特征类):存储交通规则,如禁止左转、单行道等。

5. 三维数据(3D Data)

ArcGIS 也支持 3D 数据,用于城市建模、地形分析等。

  • Multipatch:用于存储 3D 建筑模型,如 BIM 数据。
  • TIN(不规则三角网):用于表示高程数据和地形表面。
  • LAS(LiDAR 数据):用于存储激光雷达点云数据。

6. 时空数据(Spatiotemporal Data)

ArcGIS 也支持时间序列数据,主要用于动态变化分析,如气象数据、交通流量数据等。

  • 存储格式
    • 时空大数据存储(Big Data Store)
    • 时空表(Spatiotemporal Tables)

这些数据类型和结构构成了 ArcGIS 的核心数据管理体系,你可以根据具体需求选择合适的数据格式和存储方式。你对哪个方面更感兴趣,或者需要更详细的介绍?

二、矢量数据的存储

Shapefile 和地理数据库(Geodatabase)如何存储矢量数据

在 ArcGIS 中,Shapefile(SHP)地理数据库(Geodatabase, GDB) 都用于存储矢量数据,但它们的存储方式有所不同。下面分别进行详细介绍,并通过示例说明它们的存储结构。


1. Shapefile(SHP)的存储方式

Shapefile 的基本结构

Shapefile 是 Esri 提出的一种 矢量数据存储格式,主要用于存储点、线、面等空间数据。Shapefile 由多个文件组成,其中至少包括以下三个主要文件:

文件扩展名作用
.shp存储矢量几何数据(点、线、面等)
.shx存储几何索引,提高访问速度
.dbf存储属性表数据(数据库格式,dBASE 表)

额外文件(可选):

  • .prj:存储坐标投影信息。
  • .sbn & .sbx:用于空间索引,提高查询速度。
  • .cpg:用于指定 .dbf 文件的字符编码。
  • Shapefile 的额外文件

    除了 .shp(几何数据)、.shx(索引)和 .dbf(属性数据)外,Shapefile 可能包含以下额外文件:

    文件扩展名作用示例
    .prj存储投影坐标系统信息(WKT 格式)GEOGCS["WGS 84",DATUM["WGS_1984"],...]
    .sbn & .sbx空间索引文件,提高查询速度roads.sbn / roads.sbx
    .cpg指定 .dbf 文件的字符编码UTF-8 / GBK
    .xml存储元数据(Metadata),描述数据来源、创建时间等roads.xml

    示例:Shapefile 附加文件

    假设我们有一个 roads 道路数据的 Shapefile,它的文件列表如下:

    roads.shp → 存储道路的几何信息(线) 
    roads.shx → 索引文件,加速查询 
    roads.dbf → 存储属性信息(道路名称、长度等) 
    roads.prj → 存储坐标投影信息(WGS 84 / EPSG:4326) 
    roads.sbn → 存储空间索引(加速范围查询) 
    roads.sbx → 辅助 `.sbn` 文件 
    roads.cpg → 指定字符编码(UTF-8) 
    roads.xml → 存储元数据(如数据来源) 
  • .prj 内容示例(WGS 84 投影):
  • GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433]] 
  • .cpg 内容示例:
    UTF-8 
    这表示 .dbf 文件使用 UTF-8 编码存储文本数据。
  • 什么是 .sbn.sbx 文件?

    文件扩展名作用
    .sbn存储空间索引的二进制文件,主要用于 ArcGIS 进行空间查询
    .sbx.sbn 文件的辅助索引文件,提供额外的存储结构信息

    这些索引文件类似于数据库的B+树索引R-tree 索引,它们允许 GIS 软件快速定位和检索 .shp 文件中的几何对象,而无需逐个扫描。


    2. sbn & .sbx 索引的作用

    当你在 ArcMap 或 ArcGIS Pro 中执行空间查询时,索引文件的作用如下:

  • 点选要素:快速确定你点击的点是否落在某个面、多边形或线上。
  • 范围查询(Bounding Box Search):比如查询某个城市范围内的所有道路,索引能加速筛选符合条件的道路。
  • 缓冲区分析(Buffer Analysis):当你创建一个点的缓冲区时,索引帮助快速确定哪些要素可能受到影响。
  • 数据加载:当你打开 Shapefile 时,索引文件能加速渲染,提高显示速度。

Shapefile 的数据结构

Shapefile 的存储方式较为简单:

  • .shp 文件中,每个几何对象(点、线、面)以二进制格式存储,包含坐标信息(X, Y, 可能有 Z, M)。
  • .shx 文件是 .shp 的索引文件,存储了每个要素在 .shp 文件中的偏移量,方便快速检索。
  • .dbf 文件采用dBASE 表格格式,用于存储每个要素的属性数据,如“名称”、“面积”、“长度”等。

示例:Shapefile 的存储

假设有一个 "城市道路" 的 Shapefile 文件,包含 3 条道路:

ID道路名称长度(km)
1主干道A5.2
2次干道B3.8
3支路C1.5
  • .shp 文件:存储了三条线(Polyline)对应的坐标点,例如:
    线1:[(100, 200), (150, 250), (200, 300)] 
    线2:[(120, 180), (170, 220), (210, 260)] 
    线3:[(90, 160), (130, 190), (180, 210)] 
  • .dbf 文件
    ID | 道路名称 | 长度 -------------------- 
    1 | 主干道A | 5.2 
    2 | 次干道B | 3.8 
    3 | 支路C | 1.5 
  • .shx 文件:存储几何数据的索引,如:
    记录1:偏移量 0x000000 
    记录2:偏移量 0x0001F4 
    记录3:偏移量 0x0003E8 

Shapefile 适用于简单的矢量数据管理,但不支持拓扑关系,不支持大数据量存储。


2. 地理数据库(Geodatabase, GDB)的存储方式

Geodatabase 是 Esri 专有的数据存储格式,相比 Shapefile 更强大,支持复杂数据管理。

Geodatabase 的类型

ArcGIS 提供了以下几种 GDB 类型:

  • 文件地理数据库(File Geodatabase, .gdb):存储在文件系统中,支持大数据(最大可达 1TB)。
  • 个人地理数据库(Personal Geodatabase, .mdb):基于 Microsoft Access,文件大小上限为 2GB。
  • 企业级地理数据库(Enterprise Geodatabase, SDE):存储在数据库管理系统(Oracle, PostgreSQL, SQL Server 等)中,支持多用户访问。

Geodatabase 的存储结构

Geodatabase 采用表格存储,主要包括:

  1. 要素类(Feature Class):相当于 Shapefile,存储点、线、面等矢量数据。
  2. 要素数据集(Feature Dataset):包含多个要素类,并且可以共享拓扑规则。
  3. 关系表(Tables):存储额外的属性信息,可用于一对多、多对多关联。
  4. 拓扑(Topology):支持拓扑关系,如“道路必须连接在一起”。
  5. 网络数据集(Network Dataset):用于存储交通网络,如最短路径分析。

示例:Geodatabase 的存储

假设我们创建一个 城市基础设施 的 GDB,包含以下内容:

  • 要素数据集 "CityInfrastructure"
    • 要素类 "Roads"(存储道路)
    • 要素类 "Buildings"(存储建筑物)
    • 要素类 "Parks"(存储公园)
  • 表 "RoadAttributes"(存储道路额外信息,如限速、类型等)
  • 拓扑 "RoadTopology"(确保道路必须连接)

数据示例

1. "Roads" 要素类

ID道路名称长度(km)几何
1主干道A5.2LineString(100 200, 150 250, 200 300)
2次干道B3.8LineString(120 180, 170 220, 210 260)

2. "RoadAttributes" 关系表

RoadID限速(km/h)道路类型
160高速公路
240城市道路

3. "RoadTopology" 拓扑 规则:

  • 道路必须连接(防止浮动线段)
  • 道路不能自相交(防止错误数据)

Shapefile vs. Geodatabase 对比

特性Shapefile(SHP)地理数据库(GDB)
存储方式多个文件数据库(单文件或企业级存储)
属性存储.dbf 表格关系数据库
支持的数据类型仅点、线、面点、线、面、拓扑、网络、影像等
文件大小限制2GB(dBASE 限制)文件 GDB 可达 1TB
拓扑支持不支持支持拓扑规则
索引优化.shx 空间索引B+树索引,性能更优
多用户编辑不支持仅企业级 GDB 支持

总结

  • Shapefile 适用于小型 GIS 项目,存储简单的矢量数据。
  • Geodatabase 适用于大型 GIS 项目,支持复杂的关系、拓扑和大数据存储。

如果你需要管理大规模数据、拓扑规则、网络分析,建议使用 Geodatabase。如果只是简单的矢量数据存储和分享,Shapefile 可能更方便。

Geodatabase(GDB)的额外文件

1. 文件地理数据库(File GDB)

文件地理数据库(.gdb)是一个文件夹,内部包含多个系统文件:

CityInfrastructure.gdb → 地理数据库文件夹 
├── a00000001.gdbtable → 存储 Roads 要素类 
├── a00000001.gdbindexes → 索引文件 
├── a00000001.gdbspx → 空间索引文件 
├── a00000002.gdbtable → 存储 Buildings 要素类 
├── gdb.xml → 存储数据库元数据 
├── timestamps.gdbtable → 记录编辑时间 
├── freelist.gdbtable → 释放的存储空间 
  • .gdbtable:存储要素类和表的数据,类似 .dbf,但支持更复杂的数据类型。
  • .gdbindexes:存储属性索引,如道路名称索引。
  • .gdbspx:空间索引文件,提高查询效率。
  • gdb.xml:存储元数据,如投影信息、数据创建日期等。

2. 个人地理数据库(Personal GDB, .mdb)

个人地理数据库基于 Microsoft Access,是一个 .mdb 文件:

CityInfrastructure.mdb → Access 格式数据库 

可以使用 Access 或 SQL 语句 直接查询和编辑数据。


Shapefile vs. Geodatabase 额外文件对比

特性Shapefile 额外文件Geodatabase 额外文件
投影信息.prj存储在 gdb.xml
字符编码.cpg内部支持 Unicode,无需额外文件
空间索引.sbn / .sbx.gdbspx
属性索引.gdbindexes
元数据.xmlgdb.xml
文件存储结构多个文件(松散存储)统一存储在 .gdb 目录中

总结

  • Shapefile 依赖多个外部文件(如 .prj.sbn.cpg)来存储附加信息,文件管理较繁琐。
  • Geodatabase 采用统一存储格式,所有信息都包含在 .gdb 目录内部,数据管理更高效,支持索引优化、拓扑、版本控制等高级功能。


4. 适用场景

  • Shapefile

    • 适用于小型 GIS 项目,存储简单的矢量数据。
    • 适合数据共享(SHP 兼容性高,可用于多个 GIS 软件)。
    • 适用于 WebGIS 或移动端轻量级数据管理。
  • Geodatabase

    • 适用于大型 GIS 项目,支持复杂的拓扑关系、版本管理。
    • 适合存储 大数据(文件 GDB 最大 1TB)。
    • 支持多用户编辑(企业级 GDB)。
    • 适用于网络分析(如最短路径、流量分析)。

三、ArcGIS 要素类(Feature Class)详解

1. 什么是要素类(Feature Class)?

在 ArcGIS 中,要素类(Feature Class)存储空间数据 的基本单位,相当于数据库中的 表(Table),用于存储相同几何类型的数据(如点、线、面等)。

  • Shapefile(SHP):每个 Shapefile 实际上是一个要素类。
  • Geodatabase(GDB):一个 GDB 可以包含多个要素类,支持拓扑、网络、关系等复杂 GIS 结构。

2. ArcGIS 中的要素类类型

要素类类型描述示例
点要素类(Point Feature Class)存储单个点的几何数据井盖、传感器、公交站点
线要素类(Polyline Feature Class)存储一系列连接点形成的线道路、河流、铁路
面要素类(Polygon Feature Class)存储封闭区域(由线形成)行政区、土地利用类型
多点要素类(Multipoint Feature Class)存储多个点作为单个要素群集传感器、点云数据
多面要素类(Multipart Polygon Feature Class)一个要素由多个不连续的面组成群岛(如夏威夷群岛)、行政区(如美国阿拉斯加)
三维要素类(3D Feature Class)存储带有 Z 值的点、线、面建筑高度、地下管线
注记要素类(Annotation Feature Class)存储地图文本标注道路名称、建筑名称
尺寸要素类(Dimension Feature Class)用于存储测量数据(长度、距离等)建筑测量、工程制图

3. 各要素类详细介绍

3.1 点要素类(Point Feature Class)

  • 存储方式:每个要素是一个单独的点(X, Y 坐标)。
  • 适用场景
    • 地理定位:如公交站点(每个站点是一个点)。
    • 传感器位置:如气象站、摄像头、信号塔。
    • POI(Point of Interest):如加油站、银行、商场。
示例
ID名称X 坐标Y 坐标
1站点A120.530.3
2站点B121.030.5

SQL 查询示例

SELECT * FROM BusStops WHERE X BETWEEN 120 AND 121 AND Y BETWEEN 30 AND 31; 

3.2 线要素类(Polyline Feature Class)

  • 存储方式:一条线由多个点(顶点)连接而成。
  • 适用场景
    • 道路网络(高速公路、市政道路)
    • 河流(如长江、黄河)
    • 电力、通信线路
示例
ID道路名称线坐标
1高速公路A[(100,200), (150,250), (200,300)]
2城市道路B[(120,180), (170,220), (210,260)]

SQL 查询示例

SELECT * FROM Roads WHERE Shape.STIntersects(GeomFromText('POLYGON((xmin ymin, xmax ymin, xmax ymax, xmin ymax))')); 

3.3 面要素类(Polygon Feature Class)

  • 存储方式:由闭合的线组成,表示封闭区域。
  • 适用场景
    • 行政区划(省、市、县)
    • 土地利用(农田、工业区)
    • 湖泊、水库
示例
ID名称面坐标
1北京市[(100,200), (200,200), (200,300), (100,300)]
2上海市[(150,180), (250,180), (250,280), (150,280)]

SQL 查询示例

SELECT * FROM Provinces WHERE Shape.STContains(GeomFromText('POINT(110 230)')); 

3.4 多点要素类(Multipoint Feature Class)

  • 存储方式:多个点作为一个要素存储。
  • 适用场景
    • Lidar 点云数据(每个扫描对象是一组点)
    • 鱼群分布、星座定位
示例
ID名称点集
1扫描A[(100,200), (101,201), (102,202)]
2扫描B[(120,180), (122,182), (125,185)]

3.5 多面要素类(Multipart Polygon Feature Class)

  • 存储方式:多个不连续的面构成一个要素
  • 适用场景
    • 群岛(如日本、菲律宾)
    • 不连续行政区(如美国阿拉斯加)
示例
ID名称面集合
1夏威夷州[(点集1), (点集2), (点集3)]

3.6 三维要素类(3D Feature Class)

  • 存储方式:每个点有 X, Y, Z 坐标。
  • 适用场景
    • 建筑高度(如高层建筑)
    • 地下管线
    • DEM(数字高程模型)
示例
ID建筑物名称XYZ
1大厦A120.530.3100
2大厦B121.030.5150

3.7 注记要素类(Annotation Feature Class)

  • 存储方式:文本标注存储在 GIS 中,带有空间信息。
  • 适用场景
    • 道路名称
    • 建筑名称
    • 水域标注
示例
ID文本坐标
1"北京市"(100, 200)

3.8 尺寸要素类(Dimension Feature Class)

  • 存储方式:存储测量数据,包括起点、终点、方向、距离
  • 适用场景
    • 建筑测量
    • 工程制图
示例
ID长度起点终点
150m(100, 200)(150, 250)

4. 总结

  1. 点要素类:用于存储位置(如公交站、井盖)。
  2. 线要素类:存储路径(如道路、河流)。
  3. 面要素类:存储区域(如行政区、湖泊)。
  4. 多点/多面:适用于群集数据,如 Lidar 点云、群岛。
  5. 三维要素类:用于高程数据、地下管线。
  6. 注记/尺寸要素类:用于文本标注、测量数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值