ORACLE SDO_GEOMETRY 空间数据创建查询

一、Oracle Spatial简介

Oracle 支持自定义的数据类型,可以用数组,结构体或者带有构造函数,功能函数的类来定义自己的对象类型。这样的对象类型可以用于属性列的数据类型,也可以用来创建对象表。而Oracle Spatial也正是基于此种特性所开发的一套空间数据处理系统。

Spatial 的自定义数据类型有很多,全部在MDSYS方案下,经常使用到的是SDO_GEOMETRY类型。SDO_GEOMETRY表示一个几何对象,可以是点、线、面、多点、多线、多面或混合对象。

Spatial 在此数据类型的基础上,实现了R树空间索引和四叉树空间索引,还以SQL函数的形式实现了多种空间分析功能。
二、测试表的建立与应用(点类型)

– 创建测试用表
CREATE TABLE “SPATIALTEST” (
“ID” VARCHAR2(20) NOT NULL,
“NAME” VARCHAR2(100),
“ADDRESS” VARCHAR2(200),
“TELEPHONE” VARCHAR2(50),
“LOCATION” “MDSYS”.”SDO_GEOMETRY”
)LOGGING;
– 创建主键约束
ALTER TABLE “SPATIALTEST”
ADD CONSTRAINT “PK_SPATIAL” PRIMARY KEY(”ID”);
– 根据用户表填写空间元数据
INSERT INTO USER_SDO_GEOM_METADATA
VALUES(
‘SPATIALTEST’,
‘location’,
MDSYS.SDO_DIM_ARRAY(
MDSYS.SDO_DIM_ELEMENT(’Longitude’,-180,180,10),
MDSYS.SDO_DIM_ELEMENT(’Latitude’,-90,90,10)
),
8307
);
– 建立空间索引
CREATE INDEX SPATIAL_IDX
ON SPATIALTEST(location)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
– 导入测试数据
INSERT INTO “SPATIALTEST”
VALUES(
‘dbeb7ea11eaf2b53a9b7′,
‘小肥羊(天河店)’,
‘广州市天河区天寿路25号’,
‘020-38217746′,
MDSYS.SDO_GEOMETRY(
2001,
8307,
MDSYS.SDO_POINT_TYPE(113.3293658, 23.14338586, 0),
NULL,
NULL
)
);
INSERT INTO “SPATIALTEST”
VALUES(
‘ef8393ef6273a72b2f70′,
‘山东老家’,
‘广州市越秀区合群一马路43号’,
‘020-87778983′,
MDSYS.SDO_GEOMETRY(
2001,
8307,
MDSYS.SDO_POINT_TYPE(113.2932474, 23.11883515, 0),
NULL,
NULL
)
); –其他INSERT INTO cola_markets VALUES(
2,
‘cola_b’,
MDSYS.SDO_GEOMETRY(
2003, – 2-dimensional polygon
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), — one polygon (exterior polygon ring)
MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)
)
);
– 属性信息查询
SQL> select location from spatialtest;LOCATION(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
——————————————————————————–
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(113.329366, 23.1433859, 0), NULL, NULL)SQL> select s.location.SDO_POINT.x langtitude from spatialtest s;LANGTITUDE
———-
113.329366
– 空间分析查询(113.2359818,23.16937253)周边十公里信息5条
SELECT
B.id id, B.name name, B.dist dist
FROM (
SELECT
A.id id, A.name name, SDO_GEOM.SDO_DISTANCE(A.location,MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(113.2359818,23.16937253,0),NULL,NULL),1) dist
FROM
spatialtest A
WHERE
SDO_WITHIN_DISTANCE(A.LOCATION,MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(113.2359818,23.16937253,0),NULL,NULL),’distance=10000′) = ‘TRUE’
ORDER BY A.name
) B
WHERE
ROWNUM <= 5
;
– 空间分析查询(113.2359818,23.16937253)附近的5条信息
SELECT
A.id id, A.name name,A.location.SDO_POINT.x langtitude, A.location.SDO_POINT.y latitude,MDSYS.SDO_NN_DISTANCE(1) distance
FROM
spatialtest A
WHERE
SDO_NN(A.LOCATION,MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(113.2359818,23.16937253,0),null,null),’SDO_NUM_RES=5′,1) = ‘TRUE’
;
– Return the topological difference of two geometries.
SELECT SDO_GEOM.SDO_DIFFERENCE(c_a.shape, m.diminfo, c_c.shape, m.diminfo)
FROM cola_markets c_a, cola_markets c_c, user_sdo_geom_metadata m
WHERE m.table_name = ‘COLA_MARKETS’ AND m.column_name = ‘SHAPE’
AND c_a.name = ‘cola_a’ AND c_c.name = ‘cola_c’;

三、MDYSYS.SDO_GEOMETRY结构

CREATE TYPE SDO_GEOMETRY AS OBJECT(
SDO_GTYPE NUMBER,       //表示几何实体的类型
SDO_SRID NUMBER,       //用来表示坐标系(空间参考坐标系),与几何实体关联
SDO_POINT MDSYS.SDO_POINT_TYPE, //使用X,Y,Z属性值来定义对象类型                   //它们都是NUMBER类型,
//如果SDO_GEOMETRY的SDO_ELEM_INFO及SDO_ORDINATES数组为
//空则SDO_POINT为非空,X和Y值就是点几何实体的坐标值
SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, //使用变长NUMBER型数组来表示。
//该属性将告知如何解释SDO_ORDINATES里边的坐标值;
SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY  //存储坐标值                  //形成空间对象的边界
);

//myself

INSERT INTO USER_SDO_GEOM_METADATA
  VALUES (
  'IX_POI',
  'GEOMETRY',
  MDSYS.SDO_DIM_ARRAY(
    MDSYS.SDO_DIM_ELEMENT('X', -180, 180, 10),
    MDSYS.SDO_DIM_ELEMENT('Y', -90, 90, 10)
     ),
  8307
);
INSERT INTO USER_SDO_GEOM_METADATA
  VALUES (
  'AD_FACE',
  'GEOMETRY',
  MDSYS.SDO_DIM_ARRAY(
    MDSYS.SDO_DIM_ELEMENT('X', -180, 180, 10),
    MDSYS.SDO_DIM_ELEMENT('Y', -90, 90, 10)
     ),
  8307
);
CREATE INDEX IDX_POI_GEOMETRY ON IX_POI(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX;

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值