osm2pgsql hstoreタグを使用してPostGISで列を作成する


8

これはデータベースの質問に帰着するかもしれませんが、GISに関連しているので、ここに投稿しても問題はないと感じています。それがそこにあるなら、私はそれを別の場所に持っていきたいです!

私は、私にとって有用なRDBMS形式で動作するようにOSMデータを変換するという困難な旅を始めました。私が直面している主な問題の1つは、hstoreデータ型です。非常に大きな値のディクショナリを保持できるので非常に便利ですが、私の経験では、それらを「取得」するのは困難です。具体的には、osm2pgsqlツールは、、およびフィールドを作成しますがaddr:flats、都市、郵便番号、通りなど、私にとって非常に明白なものは除外します。このデータを解析して、新しい列にデータを入力します。そのようなデータにアクセスするにはどの方法をお勧めしますか?addr:housenumberaddr:interpolation

ありがとう

回答:


7

目的のhstoreキー/値データを新しい列に転送できます。1-
目的の列を作成します(例
:addres、city、key1、key2、keyn)2-Run:

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

または、単にhstoreに慣れることもできます。これは非常にうまく機能し、IMOで「hstoreが私の人生を変えた」と言えるほど多くの良い結果が得られました。笑

編集:
hstoreの使用例:
SELECT
streetdatatable.hstoredatacolumn -> 'address',
streetdatatable.hstoredatacolumn -> 'city'
FROM someschema. streetdatatable

すべての住所と都市の値が表示されます。


データ型としてhstoreが好きですが(辞書はあなたの親友です)、ESRIとうまく機能しないため、通常の古い列のデータ型で実行する必要があります。
Nathanus、2011年

これはまさに私が探しているもののようですが、何に置き換えhstorecolumnますか?また、私のDBでは、キーと値のペアはで=>はなくで結合されてい->ます。これは問題ですか?
Nathanus、2011年

こんにちは、hstorecolumnはhstoreデータを含む列の名前です。->は、hstoreのキーから値を呼び出すための表記法です。このように、column-> 'key'を指定すると、値が返されます。私は別の例で答えを編集しています。
パブロ

それははるかに理にかなっています。説明をお願いします。
Nathanus、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.