2017-08-02 17 views
0

私は郵便番号とポリゴンデータを持つJsonファイルを持っています。私はポリゴンを形状データ型のPostgresテーブルに変換して保存したい。私のpostgres 9.5とPostGIS拡張。jsonファイルからPostgresジオメトリフォーマットへのポリゴン

私のファイル:myjson.json

データ:

{ 
    "zipcode": "97358", 
    "polygon": [ 
    { 
     "lat": 44.730418, 
     "lng": -122.544798 
    }, 
    { 
     "lat": 44.763411, 
     "lng": -122.685015 
    }, 
    { 
     "lat": 44.831045, 
     "lng": -122.616831 
    }, 
    { 
     "lat": 44.863487, 
     "lng": -122.401282 
    }, 
    { 
     "lat": 44.80795, 
     "lng": -122.40953 
    }, 
    { 
     "lat": 44.730418, 
     "lng": -122.544798 
    } 
    ] 
} 

Postges mytableは:郵便番号varchar型、ポリゴンジオメトリ

答えて

0

それはかなりありませんが、これはトリックを行う必要があります。

WITH polygon AS ( SELECT json_array_elements(t->'polygon') AS data FROM json($$ { "zipcode": "97358", "polygon": [ {"lat": 44.730418, "lng": -122.544798}, {"lat": 44.763411, "lng": -122.685015}, {"lat": 44.831045, "lng": -122.616831}, {"lat": 44.863487, "lng": -122.401282}, {"lat": 44.80795, "lng": -122.40953}, {"lat": 44.730418, "lng": -122.544798} ] }$$) as t) SELECT ST_MakePolygon(ST_GeometryFromText( 'LINESTRING(' || string_agg((p.data->'lng')::text || ' ' || (p.data->'lat')::text, ',') || ')', 4326)) FROM polygon AS p;

SRID(射影)を4326としてハードコーディングしていることに注意してください。このポリゴンがオレゴン州にない場合は、おそらく修正する必要があります。

+0

ありがとうございます、それは1行レコードで動作します。 Postresテーブルのデータを使用しても機能しませんでした。まず、jsonファイルのデータを表に挿入し、この推奨スクリプトを使用してこの表からポリゴン(ジオメトリ形式)情報を含む郵便番号を抽出します。任意の提案pls –

関連する問題