数据库存储

数据库能够支持矢量数据的存储,关系型数据库和非关系型数据库(NoSQL)都支持。 常用的关系型数据库有:mysql、postgresql+postgis、oracle、sql server等; NoSQL数据库常用的是MongoDB; 空间数据库(Spatial),同时支持一些常用的空间操作,查询、分析、统计等; postgis支持的空间操作较全面,参见官方文档: https://www.postgis.net/docs/reference.html 数据入库

矢量数据需要通过工具,或者转换成相应的sql语句,才能进行入库操作,主要是涉及到坐标数据的转换,图层里的属性和普通的数据字段处理是一致的。

QGIS支持postgresql、ORACLE的空间数据导入、导出操作;mysql、sql server等数据库,通过ogr命令行进行空间数据导入,通过加载图层支持空间数据导出;

ArcMap支持postgresql、ORACLE、sql server中空间数据的导入和导出;

通过sql语句的方式,也能够实现空间数据的入库,以postgresql为例,按照WKT的形式组织坐标,就能够使用内置空间函数st_geogfromtext,将坐标导入到数据库中进行存储;使用st_asgeojson函数,也能够将数据表中的数据,导出成geojson形式。

附:Well-known text (WKT)的坐标存储形式

POINT(6 10)
LINESTRING(3 4,10 50,20 25)
POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))
MULTIPOINT((3.5 5.6),(4.8 10.5))
MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))
MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)))
GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))
POINT ZM (1 1 5 60)
POINT M (1 1 80)

Well-Known Binary (WKB)是wkt的二进制压缩形式。 **矢量数据发布 **

  1. 以文本形式可以打开的矢量数据,如geojson,可以直接用web服务器进行发布,如nginx、iis、apache等;

  2. 以shp文件形式存储的矢量数据,需要借助软件工具才能够进行发布,商业的有Arcgis Server、Supermap iServer等,免费的有Geoserver、Mapserver等;软件工具发布的同时,支持通过服务的形式,对数据进行查询、分析和统计等;

  3. 以数据库形式存储的矢量数据,同时也需要借助以上的软件工具进行发布;当然,数据库支持一系列的sql操作,有后台开发能力的,也可以自己开发后台服务,通过特定的请求返回相应的数据;