PostgreSql对空间数据的操作函数

  GIS开发对数据的操作,主要是对空间数据的操作。PostgreSql提供了一些处理空间数据的函数,操作起来是比较方便的。下面就记录一下,最近做项目里面用到的一些,也是比较常用的。

 

空间数据

 

  介绍这些函数之前,先了解一下什么是空间数据。空间数据是指用来表示空间实体的位置、形状、大小及其分布特征诸多方面信息的数据,它可以用来描述来自现实世界的目标,它具有定位、定性、时间和空间关系等特性。空间数据是一种用点、线、面以及实体等基本空间数据结构来表示人们赖以生存的自然世界的数据。简单来说,操作空间数据主要是对点、线、面等基本结构的操作。

 

  地图上的图层有面图层、点图层和线图层之分,就拿一个城市的地图来说,该城市的公园图层就相当于面图层,因为可能需要表示公园有多大;一个城市医院或者银行的分布可以看做是点图层;城市的道路交通可以认为是线图层。

 

  这些空间数据可以在数据库中存储,存储时可以是geometry格式;也可以以文件的形式存储,存储成shape文件。在数据库中存储时,geometry是以十六进制串组成的,表示的是几何形状。shape文件存储时,对应点线面分别由三种类型,point、line、polygon,这是单一的类型,对应联合的类型又有multipoint、multiline、multipolygon,所以说,shape文件存储的是wkt类型的数据。本篇博客暂且把空间数据分为这两种类型:geometry和wkt。


函数操作

 

  在系统中我们用的地图插件是Openlayer,它对地图的操作是操作wkt数据,所以就涉及到geometry和wkt的转换。

  st_geomfromtext(wkt,坐标系参数):该方法是把wkt格式数据转换成geometry类型,参数有两个,第一个是wkt类型的数据,第二个是坐标系参数。

  st_astext(geometry):该方法是把geometry类型数据转换成wkt格式数据,参数只有一个,是geometry类型的数据。

 

  图层是由各个图斑构成的,如果要在地图上定位某个图斑,就需要获取这个图斑的中心点坐标。

  st_centroid(geometry):这个方法是获取这个geometry的中心点,参数是要获取中心点的geometry。

  st_x(point):该方法是获取点的x坐标,它操作的对象是一个点。

  st_y(point):该方法是获取点的y坐标,它操作的对象也是一个点。

 

  有时我们需要实现两个图斑相交,也可以用函数执行。

  st_intersects(geometry,geometry):该方法是实现两个图斑相交,传入的参数是两个图斑的geometry。

  跟这个方法类似的还有好多函数,比如判断两个图斑是否相交,返回一个布尔值;或者获取两个图斑相交的geometry和不相交的geometry。

 

  如果要使图斑联合,则需要union函数。

  st_union(geometry):如果一个图层表中存储好多图斑,其中有一列名为geom,存储的是各个图斑的geometry,那么st_union(geom)就是将该图层的所有图斑联合成一个,得到的结果就是multi类型的数据。

 

  如果要查看某个图斑方圆多少米之内的情况,就要对该图斑进行缓冲。

  st_buffer(geometry,长度):该方法是对某个图斑进行缓冲,传入要缓冲的geometry,在传入缓冲的距离即可。

 

总结

 

  这些数据库封装的函数很方便我们的开发,不用自己再去实现,多了解这些函数对开发效率有好处。上面记录的这是是做的系统中经常用到的,如果有什么不对的地方或者不完善的地方,还请过路的各位大牛指点。

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值