几天来,我一直在搜索一个SQL查询,该查询允许我创建一个GeoJSON,该JSON将为我提供数据库中多边形的轮廓。
第一个查询工作正常,它允许只在一个单元格中获得一个Geojson对象,其中包含所有多多边形。
SELECT json_build_object(
'type', 'FeatureCollection',
'features', json_agg(
json_build_object(
'type', 'Feature',
'geometry', ST_AsGeoJSON(
the_geom
)::json,
'properties', json_build_object(
'name', name
)
)
)
)
FROM layer
现在,我尝试获取相同的GeoJson对象,但使用Linestring而不是multipolygons。函数ST\u ExteriorRing()似乎与函数json\u agg()不兼容?我不知道我必须改变什么才能让它生效。。。
SELECT json_build_object(
'type', 'FeatureCollection',
'features', json_agg(
json_build_object(
'type', 'Feature',
'geometry', ST_AsGeoJSON(
ST_ExteriorRing( -- get the exterior lines of multipolygons
ST_GeometryN(
the_geom,
generate_series(
1,
ST_NumGeometries(the_geom)
)
)
)
)::json,
'properties', json_build_object(
'name', name
)
)
)
)
FROM layer
如果我抑制json\u agg()函数,它可以正常工作,但在这种情况下,输出中没有任何单元格。