日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Oracle Spatial构建自定义投影坐标系

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle Spatial构建自定义投影坐标系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

?

  之前項目換過服務器,移植數據庫時候并沒有正確完整的移植自定義的投影坐標系,結果就報出莫名其妙的一些錯誤,比如unable to transform rectangle due to: ORA-13199: SRID does not exist。

  因為在移植坐標系的時候僅僅只是將MDSYS.SDO_CRS_CS表中對應的SRID記錄轉存,一開始我也以為定義坐標系只要在這個表中插入數據即可,但發現事實并非如此。自定義投影坐標系是應該在視圖MDSYS.SDO_COORD_REF_SYSTEM插入數據,通過觸發器MDSYS.SDO_CRS_INSERT_TRIGGER在表MDSYS.SDO_COORD_REF_SYS插入相同的數據,并且在MDSYS.SDO_CRS_CS表中插入SRID記錄。

  在向視圖MDSYS.SDO_COORD_REF_SYSTEM中插入數據之前,首先需要知道你的轉換參數,并將轉換參數插入表MDSYS.Sdo_Coord_Op_Param_Vals中,下面給出一個實例:?

--PROJCS[
--       "Xian 1980 / 3-degree Gauss-Kruger CM 118.83E", 
--       GEOGCS [ 
--          "Xian 1980", 
--          DATUM [
--             "Xian 1980 (EPSG ID 6610)", 
--             SPHEROID ["Xian 1980 (EPSG ID 7049)", 6378140, 298.257]], 
--             PRIMEM [ "Greenwich", 0.000000 ], 
--             UNIT ["Decimal Degree", 0.01745329251994328]], 
--             PROJECTION ["Transverse Mercator"], 
--             PARAMETER ["Latitude_Of_Origin", 0], 
--             PARAMETER ["Central_Meridian", 118.8333], 
--             PARAMETER ["Scale_Factor", 1], 
--             PARAMETER ["False_Easting", 500000], 
--             PARAMETER ["False_Northing", 0], 
--             UNIT ["Meter", 1]]
-- 首先,基礎地理坐標系是Xian 1980, 它的EPSG ID為6610
-- 然后找到與計算PROJECTION["Transverse Mercator"]ESPG等式
select coord_op_method_id,   legacy_name
from sdo_coord_op_methods
where not legacy_name is nullorder by coord_op_method_id;
--結果顯示
--COORD_OP_METHOD_ID    LEGACY_NAME
-------------------------------------------
--  9802  Lambert Conformal Conic
--  9803  Lambert Conformal Conic (Belgium 1972)
--  9805  Mercator
--  9806  Cassini
--  9807  Transverse Mercator
--  9829  Polar Stereographic
-------------
--根據PROJECTION ["Transverse Mercator"],選擇9807
--建立坐標轉換規則,編號96170insert into MDSYS.SDO_COORD_OPS(COORD_OP_ID,COORD_OP_NAME,COORD_OP_TYPE,SOURCE_SRID,TARGET_SRID,COORD_TFM_VERSION,COORD_OP_VARIANT,COORD_OP_METHOD_ID,UOM_ID_SOURCE_OFFSETS,UOM_ID_TARGET_OFFSETS,INFORMATION_SOURCE,DATA_SOURCE,SHOW_OPERATION,IS_LEGACY,LEGACY_CODE,REVERSE_OP,IS_IMPLEMENTED_FORWARD,IS_IMPLEMENTED_REVERSE)
VALUES(96170,'3-degree Gauss-Kruger CM 118.83E (EPSG OP 96170)',       'CONVERSION',NULL,NULL,NULL,NULL,9807,NULL,NULL,'EPSG','EPSG',1,'FLASE',NULL,1,1,1);--看看需要添加哪些參數
select use.parameter_id ||':'||use.legacy_param_name
fromsdo_coord_op_param_use use
where use.coord_op_method_id=9807
--結果:
--  8801:Latitude_Of_Origin
--  8802:Central_Meridian
--  8805:Scale_Factor
--  8806:False_Easting
--  8807:False_Northing
--檢查一下完全吻合啊!!!!!
--現在查查經常使用的單位:
select UOM_ID ||':'||UNIT_OF_MEAS_NAME
from sdo_units_of_measure
where uom_id in (9001,9101,9102,9201)
order by uom_id;
--結果
--  9001:metre
--  9101:radian
--  9102:degree
--  9201:unity--現在,插入參數
--  8801:Latitude_Of_Origin
insert into MDSYS.Sdo_Coord_Op_Param_Vals(COORD_OP_ID,COORD_OP_METHOD_ID,PARAMETER_ID,PARAMETER_VALUE,PARAM_VALUE_FILE_REF,UOM_ID
)       
VALUES(96170,9807,8801,0,NULL,9102 );
--  8802:Central_Meridian
insert  into MDSYS.SDO_COORD_OP_PARAM_VALS(COORD_OP_ID,COORD_OP_METHOD_ID,PARAMETER_ID,PARAMETER_VALUE,PARAM_VALUE_FILE_REF,UOM_ID)
VALUES(96170,9807,8802,118.833333333333,NULL,9102
);
--  8805:Scale_Factor
insert  into MDSYS.SDO_COORD_OP_PARAM_VALS(COORD_OP_ID,COORD_OP_METHOD_ID,PARAMETER_ID,PARAMETER_VALUE,PARAM_VALUE_FILE_REF,UOM_ID)
VALUES(96170,9807,8805,1,NULL,9201
);
--  8806:False_Easting
insert  into MDSYS.SDO_COORD_OP_PARAM_VALS(COORD_OP_ID,COORD_OP_METHOD_ID,PARAMETER_ID,PARAMETER_VALUE,PARAM_VALUE_FILE_REF,UOM_ID)
VALUES(96170,9807,8806,500000,NULL,9001
);
--  8807:False_Northing
insert  into MDSYS.SDO_COORD_OP_PARAM_VALS(COORD_OP_ID,COORD_OP_METHOD_ID,PARAMETER_ID,PARAMETER_VALUE,PARAM_VALUE_FILE_REF,UOM_ID)
VALUES(96170,9807,8807,0,NULL,9001
);
--現在建立投影坐標系。首先要確定GEOG_CRS_DATUM_ID和COORD_SYS_ID。
--GEOG_CRS_DATUM_ID是地理坐標系對應的datum_id
--select datum_id from sdo_coord_ref_sys where srid=4610
--GEOG_CRS_DATUM_ID為6610
--CORD_SYS_ID是4530,CORD_SYS_NAME為Cartesian 2D CS.  Axes: northing, easting (X,Y). Orientations: north, east.  UoM: m.
--現在開始建立投影坐標系
insert into MDSYS.SDO_COORD_REF_SYSTEM(SRID,COORD_REF_SYS_NAME,COORD_REF_SYS_KIND,COORD_SYS_ID,DATUM_ID,GEOG_CRS_DATUM_ID,SOURCE_GEOG_SRID,PROJECTION_CONV_ID,CMPD_HORIZ_SRID,CMPD_VERT_SRID,INFORMATION_SOURCE,DATA_SOURCE,IS_LEGACY,LEGACY_CODE,LEGACY_WKTEXT,LEGACY_CS_BOUNDS,IS_VALID,SUPPORTS_SDO_GEOMETRY)
VALUES(9992010,'Xian 1980 / 3-degree Gauss-Kruger CM 118.83E','PROJECTED',4530,NULL,6610,4610,96170,NULL,NULL,'EPSG','EPSG','FALSE',NULL,NULL,NULL,'TRUE','TRUE'); 

?

轉載于:https://www.cnblogs.com/cleverxy/archive/2012/04/28/2474563.html

總結

以上是生活随笔為你收集整理的Oracle Spatial构建自定义投影坐标系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。