Criando colunas no PostGIS usando tags osm2pgsql hstore

8

Embora eu ache que isso possa se resumir a uma questão de banco de dados, parece bastante relacionado ao GIS que me sinto à vontade em publicá-la aqui. Ficarei feliz em levá-lo para outro lugar, se ele estiver lá!

Comecei a árdua jornada de manipular dados OSM para trabalhar em um formato RDBMS que é útil para mim. Um dos principais problemas que estou enfrentando é o tipo de dados hstore. Embora seja bastante útil por ser capaz de conter um dicionário extremamente grande de valores, eles são difíceis de "entender", na minha experiência. Especificamente, a ferramenta osm2pgsql cria addr:flats, addr:housenumbere addr:interpolationcampos, mas deixa de fora alguns que são bastante óbvio para mim, como a cidade, o código postal e rua. Eu gostaria de analisar esses dados para preencher novas colunas com eles. Quais métodos você recomendaria para acessar esses dados?

obrigado

Nathanus
fonte

Respostas:

7

Você pode transferir os dados de chave / valor hstore desejados para novas colunas:
1-Crie as colunas desejadas (por exemplo, endereço, cidade, chave1, chave2, chave)
2-Execução:

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

Ou você pode simplesmente se acostumar com o hstore, ele funciona muito bem e eu tenho tantos bons resultados com ele que posso dizer que "o hstore mudou minha vida" da IMO. ri muito

EDIT:
Um exemplo de como usar o hstore:
SELECT
streetdatatable.hstoredatacolumn -> 'address',
streetdatatable.hstoredatacolumn -> 'city'
FROM someschema. streetdatatable

Ele mostrará todos os valores de endereço e cidades.

Pablo
fonte
Adoro hstore como um tipo de dados (os dicionários são seus melhores amigos), mas ele não funciona bem com a ESRI; portanto, os tipos de dados antigos de colunas normais terão que funcionar.
Nathanus 26/05
Parece exatamente o que estou procurando, mas com o que eu substituiria hstorecolumn? Além disso, no meu banco de dados, os pares de valores-chave são unidos =>, não ->. Isso importa?
Nathanus
oi, hstorecolumn é o nome da coluna com dados hstore. -> é a notação para chamar um valor de uma chave no hstore, desta forma: coluna -> 'chave' e retorna o valor, oh, você precisa de uma citação única. Estou editando a resposta com outro exemplo.
2626 Pablo
Isso faz muito mais sentido. Obrigado gentilmente pelo esclarecimento.
Nathanus