利用PostgreSQL数据库的postgis扩展绘制圆形空间几何数据
之前项目中用GeoServer发布的图层都是基于PostgreSQL数据库的,其中的地理信息字段中的数据都是在后台拼凑出来的,费时费力但效果不错
最近研究postgis-2.1官方API的时候发现其实postgis已经给我们提供了好多好多实用的方法供我们绘制特殊图形
之前只用过它提供的坐标系及地理数据格式转换...汗一个
闲话不多说,postgis官方文档下载地址:
http://postgis.net/documentation/
下面只介绍下通过指定坐标系与已知半径绘制圆形闭合曲面(POLYGON)
AddGeometryColumn时是用的EPSG:900913坐标系存储POLYGON地理信息
插入地理信息字段圆形闭合曲面信息时使用此值:
ST_Transform(ST_SetSRID(ST_Buffer(ST_MakePoint(120.25440216, 31.99739075)::geography,50000)::geometry,4326),900913)
其中使用的几个方法的解释:
1. ST_Transform(raster, srid):将指定的raster转换坐标系,具体:
geometry ST_Transform(geometry g1, integer srid);
2. ST_Buffer(\g1, radius);:g1是要操作的空间几何数据,radius为半径长度距离(此处为米,经实际校对误差不大),integer与绘制的闭合曲面多边形的边数有关,具体:
geography ST_Buffer(geography g1, float radius_of_buffer_in_meters);
3. ST_SetSRID(geometry, integer) :给一个几何对象(geometry)设置一个整型的SRID,此处设置为 EPSG:4326,具体:
geometry ST_SetSRID(geometry geom, integer srid);
4. ST_MakePoint(lon,lat):将WGS:84坐标转换为空间几何数据,具体:
geometry ST_MakePoint(double precision x, double precision y);
Openlayers展示一下:
End.