简析将shp导入Oracle并利用geoserver将导入的多少发表

文章版权由作者李晓晖和今日头条共有,若转发请于显著处标明出处:http://www.cnblogs.com/naaoveGIS/

1.环境准备

1.1 软件准备

首先要安装有帮衬空间数据的Oracle,其次有安装版或免安装版的geoserver,两者都配置好后,大家将初叶研究进一步必要布置的条件。

此处自己动用由Oracle提供的shp2sdo来举行shp导入,同时采纳由geoserver提供的可以连接Oracle数据源的插件来进展多少的宣布。

Shp2sdo的下载地址为:http://down.51cto.com/data/223757

Geoserver的Oracle插件下载地址为:http://sourceforge.net/projects/geoserver/files/GeoServer。选择与你的geoserver版本对应的插件版本进行下载,比如我的是:geoserver-2.2-oracle-plugin.zip。

1.2运作环境准备

1.2.1 数据库环境布署

将shp2sdo.exe拷贝至Oracle环境变量所指的目录(bin)下。比如自己的是在:

   Oracle 1                    

1.2.2 geoserver环境配置

将geoserver-2.2-oracle-plugin.zip解压后可得如下文件:

 Oracle 2

a.要是是安装版,将gt-jdbc-oracle.jar放入:[GEOSERVER_HOME]/server/geoserver/WEB-INF/lib;假若是免安装版,将gt-jdbc-oracle.jar放入:In
a war install this is [container]/webapps/geoserver/WEB-INF/lib

b.假设是安装版,将ojdbc.jar放入:[GEOSERVER_HOME]/lib;我自身的是放入:F:\tomcat4Geoserver\lib。如若此文件放入的门道不对,oracle将无法连接上。

2.将shp导入Oracle

2.1 具体步骤

2.1.1限令行指向要导入的shp文件

Oracle 3

2.1.2应用shp2sdo将shp转换为导入文本

2.1.2.1 命令行

先交由输入的命令行:shp2sdo commhjt commhjttest –i id –s 4326 –g
GEOMETRY –d

Oracle 4

2.1.2.2切实分析

-i id_colum指定id种类列,默许是id,即作为转变数据的唯一性标志;      

-s
指定生成srid(即利用什么样坐标),默许是null(虽默许为null,导入后值是0,因而要专注将插入的元数据表的该条记录的srid更新为null,否则0值在MDSYS.CS_SRS表中绝非记录,在背后会出错); 那里自己的shp是WGS84坐标,所以一向写成4326。     

 -g  geometry column指定sdo_geometry,默认是GEOM;      

 -d 代表意义是将分解后的
ctl文件(控制文件)和data文件(数据存储文件)合并到一个文件,数据存储和决定都在ctl一个文书中。即使没有该选项,则会有单独的data文件生成,即ctl文件(控制文件)和data文件(数据存储文件);

以上命令行在shp文件夹中生成了之类文件:

 Oracle 5

开辟commhjttest.sql可以看来其是一个创办shp表即有关空间元数据的sql:

 Oracle 6

开辟commhjttest.ctl,可以窥见数指标插入都在中间:

 Oracle 7

2.1.3创办对应shp表并登记到USER_SDO_GEOM_METADATA(利用commhjttest.sql)

率先登陆到数据库中 :sqlplus dlgis/dlgis@stdcg

接下来输入:

SQL>@G:\shptest\commhjttest.sql 
–创设表并注册到USER_SDO_GEOM_METADATA

SQL>quit –退出数据库

 Oracle 8

2.1.4通过sqlldr将数据导入到创设的表中(利用commhjttest.ctl)

sqlldr dlgis/dlgis@stdcg commhjttest –导入数据 (sqlldr即sql
loader工具)

 Oracle 9

2.1.5将数据升级到与Oracle对应的版本上

先是再度连接到数据库上,然后输入:

SQL> execute sdo_migrate.to_current(‘commhjttest’);

 Oracle 10

2.1.6为增加查询速度,添加空间引得

Oracle,SQL>CREATE INDEX INDEX_OPER_DATA_SPATIAL ON commhjttest(GEOMETRY)
INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS(‘LAYER_GTYPE=POLYGON’)
NOPARALLEL;

 Oracle 11

要是出现上述处境,表明该索引名称或者以前就早已有利用,换一个名号即可,如索引名更换为:INDEX_OPER_DATA_SPATIAL_COMM

 Oracle 12

2.1.7    查看导入结果

 Oracle 13

2.2注意

当我们用shp2sdo生成shp的导入数据时,若是写的讲话是:

 Oracle 14

就要空间参考默许为null时,最后生成索引时会报错,错误如下:

 Oracle 15

缘由是此时的元数据表USER_SDO_GEOM_METADATA中的SRID是0而不是null。当大家将此SRID变为null后,再生成索引即可成功。

 Oracle 16

3.透过geoserver发布Oracle中的数据

3.1 建立依据Oracle数据源的Store

进入geoserver的web页面,点击stores,选择ORACLE NG:

 Oracle 17

Oracle 18

 点击保存即可。

3.2 发表数据

 Oracle 19

拔取要公布的数量,点击publish,做相关安排即可:

 Oracle 20

 

3.3浏览公布的图层服务

 Oracle 21

4.探讨

即便如此用Oracle提供的shp2sdo工具得以将shp数据导入,不过当前就自身的操作来说,还针锋相对复杂,培训工程人员有肯定的难度。假使想广泛的推广的话,应该要写一个相关的导入工具才行。

多谢博友其心塞渊的升迁,让自己通晓了还有shp2sdo那样的工具得以应用,再次谢谢。

 

                                                              
 —–欢迎转发,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                          
假使您觉得本文确实帮忙了您,可以微信扫一扫,举行小额的打赏和鼓励,谢谢
^_^

                                      Oracle 22

相关文章