Erstellen von Spalten in PostGIS mithilfe von osm2pgsql-Hstore-Tags

8

Ich bin zwar der Meinung, dass dies möglicherweise auf eine Datenbankfrage zurückzuführen ist, aber es fühlt sich so GIS-bezogen an, dass ich es gerne hier veröffentlichen möchte. Ich werde es gerne woanders hinbringen, wenn es dort hingehört!

Ich habe die mühsame Reise begonnen, OSM-Daten zu entstellen, um in einem für mich nützlichen RDBMS-Format zu arbeiten. Eines der Hauptprobleme, auf das ich stoße, ist der Datentyp hstore. Obwohl es sehr nützlich ist, ein extrem großes Wertewörterbuch zu führen, sind sie meiner Erfahrung nach schwer zu "erreichen". Insbesondere erzeugt das osm2pgsql Werkzeug addr:flats, addr:housenumberund addr:interpolationFelder, aber Blätter aus einigen , die mich ganz offensichtlich sind, wie Stadt, Postleitzahl und Straße. Ich möchte diese Daten analysieren, um neue Spalten damit zu füllen. Welche Methoden würden Sie für den Zugriff auf solche Daten empfehlen?

Vielen Dank

Nathanus
quelle

Antworten:

7

Sie können die gewünschten Hstore-Schlüssel- / Wertdaten in neue Spalten übertragen:
1-Erstellen Sie die gewünschten Spalten (z. B. Adressen, Stadt, Schlüssel1, Schlüssel2, Schlüssel).
2-Ausführen:

UPDATE table 
SET 
address=hstorecolumn->'address',
city=hstorecolumn->'city',
key1=hstorecolumn->'key1',
key2=hstorecolumn->'key2',
keyn=hstorecolumn->'keyn';

Oder man kann sich einfach an hstore gewöhnen, es funktioniert ziemlich gut und ich habe so viele gute Ergebnisse damit, dass ich sagen kann, IMO "hstore hat mein Leben verändert". lol

EDIT:
Ein Beispiel für die Verwendung von hstore:
SELECT
streetdatatable.hstoredatacolumn -> 'address',
streetdatatable.hstoredatacolumn -> 'city'
FROM someschema. streetdatatable

Es werden Ihnen alle Adress- und Städtewerte angezeigt.

Pablo
quelle
Ich liebe hstore als Datentyp (Wörterbücher sind dein bester Freund), aber es spielt sich nicht gut mit ESRI, so dass normale alte Spaltendatentypen zu tun haben.
Nathanus
Dies scheint genau das zu sein, wonach ich suche, aber durch was würde ich es ersetzen hstorecolumn? Außerdem werden in meiner Datenbank die Schlüssel-Wert-Paare =>nicht mit verknüpft ->. Ist das wichtig?
Nathanus
Hallo, hstorecolumn ist der Name der Spalte mit hstore-Daten. -> ist die Notation, um einen Wert von einem Schlüssel in hstore auf folgende Weise aufzurufen: column -> 'key' und gibt den Wert zurück, oh, Sie benötigen das einfache Anführungszeichen. Ich bearbeite die Antwort mit einem anderen Beispiel.
Pablo
Das macht viel viel mehr Sinn. Vielen Dank für die Klarstellung.
Nathanus