地球不是平的,也没有简单的方法把它放在一张平面纸地图上(或电脑屏幕上),所以人们想出了各种巧妙的解决方案(投影)。
每种投影方案都有优点和缺点,一些投影保留面积特征;一些投影保留角度特征,如墨卡托投影(Mercator);一些投影试图找到一个很好的中间混合状态,在几个参数上只有很小的失真。所有投影的共同之处在于,它们将(地球)转换为平面笛卡尔坐标系,选择哪种投影取决于你将如何使用数据
PostGIS包含更改数据投影(重投影)的功能,即使用ST_Transform(geometry, srid)函数就可以实现重投影。另外,为了查看和设置几何图形的空间参照标识符,PostGIS提供了ST_SRID(geometry)和ST_SetSRID(geometry,SRID)函数。
我们可以使用ST_SRID(geometry)函数确认数据的SRID:
SELECT ST_SRID(geom) FROM nyc_streets LIMIT 1;一、比较数据
综合起来,坐标和SRID(严谨的说应该是空间参考系统)一起定义了地球上的一个位置。没有SRID,坐标只是一个抽象而没有实际意义的概念。“笛卡尔”坐标平面被定义为放置在地球表面的“平面”坐标系。由于PostGIS函数在这样的坐标系统上工作,因此关于两个几何图形的比较的操作都要基于同一SRID。
注意:空间索引是基于存储的几何图形的SRID构建的。如果在不同的SRID中进行比较,则通常不使用空间索引。最佳做法是为数据库中的所有表选择一个SRID。仅在向外部程序读取或写入数据时使用转换函数将数据转换为基于指定SRID的数据。
二、转换数据
若要将数据从一种SRID转换为另一种SRID,必须首先验证几何图形是否具有有效的SRID。
地理坐标最常见的SRID是4326(WGS84地理坐标系统),对应于"WGS84球体上的经度/纬度"
SELECT ST_AsText(ST_Transform(geom,4326))
FROM nyc_subway_stations
WHERE name = 'Broad St';如果加载数据或创建新几何图形而未指定SRID,则SRID的值将为0。
如果知道坐标的SRID是什么,则可以使用ST_SetSRID()对几何图形进行SRID设置。然后,将能把几何图形的现有坐标系统转换为其他坐标系统。
SELECT ST_AsText(
ST_Transform(
ST_SetSRID(geom,26918),
4326)
)
FROM geometries;
Comments