Oracle spatial、openlayers、geoserver開發地理資訊系統總結____Oracle

來源:互聯網
上載者:User

轉載請註明出處:tedeum.iteye.com

感謝開源,使用OpenLayers+Geoserver的地理資訊系統開發很簡單,完全可以套用開發MIS系統的經驗,我這裡總結為三個步驟:

1、資料準備

2、資料發布

3、資料展現

我將按照這個思路來介紹,首先是資料發布:

一、資料發布

GIS資料來源是多種多樣的,有向量資料、有柵格資料、有文本資料庫、有關係型資料庫,由於我平時主要使用Oracle 空間資料庫和PostGIS,Oracle用得多一些,所以我以Oracle為例來說明,其他的觸類旁通,至少我遇到的大部分是這樣的。

使用Oracle管理空間資料完全可以當作是關係性資料庫,這就是我是的可以套用MIS系統經驗的原因,Oracle空間資料庫增加了一個空間對象MDSYS.SDO_GEOMETRY來儲存空間資料,就像varchar,int這些類型一樣,但是這個類型是個對象。

需要注意的是,這個空間對象要正確發布需要建立空間索引,而要建立空間索引則要現在中繼資料表中進行定義,下面我就空間圖形中基礎的點線面來樣本如何建立空間資料庫表: Sql代碼   --建立表   create table t_point   (     id       number,     name nvarchar2(256),     position  MDSYS.SDO_GEOMETRY   );      create table t_line   (     id       number,     name nvarchar2(256),     position  MDSYS.SDO_GEOMETRY   );      create table t_area   (     id       number,     name nvarchar2(256),     position  MDSYS.SDO_GEOMETRY   );      --建立空間索引   insert into user_sdo_geom_metadata(table_name,COLUMN_NAME, DIMINFO)           values(                 'T_POINT',                 'POSITION',                  MDSYS.SDO_DIM_ARRAY(                       MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005),                       MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005),       MDSYS.SDO_DIM_ELEMENT('Z',-9000,9000,0.005)                  )          );   CREATE INDEX IDX_T_POINT_POS ON T_POINT(POSITION) INDEXTYPE IS MDSYS.SPATIAL_INDEX;      insert into user_sdo_geom_metadata(table_name,COLUMN_NAME, DIMINFO)           values(                 'T_LINE',                 'POSITION',                  MDSYS.SDO_DIM_ARRAY(                       MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005),                       MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005),       MDSYS.SDO_DIM_ELEMENT('Z',-9000,9000,0.005)                  )          );   CREATE INDEX IDX_T_LINE_POS ON T_LINE(POSITION) INDEXTYPE IS MDSYS.SPATIAL_INDEX;      insert into user_sdo_geom_metadata(table_name, COLUMN_NAME, DIMINFO)           values(                 'T_AREA',                 'POSITION',                  MDSYS.SDO_DIM_ARRAY(                       MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005),                       MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005),       MDSYS.SDO_DIM_ELEMENT('Z',-9000,9000,0.005)                  )          );   CREATE INDEX IDX_T_AREA_POS ON T_AREA(POSITION) INDEXTYPE IS MDSYS.SPATIAL_INDEX;  

 現在可以看到,空間表建立好了,我們可以像操作普通關聯式資料庫一樣進行操作,下面用一個插入例子來說明: Sql代碼   --插入點   insert into t_point(id, name, position)   values   (1, 'test point',   MDSYS.SDO_GEOMETRY (3001,                                       NULL,                                       NULL,                                       MDSYS.sdo_elem_info_array (1, 1, 1, 4, 1, 0),                                       MDSYS.sdo_ordinate_array (24.886436,                                                                102.784423,                                                                0,   &n

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.