Crear columnas en PostGIS usando las etiquetas osm2pgsql hstore

8

Si bien creo que esto puede deberse a una pregunta en la base de datos, se siente lo suficientemente relacionado con los SIG que me siento cómodo al publicarlo aquí. Sin embargo, me encantaría llevarlo a otro lado si pertenece allí.

He comenzado el arduo viaje de manipular datos OSM para trabajar en un formato RDBMS que me sea útil. Uno de los principales problemas con los que me encuentro es el tipo de datos hstore. Si bien es bastante útil para poder tener un diccionario de valores extremadamente grande, en mi experiencia es difícil "alcanzarlos". Específicamente, la herramienta osm2pgsql crea addr:flats, addr:housenumbery addr:interpolationcampos, pero deja de lado algunos que son bastante obvios para mí, como ciudad, código postal y calle. Me gustaría analizar estos datos para rellenar nuevas columnas con ellos. ¿Qué métodos recomendaría para acceder a dichos datos?

Gracias

Nathanus
fuente

Respuestas:

7

Puede transferir los datos de clave / valor de hstore deseados a nuevas columnas:
1-Cree las columnas deseadas (por ejemplo, direcciones, ciudad, clave1, clave2, claven)
2-Ejecutar:

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

O simplemente puede acostumbrarse a hstore, funciona bastante bien y tengo tantos buenos resultados que puedo decir IMO "hstore cambió mi vida". jajaja

EDITAR:
Un ejemplo sobre cómo usar hstore:
SELECT
streetdatatable.hstoredatacolumn -> 'address',
streetdatatable.hstoredatacolumn -> 'city'
FROM someschema. streetdatatable

Le mostrará todos los valores de dirección y ciudades.

Pablo
fuente
Me encanta hstore como tipo de datos (los diccionarios son su mejor amigo), pero no funciona bien con ESRI, por lo que los tipos de datos de columna antiguos normales tendrán que funcionar.
Nathanus
Esto parece exactamente lo que estoy buscando, pero ¿con qué lo reemplazaría hstorecolumn? Además, en mi base de datos, los pares clave-valor se unen con =>, no ->. ¿Esto importa?
Nathanus
hola, hstorecolumn es el nombre de la columna con los datos de hstore. -> es la notación para llamar a un valor de una clave en hstore, de esta manera: columna -> 'clave' y devuelve el valor, oh, necesita la cita simple. Estoy editando la respuesta con otro ejemplo.
Pablo
Eso tiene mucho más sentido. Gracias amablemente por la aclaración.
Nathanus