postgis中计算距离和面积

计算距离

计算A、B两点之间的距离

经度 纬度
A 107.394661111111 30.3146694444444
B 107.339566 30.333294
SELECT st_distance(st_transform(st_geometryfromtext('POINT(107.394661111111 30.3146694444444)',4326),4527),st_transform(st_geometryfromtext('POINT(107.339566 30.333294)',4326),4527));

用到的几个函数:
st_geometryfromtext(geometry,srid):该方法作用是根据描述的几何对象(geometry)的字符串转化成几何对象,POINT说明几何对象是点类型,第二个参数srid是4326,是指这个点类型对象的空间参考(也就是EPSG的编号,也是所在的坐标系)是EPSG:4326,即WGS84大地坐标系。

st_transform(geometry,srid):该方法是把某个几何对象(geometry)的所有坐标从一个坐标系转换到另一个坐标系。在这做的就是把EPSG:4326转换为EPSG:4527(量北京的尺子到手)。

st_distance(geometry,geometry):该方法用于计算两几何对象距离,所用坐标系根据geometry带的srid(EPSG编号)决定。

SQL语句含义:
两个4236坐标系下的点对象转换成4527坐标系后计算直线距离,这个距离与地面实际距离很接近

运行结果:
在这里插入图片描述

计算面积

计算A、B、C两点之间的距离

经度 纬度
A 110.774625 32.652688
B 117.214691 28.552046
C 108.493858 32.231676
SELECT st_area ( ST_Transform ( st_geometryfromtext ('POLYGON((110.774625 32.652688,117.214691 28.552046,108.493858 32.231676,110.774625 32.652688))', 4326 ), 4527 ) );

这里geometry的类型用的是POLYGON(多边形),注意要闭合(首尾的经纬度要一样)

st_area(geometry,srid):该函数用于计算在某个srid(某个坐标系下)一个几何对象的面积

SQL语句含义:
一个4236坐标系下的多边形对象转换成4527坐标系后计算其面积,这个面积与地面实际实际面积很接近。

运行结果:
在这里插入图片描述

发布了214 篇原创文章 · 获赞 112 · 访问量 9370

猜你喜欢

转载自blog.csdn.net/KaiSarH/article/details/103921317