Wir haben den Fall, dass regelmässig Daten über Excel importiert werden. Die Excelliste enthält die Objektkoordinaten als X,Y Werte. In einem View kann man zwar die X,Y Werte in Spatial-Objekte umwandeln, aber da es keine Basistabelle mit Spatial-Index gibt funktioniert die Abfrage der Featureklasse in Map oder MapGuide nicht (sobald man einen SpatialFilter anwenden will).
Beim Import kann man einen Trigger einsetzen, der die X,Y Werte in Spatial Objekte umwandelt. Das verlangsamt den Excel Import deutlich - zumindest bei mir. Vielleicht kann man da auch noch den Trigger verbessern.
Alternativ kann man nach dem Import die Umwandlung durchführen. Damit der Schritt einfach möglich ist, erfolgt der Aufruf über eine Schaltfläche und etwas Vb.Net Script aus dem Formular heraus. Hier ein Beispiel, wie man dann die Aktualisierung anstossen kann:
Public Overrides Sub Button_Click()
dim fc_name as String
dim update_sql as String
fc_name = Me.Dialog.FeatureClass.Name
update_sql = "UPDATE " + fc_name + " fc_alias1 " + " set geom = (select MDSYS.SDO_GEOMETRY(2001,352257, NULL,SDO_ELEM_INFO_ARRAY(1,1,1), SDO_ORDINATE_ARRAY( fc_alias2.ZNXKORDINA, fc_alias2.ZNYKORDINA)) from " + fc_name + " fc_alias2 where fc_alias1.fid = fc_alias2.fid)"
'Me.Application.MessageBox(update_sql)
Me.Document.Connection.ExecuteNonQuery(update_sql)
Me.Application.MessageBox("Aktualisiert.")
End Sub
Map 2013, SP2
Sali Robert
ReplyDeleteIm Geospatialnavigator-Blog gab es einmal einen Beitrag zu diesem Problem.
http://geospatialnavigator.typepad.com/geospatial_navigator/2010/04/quick-tipps-i-topobase-so-einfach-gehts.html
Dieser Tipp hat bei mir besten funktioniert.
Marcel
Hallo Marcel,
Deletevielen Dank für den Tipp!
Robert