转】基于GeoServer的电子地图系统说明(四):空间数据库实现
五、空间数据库实现
正在研究这部分内容,希望能尽快完成空间数据库设计和实现,到时候再总结。
5.1 Shapfile简介
本系统的Shapfile(简称SHP)文件由河北省测绘局提供。
Shapfile文件为ESRI公司的文件存储格式,并且得到了业界广泛的支持。Shapfile格式是一种简单的,用非拓朴关系的形式存储几何位置和地理特征的属性信息的格式。虽然GeoServer采用Shapfile文件可以快速的创建网上地图服务,但它的缺点确很明显:
1、Shapefile只支持一个图层,在实际中没有意义。
2、直接保用SHP文件不安全,Shapfile文件很容易被病毒或其他原因误删除。
3、GeoServer中用Shapfile文件作数据源的效率是很低的。
4、Shapfile中的汉字GeoServer不能解析,会出现乱码。
5、数据库可以方便的对地理信息进行查询。
5.2 用PostGIS管理空间数据
PostGIS支持GIST空间索引(附录1)、规范窗体,能很大的提高处理效率。
OGC格式只提供二维的几何体,且相关联的SRID从未深入的用于输入输出请求,PostGIS支持OpenGIS组织"Simple Features for SQL"规范指定的所有GIS对象和函数,并进行了扩展,格式是EWKB、EWKT,其中增加了对3DZ,3DM和4D 坐标系的支持(当然三维、四维数据的OGC标准还未完全制定),深入引进了SRID信息。
空间数据表结构:PostGIS中存在两个必需的元数据表格, SPATIAL_REF_SYS(空间参考表格) 和 GEOMETRY_COLUMNS(几何体属性列),两个表用于存储空间数据库使用的坐标系统数字ID和文本描述。
PostGIS的shp2pgsql命令可以将Shapfile直接导入到数据库中也可以导出为SQL文件,推荐先导出为SQL文件再将此文件在SQL运行窗口中执行可将数据导入数据库。代码如下:
Shapfile到SQL语句:
shp2pgsql 路径\shp数据文件名 新建的数据表名 > 路径\SQL文件名.sql
Shapfile直接入库:
shp2pgsql -c 路径\shp数据文件名 新建的数据表名 数据库名|psql -d 数据库名
举例说明:
如将一Shapfile文件“c:\road.shp”导入到数据表“road”中,数据库为“sjzmap”。
1、运行“命令提示符”。
2、切换至PostgreSQL数据库安装目录中的bin目录下。
3、执行此目录下的shp2pgsql命令:“shp2pgsql c:\road.shp road > c:\road.sql”。
4、如将此文件直接导入数据库(不推荐):“shp2pgsql -c c:\road.shp road sjzmap | psql -d sjzmap”。六、用uDig可视化生成SLD
登录http://udig.refractions.net,下载安装最新版的uDig(User-friendly Desktop Internet GIS):用户友好桌面因特网GIS。
uDig是基于EclipseRCP和GeoTools开发的,支持OpenGIS组织发布的公共标准,尤其支持WMS、WFS标准。它既是一个应用程序,也可以作为开发新的桌面因特网GIS应用程序的核心平台,我们用uDig只是为了方便的对地图进行可视化的配色,方便编辑SLD样式文件。下面以配置PostGIS中的“base_road”图层为例进行说明。
打开uDig新建一个工程“test_map”

新建工程“test_map”
从“菜单->Layer->Add...”中,按照向导添加PostGIS图层“base_road”,添加成功后如下图:

添加“base_road”图层后的uDig
uDig会为图层生成随机的样式,下面我们将更改默认的样式。从左下角的“Layers”框中选中“base_road”图层,点击按钮或者选择“Layer->Change Style...”会弹出“Style. Editor”对话框。左侧的Simple中可以调教图层的各种配色,点击XML可以查看生成的SLD文件,挑选合适的配色后点击Export就可将此SLD文件导出。导出的SLD文件可以在GeoServer中直接使用,但是这时的样式与图层数据表的名称是相关联的,通用性较差。为了获得最好的通用性,请将此文件参照GeoServer样例的SLD文件手工进行代码优化后再导入GeoServer。
注意:SLD文件中有汉字时不可存为UTF-8编码必须存为GBK/GB2312编码,因为GeoServer导入有汉字的UTF-8编码的SLD样式文件时会报错。对应当前样式的SLD文件
浙公网安备 33010602011771号