简析将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)下。比如自己的凡于:

   图片 1                    

1.2.2 geoserver环境配置

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

 图片 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文件

图片 3

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

2.1.2.1 命令行

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

图片 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文件夹中生成了之类文件:

 图片 5

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

 图片 6

开拓commhjttest.ctl,可以窥见数目的插都在内部:

 图片 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 –退出数据库

 图片 8

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

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

 图片 9

2.1.5拿数据升级至跟Oracle对应之版本及

率先再次连至数据库及,然后输入:

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

 图片 10

2.1.6也加强查询速度,添加上空引得

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

 图片 11

比方出现上述状况,说明该索引名称或者之前就是曾生应用,换一个称号即可,如索引名更换为:INDEX_OPER_DATA_SPATIAL_COMM

 图片 12

2.1.7    查看导入结果

 图片 13

2.2注意

当我们因此shp2sdo生成shp的导入数据常常,如果写的语是:

 图片 14

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

 图片 15

故是这的状元数据表USER_SDO_GEOM_METADATA中之SRID是0而无是null。当我们以之SRID变为null后,再生成索引即可成功。

 图片 16

3.通过geoserver发布Oracle中之数码

3.1 建立因Oracle数据源的Store

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

 图片 17

图片 18

 点击保存即可。

3.2 发布数据

 图片 19

择要发布的数,点击publish,做连锁安排即可:

 图片 20

 

3.3浏览发布之图层服务

 图片 21

4.探讨

虽然用Oracle提供的shp2sdo工具得以将shp数据导入,但是时即使自身之操作来说,还相对复杂,培训工程人员来必然的难度。如果想大的拓宽的语句,应该使描写一个有关的导入工具才行。

多谢博友其心塞渊的提醒,让自家知了还有shp2sdo这样的工具得以应用,再次谢谢。

 

                                                              
 —–欢迎转载,但保留版权,请为大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                          
如果你当本文确实帮了卿,可以微信扫一扫,进行小额的打赏和鼓励,谢谢
^_^

                                      图片 22

相关文章