PostGIS 空间计算

1、度/秒互转

UPDATE 表名 SET geom = st_scale(shape, 1/3600.0,1/3600.0)

2、geom转wkt字符串

SELETC st_astext(t.shape)

3、wkt字符串转geom 并设置坐标系

SELECT st_setsrid(ST_GeomFromText('POINT(428626.908 110737.8)'), 4326)

4、获取图形中心点坐标

SELECT ST_X(st_centroid(c.shape)) AS x , ST_Y(st_centroid(c.shape)) AS y

5、A是否包含B

ST_CONTAINS(A, b)

6、查询和修改SRID

SELECT st_srid(geom) FROM road limit 1;

UpdateGeometrySRID(varchar table_name, varchar column_name, integer srid);

UpdateGeometrySRID(varchar schema_name, varchar table_name, varchar column_name, integer srid);

UpdateGeometrySRID(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid);
–schema_name表示schema的名称,一般默认是public

示例:
select UpdateGeometrySRID(‘road’, ‘geom’, 4326);
–road为表名
–geom为空间字段
4326为更新的SRID

7、面积计算

ST_AREA(shape) 
注意:st_area必须在以米为单位的坐标系中才能计算出准确的面积,WGS84(4326)是以度为单位。计算时需用st_transform将几何体转换到以米为单位的坐标系中。
修改后使用 st_area(st_transform(shape,4527))计算面积
不对

4326是以度为坐标的,st_area计算出来的也是度的面积,需将度的面积转为平方米,则使用
st_area(shape)*111000*111000

8、获取图形的类型

ST_GeometryType
GeometryType

9、坐标系转换

GCJ02转WGS84
select geoc_gcj02towgs84(geom) from test_table
WGS84转GCJ02
select geoc_wgs84togcj02(geom) from test_table
WGS84转BD09
select geoc_wgs84tobd09(geom) from test_table
BD09转WGS84
select geoc_bd09towgs84(geom) from test_table
GCJ02转BD09
select geoc_gcj02tobd09(geom) from test_table
BD09转GCJ02
select geoc_bd09togcj02(geom) from test_table