sunfruit[請訪問http://www.fruitres.cn]

          --我相信JAVA能走得更遠 QQ:316228067

          Oracle Spatial建立過程

          --sunfruit

          空間數據庫Oracle Spatial的建立過程如下:

          -- 創建最基本的個人興趣點表結構
          drop table poi;
          create table poi (gid?INTEGER,
          ??opid?INTEGER,
          ??gname?VARCHAR2(256),
          ??gshape?MDSYS.SDO_GEOMETRY);

          -- 更新用戶空間數據對象視圖(建立索引依賴她)
          delete from USER_SDO_GEOM_METADATA where TABLE_NAME='POI' and COLUMN_NAME='GSHAPE';
          insert into USER_SDO_GEOM_METADATA values ('poi',
          ?????'gshape',
          ?????MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('lon',?-- lontitude
          ??????????-64800000,?-- min(china 26430867 73.41907434101486)
          ??????????64800000,?-- max(china 49679991 137.99997381765377)
          ??????????1),??-- scale (china abs 23249124)
          ???????MDSYS.SDO_DIM_ELEMENT('lat',??-- latitude
          ??????????-32400000,?-- min(china -1677502 -4.6597267116858045)
          ??????????32400000,?-- max(china 21571819 59.92171939467364)
          ??????????1)),??-- scale (china abs 23249321)
          ?????NULL);

          -- 插入一個個人興趣點的SQL語句,使用標準點地物空間數據類型
          delete from POI;
          insert into POI values (20010001,
          ???1,
          ???'我的家',
          ???MDSYS.SDO_GEOMETRY(2001,?-- SDO_GTYPE
          ?????NULL,??-- SDO_SRID
          ?????SDO_POINT_TYPE(41884696, 14377039, NULL), NULL, NULL));

          -- 插入一個個人興趣點的SQL語句,使用另一種點地物空間數據組織結構
          delete from POI;
          insert into POI values (20010001,
          ???1,
          ???'我的家',
          ???MDSYS.SDO_GEOMETRY(2001,?-- SDO_GTYPE
          ?????NULL,??-- SDO_SRID
          ?????NULL,??-- SDO_POINT
          ?????MDSYS.SDO_ELEM_INFO_ARRAY (1,?-- SDO_STARTING_OFFSET
          ????????1,?-- SDO_ETYPE
          ????????1),?-- SDO_INTERPRETATION
          ?????MDSYS.SDO_ORDINATE_ARRAY (41884696,14377039)));

          -- 創建缺省的R-tree空間索引
          drop index POI_IDX;
          CREATE INDEX POI_IDX on poi(gshape)
          ?INDEXTYPE is MDSYS.SPATIAL_INDEX;
          --?PARAMETERS('SDO_LEVEL=10000');?-- 180*60*60*1000*2/100/100*90*60*60*1000*2/100/100 = 8398080000

          -- 索引粗濾矩形窗口選擇SQL語句(對于點地物對象,索引粗濾的結果是精確的)
          SELECT * FROM POI P
          ?WHERE sdo_filter(P.gshape,
          ??mdsys.sdo_geometry(2003,NULL,NULL,
          ????mdsys.sdo_elem_info_array(1,1003,3),
          ????mdsys.sdo_ordinate_array(41883696,14376039, 41885696,14378039)),
          ??'querytype=window') = 'TRUE';

          -- 精確匹配矩形窗口選擇SQL語句(計算非常耗時)
          SELECT * FROM POI P
          ?WHERE sdo_relate(P.gshape,
          ??mdsys.sdo_geometry(2003,NULL,NULL,
          ????mdsys.sdo_elem_info_array(1,1003,3),
          ????mdsys.sdo_ordinate_array(41883696,14376039, 41885696,14378039)),
          ??'mask=INSIDE querytype=window') = 'TRUE';

          ?

          posted on 2006-07-25 10:31 sunfruit 閱讀(458) 評論(0)  編輯  收藏 所屬分類: 數據庫

          主站蜘蛛池模板: 新和县| 高雄县| 壤塘县| 上虞市| 周宁县| 广饶县| 都安| 湘乡市| 武川县| 北宁市| 衡阳县| 思茅市| 通化县| 乐清市| 杭锦后旗| 平舆县| 连云港市| 吉林省| 增城市| 阜新市| 莱州市| 盐源县| 宜兴市| 安溪县| 安岳县| 手机| 江城| 保亭| 贺州市| 方城县| 沙雅县| 西峡县| 昌宁县| 铁岭市| 民县| 汶川县| 凤翔县| 乌海市| 盖州市| 普陀区| 上虞市|