计算距离
计算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坐标系后计算其面积,这个面积与地面实际实际面积很接近。
运行结果: