如何循环访问Geojson元素
问题描述
我想执行此问题中的代码https://gis.stackexchange.com/questions/142391/storing-geojson-featurecollection-to-postgresql-with-postgis/142479#142479 但当我运行该应用程序时,收到以下错误:query="""
KeyError: ' "type"'
请告诉我如何修复它。
编码:
def exeGeoFromGeoJSONToWKT(self):
query="""
WITH data AS (
SELECT '{ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {"prop0": "value0"}
},
{ "type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
]
},
"properties": {
"prop0": "value0",
"prop1": 0.0
}
},
{ "type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
[100.0, 1.0], [100.0, 0.0] ]
]
},
"properties": {
"prop0": "value0",
"prop1": {"this": "that"}
}
}
]}'::json AS featuresCollection)
SELECT
LIDARDataPolygonsAsGeometry
FROM (
SELECT
ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON(feature->>'geometry'),4326),25832) AS LIDARDataPolygonsAsGeometry
FROM (SELECT json_array_elements(featuresCollection->'features') AS feature
FROM data) AS f
"""
print(query)
data = self.connection.query(query,[])
# print(data)
return data
尝试:
query="""
WITH data AS (
SELECT $${ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {"prop0": "value0"}
}
]}$$::json AS featuresCollection)
SELECT
LIDARDataPolygonsAsGeometry
FROM (
SELECT
ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON(feature->>'geometry'),4326),25832) AS LIDARDataPolygonsAsGeometry
FROM (SELECT json_array_elements(featuresCollection->'features') AS feature
FROM data) AS f
"""
解决方案
从数据库的角度来看,查询运行良好,但问题似乎出在查询构建上。您的查询有一个包含多个"
双引号的JSON文档,因此您可以转义它们("
),或者尝试使用另一个answer中所述的参数将JSON添加到查询中。
无关:您不需要这3个嵌套子查询。一个查询就可以了:
WITH data AS (
SELECT '{ "type": "FeatureCollection",
...
]}'::json AS mygeojson
)
SELECT
ST_Transform(
ST_SetSRID(
ST_GeomFromGeoJSON(json_array_elements(
mygeojson->'features')->>'geometry'),
4326),
25832) AS feature
FROM data
相关文章