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类型数据