postgis常用函数
1、几何对象构造函数
geometry ST_GeomFromText(text WKT);
geometry ST_GeomFromText(text WKT, integer srid);
例如,构建一个4326投影的点[106.064544 42.28787]对象,
ST_GeomFromText('POINT(106.064544 42.28787)',4326)
相似函数
ST_GeomFromEWKT, ST_GeomFromWKB, ST_SRID
2、空间距离Distance
float ST_DistanceSphere(geometry geomlonlatA, geometry geomlonlatB);
例如,查询指定位置点(lonlat[106.064544 42.28787])在100km内的对象:
select st_x(lonlat)as lon,st_y(lonlat)as lat from geotest where ST_DistanceSphere(lonlat,ST_GeomFromText('POINT(106.064544 42.28787)',4326))<= 100000
相似函数
ST_Distance, ST_DistanceSpheroid
3、空间范围区域Bbox
geometry ST_MakeEnvelope(double precision xmin, double precision ymin, double precision xmax, double precision ymax, integer srid=unknown);
例如,查询范围经纬度范围lonlat(lon[116.354 126.1454],lat[33.154 43.545])范围里的所有空间对象:
select st_x(lonlat)as lon,st_y(lonlat)as lat from geotest where lonlat && ST_MakeEnvelope(116.354,33.154,126.1454,43.545,4326)
相似函数
ST_MakePoint, ST_MakeLine, ST_MakePolygon
4、 ST_Contains
LINESTRING 构建一个多边形
LINESTRING ( 121.312350 30.971457 , 121.156783 31.092221 , 121.353250 31.278195 , 121.509125 31.157431 , 121.312350 30.971457 ) 是把连续的点围成一个多边形
st_point 构建一个点
st_point(a,b) 表示为一个点
查看某一个点是否在某个多边形内 返回t表示在范围内
SELECT ST_Contains( ST_MakePolygon(ST_GeomFromText('LINESTRING ( 121.312350 30.971457 , 121.156783 31.092221 , 121.353250 31.278195 , 121.509125 31.157431 , 121.312350 30.971457 ) ')) ,st_point(121.332378,31.07106) )
查看某一个点是否在某个多边形内 返回f表示不在范围内
SELECT ST_Contains( ST_MakePolygon(ST_GeomFromText('LINESTRING ( 121.312350 30.971457 , 121.156783 31.092221 , 121.353250 31.278195 , 121.509125 31.157431 , 121.312350 30.971457 ) ')) ,st_point(121.632378,31.07106) )
5、显示标准JSON
ST_asgeojson(geometry,投影类型)
例如,
ST_asgeojson(ST_GeomFromText('POINT(106.064544 42.28787)',4326),4326)
显示空间点的经纬度
ST_X(geo) ST_Y(geo)
6、坐标系转换
第一个参数是原来的几何对像. 第二个参数为要把他转换到这个投影所代表的做标系下
ST_Transform(geometry g1, integer srid)