1. 概述

PostGIS 是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在 SQL 中运行空间查询

PostGIS官网:About PostGIS | PostGIS

PostGIS官方教程:PostGIS 简介 — Introduction to PostGIS

PostGIS相关教程:文章目录汇总 - 知乎 (zhihu.com)

本文基于官方教程描述PostGIS中的空间投影

数据准备可参考:

数据介绍可参考:

2. 空间投影

空间投影是空间数据进行分析的基础,需要一个合适的坐标系才能进行计算

2.1 PostGIS中的空间坐标系统

SRID是PostGIS中空间数据的空间参考系代码,查询SRID使用:

  • ST_SRID (g1) Returns the spatial reference identifier for a geometry
  • ST_SetSRID (geom, srid) Set the SRID on a geometry
SELECT ST_SRID(geom) FROM nyc_streets ;
-- 结果为:26918

查询PostGIS中空间参考系的具体信息:

SELECT * FROM spatial_ref_sys WHERE srid = 26918;

image-20230104171834550

其中,srtext是是通用的空间坐标系统描述信息,和shapefile中.prj文件描述的信息类似,是其他GIS软件读取空间参考的信息源,proj4text列由PostGIS的内部程序使用

geometry_columns表(视图)记录了数据表的元数据,可以用来查询数据表的SRID:

SELECT * FROM geometry_columns;

image-20230104173822557

2.2 投影转换

PostGIS中提供的投影转换函数主要有:

  • ST_Transform(g1, srid) Return a new geometry with coordinates transformed to a different spatial reference system

将"Broad St"地铁站的坐标转换为地理坐标

-- 查询srid:26918 坐标系统下的坐标和srid:4326 地理坐标系的坐标
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 4326)) FROM nyc_subway_stations  WHERE name = 'Broad St';

image-20230104173428082

3. 参考资料

[1]16. Projecting Data — Introduction to PostGIS

[2]PostGIS教程十一:投影数据 - 知乎 (zhihu.com)

[3]PostGIS 3.3.3dev Manual

[4]PostGIS Cheat Sheet