Nach wie vor ungebrochen ist das Interesse am Spitzenreiter unserer Einträge im Blog, dem Beitrag Gauss-Krüger: EPSG oder nicht EPSG: Das ist hier die Frage!.
Tipps, Tricks, Best Practices und Aktuelles zu Oracle Spatial Technologies
Freitag, 1. Juli 2016
Aktuelle Patchempfehlung aus dem Development für Oracle DB Version 12.1.0.2
Für NutzerInnen von Oracle Locator bzw. Oracle Spatial and Graph in der Oracle DB Version 12.1.0.2 werden die nachfolgenden Patches empfohlen. Diese können wie immer von MyOracleSupport heruntergeladen werden.
- 21453611 - Spatial index statistics patch bundle (many improvements)
- 22079444 - 12.1.0.2 spatial patch bundle - Also includes faster sdo_intersection with spatial_vector_acceleration=true (supersedes 21376696)
- 21925655 - Parallel CTAS and INSERT SELECT for non-point SDO_GEOMETRY
- 22246206 - Improve mechanism for spatial feature check in 12c
- 8617254 - UNION ALL, enables spatial queries against ESRI Multiversion Views
Das A und O: Valide sind Geometrien immer nur im Zusammenhang mit der gewählten Toleranz
Ich nehme eine aktuelle Anfrage zum Anlass, dieses Blog-Posting zu verfassen.
Es geht darum, noch mal deutlich zu formulieren, dass nur valide Geometrien auch valide Ergebnisse beim Verarbeiten und Abfragen der Daten ergeben können. Dabei spielt eine wichtige Rolle,
Zwei Kanten im 7. Element von Ring 1 überschneiden sich.
Es geht darum, noch mal deutlich zu formulieren, dass nur valide Geometrien auch valide Ergebnisse beim Verarbeiten und Abfragen der Daten ergeben können. Dabei spielt eine wichtige Rolle,
- welche Genauigkeit die jeweiligen Stützpunktwerte haben
- welche Toleranz im SDO_GEOM.VALIDATE_GEOMETRY-Aufruf verwendet wird und
- welche Toleranz für die zu validierende Geometrie in den Metadaten gesetzt ist.
select sdo_geom.validate_geometry_with_context(MDSYS.SDO_GEOMETRY(
2007,
31466,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1,19,1003,1,27,1003,1,35,1003,1,43,
1003,1,51,1003,1,59,1003,1,69,1003,1,79,1003,1,103,1003,1,113,1003,1),
MDSYS.SDO_ORDINATE_ARRAY(2569987.15487036,5652633.72009691,
2569982.44144293,5652632.79777397,2570000.917,5652525.208,
2570011.003,5652526.994,2569992.29925865,5652634.72675023,
2569987.62584567,5652633.81225731,2570005.908,5652527.401,
2570005.408,5652527.315,2569987.15487036,5652633.72009691,
2570119.968,5652441.443,2570119.96012695,5652441.51339433,
2570119.96202326,5652440.77241008,2570119.968,5652441.443,
2570119.87330375,5652439.10112505,2570119.953,5652439.76,
2570119.9542805,5652439.90367167,2570119.87330375,5652439.10112505,
2570119.61351795,5652437.50659172,2570119.751,5652438.09,
2570119.77515959,5652438.28973524,2570119.61351795,5652437.50659172,
2570119.17817256,5652435.9275605,2570119.365,5652436.452,
2570119.42361135,5652436.70071863,2570119.17817256,5652435.9275605,
2570118.46189878,5652434.17330482,2570118.8,5652434.866,
2570118.91985803,5652435.20245104,2570118.46189878,5652434.17330482,
2570104.201,5652534.484,2570119.142,5652446.861,
2570119.781,5652443.115,2570119.147,5652446.865,
2570104.201,5652534.484,2570102.316,5652545.537,
2570099.75132948,5652560.58626676,2570102.315,5652545.536,
2570104.201,5652534.484,2570102.316,5652545.537,
2569941.5,5652617.953,2569941.727,5652616.789,
2569947.536,5652586.967,2569962.583,5652589.923,
2569955.28,5652627.483,2569952.23743088,5652626.88835588,
2569953.411,5652620.76,2569948.384,5652624.128,
2569947.99921027,5652626.06027191,2569944.8604423,5652625.4470043,
2569945.261,5652623.521,2569941.5,5652617.953,
2570018.291,5652639.81,2570017.805,5652639.715,
2570035.905,5652533.124,2570036.386,5652533.211,
2570018.291,5652639.81,2570048.49822353,5652645.72702356,
2570048.02308523,5652645.63384714,2570066.04,5652539.626,
2570066.508,5652539.706,2570048.49822353,5652645.72702356)),
0.0005) from dual
----
TRUE
Wird die Toleranz im konkreten Fall nur um eine Nachkommastelle verringert (gelockert), dann ist die Geometrie schon nicht mehr valide.select sdo_geom.validate_geometry_with_context(MDSYS.SDO_GEOMETRY(
2007,
31466,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(
1,1003,1,
19,1003,1,
27,1003,1,
35,1003,1,
43,1003,1,
51,1003,1,
59,1003,1,
69,1003,1,
79,1003,1,
103,1003,1,
113,1003,1),
MDSYS.SDO_ORDINATE_ARRAY(2569987.15487036,5652633.72009691,
2569982.44144293,5652632.79777397,2570000.917,5652525.208,
2570011.003,5652526.994,2569992.29925865,5652634.72675023,
2569987.62584567,5652633.81225731,2570005.908,5652527.401,
2570005.408,5652527.315,2569987.15487036,5652633.72009691,
2570119.968,5652441.443,2570119.96012695,5652441.51339433,
2570119.96202326,5652440.77241008,2570119.968,5652441.443,
2570119.87330375,5652439.10112505,2570119.953,5652439.76,
2570119.9542805,5652439.90367167,2570119.87330375,5652439.10112505,
2570119.61351795,5652437.50659172,2570119.751,5652438.09,
2570119.77515959,5652438.28973524,2570119.61351795,5652437.50659172,
2570119.17817256,5652435.9275605,2570119.365,5652436.452,
2570119.42361135,5652436.70071863,2570119.17817256,5652435.9275605,
2570118.46189878,5652434.17330482,2570118.8,5652434.866,
2570118.91985803,5652435.20245104,2570118.46189878,5652434.17330482,
2570104.201,5652534.484,2570119.142,5652446.861,
2570119.781,5652443.115,2570119.147,5652446.865,
2570104.201,5652534.484,2570102.316,5652545.537,
2570099.75132948,5652560.58626676,2570102.315,5652545.536,
2570104.201,5652534.484,2570102.316,5652545.537,
2569941.5,5652617.953,2569941.727,5652616.789,
2569947.536,5652586.967,2569962.583,5652589.923,
2569955.28,5652627.483,2569952.23743088,5652626.88835588,
2569953.411,5652620.76,2569948.384,5652624.128,
2569947.99921027,5652626.06027191,2569944.8604423,5652625.4470043,
2569945.261,5652623.521,2569941.5,5652617.953,
2570018.291,5652639.81,2570017.805,5652639.715,
2570035.905,5652533.124,2570036.386,5652533.211,
2570018.291,5652639.81,2570048.49822353,5652645.72702356,
2570048.02308523,5652645.63384714,2570066.04,5652539.626,
2570066.508,5652539.706,2570048.49822353,5652645.72702356)),
0.005) from dual
----
13349 [Element <7>] [Ring <1>][Edge <4>][Edge <2>]
Die konkrete ORA-Fehlermeldung bedeutet, dass ein sich selbst schneidendes Polygon "entstanden" ist.Zwei Kanten im 7. Element von Ring 1 überschneiden sich.
Zusätzliche Hinweise gibt es natürlich im Handbuch.
Freitag, 10. Juni 2016
Wünsch Dir Dein Locator oder Spatial Feature
Welches Feature soll Ihrer Meinung nach als Teil von Oracle Locator / Spatial and Graph in einer zukünftigen Oracle DB Version enthalten sein?
Lassen Sie uns Ihre Ideen und Wünsche wissen. Bis Ende Juni können Sie
mir diese per Email zusenden.
Hilfreich sind:
Wir freuen uns auf Ihren Input !!
Lassen Sie uns Ihre Ideen und Wünsche wissen. Bis Ende Juni können Sie
mir diese per Email zusenden.
Hilfreich sind:
- Feature Request Titel
- Kurzbeschreibung
- Abbildung / Zusätzliche Hinweise / Beschreibung Anwendungsfall, etc.
Wir freuen uns auf Ihren Input !!
Montag, 25. April 2016
Neue Spalte(n) in den Geocoding-Tabellen für die Oracle DB 12c
Den Anstoß zu diesem Blog-Eintrag habe ich von Cord Artmeier vom Oracle Partner g.on experience erhalten. Cord, vielen Dank dafür.
Cord hatte ein Problem mit dem Reverse Geocoding in der Version 12c der Oracle Datenbank entdeckt. Sein Aufruf
Cord hatte ein Problem mit dem Reverse Geocoding in der Version 12c der Oracle Datenbank entdeckt. Sein Aufruf
select sdo_gcdr.reverse_geocoding (...) from dual;gab NULL zurück. Nicht das erwartete Ergebnis im Vergleich zum gleichen Aufruf mit der Version 11.2. Und noch nicht einmal eine Fehlermeldung, an der er sich orientieren konnte.
Was war der Grund für dieses Verhalten?
Die dem Geocoding zugrunde liegenden Referenzdaten in den GC_xxx-Tabellem wurden zu Testzwecken aus einer 11.2 Datenbank direkt in die neue aufgesetzte 12.1 Datenbank übernommen.
Für die Version 12.1 der Geocoding Engine (als Teil der Option Oracle Spatial and Graph) wurden jedoch einigen GC-Tabellen neue Spalten hinzugefügt.
So die Spalte TRANSLITERATION_TYPE in den Tabellen GC_AREA_xxx und GC_ROAD_xxx. Diese fehlte für einen erfolgreichen Geocoding- bzw. Reverse Geocoding-Aufruf, ein Umstand, der schnell erkennbar wurde beim Prüfen des Tracefiles.
Die dem Geocoding zugrunde liegenden Referenzdaten in den GC_xxx-Tabellem wurden zu Testzwecken aus einer 11.2 Datenbank direkt in die neue aufgesetzte 12.1 Datenbank übernommen.
Für die Version 12.1 der Geocoding Engine (als Teil der Option Oracle Spatial and Graph) wurden jedoch einigen GC-Tabellen neue Spalten hinzugefügt.
So die Spalte TRANSLITERATION_TYPE in den Tabellen GC_AREA_xxx und GC_ROAD_xxx. Diese fehlte für einen erfolgreichen Geocoding- bzw. Reverse Geocoding-Aufruf, ein Umstand, der schnell erkennbar wurde beim Prüfen des Tracefiles.
Diese Änderung ist bisher nur im Oracle Spatial and Graph Geocoder Developer’s Guide vermerkt, nicht jedoch im Oracle Spatial and Graph Developer’s Guide 12.1. Das sollte aber bald nachgebessert sein.
Und hier noch mal der Hinweis darauf, wie einfach Geocoding und Reverse Geocoding direkt in der Oracle Datenbank geht:
SQL> select sdo_gcdr.geocode(
2 user,
3 sdo_keywordarray('Schiffbauergasse 14','Potsdam'),
4 'DE',
5 'DEFAULT')
6 from dual;
SDO_GCDR.GEOCODE(USER,SDO_KEYWORDARRAY('SCHIFFBAUERGASSE14','POTSDAM'),'DE','DEF
--------------------------------------------------------------------------------
SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'Schiffbauergasse', NULL, NULL, 'Potsd
am', 'Potsdam', 'BRANDENBURG', 'DE', '14467', NULL, '14467', NULL, '14', 'SCHIFF
BAUER', 'GASSE', 'F', 'F', NULL, NULL, 'R', .75, 748777426, '??X?#ENUT?B281CP?',
1, 'DEFAULT', 13.07432, 52.40411, '??010101010??404?', 8307)
SQL> select sdo_gcdr.reverse_geocode(
2 user,
3 sdo_geometry(2001,8307,sdo_point_type(13.07432,52.40411,null),null,null),
4 'DE')
5 from dual;
SDO_GCDR.REVERSE_GEOCODE(USER,SDO_GEOMETRY(2001,8307,SDO_POINT_TYPE(13.07432,52.
--------------------------------------------------------------------------------
SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'Schiffbauergasse', NULL, NULL, 'Berli
ner Vorstadt', 'Potsdam', 'Brandenburg', 'DE', '14467', NULL, '14467', NULL, '14
', 'SCHIFFBAUER', 'GASSE', 'F', 'F', NULL, NULL, 'R', .750735339, 748777426, '',
1, 'DEFAULT', 13.0743195, 52.404111, '???14141414??404?', 8307)
Abonnieren
Posts (Atom)