2013-05-02 21 views
5

我正在構建一個服務,它從一個將其幾何體存儲在Oracle 10g中的系統中選擇多個幾何體,然後將這些幾何體的副本保存到SQL Server數據庫以供其他人使用系統。將ORACLE SDO_GEOMETRY導入到SQL Server幾何體

首先看SDO_UTIL.TO_WKTGEOMETRY()。但是,幾何存儲爲三維幾何(即使z層始終爲0,所以它不起作用,因爲WKT僅在2d時才起作用)。

然後選項2是SDO_UTIL.TO_GMLGEOMETRY(),但是這返回V2中的GML,並且SQL Server會在GML V3.1.1中使用它們(並且我還沒有找到一種簡單的轉換方法這些)。

有沒有人有其他選擇的想法,也許可以使用一些第三方庫?

回答

1

我發現了一個古老的線程(oracle forum link)討論了類似的問題, 作爲sdo_geoms Z-層wasnt實際使用,這一點,SDO_LRS.CONVERT_TO_STD_GEOM(),把它做成2D。

所以最終我得到了一個WKT本: SDO_UTIL.TO_WKTGEOMETRY(SDO_LRS.CONVERT_TO_STD_GEOM(GEOMETRY_C))AS WKT,

2

一種可能性是使用TOWKB?函數在Oracle空間中將SDO_Geometry轉換爲WKB。然後使用下面的鏈接服務器到SQL Server的Oracle。

WITH A AS (SELECT MI_PRINX, STREET,geometry::STGeomFromWKB(WKB,4283).MakeValid() as geom from SISTDB..GIPS.WKB_ROADS_TEST_V)insert into sde.TRA_LAN_QueenslandRoadsSELECT MI_PRINX as ID, STREET,geography::STGeomFromWKB(geom.STAsBinary(),4283) as geog from A; 
+0

THX,但對我來說,我結束了在SDO_LRS包使用功能。 – 2013-11-21 18:30:33

+1

WKB可能會更快? – thylacine 2013-11-21 22:19:07

+0

你可能是對的,將在下次更新中更改:) – 2013-11-22 11:41:06