将ORACLE SDO_GEOMETRY导入SQL Server Geometry

时间:2013-05-02 10:34:52

标签: c# sql-server oracle10g geometry spatial

我正在构建一个服务,从一个系统中选择多个几何,这个几何在Oracle 10g中存储它的几何,然后将它们的副本保存到SQL Server数据库中供其他系统使用。

首先查看SDO_UTIL.TO_WKTGEOMETRY()。但是,几何图形存储为3d几何图形(即使z层始终为0,因此它不起作用,因为WKT仅在2d中有效。)

第二个选项是SDO_UTIL.TO_GMLGEOMETRY(),然而这会返回V2中的GML,而SQL Server希望它们在GML V3.1.1中(从我能读到的内容)(并且还没有找到一种简单的方法来转换它们)。

有没有人知道其他选项,也许可以使用一些第三方库?

2 个答案:

答案 0 :(得分:2)

一种可能性是使用TOWKB? Oracle Spatial中的函数将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;

答案 1 :(得分:1)

我找到了一个讨论类似问题的旧帖子(oracle forum link), 由于sdo_geoms z-layer实际上并未使用,因此SDO_LRS.CONVERT_TO_STD_GEOM()使其成为2D。

所以最后我得到了一个WKT: SDO_UTIL.TO_WKTGEOMETRY(SDO_LRS.CONVERT_TO_STD_GEOM(GEOMETRY_C))AS wkt,