AI摘要

本文提供了一个PostGIS geometry类型与SRID的对照表,包括基础二维类型、带维度后缀的类型、常见建表示例和SRID代码表。文章详细介绍了如何根据业务需求选择合适的geometry类型和SRID,以及如何将这些类型应用到实际的GIS建模中。

可以,下面我给你做一张 PostGIS geometry 类型与 SRID 速查表,尽量写成你建表时可以直接照抄的形式。

先记住一个总公式:

geometry(几何类型[维度后缀], SRID)

例如:

geometry(LineString, 4326)

意思就是:二维 LineString 线对象,坐标参考系为 SRID 4326。PostGIS 官方文档说明,geometry 支持两个可选 type modifier:一个限制几何子类型,另一个限制 SRID;如果省略 SRID,则默认是 0。(PostGIS)


一、你最关心的:常见 geometry 类型有哪些

PostGIS 官方文档列出的常见 geometry 子类型包括:

  • POINT
  • LINESTRING
  • POLYGON
  • MULTIPOINT
  • MULTILINESTRING
  • MULTIPOLYGON
  • GEOMETRYCOLLECTION

此外,官方还支持更高级一些的几何类型,例如 POLYHEDRALSURFACETRIANGLETIN,以及曲线类 CIRCULARSTRINGCOMPOUNDCURVECURVEPOLYGONMULTICURVEMULTISURFACE。(PostGIS)


二、最常用的 geometry 类型速查表

1)基础二维类型

写法含义维度示例典型场景
geometry(Point, 4326)XYPOINT(104.07 30.66)机房、站点、设备点、客户点
geometry(LineString, 4326)线XYLINESTRING(104.07 30.66,104.08 30.67)光缆段、管道段、杆路线
geometry(Polygon, 4326)XYPOLYGON((...))维护区域、服务片区、园区边界
geometry(MultiPoint, 4326)多点集合XYMULTIPOINT((...),(...))一组散点资源
geometry(MultiLineString, 4326)多线集合XYMULTILINESTRING((...),(...))由多段组成的一条资源
geometry(MultiPolygon, 4326)多面集合XYMULTIPOLYGON(((...)),((...)))多个不连续片区
geometry(GeometryCollection, 4326)混合几何集合混合GEOMETRYCOLLECTION(...)少数复杂混合对象

这些类型都在 PostGIS 官方数据管理文档的 OGC Geometry 模型中列出,并给了对应的 WKT 示例。(PostGIS)


2)带维度后缀的类型

PostGIS 支持在几何类型后面加后缀:

  • Z:三维,XYZ
  • M:三维,XYM,其中 M 是测量值
  • ZM:四维,XYZM

例如:

  • POINTZ
  • LINESTRINGM
  • POINTZM
  • POLYGONZM

官方文档明确写到:LINESTRINGM 允许三维线,并把第三维视为 measure;POINTZM 则要求四维 XYZM 数据。(PostGIS)


三、维度后缀怎么理解

下面这张表最实用。

后缀写法实际坐标维度含义
无后缀2DXY
Z3DXYZ
M3DXYM
ZM4DXYZM

PostGIS 官方文档说明,坐标可以包含可选的 ZM 值;Z 常用于高程,M 是 measure 值,可表示时间、距离、里程等。如果同时有 ZM,则是四维。(PostGIS)


1)XY:普通二维

geometry(Point, 4326)
geometry(LineString, 4326)
geometry(Polygon, 4326)

适合绝大多数业务 GIS 表。官方示例里也直接使用了 geometry(LINESTRING,3005) 这样的二维建表方式。(PostGIS)

2)XYZ:带高程

geometry(PointZ, 4326)
geometry(LineStringZ, 4326)
geometry(PolygonZ, 4326)

适合有海拔、高度、楼层、杆塔高度等需求。官方示例给出了 geometry(POINTZ,3005)geometry(LINESTRINGZ,4326)。(PostGIS)

3)XYM:带测量值

geometry(PointM, 4326)
geometry(LineStringM, 4326)

适合线性参考、里程桩、时间序列轨迹点等场景。PostGIS 官方明确说明,LINESTRINGM 的第三维是 measure。(PostGIS)

4)XYZM:高程 + 测量值

geometry(PointZM, 4326)
geometry(LineStringZM, 4326)
geometry(PolygonZM, 4326)

适合更复杂的三维工程与时空测量场景。官方示例里直接给出了 geometry(LINESTRINGZM) 以及 POINT ZM 的 WKT 示例。(PostGIS)


四、常见建表示例

1)站点表:点

CREATE TABLE res_site (
    id bigserial PRIMARY KEY,
    name varchar(200),
    geom geometry(Point, 4326)
);

这是最典型的二维点表写法。PostGIS 官方示例中也演示了 geometry(POINT) 的建表方式。(PostGIS)

2)光缆表:线

CREATE TABLE res_cable (
    id bigserial PRIMARY KEY,
    cable_name varchar(200),
    geom geometry(LineString, 4326)
);

这和你前面问的 geometry(LineString, 4326) 是同一种模式,只是换成业务表名。官方示例里同样给出了 geometry(LINESTRING,3005)。(PostGIS)

3)维护区表:面

CREATE TABLE res_region (
    id bigserial PRIMARY KEY,
    region_name varchar(200),
    geom geometry(Polygon, 4326)
);

如果一个维护区由多个不连续区域构成,则改成 MultiPolygon 更合适。官方几何模型里把 PolygonMultiPolygon 都列为标准类型。(PostGIS)

4)带高程的杆塔点

CREATE TABLE res_pole (
    id bigserial PRIMARY KEY,
    name varchar(200),
    geom geometry(PointZ, 4326)
);

如果你要存“经度、纬度、海拔高度”,这就比普通 Point 更合适。官方示例支持这种 POINTZ 写法。(PostGIS)

5)带里程值的线路

CREATE TABLE res_route (
    id bigserial PRIMARY KEY,
    name varchar(200),
    geom geometry(LineStringM, 4326)
);

适合做“线路 + 里程桩”类模型,因为 M 可以作为测量值使用。(PostGIS)


五、SRID 常见代码表

这里是你建表时最常碰到的一部分。要注意:SRID 代码和 geometry 类型不是一回事。前者是坐标参考系编号,后者是图形形状。PostGIS 官方说明,几何对象与空间参考系统通过 SRID 关联;EPSG 则是最常见的标准来源。(PostGIS)

SRID名称类型常见用途
0无参考系/本地笛卡尔平面Local Cartesian未指定地理坐标,仅本地平面
4326WGS 84Geographic 2DGPS、GeoJSON、通用经纬度
4979WGS 84Geographic 3D经纬度 + 高程
4978WGS 84Geocentric地心坐标 XYZ

EPSG 官方资料明确写明:4326WGS 84 Geographic 2D;EPSG 数据模型页还列出了 4979 为 WGS 84 Geographic 3D,4978 为 WGS 84 Geocentric。PostGIS 官方则说明,SRID 0 表示没有单位的无限笛卡尔平面。(EPSG)


六、你可以直接这样记

1)形状类型

  • 点:Point
  • 线:LineString
  • 面:Polygon
  • 多点:MultiPoint
  • 多线:MultiLineString
  • 多面:MultiPolygon

这些是最常用的一组。(PostGIS)

2)维度后缀

  • 不写:XY
  • ZXYZ
  • MXYM
  • ZMXYZM

这是 PostGIS 官方定义的坐标维度限制方式。(PostGIS)

3)坐标系代码

  • 4326:WGS84 二维经纬度
  • 4979:WGS84 三维经纬度
  • 0:无参考系本地平面

这些是 SRID,不是 geometry 类型。(EPSG)


七、结合你的资源系统,推荐怎么选

按你这种 机房、光缆、管道、杆路、片区、客户点 的场景,我建议:

第一层:先统一用二维

  • 机房、站点、箱体:geometry(Point, 4326)
  • 光缆、管道、杆路:geometry(LineString, 4326)
  • 责任片区、服务区:geometry(Polygon, 4326)

这是最稳妥、最好维护的起步方案。PostGIS 的二维 geometry 类型是最标准、最通用的建模方式。(PostGIS)

第二层:只有明确需要高程时再上 Z

例如:

  • 杆塔高度
  • 楼顶设备高度
  • 三维管线

就用:

  • PointZ
  • LineStringZ

因为 Z 维一旦引入,后面的采集、展示、分析都要跟着规范。PostGIS 官方支持这些 3D 类型,但是否需要应该由业务决定。(PostGIS)

第三层:只有明确需要里程/测量值时再上 M

例如:

  • 光缆沿线里程
  • 巡检路径时间轴
  • 轨迹测量值

就用:

  • PointM
  • LineStringM

官方文档明确说明 M 是 measure 值,而不是高程。(PostGIS)


八、最实用的结论

你可以把下面这几组先背下来:

geometry(Point, 4326)
geometry(LineString, 4326)
geometry(Polygon, 4326)
geometry(MultiLineString, 4326)
geometry(PointZ, 4326)
geometry(LineStringM, 4326)
geometry(LineStringZM, 4326)

其中:

  • 前半部分决定“图形长什么样”
  • 后半部分决定“坐标按什么参考系解释”

这正是 PostGIS 官方 geometry type modifier 的设计方式。(PostGIS)

扫码加入猫哥的AI群
最后修改:2026 年 04 月 16 日
点赞的人是最酷的