如何格式化PostgreSQL查询结果提取GeoJSON对象从关联数组与PHP?



所以,我正在尝试用传单和PostGIS构建一个简单的地图应用程序。我有一个形状文件的点存储在我的PostgreSQL数据库。我能够查询PGAdmin层并产生有效的结果,我有一个简单的php脚本连接并执行查询。我卡住的地方是如何将查询结果格式化为地图客户端的GeoJSON。

在返回的结果上运行pg_fetch_all的结果是一个与我的GeoJSON对象在里面的关联数组,像这样

Array ( [0] => Array ( [row_to_json] => {"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[8.697130556,50.123908333,108.5]},"properties":{"id":3,"photo":"/Users/Nizz0k/Desktop/Peng/IMG_3475.jpeg","type":"Quote"}}

我的PHP技能不是很好,所以我不确定如何从数组中提取对象。我看过几个教程,展示了人们在php中重新创建GeoJSON,但这似乎是多余的,因为它已经被数据库格式化,并被格式化交付。

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

以上是我目前为止的代码。

如果数据是多个,可以使用array_map从数组中获取地理数据

$geodata = pg_fetch_all($result);
$geodata = array_map(function($item) {
return json_decode($item['row_to_json'],true);
},is_null($geodata) ? [] : $geodata);
print_r($geodata);

从数据库中得到GeoJSON对象的关联数组。

如果你只想得到json,你可以删除json_decode

return $item['row_to_json'];

最新更新