当前位置: 首页 > news >正文

oracle查询浪费的空间,Oracle spatial结合WebGIS进行空间查询

Oracle Spatial提供了空间查询功能,在确定了空间查询的条件以后,可以是矩形,多边形或者是行政区划的区域。可以方便的用Oracle Spatial提供的Sql来完成空间查询。

比较困难的是行政区划查询的实现。第一个最初的想法未脱离ArcSDE的束缚,当时的想法是在SDE的表空间中查询得到SDE表示的行政区划空间信息,由于这些空间信息包含的点比较多,当时觉得可能无法在Sql中包含这么多的空间点,因此想用点采样的办法来完成查询。但是,这种方法可行性不强,另外查询的精度太差。

后来经过调研发现,可以利用Oracle的一个不起眼的小工具shp2sdo,将图层的信息注入到Oracle的表空间中去,生成行政区划信息的Oracle Spatial表结构。由于ArcGIS Server中的地图服务用到了也是这些Shp文件,因此,ArcGIS Server与Oracle Spatial两边的行政区划信息得到了统一,这样很方便的就完成了行政区划查询。

Oracle Spatial小工具的使用办法如下:(以下内容转自其他blog)

—————————————————-

最近因为工作的关系,开始接触GIS,采用开源的Geoserver、Geotools、Mapbuilder来开发,数据库使用oracle spataral,刚开始是一直在看别人已经做好的一个半成品系统,自己模仿着来改,GIS采用的数据格式比较特殊,不能使用一般的导表方式来导,而且地图文件的格式也比较特殊,一般是shp、或者是tab,这里主要是用的shp文件,因此需要将shp文件进行处理,转换成oracle数据格式,其实也没什么难的,只是如果不熟悉的话,可能也需要浪费一点时间来看一下。

首先我们要把shp文件转换分割成oracle可以导入的数据库文件,这个转换可以使用oracle提供的一个现成的工具shp2sdo(很小),可以到官方网站去找(不过可能不是很好找,需要的可以留下邮箱),下载后把此文件复制到PATH变量包含的目录下,如我的oracle客户端安装后自动注册的环境变量是 path C:\Oracle\product\10.1.0\Client_1\bin;,我们可以把此文件拷贝到该目录下,然后在dos下运行该工具,定位到我们的shp文件的位置,例如我们的shp文件名称是state.shp(shapefile包括至少三个文件state.shp state.dbf state.idx)在D:\data\目录下,我们在dos命令窗口下就应该这样操作

shp2sdo state statearea -i gid -s 8307 -g -d

其中state即为本地的shp文件名(不加shp后缀),statearea为生成的文件名(同时也是将来导进数据库的表名),-d代表含义是将分解后的ctl文件(控制文件)和data文件(数据存储文件)分别生成,如果没有该选项,则不会有单独的data文件生成,数据存储和控制都在ctl一个文件中, 经常用到的还有选项 -i id_colum指定id序列列,默认是id,即作为生成数据的唯一性标志,此列是不可能重复的,一般作为索引列,-s **指定生成srid,默认是null,目前一般是8307吧,-g geometry column指定sdo_geometry,默认是GEOM,此选项一般使用默认即可,命令执行后,会生成三个文件,statearea.sql、statearea.ctl、stateare.data。

分解完成后就是导入,这里仍然使用命令行的方式

D:\data\>sqlplus pgg/pgg@orcl

SQL>@statearea.sql

SQL>quit

导入ctl文件

D:\data\>sqlldr pgg/pgg@orcl statearea

建立空间索引

D:\data\>sqlplus pgg/pgg@orcl

SQL>CREATE Index STATEAREA_idx ON STATEAREA (GEOM) INDEXTYPE is MDSYS.SPATIAL_INDEX;

至此空间数据导入完毕。

另外还需要建立一个视图,具体作用说不大清楚,但在启动程序发布地图的时候会用到,如果没有此视图文件会出现图层无法map的错误,建立过程如下:

SQL> CREATE OR REPLACE VIEW CS_SRS AS

2 SELECT “CS_NAME”,”SRID”,”AUTH_SRID”,”AUTH_NAME”,”WKTEXT”,”CS_BOUNDS”

3 FROM MDSYS.CS_SRS

4 /

另外如果自己手工新建图层的话,过程如下:

DROP TABLE BZXX;

CREATE TABLE BZXX(

GID VARCHAR2(32) NOT NULL,

NAME VARCHAR2(20),

BZNR VARCHAR2(400),

BEIZ VARCHAR2(600),

COOR MDSYS.SDO_GEOMETRY

);

ALTER TABLE BZXX

ADD CONSTRAINT PK_BZXX PRIMARY KEY (GID);

DELETE FROM USER_SDO_GEOM_METADATA

WHERE TABLE_NAME = ‘BZXX’ AND COLUMN_NAME = ‘COOR’ ;

INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)

VALUES (‘BZXX’, ‘COOR’,

MDSYS.SDO_DIM_ARRAY

(MDSYS.SDO_DIM_ELEMENT(‘X’, -180.000000000, 180.000000000, 0.500000000),

MDSYS.SDO_DIM_ELEMENT(‘Y’, -90.000000000, 90.000000000, 0.500000000)

),

8307);

COMMIT;

CREATE INDEX BZXX_GEOM_INDEX ON BZXX(COOR)

INDEXTYPE IS MDSYS.SPATIAL_INDEX

PARAMETERS(‘SDO_INDX_DIMS=2, LAYER_GTYPE=POINT’);

—————————————————-

转载自:https://blog.csdn.net/ustcfxx/article/details/83470351

相关文章:

  • oracle hint失效,HINT不起作用是为何?
  • CISCO 相关技术大集合(收藏)__02
  • php如何检测设备是手机,PHP检测终端设备是平板、手机还是电脑
  • ACDSee v8.0最完美汉化破解补丁发布,永不过期,还有绿色版
  • Linux创建自己命令,Linux命令别名:定义自己的命令
  • BT下载]为大家献上真正原版,绝无改动的工行正版免激活XP,OFFICE2003
  • 如何查看后被暂停的进程 linux,关于Linux 进程你要知道的事
  • 【热度·推荐】超强推荐,大家齐用VNN内网穿透版的电驴,加速下载快行动!
  • linux文件子目录,linux显示指定目录下所有的文件,子目录及子目录的文件
  • Windows Vista 的版本区别已经公布,可能分成7个版本
  • linux网卡漂移问题,KVM上linux虚拟机clone后,网卡设备名eth0漂移到eth1的解决方法...
  • 打算组装电脑的配置
  • linux 进程崩溃 堆栈,c – 当程序崩溃时如何自动生成堆栈跟踪
  • 彻底删除3721的简单方法
  • linux9屏幕大小,求救RedHat9修改屏幕分辨率
  • @angular/forms 源码解析之双向绑定
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • android 一些 utils
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • exports和module.exports
  • HashMap剖析之内部结构
  • JavaScript学习总结——原型
  • passportjs 源码分析
  • Spark学习笔记之相关记录
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Yeoman_Bower_Grunt
  • 从伪并行的 Python 多线程说起
  • 关于for循环的简单归纳
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 人脸识别最新开发经验demo
  • 山寨一个 Promise
  • - 转 Ext2.0 form使用实例
  • # 达梦数据库知识点
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (2)nginx 安装、启停
  • (30)数组元素和与数字和的绝对差
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (五)网络优化与超参数选择--九五小庞
  • (一)Neo4j下载安装以及初次使用
  • (原創) 物件導向與老子思想 (OO)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)ORM
  • .Net 8.0 新的变化
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET命令行(CLI)常用命令
  • /var/spool/postfix/maildrop 下有大量文件
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚