The type representing spatial features with geodetic (ellipsoidal) coordinate systems.
geography 与 geometry
最大不同之处是对空间数据的计算方式不同
Geometry——基于平面坐标
Geography——基于球面坐标来计算的,计算它们之间的大圆航线的距离(大圆航线:球面上两点之间的最短距离的航线)
将地理坐标看作近似的笛卡尔平面坐标进行空间计算——关于距离、长度和面积的测量将毫无意义,索引和真/假测试(如相交和包含)可能会变得非常错误,因为越与极点或国际日期线接近的区域,点与点之间的距离变得越大
SELECTST_Distance(ST_GeographyFromText('POINT(-118.4079 33.9434)'),-- Los Angeles (LAX)
ST_GeographyFromText('POINT(2.5559 49.0083)')-- Paris (CDG));
所有geography计算的返回值都以米为单位。
1. 转换为Geography
ST_Transform(geometry, srid)函数能将坐标转换为地理坐标
Geography(geometry)函数能将基于EPSG:4326的geometry数据类型转换为geography数据类型
Geography(ST_Transform(geom,4326)) AS geog,
将数据从投影坐标转换为地理坐标(也称为"经度(longitude)/ 纬度(latitude)")
知道坐标的SRID是什么,则可以使用ST_SetSRID()对几何图形进行SRID设置。然后,你将能把几何图形的现有坐标系统转换为其他坐标系统
SELECT ST_AsText(
ST_Transform(
ST_SetSRID(geom,26918),
4326)
)
FROM geometries;
2.转换为geometry
::geometry附加到geography值后面,可以将对象转换为SRID为4326的geometry。可以使用任何的geometry函数了。但是,请记住-现在的对象是geometry,坐标将被解释为笛卡尔平面坐标
PostGIS包含更改数据投影(重投影)的功能,即使用ST_Transform(geometry, srid)函数就可以实现重投影。
为了查看和设置几何图形的空间参照标识符,PostGIS提供了ST_SRID(geometry)和ST_SetSRID(geometry,SRID)函数
坐标和SRID(严谨的说应该是空间参考系统)一起定义了地球上的一个位置。没有SRID,坐标只是一个抽象而没有实际意义的概念。“笛卡尔”坐标平面被定义为放置在地球表面的“平面”坐标系。由于PostGIS函数在这样的坐标系统上工作,因此关于两个几何图形的比较的操作都要基于同一SRID
其他知识点
笛卡尔平面坐标(Cartesian coordinates)