2013-05-02 61 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