如何干净地将 PostgreSQL 查询格式化为 return geojson?

How to format PostgreSQL query to return geojson cleanly?

我遇到了与 类似的问题,其中使用 pg_fetch_all 是 return 将我想要埋藏在关联数组中的数据。当我在 PgAdmin 中 运行 查询时,我得到了我期望的作为特征集合的结果,那么将我的查询和 PHP 格式化为 return 结果作为 geojson 对象的正确方法是什么?我的目标是获取 Leaflet 地图的 geojson。我正在查询我想要关联一些属性的单个位置的 shapefile。

这是我的查询和代码片段:

$query = "SELECT row_to_json(fc)
FROM ( SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features
FROM (SELECT 'Feature' As type
   , ST_AsGeoJSON(lg.geom)::json As geometry
   , row_to_json((SELECT l FROM (SELECT id, photo, type) As l
     )) As properties
  FROM public.\"Peng\" As lg   ) As f )  As fc;";

$result = pg_query($query) or die('Query failed: ' . pg_last_error());
$geodata = pg_fetch_all($result);
print_r($geodata);

虽然我确定我可以深入了解该对象,但必须有一种更简洁的方法来向客户端获取 geojson 字符串。

因此,在这种情况下,只需使用 $geodata[0]['row_to_json']

正确访问数组中的值即可