Tipps, Tricks, Best Practices und Aktuelles zu Oracle Spatial Technologies
Donnerstag, 17. April 2014
2 Freikarten für das Vor-Konferenz-Programm auf dem Geospatial World Forum (5.-9. Mai in Genf)
Bei Interesse bitte eine kurze Email an Hans Viehmann schicken.
Entschlossenheit im Entscheiden und Handeln ist gefragt: Es sind nur 2 Karten.
Freitag, 28. März 2014
Koordinatensystem einer Tabelle verändern
Hin und wieder (gerade in frühen Projektphasen) kommt es vor, dass Geodaten in Tabellen mit dem falschen Koordinatensystem ausgestattet werden - Ursache kann ein falsch eingerichteter Ladeprozess sein oder schlicht eine falsche Information. Wenn nun das Koordinatensystem geändert werden soll, stellt sich die Frage, wie man das möglichst effzient und einfach machen kann - ohne alles zu löschen und neu zu laden. Hier ein Vorschlag - so gehe ich vor:
1. Spatial Index löschen
Das Koordinatensystem ist Teil des Spatial Index - ein anderes Koordinatensystem braucht einen neuen Index. Also muss der bestehende gelöscht werden.
drop index {spatial-index-name};
Index dropped.
2. Koordinatensystem in den Daten austauschen
Hierfür müssen die SDO_GEOMETRY-Daten nicht komplett neu geladen werden. Man kann sich stattdessen die Tatsache zunutze machen, dass man sich in einer Oracle-Datenbank befindet. Das Attribut SDO_SRID (welches in jedem SDO_GEOMETRY die Koordinatensystem-ID enthält) kann einfach per SQL UPDATE Kommando aktualisiert werden. Der Rest der Daten muss nicht angefasst werden (Achtung: Der Alias - hier: "a" - ist bei diesem SQL UPDATE wichtig).
update {table-name} a set a.{geometry-column}.sdo_srid = {neue SRID};
XXXX rows updated.
3. Koordinatensystem in USER_SDO_GEOM_METADATA ändern
Auch im Spatial Dictionary muss das Koordinatensystem ausgetauscht werden. Der Eintrag in USER_SDO_GEOM_METADATA muss dem in den SDO_GEOMETRY-Instanzen entsprechen.
update USER_SDO_GEOM_METADATA set SRID = {neue SRID}
where TABLE_NAME = '{table-name}' and COLUMN_NAME = '{geometry-column}';
1 row updated.
Es kann natürlich auch sein, dass die Dimensionsinformation auch noch aktualisiert werden muss. Für Längen- und Breitengrade kann DIMINFO wie folgt versorgt werden.
update USER_SDO_GEOM_METADATA
set DIMINFO = SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X',-180,180,0.05),SDO_DIM_ELEMENT('Y',-90,90,0.05))
where TABLE_NAME = '{table-name}' and COLUMN_NAME = '{geometry-column}';
1 row updated.
4. Index neu bauen
Das sollte einfach sein ...
create index {spatial-index-name} on {table-name} ({geometry-column})
indextype is mdsys.spatial_index;
Index created.
Mittwoch, 12. Februar 2014
Neuer Oracle Spatial Blog: Direkt vom Spatial Development Team in New Hampshire
Zu finden ist dieser hier. Einfach mal reinschauen.
Hinweise zu Postings und Wünsche für spezielle Themen können als Kommentare eingebracht werden. (Das gilt natürlich genauso für diesen Blog.)
Mittwoch, 5. Februar 2014
APEX, Geodaten und Karten: Interaktives Webseminar am 19. Februar
Die Arbeit mit Positionen und Koordinaten, also Geodaten, spielt in mehr und mehr Anwendungsgebieten eine Rolle. Die meisten empfinden die Arbeit mit Geodaten in der Oracle-Datenbank aber als eher kompliziert - doch das ist gar nicht so. In diesem interaktiven Webseminar am 19. Februar erfahrt Ihr, wie einfach es ist, mit Koordinaten in der Datenbank zu arbeiten und diese als Karte in einer APEX-Anwendung darzustellen. Die Teilnehmer des Webseminars werden also selbst eine APEX-Anwendung erstellen, mit der man ...
- ... mit dem Smartphone aufgenommene Bilder hochladen
- ... die Position extrahieren und als Koordinate speichern
- ... und die Bilder schließlich auf einer Karte darstellen ...
... kann. Es wird genug Freiraum geben, dass man alle Schritte selbst auf einer eigenen Umgebung durchführen kann - und bei Bedarf kann man sich per Chat mit dem Moderator oder oder den anderen Teilnehmern austauschen.(p>
Das Webseminar beginnt um 09:30 Uhr und wird gegen 11:30 bis 12:00 Uhr zu Ende sein. Das Meeting wird mit Webex durchgeführt - die genauen Einwahldaten werden noch bekanntgegeben. Mehr Informationen zum Webseminar finden sich auf der Anmeldeseite. Am besten also gleich anmelden.
Montag, 25. November 2013
Noch ein Helferlein in SDO_CS - Mapping von Oracle SRID auf EPSG
Die Funktion MAP_ORACLE_SRID_TO_EPSG gibt die Antwort darauf. Im Unterschied zu GET_EPSG_DATA_VERSION erwartet diese Funktion einen Eingabewert, nämlich die Oracle SRID.
select sdo_cs.map_oracle_srid_to_epsg(8307) from dual;
Das Ergebnis ist 4326.