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
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.

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)

Keine Kommentare:

Kommentar veröffentlichen