一、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 | 主干道A | 5.2 |
2 | 次干道B | 3.8 |
3 | 支路C | 1.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 采用表格存储,主要包括:
- 要素类(Feature Class):相当于 Shapefile,存储点、线、面等矢量数据。
- 要素数据集(Feature Dataset):包含多个要素类,并且可以共享拓扑规则。
- 关系表(Tables):存储额外的属性信息,可用于一对多、多对多关联。
- 拓扑(Topology):支持拓扑关系,如“道路必须连接在一起”。
- 网络数据集(Network Dataset):用于存储交通网络,如最短路径分析。
示例:Geodatabase 的存储
假设我们创建一个 城市基础设施 的 GDB,包含以下内容:
- 要素数据集 "CityInfrastructure"
- 要素类 "Roads"(存储道路)
- 要素类 "Buildings"(存储建筑物)
- 要素类 "Parks"(存储公园)
- 表 "RoadAttributes"(存储道路额外信息,如限速、类型等)
- 拓扑 "RoadTopology"(确保道路必须连接)
数据示例
1. "Roads" 要素类
ID | 道路名称 | 长度(km) | 几何 |
---|---|---|---|
1 | 主干道A | 5.2 | LineString(100 200, 150 250, 200 300) |
2 | 次干道B | 3.8 | LineString(120 180, 170 220, 210 260) |
2. "RoadAttributes" 关系表
RoadID | 限速(km/h) | 道路类型 |
---|---|---|
1 | 60 | 高速公路 |
2 | 40 | 城市道路 |
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 |
元数据 | .xml | gdb.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 | 站点A | 120.5 | 30.3 |
2 | 站点B | 121.0 | 30.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 | 建筑物名称 | X | Y | Z |
---|---|---|---|---|
1 | 大厦A | 120.5 | 30.3 | 100 |
2 | 大厦B | 121.0 | 30.5 | 150 |
3.7 注记要素类(Annotation Feature Class)
- 存储方式:文本标注存储在 GIS 中,带有空间信息。
- 适用场景:
- 道路名称
- 建筑名称
- 水域标注
示例
ID | 文本 | 坐标 |
---|---|---|
1 | "北京市" | (100, 200) |
3.8 尺寸要素类(Dimension Feature Class)
- 存储方式:存储测量数据,包括起点、终点、方向、距离。
- 适用场景:
- 建筑测量
- 工程制图
示例
ID | 长度 | 起点 | 终点 |
---|---|---|---|
1 | 50m | (100, 200) | (150, 250) |
4. 总结
- 点要素类:用于存储位置(如公交站、井盖)。
- 线要素类:存储路径(如道路、河流)。
- 面要素类:存储区域(如行政区、湖泊)。
- 多点/多面:适用于群集数据,如 Lidar 点云、群岛。
- 三维要素类:用于高程数据、地下管线。
- 注记/尺寸要素类:用于文本标注、测量数据。