简析将shp导入Oracle并利用geoserver将导入的数据发布

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.环境准备 1.1 软件准备 首先要安装有支持空间数据的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.2.2 geoserver环境配置

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

 

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

2.1.2利用shp2sdo将shp转换为导入文件

2.1.2.1 命令行

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

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文件夹中生成了如下文件:

 

打开commhjttest.sql可以看到其是一个创建shp表即相关空间元数据的sql:

 

打开commhjttest.ctl,可以发现数据的插入都在其中:

 

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

 

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

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

 

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

首先再次连接到数据库上,然后输入:

SQL> execute sdo_migrate.to_current('commhjttest');

 

2.1.6为提高查询速度,添加空间索引

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

 

如果出现以上现象,说明该索引名称可能之前就已经有使用,换一个名称即可,如索引名更换为:INDEX_OPER_DATA_SPATIAL_COMM

 

2.1.7    查看导入结果

 

2.2注意

当我们用shp2sdo生成shp的导入数据时,如果写的语句是:

 

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

 

原因是此时的元数据表USER_SDO_GEOM_METADATA中的SRID是0而不是null。当我们将此SRID变为null后,再生成索引即可成功。

 

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

3.1 建立基于Oracle数据源的Store

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

 

 点击保存即可。

3.2 发布数据

 

选择要发布的数据,点击publish,做相关配置即可:

 

 

3.3浏览发布的图层服务

 

4.探讨

虽然用Oracle提供的shp2sdo工具可以将shp数据导入,但是目前就我的操作来说,还相对复杂,培训工程人员有一定的难度。如果想广泛的推广的话,应该要写一个相关的导入工具才行。

谢谢博友其心塞渊的提醒,让我知道了还有shp2sdo这样的工具可以使用,再次感谢。

 

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

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

                                      

目录
相关文章
|
5月前
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
84 0
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的还原数据
Oracle数据库中的还原数据(也称为undo数据或撤销数据)存储在还原表空间中,主要用于支持查询的一致性读取、实现闪回技术和恢复失败的事务。文章通过示例详细介绍了还原数据的工作原理和应用场景。
【赵渝强老师】Oracle的还原数据
|
5月前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
2月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
3月前
|
Oracle 关系型数据库 数据库
oracle数据创建同义词
oracle数据创建同义词
60 0
|
5月前
|
SQL 监控 Oracle
Oracle数据误删不用怕,跟我来学日志挖掘
Oracle数据误删不用怕,跟我来学日志挖掘
87 0
|
5月前
|
SQL Oracle 关系型数据库
Oracle误删数据怎么恢复?
Oracle误删数据怎么恢复?
64 0
|
5月前
|
SQL Oracle Java
实时计算 Flink版产品使用问题之采集Oracle数据时,为什么无法采集到其他TABLESPACE的表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
分布式计算 Oracle 关系型数据库
实时计算 Flink版产品使用问题之获取Oracle的数据时无法获取clob类型的数据,该怎么办
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

热门文章

最新文章

推荐镜像

更多