亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

oracle spatial

系統 1903 0

首先,oracle 支持自定義的數據類型,你能用數組,結構體或帶有構造函數,功能函數的類來定義自己的對象類型。這樣的對象類型能用于屬性列的數據類型,也能用來創建對象表。而oracle spatial也正是基于此種特性所研發的一套空間數據處理系統。

?

  spatial 的自定義數據類型有非常多,都在mdsys方案下,經常使用的是sdo_geometry類型。sdo_geometry表示一個幾何對象,能是點、線、面、多點、多線、多面或混合對象。

?

  spatial 在此數據類型的基礎上,實現了r樹空間索引和四叉樹空間索引,還以sql函數的形式實現了多種空間分析功能。

?

ORACLE SPATIAL Oracle 數據庫強大的核心特性,包含了用于存儲矢量數據類型、柵格數據類型和持續拓撲數據的原生數據類型。 ORACLE SPATIAL 使得我們能夠在一個多用戶環境中部署地理信息系統(GIS),并且與其它企業數據有機結合起來,統一部署電子商務、政務。有了 ORACLE SPATIAL 之后,即可用標準的 SQL 查詢管理我們的空間數據。

?

ORACLE SPATIAL 功能由于傳統的 GIS 技術已達到其本身可伸縮性和可*性的極限,用戶越來越多地轉向以數據庫為中心的空間計算。 ORACLE SPATIAL 將空間過程和操作直接轉移到數據庫內核中,從而提高了性能和安全性。 ORACLE SPATIAL 從1995年 ORACLE 7.1.6開始發展到2003年的10G版本,空間數據處理能力越來越強大。

?

ORACLE SPATIAL 將所有的地理空間數據類型(矢量、柵格、網格、影像、網絡、拓撲)統一在單一、開放的、基于標準的數據管理環境中, 這就減少了管理單獨、分離的專用系統的成本、復雜性和開銷。

?

?

Step1. 創建一張表,其中shape用來存放空間數據
CREATE TABLE mylake (
??? feature_id NUMBER PRIMARY KEY,
??? name VARCHAR2(32),
??? shape MDSYS.SDO_GEOMETRY );

Step2. 在 user_sdo_geom_metadata 表中插入新記錄,用于描述空間字段
INSERT INTO user_sdo_geom_metadata VALUES (
??? 'mylake',???? //---表名
??? 'shape',???? //---字段名
??? MDSYS.SDO_DIM_ARRAY(???
??????? MDSYS.SDO_DIM_ELEMENT('X', 0, 100, 0.05),???? //---X維最小,最大值和容忍度。
??????? MDSYS.SDO_DIM_ELEMENT('Y', 0, 100, 0.05)???? //---Y維最小,最大值和容忍度
??? ),
??? NULL???? //---坐標系,缺省為笛卡爾坐標系
);

Step3. 創建空間索引
CREATE INDEX mylake_idx ON mylake(shape)
??? INDEXTYPE IS MDSYS.SPATIAL_INDEX

Step4. 插入空間數據
Oracle Spatial用 MDSYS.SDO_GEOMETRY 來存儲空間數據,定義為: CREATE TYPE sdo_geometry AS OBJECT (
??? SDO_GTYPE NUMBER,
??? SDO_SRID NUMBER,
??? SDO_POINT SDO_POINT_TYPE,
??? SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,
??? SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY);
SDO_GTYPE: 用四個數字定義了所有的形狀

??????????? 第一位:維數
???????????

第二位:線性表示。用于3,4維數據,二維為0
??????????? 最后兩位:

Value Geometry Description
00 UNKNOWN_GEOMETRY Spatial ignores this value
01 POINT A single point element
02 LINE or CURVE Contains one line string element that may be linear, curved or both
03 POLYGON Contains one polygon element with or without other polygon elements in it
04 COLLECTION A heterogeneous collection of elements
05 MULTIPOINT Contains one or more points
06 MULTILINE or MULTICURVE Contains one or more line string elements
07 MULTIPOLYGON Contains multiple polygon elements that maybe disjoint

?

?

?

?

SDO_SRID: 坐標系,NULL為笛卡爾坐標系。
SDO_POINT:
Oracle Spatial也可定義單個的點, SDO_POINT 的定義:
??? CREATE TYPE sdo_point_type AS OBJECT (X NUMBER,Y NUMBER,Z NUMBER);
??? 如果是二維,Z為NULL。
SDO_ELEM_INFO:
每三個值描述一個 元素。
???????????????? 第一個值:第一個頂點在 SDO_ORDINATES_ARR 開始位置
???????????????? 第二個值:元素類型
???????????????? 第三個值:頂點連接方式:1-通過直線連接,2-通過圓弧連接

??? 定義為
??? CREATE TYPE sdo_elem_info_array AS VARRAY (1048576) of NUMBER;
SDO_ORDINATES: 幾何圖形所有頂點列表。定義為
??? CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER;

FONT color=#003366> // 插入包含一個島嶼的湖泊
INSERT INTO mylake VALUES(
??? 10,?
??? 'Lake Calhoun',?
??? MDSYS.SDO_GEOMETRY(
??????? 2003,
??????? NULL,
??????? NULL,
??????? MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1),
??????? MDSYS.SDO_ORDINATE_ARRAY(0,0, 10,0, 10,10, 0,10, 0,0, 4,4, 6,4, 6,6, 4,6, 4,4)
??? ));

// 插入兩艘小船
INSERT INTO mylake VALUES(
??? 11,?
??? 'The Windswept',?
??? MDSYS.SDO_GEOMETRY(
??????? 2003,
??????? NULL,
??????? NULL,
??????? MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
??????? MDSYS.SDO_ORDINATE_ARRAY(2,2, 3,2, 3,2, 2,3, 2,2)
??? )
);

INSERT INTO mylake VALUES(
??? 12,?
??? 'Blue Crest',?
??? MDSYS.SDO_GEOMETRY(
??????? 2003,
??????? NULL,
??????? NULL,
??????? MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
??????? MDSYS.SDO_ORDINATE_ARRAY(7,7, 8,7, 8,7, 7,8, 7,7)
??? )
);

Step4. 查詢
Oracle Spatial查詢數據包括二個處理過程:
1.只通過索引查詢候選項。通過函數 SDO_FILTER 實現:
SDO_FILTER(geometry1 MDSYS.SDO_GEOMETRY,?geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)
geometry1:
必須是被索引的幾何數據
geometry2: 不一定是表中的空間字段,也不要求被索引
params: Filter類型
??????? querytype=WINDOW: geometry2不要求來自表
??????? querytype=JOIN :geometry2必須來自表

SELECT name boat_name
FROM mylake t
WHERE feature_id = 12
AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
??? mdsys.sdo_elem_info_array(1,1003,1),
??? mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
??? 'querytype=WINDOW') = 'TRUE';


2.再檢查每個候選項是否和條件精確匹配。通過函數 SDO_RELATE 實現:
SDO_RELATE(geometry1 MDSYS.SDO_GEOMETRY, geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)
params:
masktype類型

  • DISJOINT — the boundaries and interiors do not intersect
  • TOUCH — the boundaries intersect but the interiors do not intersect
  • OVERLAPBDYDISJOINT — the interior of one object intersects the boundary and interior of the other object, but the two boundaries do not intersect. This relationship occurs, for example, when a line originates outside a polygon and ends inside that polygon.
  • OVERLAPBDYINTERSECT — the boundaries and interiors of the two objects intersect
  • EQUAL — the two objects have the same boundary and interior
  • CONTAINS — the interior and boundary of one object is completely contained in the interior of the other object
  • COVERS — the interior of one object is completely contained in the interior of the other object and their boundaries intersect
  • INSIDE — the opposite of CONTAINS . A INSIDE B implies B CONTAINS A .
  • COVEREDBY — the opposite of COVERS . A COVEREDBY B implies B COVERS A .
  • ON — the interior and boundary of one object is on the boundary of the other object (and the second object covers the first object). This relationship occurs, for example, when a line is on the boundary of a polygon.
  • ANYINTERACT — the objects are non-disjoint.

    // 選擇在定義矩形內的所有小船
    SELECT name boat_name
    FROM mylake t
    WHERE feature_id = 12
    AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
    ??? mdsys.sdo_elem_info_array(1,1003,1),
    ??? mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
    ??? 'querytype=WINDOW') = 'TRUE'
    AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
    ??? mdsys.sdo_elem_info_array(1,1003,1),
    ??? mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
    ??? 'masktype=INSIDE querytype=WINDOW') = 'TRUE'

    // masktype可聯合使用
    SELECT feature_id id
    FROM mylake t
    WHERE feature_id = 12
    AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
    ??? mdsys.sdo_elem_info_array(1,1003,1),
    ??? mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
    ??? 'querytype=WINDOW') = 'TRUE'
    AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL,
    ??? mdsys.sdo_elem_info_array(1,1003,1),
    ??? mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)),
    ??? 'masktype=INSIDE+TOUCH querytype=WINDOW') = 'TRUE'

    Oracle Spatial 提供的其他查詢函數:

    Query Description
    SDO_NN Nearest neighbor
    SDO_SDO_WITHIN_DISTANCE All geometries with a certain distance
    ?
    Functions Description
    SDO_GEOM.SDO_MBR The minimum bounding rectangle for a geometry
    SDO_GEOM.SDO_DISTANCE The distance between two geometries
    SDO_GEOM.SDO_INTERSECTION Provides the intersection point of two geometries

    ?

oracle spatial


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产精品久久久久666 | 欧美日韩中文视频 | 97久久精品| 久久精品中文字幕久久 | 前田香织一区二区中文字幕 | 国内视频精品 | 国产一区二区三区精品久久呦 | 久久最近最新中文字幕大全 | 青青久久久国产线免观 | 日韩欧美高清在线观看 | 日韩欧美亚洲 | 国产福利在线视频 | 国产午夜永久福利视频在线观看 | 99热久久只有精品6国产32 | 99香蕉国产精品偷在线观看 | 亚洲精品日韩一区二区 | 91精品专区| 九九在线精品视频xxx | 99久久网站 | 成年人免费毛片 | 99麻豆久久久国产精品免费 | 欧美日本视频在线观看 | 国产一区二区三区在线免费观看 | 在线观看福利网站 | 免费人成在线观看网站品爱网 | 欧美成人交tv免费观看 | 思思91精品国产综合在线 | 久久综合激情 | 91最新在线观看 | 久草在线这里只有精品 | 久久6国产 | 伊香蕉大综综综合久久 | 日日摸日日碰夜夜爽久久 | 五月婷综合 | 69国产成人综合久久精品 | 男人都懂的网站 | 毛片视| 性成人动作片在线看 | sese综合| 久久精品免视看国产盗摄 | 亚洲国产最新在线一区二区 |