2013-05-02 13 views
5

Buduję usługę, która wybiera liczbę geometrii z systemu, który przechowuje jej geometrie w Oracle 10g, a następnie zapisuje ich kopię w bazie danych SQL Server do użytku przez inną system.Importowanie ORACLE SDO_GEOMETRY do SQL Server Geometry

Wygląda to najpierw na SDO_UTIL.TO_WKTGEOMETRY(). Geometria jest jednak przechowywana jako geometria 3d (nawet jeśli warstwa Z ma zawsze wartość 0, więc nie będzie działać tak, jak WKT działa tylko w przypadku 2d).

Opcja numer dwa była wtedy SDO_UTIL.TO_GMLGEOMETRY(), to jednak zwraca GMLs w V2, a SQL Server chciałby je w GML V3.1.1 (z tego co mogłem przeczytać) (I nie znalazłem prostego sposobu na konwersję te).

Czy ktoś ma pomysł na inne opcje, może niektóre biblioteki stron trzecich, które mogą być używane do tego?

Odpowiedz

1

I znaleziono starą gwint (oracle forum link) omówienie podobnego problemu Jako sdo_geoms z warstwy wasnt faktycznie stosowane to SDO_LRS.CONVERT_TO_STD_GEOM() dostał się do 2D.

Więc w końcu dostałam WKT z tym: SDO_UTIL.TO_WKTGEOMETRY (SDO_LRS.CONVERT_TO_STD_GEOM (GEOMETRY_C)) jako WKT,

2

Jedną z możliwości jest użycie TOWKB? funkcja w Oracle przestrzennym do konwersji SDO_Geometry na WKB. Następnie użyj czegoś podobnego z połączonym serwerem do Oracle z SQL Server.

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, ale w moim przypadku skończyło się przy użyciu funkcji w pakiecie SDO_LRS. –

+1

WKB może być szybszy? – thylacine

+0

Masz prawdopodobnie rację, zmieni to w następnej aktualizacji :) –

Powiązane problemy