查看文章 |
空间数据库实现 Shapfile简介 本系统的Shapfile(简称SHP)文件由河北省测绘局提供。 Shapfile文件为ESRI公司的文件存储格式,并且得到了业界广泛的支持。Shapfile格式是一种简单的,用非拓朴关系的形式存储几何位置和地理特征的属性信息的格式。虽然GeoServer采用Shapfile文件可以快速的创建网上地图服务,但它的缺点确很明显: 1、Shapefile只支持一个图层,在实际中没有意义。 2、直接保用SHP文件不安全,Shapfile文件很容易被病毒或其他原因误删除。 3、GeoServer中用Shapfile文件作数据源的效率是很低的。 4、Shapfile中的汉字GeoServer不能解析,会出现乱码。 5、数据库可以方便的对地理信息进行查询。 用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”图层,点击 ![]() ![]() 对应当前样式的SLD文件 |




