一 属性查询
笔者使用一模一样的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.2 PostGIS不建立索引查询效率
1.3 PostGIS建立索引查询效率
结论:属性查询这方面,以本例说明,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空间查询
2.2 PostGIS空间查询
结论:空间查询方面差别不是特别明显,初次查询pg的比shp快8倍,以后查询差不多,但pg仍然比shp快。个人猜测,esri针对shp格式的图形查询进行了优化。
三 多表关联
在数据库中存储的话,多表之间可以建立join关系,建立视图,建立存储过程等等,可以在不同业务之间的多表与图形join得到专题报表。
shp除了用后台获取数据,自行拼装以外,不能多个shp产生join这种操作。
实际项目业务表很多,一般和图形表关联使用,shp不能胜任这个任务。
结论:项目开发,shp只定位是数据中介,起到临时存储的作用,实际应用时,应导入空间数据库中。