• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

    mysql對(duì)GIS的支持&amp;amp;oracle空間數(shù)據(jù)庫說明

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 15:35:28
    文檔

    mysql對(duì)GIS的支持&amp;oracle空間數(shù)據(jù)庫說明

    mysql對(duì)GIS的支持&oracle空間數(shù)據(jù)庫說明:今天下午閑來無事,無意中翻看了一下mysql的手冊(cè),以前總是很有針對(duì)性的查閱手冊(cè)的內(nèi)容,重點(diǎn)都是放在了sql語句的一些基本細(xì)節(jié)、mysql的性能參數(shù)、存儲(chǔ)控制的管理等方面,但是今天無意中發(fā)現(xiàn)了一個(gè)mysql的重要特點(diǎn),那就是mysql對(duì)gis相關(guān)的空間數(shù)據(jù)也有存儲(chǔ)
    推薦度:
    導(dǎo)讀mysql對(duì)GIS的支持&oracle空間數(shù)據(jù)庫說明:今天下午閑來無事,無意中翻看了一下mysql的手冊(cè),以前總是很有針對(duì)性的查閱手冊(cè)的內(nèi)容,重點(diǎn)都是放在了sql語句的一些基本細(xì)節(jié)、mysql的性能參數(shù)、存儲(chǔ)控制的管理等方面,但是今天無意中發(fā)現(xiàn)了一個(gè)mysql的重要特點(diǎn),那就是mysql對(duì)gis相關(guān)的空間數(shù)據(jù)也有存儲(chǔ)

    今天下午閑來無事,無意中翻看了一下mysql的手冊(cè),以前總是很有針對(duì)性的查閱手冊(cè)的內(nèi)容,重點(diǎn)都是放在了sql語句的一些基本細(xì)節(jié)、mysql的性能參數(shù)、存儲(chǔ)控制的管理等方面,但是今天無意中發(fā)現(xiàn)了一個(gè)mysql的重要特點(diǎn),那就是mysql對(duì)gis相關(guān)的空間數(shù)據(jù)也有存儲(chǔ)

    今天下午閑來無事,無意中翻看了一下mysql的手冊(cè),以前總是很有針對(duì)性的查閱手冊(cè)的內(nèi)容,重點(diǎn)都是放在了sql語句的一些基本細(xì)節(jié)、mysql的性能參數(shù)、存儲(chǔ)控制的管理等方面,但是今天無意中發(fā)現(xiàn)了一個(gè)mysql的重要特點(diǎn),那就是mysql對(duì)gis相關(guān)的空間數(shù)據(jù)也有存儲(chǔ)功能,這一點(diǎn)突然激起了我的興趣,所以也著重的研究了一下手冊(cè)的相關(guān)內(nèi)容。從手冊(cè)上來看 其實(shí)mysql很早就提供了對(duì)gis對(duì)象的支持,只是我沒有發(fā)現(xiàn)而已。

    PostgreSQL由于具備PostGIS擴(kuò)展而在開源GIS中有廣泛地應(yīng)用,而作為開源數(shù)據(jù)庫中的另一個(gè)巨頭,mysql也不曾放棄gis這一重要的數(shù)據(jù)庫應(yīng)用領(lǐng)域。從MySQL4.1開始,mysql就引入了一系列空間擴(kuò)展,使其具備了一定的空間處理能力。
    mysql遵守OGC的OpenGIS Geometry Model,支持以下空間數(shù)據(jù)對(duì)象
    Geometry (non-instantiable)

    Point (instantiable)
    Curve (non-instantiable)
    LineString (instantiable)
    Line
    LinearRing
    Surface (non-instantiable)
    Polygon (instantiable)
    GeometryCollection (instantiable)

    MultiPoint (instantiable)
    MultiCurve (non-instantiable)
    MultiLineString (instantiable)
    MultiSurface (non-instantiable)
    MultiPolygon (instantiable)

    WTK是將空間數(shù)據(jù)導(dǎo)入mysql空間數(shù)據(jù)表的主要途徑。WTB是WTK的二進(jìn)制形式,也可以為mysql辨識(shí)。

    創(chuàng)建mysql空間數(shù)據(jù)表
    當(dāng)前只有MyISAM引擎的數(shù)據(jù)表支持地理空間數(shù)據(jù)的存儲(chǔ),所以在創(chuàng)建數(shù)據(jù)表的時(shí)候必須進(jìn)行聲明。

    CREATE DATABASE geodatabase;
    USE geodatabase;
    CREATE TABLE test(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(128) NOT NULL,
    pnt POINT,
    line LINESTRING,
    pgn POLYGON
    )ENGINE=MyISAM;


    用以下SQL插入一條空間數(shù)據(jù)

    INSERT INTO `test` VALUES(
    null,
    'a test string',
    POINTFROMTEXT('POINT(15 20)'),
    LINESTRINGFROMTEXT('LINESTRING(0 0, 10 10, 20 25, 50 60)'),
    POLYGONFROMTEXT('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')
    );

    這里也可以用通行的GEOMFROMTEXT函數(shù)實(shí)現(xiàn)WKT到數(shù)據(jù)庫內(nèi)部幾何格式的轉(zhuǎn)換。而GEOMFROMWKB函數(shù)用于轉(zhuǎn)換WKB。

    用以下SQL從數(shù)據(jù)表中獲得空間數(shù)據(jù)

    SELECT id,name,ASTEXT(pnt),ASTEXT(line),ASTEXT(pgn) from `test`;

    ASTEXT函數(shù)的功能與GEOMFROMTEXT的功能恰好相反,就是將數(shù)據(jù)從內(nèi)部格式轉(zhuǎn)換為WKT;相應(yīng)的ASBINARY可以轉(zhuǎn)換為WKB。

    mysql內(nèi)建的gis函數(shù),這些函數(shù)是mysql數(shù)據(jù)庫本身就具備了比較強(qiáng)大的空間分析能力。mysql作為“最快”的開源數(shù)據(jù)庫,在gis領(lǐng)域中完全可以有更廣泛的應(yīng)用。

    我個(gè)人認(rèn)為充分的發(fā)掘mysql在gis空間數(shù)據(jù)存儲(chǔ)上的特點(diǎn),通過php腳本或者c#程序開發(fā)有特色的存儲(chǔ)方式一定是一件非常有意義的事情,有時(shí)間的話我回做一些嘗試,有什么進(jìn)展也會(huì)及時(shí)的寫在博客上。

    由于最近弄一些空間數(shù)據(jù),所以找了些oracle空間數(shù)據(jù)庫的一些知識(shí).下面是匯總:

    Oracle Spatial由一坨的對(duì)象數(shù)據(jù)類型,類型方法,操作子,函數(shù)與過程組合而成。一個(gè)地理對(duì)象作為一個(gè)SDO_GEOMETRY對(duì)象保存在表的一個(gè)字段里??臻g索引則由普通的DDL和DML語句來建立與維護(hù)。
    創(chuàng)建表:
    CREATE TABLE cola_markets (
    mkt_id NUMBER PRIMARY KEY,
    name VARCHAR2(32),
    shape SDO_GEOMETRY);

    插入數(shù)據(jù):
    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
    )
    );
    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)
    )
    );

    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
    );

    創(chuàng)建空間索引:
    CREATE INDEX cola_spatial_idx
    ON cola_markets(shape)
    INDEXTYPE IS MDSYS.SPATIAL_INDEX;
    -- Preceding statement created an R-tree index.

    這樣在mapguide下就可以preview空間數(shù)據(jù)信息.

    下面來說一下其中最關(guān)鍵的一些object:

    ( SDO_GEOMETRY對(duì)象類型
    在Spatial中,地理對(duì)象的描述是放在一個(gè)單獨(dú)的類型為SDO_GEOMETRY的字段中的。任何有這個(gè)字段的表,都至少要定義一個(gè)其它主鍵字段。

    Oracle Spatial定義的SDO_GEOMETRY類型為:
    CREATE TYPE sdo_geometry AS OBJECT (
    SDO_GTYPE NUMBER,
    SDO_SRID NUMBER,
    SDO_POINT SDO_POINT_TYPE,
    SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,
    SDO_ORDINATES SDO_ORDINATE_ARRAY);

    當(dāng)然Spatial也定義了SDO_POINT_TYPE, SDO_ELEM_INFO_ARRAY, 和
    SDO_ORDINATE_ARRAY類型:
    CREATE TYPE sdo_point_type AS OBJECT (
    X NUMBER,
    Y NUMBER,
    Z NUMBER);
    CREATE TYPE sdo_elem_info_array AS VARRAY (1048576) of NUMBER;
    CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER;

    因?yàn)镾DO_ORDINATE_ARRAY最大為1048576,所以SDO_GEOMETRY對(duì)象的頂點(diǎn)數(shù)量就依賴于它的維度,二維為524288,三維為349525,四維只有262144個(gè)頂點(diǎn)了。

    注意:

    對(duì)于一個(gè)給定的層(同一字段),所有的地理對(duì)象必須都是相同的維度,不能將二維與三維的數(shù)據(jù)放在一個(gè)層里。

    如果你使用四位的SDO_ETYPE那么,你也要使用四位的SDO_GTYPE。

    )

    SDO_GEOMETRY Object Type
    2.1 SDO_GTYPE dltt
    d:維數(shù)
    l:linear referencing system (LRS)
    tt:Geometry type
    00 UNKNOWN_GEOMETRY
    01 POINT
    02 LINE or CURVE
    03 POLYGON
    04 COLLECTION
    05 MULTIPOINT
    06 MULTILINE or MULTICURVE
    07 MULTIPOLYGON
    2.2 SDO_SRID
    確認(rèn)coordinate system,此值為SDO_COORD_REF_SYS表中的SRID值。此值也被插入到USER_SDO_GEOM_METADATA視圖中。
    2.3 SDO_POINT
    (1)SDO_ELEM_INFO and SDO_ORDINATES are both null
    (2)SDO_POINT attribute is non-null
    結(jié)論:存儲(chǔ)坐標(biāo)
    2.4 SDO_ELEM_INFO
    用來解釋存儲(chǔ)在SDO_ORDINATES屬性中的坐標(biāo)信息。
    SDO_STARTING_OFFSET:SDO_ORDINATES中的offset min為1
    SDO_ETYPE: 1, 2, 1003, and 2003 simple elements; 3 polygon ring; 4, 1005, and 2005 compound elements
    SDO_INTERPRETATION
    2.5 SDO_ORDINATES
    長數(shù)組,存放空間對(duì)象的坐標(biāo)
    2.6 Usage Considerations
    SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT 用來檢查幾何對(duì)象的一致性。

    1.1 SDO_GEOMETRY字段詳解
    Oracle Spatial的空間數(shù)據(jù)都存儲(chǔ)在空間字段sdo_Geometry中,理解sdo_Geometry是編寫Oracle Spatial程序的關(guān)鍵。sdo_Geometry是按照Open GIS規(guī)范定義的一個(gè)對(duì)象,其原始的創(chuàng)建方式如下所示:

    CREATE TYPE sdo_geometry AS OBJECT (
    SDO_GTYPE NUMBER,
    SDO_SRID NUMBER,
    SDO_POINT SDO_POINT_TYPE,
    SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,
    SDO_ORDINATES SDO_ORDINATE_ARRAY);
    該對(duì)象由五個(gè)部分組成,各部分的意義如下表所示:
    字段名
    類型
    描述

    SDO_GTYPE
    NUMBER
    幾何對(duì)象的類型

    SDO_SRID
    NUMBER
    幾何對(duì)象的坐標(biāo)系

    SDO_POINT
    SDO_POINT_TYPE
    表示幾何類型為點(diǎn)的幾何對(duì)象

    SDO_ELEM_INFO

    SDO_ELEM_INFO_ARRAY
    是一個(gè)可變長度的數(shù)組,每3個(gè)數(shù)作為一個(gè)元素單位,用于解釋坐標(biāo)是如何存儲(chǔ)在SDO_ORDINATES中的

    SDO_ORDINATES

    SDO_ORDINATE_ARRAY
    是一個(gè)可變長度的數(shù)組,用于存儲(chǔ)幾何對(duì)象的真實(shí)坐標(biāo),該數(shù)組的類型為NUMBER型


    表1.1.1 sdo_geometry 各組成部分的意義
    ① SDO_GTYPE
    是一個(gè)NUMBER型的數(shù)值,用來定義存儲(chǔ)幾何對(duì)象的類型。SDO_GTYPE是一個(gè)4個(gè)數(shù)字的整數(shù),其格式為dltt,其中d表示幾何對(duì)象的維數(shù);l表示三維線性參考系統(tǒng)中的線性參考值,當(dāng)d為3維或者4維時(shí)需要設(shè)置該值,一般情況下為空;tt為幾何對(duì)象的類型,Oracle Spatial定義了7種類型的幾何類型,目前,tt使用了00到07,其中08到99是Oracle Spatial保留的數(shù)字,以備將來幾何對(duì)象擴(kuò)展所用。下表描述了Oracle Spatia1支持的幾何對(duì)象類型。
    數(shù)值 幾何類型 描述
    DL00 用于存放自定義類型的幾何對(duì)象
    DL01 點(diǎn) 幾何對(duì)象包含一個(gè)點(diǎn)
    DL02 直線或曲線 幾何對(duì)象由直線或曲線段組成
    DL03 多邊形 幾何對(duì)象包含一個(gè)多邊形,該多邊形可以含有洞
    DL04 復(fù)合形狀集 點(diǎn)、線、多邊形超集,可包含所有類型
    DL05 復(fù)合點(diǎn) 幾何對(duì)象由一個(gè)點(diǎn)或多個(gè)點(diǎn)組成
    DL06 復(fù)合線或曲線 幾何對(duì)象由一條線或多條線組成
    DL07 復(fù)合多邊形 幾何對(duì)象可以包含多個(gè)外環(huán)、多個(gè)不相交的多邊形
    DL08 - 99 Oracle Spatial 暫且保留
    表1.1.2 Oracle Spatia1支持的幾何對(duì)象類型

    ② SDO_SRID
    SDO_SRID也是一個(gè)NUMBER型的數(shù)值,它用于標(biāo)識(shí)與幾何對(duì)象相關(guān)的空間坐標(biāo)系。如果SDO_SRID為空(null),則表示沒有坐標(biāo)系與該幾何對(duì)象相關(guān);如果該值不為空,則該值必須為MDSYS.CS_SRS表中SRID字段的一個(gè)值,在創(chuàng)建含有幾何對(duì)象的表時(shí),這個(gè)值必須加入到描述空間數(shù)據(jù)表元數(shù)據(jù)的USER_SDO_GEOM_METADATA視圖的SRID字段中。對(duì)于我們通常使用國際標(biāo)準(zhǔn)的Longitude/Latitude(8307),Oracle Spatial規(guī)定,一個(gè)幾何字段中的所有幾何對(duì)象都必須為相同的SDO_SRID值。

    ③ SDO_POINT
    SDO_POINT是一個(gè)包含三維坐標(biāo)X,Y,Z數(shù)值信息的對(duì)象,用于表示幾何類型為點(diǎn)的幾何對(duì)象。如果SDO_ELEM_INFO和SDO_ORDINATES數(shù)組都為空,則SDO_POINT中的X,Y,Z為點(diǎn)對(duì)象的坐標(biāo)值,否則,sdo_Point的值將被忽略(用NULL表示)。Oracle Spatial強(qiáng)烈要求用SDO_POINT存儲(chǔ)空間實(shí)體為點(diǎn)類型空間數(shù)據(jù),這樣可以極大的優(yōu)化Oracle Spatial的存儲(chǔ)性能和查詢效率。

    ④ SDO_ELEM_INFO
    SDO_ELEM_INFO是一個(gè)可變長度的數(shù)組,每3個(gè)數(shù)作為一個(gè)元素單位,用于表示坐標(biāo)是如何存儲(chǔ)在SDO_ORDINATES數(shù)組中的。本文把組成一個(gè)元素的3個(gè)數(shù)稱為3元組。一個(gè)3元組包含以下3部分的內(nèi)容:
    ◇ SDO_STARTING_OFFSET
    SDO_STARTING_OFFSET 表明每個(gè)幾何元素的第一個(gè)坐標(biāo)在SDO_ORDINATES數(shù)組中的存儲(chǔ)位置。它的值從1開始,逐漸增加。
    ◇ SDO_ETYPE
    SDO_ETYPE 用于表示幾何對(duì)象中每個(gè)組成元素的幾何類型。當(dāng)它的值為1, 2, 1003和2003時(shí),表明這個(gè)幾何元素為簡(jiǎn)單元素。如果SDO_ETYPE為1003,表明該多邊形為外環(huán)(第一個(gè)數(shù)為1表示外環(huán)),坐標(biāo)值以逆時(shí)針存儲(chǔ);如果SDO_ETYPE為2003,表明該多邊形為內(nèi)環(huán)(第一個(gè)數(shù)為2表示內(nèi)環(huán)),坐標(biāo)值以順時(shí)針存儲(chǔ)。當(dāng)SDO_ETYPE為4, 1005和2005時(shí),表明這個(gè)幾何元素為復(fù)雜元素。它至少包含一個(gè)3元組用以說明該復(fù)雜元素具有多少個(gè)幾何簡(jiǎn)單元素。同樣,1005表示多邊形為外環(huán),坐標(biāo)值以逆時(shí)針存儲(chǔ);2005表示多邊形為內(nèi)環(huán),坐標(biāo)值以順時(shí)針存儲(chǔ)。
    ◇ SDO_INTERPRETATION
    SDO_INTERPRETATION具有兩層含義,具體的作用由SDO_ETYPE是否為復(fù)雜元素決定。如果SDO_ETYPE是復(fù)雜元素(4, 1005和2005),則SDO_INTERPRETATION表示它后面有幾個(gè)子3元組屬于這個(gè)復(fù)雜元素。如果SDO_ETYPE是簡(jiǎn)單元素(1, 2, 1003和2003),則SDO_INTERPRETATION表示該元素的坐標(biāo)值在SDO_ORDINATES中是如何排列的。
    需要注意的是,對(duì)于復(fù)雜元素來說,組成它的子元素是連續(xù)的,一個(gè)子元素的最后一個(gè)點(diǎn)是下一個(gè)子元素的起點(diǎn)。最后一個(gè)子元素的最后一個(gè)坐標(biāo)要么與下一個(gè)元素的SDO_STARTING_OFFSET值減1所對(duì)應(yīng)的坐標(biāo)相同,要么是整個(gè)SDO_ORDINATES數(shù)組的最后一個(gè)坐標(biāo)。SDO_ETYPE和SDO_INTERPRETATION之間的關(guān)系如下表:

    SDO_ETYPE SDO_INTERPRETATION 描述說明
    0 任意值 用于自定義類型,Oracle Spatial不支持

    1 1 點(diǎn)類型

    1 n > 1 具有n個(gè)點(diǎn)的點(diǎn)集合

    2 1 由直線段組成的線串

    2 2 由弧線段組成的線串,一個(gè)弧線段由起點(diǎn)、弧線上任意一點(diǎn)和終點(diǎn)組成,相鄰兩個(gè)弧線段的接點(diǎn)只需要存儲(chǔ)一次

    1003
    2003 1 由直線段組成的多邊形,起點(diǎn)和終點(diǎn)必須相同

    1003
    2003 2 由弧線段組成的多邊形,起點(diǎn)和終點(diǎn)必須相同。一個(gè)弧線段由起點(diǎn)、弧線上任意一點(diǎn)和終點(diǎn)組成,相鄰兩個(gè)弧線段的接點(diǎn)只需要存儲(chǔ)一次

    1003
    2003 3 矩形:由左下角和右上角兩點(diǎn)確定

    1003
    2003 4 圓:由圓周上的三個(gè)點(diǎn)組成

    4 n >1 由直線段和弧線段組成的復(fù)合線,n表示復(fù)合線的相鄰子元素的個(gè)數(shù),子元素的SDO_ETYPE必須為2,一個(gè)子元素的最后一點(diǎn)是下一子元素的第一個(gè)點(diǎn),并且該點(diǎn)不能重復(fù)

    1005
    2005 n >1 由直線段和弧線段組成的復(fù)合多邊形,n表示復(fù)合線的相鄰子元素的個(gè)數(shù),子元素的SDO_ETYPE必須為2,一個(gè)子元素的最后一點(diǎn)是下一子元素的第一個(gè)點(diǎn),并且該點(diǎn)不能重復(fù)。多邊形的起點(diǎn)和終點(diǎn)必須相同

    表1.1.3 SDO_ETYPE和SDO_INTERPRETATION 的組合關(guān)系

    ⑤ SDO_ORDINATES
    SDO_ORDINATES是一個(gè)可變長度的數(shù)組,用于存儲(chǔ)幾何對(duì)象的實(shí)際坐標(biāo),是一個(gè)最大長度為1048576,類型為Number的數(shù)組。
    SDO_ORDINATES必須與sdo_Elem_Info數(shù)組配合使用,才具有實(shí)際意義。SDO_ORDINATES的坐標(biāo)存儲(chǔ)方式由幾何對(duì)象的維數(shù)決定,如果幾何對(duì)象為二維,則SDO_ORDINATES的坐標(biāo)以{ x1, y1, x2, y2, …}順序排列,如果幾何對(duì)象為三維,則SDO_ORDINATES的坐標(biāo)以{x1, y1, z1, x2, y2, z2, …}的順序排列。
    實(shí)例說明
    下面用實(shí)例來進(jìn)一步說明SDO_GEOMETRY對(duì)象的使用方法。

    ① 一個(gè)帶洞的多邊形

    ? SDO_GTYPE = 2003,表示幾何對(duì)象是一個(gè)二維的多邊形。
    ? SDO_SRID = NULL,在二維情況下不需設(shè)置線性參考值。
    ? SDO_POINT = NULL,表示幾何對(duì)象不是點(diǎn)類型。
    ? SDO_ELEM_INFO = (1,1003,1, 19,2003,1),有兩個(gè)三元組元素(1,1003,1) 和(19,2003,1),按照先后順序,在(1,1003,1)中,“1”表示該子元素的起點(diǎn)為SDO_ORDINATES數(shù)組中的第1個(gè)值,“1003”表示該元素為多邊形外環(huán),“1”表示該多邊形由直線組成;在(19,2003,1)中,“19”表示該子元素的起點(diǎn)為SDO_ORDINATES數(shù)組中的第15個(gè)值,“2003”表示該元素為多邊形內(nèi)環(huán),“1”表示該多邊形由直線組成。
    ? SDO_ORDINATES = (2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4,
    7,5, 7,10, 10,10, 10,5, 7,5)。外環(huán)坐標(biāo)以逆時(shí)針排列,內(nèi)環(huán)坐標(biāo)以順時(shí)針排列。

    ② 一個(gè)直線段與弧線段組成的復(fù)合線串

    ? SDO_GTYPE = 2002,表示幾何對(duì)象是一個(gè)二維的線串。
    ? SDO_SRID = NULL,在二維情況下不需設(shè)置線性參考值。
    ? SDO_POINT = NULL,表示幾何對(duì)象不是點(diǎn)類型。
    ? SDO_ELEM_INFO = (1,4,2, 1,2,1, 3,2,2),有三個(gè)三元組元素(1,4,2)(1,2,1) 和(3,2,2),按照先后順序,(1,4,2)表示該線串為復(fù)合線串,它由下面兩個(gè)三元組描述的子元素組成;在(1,2,1)中,“1”表示該子元素的起點(diǎn)為SDO_ORDINATES數(shù)組中的第1個(gè)值,“2”表示該元素為線,“1”表示這段線由直線組成;在(3,2,2)中,“3”表示該子元素的起點(diǎn)為SDO_ORDINATES數(shù)組中的第3個(gè)值,“2”表示該元素為線,“2”表示這段線由弧線段組成。
    ? SDO_ORDINATES = (10,10, 10,14, 6,10, 14,10),坐標(biāo)(10,14)是直線段和弧線段的連接點(diǎn),沒有重復(fù)存儲(chǔ)。

    ③ 一個(gè)直線段與弧線段組成的復(fù)合多邊形
    ? SDO_GTYPE = 2003,表示幾何對(duì)象是一個(gè)二維的多邊形。
    ? SDO_SRID = NULL,在二維情況下不需設(shè)置線性參考值。
    ? SDO_POINT = NULL,表示幾何對(duì)象不是點(diǎn)類型。
    ? SDO_ELEM_INFO = (1,1005,2, 1,2,1, 5,2,2),有三個(gè)三元組元素(1,2005,2)(1,2,1) 和(5,2,2),按照先后順序,(1,2005,2)表示該多邊形為復(fù)合多邊形,它由下面兩個(gè)三元組描述的子元素組成;在(1,2,1)中,“1”表示該子元素的起點(diǎn)為SDO_ORDINATES數(shù)組中的第1個(gè)值,“2”表示該元素為線,“1”表示這段線由直線組成;在(5,2,2)中,“5”表示該子元素的起點(diǎn)為SDO_ORDINATES數(shù)組中的第5個(gè)值,“2”表示該元素為線,“2”表示這段線由弧線段組成。
    ? SDO_ORDINATES = (6,10, 10,1, 14,10, 10,14, 6,10),坐標(biāo)(14,10)是直線段和弧線段的連接點(diǎn),沒有重復(fù)存儲(chǔ)。
    在Oracle Spatial中,可以運(yùn)用SQL語句進(jìn)行幾何數(shù)據(jù)的各種操作,例如:
    創(chuàng)建一個(gè)oralce數(shù)據(jù)庫名為Data1:
    Create Table Data1( mktID integer,//第幾號(hào)目標(biāo)
    Name char(20), //目標(biāo)名稱
    Shape SDO_GEOMETRY //目標(biāo)的空間數(shù)據(jù)
    );
    把上例中的復(fù)合多邊形插入數(shù)據(jù)庫Data1:
    Insert into Datal values( 1, //編號(hào)
    ‘復(fù)合多邊形’, //名稱
    MDSYS.SDO_GEOME1RY(2003,NULL,NULL, //空間數(shù)據(jù)
    MDSYS.SDO_ELEM _INFO_ARRAY( 1, 1005, 2, 1, 2, 1, 5, 2, 2 ),
    MDSYS.SDO_ORDINATES_ARRAY(6,10, 10,1, 14,10, 10,14, 6,10)
    );

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    mysql對(duì)GIS的支持&amp;oracle空間數(shù)據(jù)庫說明

    mysql對(duì)GIS的支持&oracle空間數(shù)據(jù)庫說明:今天下午閑來無事,無意中翻看了一下mysql的手冊(cè),以前總是很有針對(duì)性的查閱手冊(cè)的內(nèi)容,重點(diǎn)都是放在了sql語句的一些基本細(xì)節(jié)、mysql的性能參數(shù)、存儲(chǔ)控制的管理等方面,但是今天無意中發(fā)現(xiàn)了一個(gè)mysql的重要特點(diǎn),那就是mysql對(duì)gis相關(guān)的空間數(shù)據(jù)也有存儲(chǔ)
    推薦度:
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲av午夜国产精品无码中文字| 国产精品麻豆入口| 四虎成人精品免费影院| 国产成人精品一区二区三区| 亚洲国产精品免费视频| 亚洲精品NV久久久久久久久久| 国产精品成人观看视频免费| 亚洲国产精品自在拍在线播放| 亚洲AV无码久久精品蜜桃| 亚洲欧美国产精品第1页| 999久久久免费国产精品播放| 国产精品揄拍100视频| 亚洲欧美日韩国产精品一区二区| 国产欧美精品一区二区色综合| 国产精品黄网站| 久久精品国产亚洲av水果派| 在线精品动漫一区二区无广告| 欧美久久久久久午夜精品| 国产精品偷窥熟女精品视频| 亚洲精品免费视频| 久久精品国产福利国产秒| 动漫精品专区一区二区三区不卡| 久久国产精品一国产精品金尊| 亚洲av永久无码精品表情包| 日韩欧美一区二区三区中文精品| 国产精品内射久久久久欢欢| 国产69精品久久久久99| 99久久99久久精品国产片果冻| 一本一道久久精品综合| 久久国产精品成人免费| 97精品国产91久久久久久| 国产福利在线观看精品| 69国产成人综合久久精品| 99视频在线观看精品| 国产精品欧美一区二区三区不卡| 国产99视频精品免视看7| 国产精品丝袜一区二区三区| 国产精品久久久久久吹潮| 国产AV午夜精品一区二区三区 | 51视频国产精品一区二区 | 亚洲精品综合久久|