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)

官方函数文档

官方文档