oracle 创建SDO_Geometry表
Oracle Spatial由一坨的对象数据类型,类型方法,操作子,函数与过程组合而成。一个地理对象作为一个SDO_GEOMETRY对象保存在表的一个字段里。空间索引则由普通的DDL和DML语句来建立与维护。
本章主要说了一些例子演示如何建立,查询,索引空间数据。
简单的插入,索引与查询空间数据例子
本节演示一个很简单建立空间表,插入,建立索引,查询数据的过程。
场景是一个软饮料公司,用地理信息来表示他们的产品(可乐)在各个地区的情况。这些情况可以是:市场份额,竞争压力,增长潜力等等。而地区可以是邻近的市,州,省或国家。
我们要作的是:
1.建立一个表(COLA_MARKETS)来保存空间数据
2.插入四个(cola_a, cola_b, cola_c, cola_d)地区的数据
3.升级USER_SDO_GEOM_METADATA视图来反正这些地区的维度信息
4.建立空间索引(COLA_SPATIAL_IDX)
5.进行一些空间查询
- CREATE TABLE cola_markets (
- mkt_id NUMBER PRIMARY KEY,
- name VARCHAR2(32),
- shape SDO_GEOMETRY);
- INSERT INTO cola_markets VALUES(
- 1,
- 'cola_a',
- SDO_GEOMETRY(
- 2003, -- two-dimensional polygon
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior)
- SDO_ORDINATE_ARRAY(1,1, 5,7) -- only 2 points needed to
- -- define rectangle (lower left and upper right) with
- -- Cartesian-coordinate data
- )
- );
- -- The next two INSERT statements create areas of interest for
- -- Cola B and Cola C. These areas are simple polygons (but not
- -- rectangles).
- INSERT INTO cola_markets VALUES(
- 2,
- 'cola_b',
- SDO_GEOMETRY(
- 2003, -- two-dimensional polygon
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)
- SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)
- )
- );
- INSERT INTO cola_markets VALUES(
- 3,
- 'cola_c',
- SDO_GEOMETRY(
- 2003, -- two-dimensional polygon
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)
- SDO_ORDINATE_ARRAY(3,3, 6,3, 6,5, 4,5, 3,3)
- )
- );
- -- Now insert an area of interest for Cola D. This is a
- -- circle with a radius of 2. It is completely outside the
- -- first three areas of interest.
- INSERT INTO cola_markets VALUES(
- 4,
- 'cola_d',
- SDO_GEOMETRY(
- 2003, -- two-dimensional polygon
- NULL,
- NULL,
- SDO_ELEM_INFO_ARRAY(1,1003,4), -- one circle
- SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11)
- )
- );
需要写将建立的表的空间图层的信息插入一条到USER_SDO_GEOM_METADATA
- INSERT INTO user_sdo_geom_metadata
- (TABLE_NAME,
- COLUMN_NAME,
- DIMINFO,
- SRID)
- VALUES (
- 'cola_markets',
- 'shape',
- SDO_DIM_ARRAY( -- 20X20 grid
- SDO_DIM_ELEMENT('X', 0, 20, 0.005),
- SDO_DIM_ELEMENT('Y', 0, 20, 0.005)
- ),
- NULL -- SRID
- );
- -- SRID
USER_SDO_GEOM_METADATA 在登陆PL/SQL后,Users→MDSYS→Objects→Views→USER_SDO_GEOM_METADATA
打开可以查看到下图(我已经插入了2个空间表的记录了)
可以看到这个插入的记录,点击红色方框初的任意一个,会出现下图:
- SDO_DIM_ARRAY( -- 20X20 grid
- SDO_DIM_ELEMENT('X', 0, 20, 0.005),
- SDO_DIM_ELEMENT('Y', 0, 20, 0.005)
- ),
就是这句sql的意思了,其中SDO_DIMNAME是一个二维的最大值和最小值的描述,SDO_LB是在X上面最小值,SDO_UB是X上面的最大值,SDO_TOLERANCE是指误差的大小,这里就是指0.005内的数据都会默认为一个数据。
第四步就是,建立空间索引(COLA_SPATIAL_IDX)
- CREATE INDEX cola_spatial_idx
- ON cola_markets(shape)
- INDEXTYPE IS MDSYS.SPATIAL_INDEX;
建立索引的目的是增加查询速度(理论上也可以不建立索引进行查询,但是实际中基本无法查询的出来)
建立好索引后会在tables中生成一个下面的表:
这个是个索引表:
可以在系统的索引表中找的到。
以上就创建完成了SDO_Geometry表了;可以开始空间分析了。
oracle 创建SDO_Geometry表的更多相关文章
- Oracle创建测试表
试中文排序的数据库版本: SQL> select * from v$version; BANNER ----------------------------------------------- ...
- oracle创建默认表空间---重要
当oracle创建数据库后,sys创建用户时还要有默认表空间.不创建默认表空间在导如项目时会有些数据表导入不成功! 由于时间仓促以截屏为例 之后会在刚刚那个空文件生成一个文件 ----------- ...
- Oracle 创建数据表
数据库中的每一个表都被一个模式(或用户)所拥有,因此表是一种典型的模式对象.在创建数据表时,Oracle 将在一个指定的表空间中为其分配存储空间.最初创建的表时一个空的逻辑存储结构,其中不包含任何数据 ...
- Oracle 创建数据表以及对数据表、字段、主外键、约束的操作
选择主键的原则: 最少性 尽量选择使用单个键作为主键 稳定性 尽量选择数值更新少的列作为主键 1.创建数据表(CREATE TABLE) --创建数据表Student create table Stu ...
- Oracle 创建/删除 表空间、用户、授权
首先以DBA连接到数据库:sqlplus / as sysdba; --创建表空间 create tablespace test_tablespace datafile 'D:\developer\o ...
- oracle 创建数据表空间和用户
--创建临时表空间(不必须)create temporary tablespace zwtest tempfile 'D:\Java\oracle\oradata\zwtest.dbf' size 5 ...
- oracle创建数据库表空间
1.创建表空间(存放数据) create tablespace xtba_datadatafile 'F:\ORACLE\ORADATA\ORCL\XTBA.DBF'size 50mautoexten ...
- oracle创建数据库表空间 用户 授权 导入 导出数据库
windows下可以使用向导一步一步创建数据库,注意编码. windows连接到某一个数据库实例(不然会默认到一个实例下面):set ORACLE_SID=TEST --登录开始创建表空间及可以操作的 ...
- Oracle 创建外部表
Oracle 外部表能迅速的将海量的数据导入到数据库里面,外部表的创建使用步骤如下: 1 创建一个Directory:必须用sys用户创建,用户存放外部数据文件. create directory D ...
随机推荐
- windows远程xshell文件上传下载:
安装:yum install -y lrzsz 上传:rz下载:sz 文件名
- js实现放大镜效果
原理: 鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置: 放大镜的移动方向和大图片的移动方向:横向和纵向都是相反,才可以保证同步: 需要元素:大图和小图,存放大图和小图的容器 ...
- 查看Oracle当前连接数
SQL> select count(*) from v$session #当前的连接数 SQL> Select count(*) from v$session where status=' ...
- 输入http://localhost/,apache出现You don't have permission to access/on this server.的提示,如何解决?
本地搭建wamp,输入http://127.0.0.1访问正常,当输入http://localhost/,apache出现You don't have permission to access/on ...
- python处理时间和日期
时间和日期 (图中错误修正:dt_obj.strftime(format)) import time, datetime 1. datetime obj 1) datetime dateti ...
- 性能测试工具LoadRunner28-LR之内部数据参数类型
Date/Time 在“Parameter type”中您可以选择Date/Time,即:用当前的日期/时间替换参数.要指定日期/时间的格式,可以从格式列表中选择一个格式,或者指定您自己的格式. [l ...
- PyCharm5 破解汉化
作者博文地址:https://www.cnblogs.com/liu-shuai/ 破解: 将下列序列号复制到软件激活界面即可破解. 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0 ...
- Http Client 源码分析
/** * 此接口仅代表HTTP请求执行的最基本约定. * 它对请求执行过程没有任何限制或特定的细节,并将状态管理.身份验证和重定向处理的细节留给单个实现. */ public interface H ...
- vue学习笔记 vue
目前为止对vue完全懵逼. 对着菜鸟教程,现在我尝试梳理下. 服务我已经启起来.可以看到页面 在src/App.vue里面有展示模板<template></template> ...
- MemoryCache缓存 ---缓存时效
MemoryCache缓存 ---缓存时效测试 var cachePool = new MyCachePool(); //Thread.Sleep(1000); var value = cachePo ...