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 閱讀(452) 評論(0)  編輯  收藏 所屬分類: 數據庫

          主站蜘蛛池模板: 灵山县| 上高县| 益阳市| 渑池县| 无棣县| 洛浦县| 河西区| 微博| 元朗区| 辽宁省| 墨江| 贺州市| 宣恩县| 洞头县| 青铜峡市| 策勒县| 兴宁市| 安达市| 宁陵县| 鸡东县| 清苑县| 铜川市| 北宁市| 南澳县| 西吉县| 平江县| 工布江达县| 罗平县| 西城区| 连云港市| 陆川县| 班戈县| 碌曲县| 奎屯市| 保亭| 贡觉县| 阳东县| 东阿县| 长寿区| 祁东县| 仙居县|