利用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.

 

posted @ 2014-03-21 15:12  lianche  阅读(2863)  评论(0编辑  收藏  举报