我有一个带有邮政编码和多边形数据的Json文件。我想将多边形转换并存储到几何数据类型的Postgres表中。我的Postgres 9.5使用PostGIS扩展。
我的档案:.multiselect-container > li.disabled { display:none;}
数据:
myjson.json
Postges mytable:zipcode varchar,polygon geometry
答案 0 :(得分: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.如果此多边形不在俄勒冈州,那么您可能需要更正它。