GIS Geometry是什么
Geometry(几何)是GIS中用于描述地理对象空间位置和形状的数据。
简单来说:
Geometry告诉GIS对象在哪里,以及它是什么形状。
例如:
- 一个城市可以用Polygon表示
- 一条道路可以用LineString表示
- 一个商店可以用Point表示
Geometry是GIS矢量数据最核心的组成部分之一。
Geometry包含什么
一个Geometry通常由:
Geometry
├── 类型
│ ├── Point
│ ├── LineString
│ └── Polygon
│
└── 坐标
├── X
├── Y
└── Z(可选)
例如:
Point
↓
[116.397, 39.908]
表示一个点的位置。
Geometry与Feature的区别
Geometry主要描述空间信息,而Feature通常包含Geometry以及属性信息。
例如:
Geometry
Point
[116.397, 39.908]
只表示:
某个位置上的一个点。
如果增加属性:
name = 北京
type = 城市
就可以组成一个Feature。
因此:
Geometry
↓
空间位置 + 空间形状
Feature
↓
Geometry + Attributes
Point
Point是最基本的Geometry类型。
它使用一个坐标表示一个位置。
例如:
POINT (116.397 39.908)
Point常用于:
- POI
- 学校
- 医院
- 商店
- 摄像头
- 充电桩
- GPS定位点
一个Point通常可以表示:
X = 116.397
Y = 39.908
如果使用三维坐标,还可以增加Z:
X = 116.397
Y = 39.908
Z = 50
其中Z通常可以表示高程。
MultiPoint
MultiPoint用于表示多个相互独立的点。
例如:
MULTIPOINT (
(116.397 39.908),
(116.405 39.915),
(116.412 39.920)
)
可以用于表示:
- 多个采样点
- 多个监测点
- 一组设施位置
- 多个空间事件
与多个独立Point相比,MultiPoint可以将多个点作为一个Geometry进行管理。
LineString
LineString由多个有顺序的坐标点连接形成。
例如:
LINESTRING (
116.397 39.908,
116.405 39.915,
116.412 39.920
)
可以表示:
- 道路
- 河流
- 铁路
- 管线
- GPS轨迹
它的基本结构是:
Point
↓
Point
↓
Point
↓
Point
多个坐标点按照顺序连接,就形成一条LineString。
MultiLineString
MultiLineString用于表示多个线组成的Geometry。
例如:
MULTILINESTRING (
(
116.397 39.908,
116.405 39.915
),
(
116.420 39.920,
116.430 39.925
)
)
可以用于表示:
- 多段道路
- 多段河流
- 铁路网络
- 多段管线
需要注意,MultiLineString中的每条线可以是独立的。
Polygon
Polygon用于表示一个封闭区域。
例如:
POLYGON ((
116.390 39.900,
116.400 39.900,
116.400 39.910,
116.390 39.910,
116.390 39.900
))
Polygon常用于:
- 行政区
- 建筑物
- 地块
- 公园
- 湖泊
- 土地利用区域
Polygon的核心特点是:
起点
↓
多个坐标点
↓
回到起点
↓
形成闭合环
因此Polygon与LineString最大的区别之一就是:
Polygon用于表达区域,而LineString主要用于表达线状对象。
Polygon的内部环
Polygon除了可以表示外部边界,还可以存在内部环。
例如一个湖中有一个岛:
Polygon
├── 外部环
│
└── 内部环
└── 岛屿
也可以理解为:
外部边界
↓
一个区域
内部边界
↓
区域中的空洞
这使Polygon能够表示更加复杂的空间区域。
MultiPolygon
MultiPolygon用于表示多个Polygon组成的Geometry。
例如:
MULTIPOLYGON (
(
(...),
(...)
),
(
(...)
)
)
常用于:
- 多个不连续的行政区域
- 群岛
- 多个地块
- 一个对象包含多个独立区域
例如一个行政区域可能由多个互不相连的岛屿组成,这时就可以使用MultiPolygon。
Geometry的坐标
Geometry的核心数据之一就是坐标。
二维坐标通常包含:
X
Y
例如:
[116.397, 39.908]
在经纬度数据中通常可以理解为:
X = 经度
Y = 纬度
但具体坐标含义取决于使用的坐标参考系统。
Geometry的Z坐标
Geometry不仅可以表示二维空间,也可以扩展到三维。
二维:
X Y
三维:
X Y Z
例如:
POINT Z (116.397 39.908 45)
其中:
X = 116.397
Y = 39.908
Z = 45
Z可以用于表示:
- 高程
- 建筑高度
- 地形高度
- 三维模型高度
Geometry的M值
部分GIS数据还支持M(Measure)值。
可以表示:
- 里程
- 时间
- 距离
- 轨迹测量值
例如:
X Y Z M
因此Geometry可以扩展为:
2D
X Y
3D
X Y Z
带测量值
X Y Z M
Geometry与坐标系
Geometry中的坐标数字本身并不能完整说明地理位置。
例如:
116.397
39.908
还需要知道这些坐标属于什么坐标参考系统。
常见坐标系包括:
EPSG:4326
以及:
EPSG:3857
因此可以理解为:
Geometry
↓
Coordinates
↓
CRS
↓
确定真实空间位置
如果坐标系使用错误,Geometry可能会在地图上出现在错误的位置。
Geometry与WKT
WKT(Well-Known Text)是一种常见的Geometry文本表示方式。
例如Point:
POINT (116.397 39.908)
LineString:
LINESTRING (
116.397 39.908,
116.405 39.915
)
Polygon:
POLYGON ((
116.390 39.900,
116.400 39.900,
116.400 39.910,
116.390 39.900,
116.390 39.900
))
因此:
WKT
↓
Geometry的文本表示
WKT非常适合用于:
- Geometry调试
- 空间数据交换
- 数据库查询
- GIS开发
- 测试空间数据
Geometry与GeoJSON
GeoJSON也可以表达Geometry。
例如:
{
"type": "Point",
"coordinates": [116.397, 39.908]
}
LineString:
{
"type": "LineString",
"coordinates": [
[116.397, 39.908],
[116.405, 39.915]
]
}
Polygon:
{
"type": "Polygon",
"coordinates": [
[
[116.390, 39.900],
[116.400, 39.900],
[116.400, 39.910],
[116.390, 39.900],
[116.390, 39.900]
]
]
}
GeoJSON通常将Geometry放在Feature中:
Feature
├── geometry
│ └── Geometry
│
└── properties
└── Attributes
Geometry与矢量数据
Geometry是矢量数据的空间基础。
可以理解为:
Vector Data
↓
Feature
↓
Geometry
↓
Coordinates
例如道路矢量数据:
Road Layer
├── Feature
│ └── LineString
│
├── Feature
│ └── LineString
│
└── Feature
└── LineString
每个Feature都有自己的Geometry。
Geometry可以进行空间计算
Geometry不仅用于显示,还可以参与空间分析。
例如:
计算距离
Point A
↓
Distance
↓
Point B
计算长度
LineString
↓
Length
↓
道路长度
计算面积
Polygon
↓
Area
↓
地块面积
创建缓冲区
Geometry
↓
Buffer
↓
新的Polygon
判断空间关系
可以判断两个Geometry是否:
- 相交
- 包含
- 重叠
- 相邻
- 相离
- 相交于边界
这些都是GIS空间分析的重要基础。
Geometry有效性
Geometry并不是只要有坐标就一定有效。
例如Polygon可能出现:
自相交
重复节点
未闭合
错误的环方向
无效坐标
例如:
Polygon
↓
边界发生自相交
↓
Invalid Geometry
无效Geometry可能导致:
- 面积计算错误
- 空间查询失败
- Buffer失败
- 相交分析异常
- 数据导入失败
因此GIS数据处理中,经常需要进行Geometry有效性检查和修复。
常见Geometry类型总结
| Geometry | 含义 | 常见对象 |
|---|---|---|
| Point | 点 | POI、摄像头 |
| MultiPoint | 多个点 | 采样点 |
| LineString | 线 | 道路、河流 |
| MultiLineString | 多条线 | 河流网络 |
| Polygon | 面 | 地块、行政区 |
| MultiPolygon | 多个面 | 群岛、多个区域 |
Geometry的核心关系
可以用下面的结构理解GIS Geometry:
Coordinates
↓
Geometry
↓
Feature
↓
Layer
↓
Map
其中:
Coordinates
↓
描述坐标
Geometry
↓
描述空间形状
Feature
↓
Geometry + Attributes
Layer
↓
多个Feature
Map
↓
多个Layer
总结
Geometry是GIS中描述空间位置和空间形状的核心数据结构。
最常见的Geometry包括:
Point
LineString
Polygon
MultiPoint
MultiLineString
MultiPolygon
可以记住:
Coordinates描述坐标,Geometry描述空间形状,Feature将Geometry与属性信息结合起来,而Layer则负责组织大量Feature。
理解Geometry之后,就可以进一步学习Feature、Vector、WKT、WKB、GeoJSON以及GIS空间分析等核心知识。
相关工具
使用 IYATools 在线工具快速处理 GIS 数据