shp与PostGIS在项目应用中比较

一 属性查询

笔者使用一模一样的osm数据,数据量8.7万个点,该数据有一个name列存储点的名称,本次实验,笔者使用 name=’练塘镇’作为查询条件,
查询语句如下:

http://localhost:8090/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typename=cite:places1&srsname=EPSG:4326
&outputFormat=application/json&cql_filter=name='练塘镇'

查询结果如下:

1.1 shp格式查询效率

1.png

1.2 PostGIS不建立索引查询效率

2.png

1.3 PostGIS建立索引查询效率

3.png

结论:属性查询这方面,以本例说明,Postgresql的表查询不建立索引比shp格式的数据存储快125倍,建立索引快338倍。

二 空间查询

用一个多边形与点图层做叠加分析,查询多边形范围内的点,查询语句如下:

http://localhost:8090/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typename=cite:places&srsname=epsg:4326
&outputFormat=application/json&cql_filter=Intersects(geom,POLYGON((115 29,115 30,116 30,116 29,115 29)))

2.1 shp空间查询

4.png

2.2 PostGIS空间查询

5.png

结论:空间查询方面差别不是特别明显,初次查询pg的比shp快8倍,以后查询差不多,但pg仍然比shp快。个人猜测,esri针对shp格式的图形查询进行了优化。

三 多表关联

在数据库中存储的话,多表之间可以建立join关系,建立视图,建立存储过程等等,可以在不同业务之间的多表与图形join得到专题报表。
shp除了用后台获取数据,自行拼装以外,不能多个shp产生join这种操作。
实际项目业务表很多,一般和图形表关联使用,shp不能胜任这个任务。

结论:项目开发,shp只定位是数据中介,起到临时存储的作用,实际应用时,应导入空间数据库中。

You may also like...