Php 来自mysql的geojson:转换postgresql';使用聚合函数json\U agg的s查询(用于web映射)
关于MySQL和GeoJSON聚合函数的一个问题: 我想根据本文末尾的提示将PostgreSQL查询转换为MySQL 5.7查询 或者使用postgresql中的等效方法为MySQL提供此解决方案: 我已经找到了MySQL 8.0的主要功能 要转换的查询以及本文末尾介绍的提示:Php 来自mysql的geojson:转换postgresql';使用聚合函数json\U agg的s查询(用于web映射),php,mysql,json,geojson,aggregation,Php,Mysql,Json,Geojson,Aggregation,关于MySQL和GeoJSON聚合函数的一个问题: 我想根据本文末尾的提示将PostgreSQL查询转换为MySQL 5.7查询 或者使用postgresql中的等效方法为MySQL提供此解决方案: 我已经找到了MySQL 8.0的主要功能 要转换的查询以及本文末尾介绍的提示: SELECT JSON_OBJECT( 'type', 'FeatureCollection', 'crs', JSON_OBJECT( 'type', 'name',
SELECT JSON_OBJECT(
'type', 'FeatureCollection',
'crs', JSON_OBJECT(
'type', 'name',
'properties', JSON_OBJECT(
'name', 'EPSG:4326')),
'features', **JSON_OBJECTAGG**(
JSON_OBJECT(
'type', 'Feature',
'id', site.id_site,
'geometry', ST_AsGeoJSON(the_geom),
'properties', JSON_OBJECT(
'name', 'name',
'espece', espece_name,
'pseudo', pseudo
)
)
)
) AS objet_geosjon FROM site, catch, fish, espece, hunting_party WHERE site.id_site = catch.id_site AND catch.id_fish = fish.id_fish AND fish.id_espece = fish.id_espece AND catch.id_hunting_party = hunting_party.id_hunting_party;
geojson中所需的结构:
{“类型”:“特征集合”,“crs”:{“类型”:“名称”,“属性”:{“名称”:“EPSG:4326”},“特征”:{“类型”:“特征”,“id”:1,“几何体”:{“类型”:“点”,“坐标”:[-4.59004219507089,48.559968224588]},“属性”:{“名称”:“名称”,“特殊”:“dorade royale”,“伪”:“Fred”},{“类型”:“特征”,“id”:2,“几何体”:{“类型”:“点”,“坐标”:[-4.5891116804469,48.559135011761]},“属性”:{“名称”:“名称”,“特殊”:“dorade royale”,“伪”:“Fred”},{“类型”:“特征”,“id”:4,“几何”:{“类型”:“点”,“坐标”:[-4.58834537428597,48.5601855821988]},“属性”:{“名称”:“名称”,“特殊”:“Congree”,“伪”:“Fred”},{“类型”:“特征”,“id”:3,“几何体”:{“类型”:“点”,“坐标”:[-4.5864296088365,48.5594972798939]},“属性”:{“名称”:“名称”,“特殊”:“dorade royale”,“伪”:“Joe”}},{“类型”:“特征”,“id”:5,“几何体”:{“类型”:“点”,“坐标”:[-4.58708644273588,48.5570338054289]},“属性”:{“名称”:“名称”,“特殊”:”唯一公社“,”伪“:”乔“},{”类型“,”特征“,”id“:6,”几何“,{”类型“:”点“,”坐标“:[-4.5890022081382,48.5594610531973],”属性“:{”名称“,”名称“,”特殊“:”国会“,”伪“:”弗雷德“}}”
多谢各位
我在php中找到了一种方法:
<?php include("connection_db_mysql.php");if($dbconn){/*Build SQL SELECT statement and return the geometry as a GeoJSON element*/ $sql =
SELECT espece_name as espece, pseudo, ST_ASGEOJSON(the_geom) AS geojson FROM site, catch, fish, espece, hunting_party WHERE site.id_site = catch.id_site AND catch.id_fish = fish.id_fish AND fish.id_espece = espece.id_espece AND catch.id_hunting_party = hunting_party.id_hunting_party;';
# Try query or error
$rs = $dbconn->query($sql);
if (!$rs) {
echo 'An SQL error occured.\n';
exit;
}
$prop = array('name' => 'EPSG:4326' );
//$crs = array('type' => 'name' , 'properties' => json_encode($prop, JSON_HEX_QUOT));
//$crs = array('type' => 'name' , 'properties' => htmlspecialchars(json_encode($prop), ENT_QUOTES, 'UTF-8'));
# Build GeoJSON feature collection array
$geojson = array(
'type' => 'FeatureCollection',
'crs' => 'to_replace',
// 'crs' => htmlspecialchars(json_encode($crs), ENT_QUOTES, 'UTF-8'),
'features' => array()
);
//
//'{"type" : "name", "properties" : {"name" : "EPSG:4326"}}'
//array_push($crs['properties'], $prop);
//array_push($objet_geojson['crs'], $crs);
$i=1;
# Loop through rows to build feature arrays
while ($row = $rs->fetch(PDO::FETCH_ASSOC)) {
$properties = $row;
# Remove geojson and geometry fields from properties
unset($properties['geojson']);
unset($properties['the_geom']);
$feature = array(
'type' => 'Feature',
'id' => $i,
'geometry' => json_decode($row['geojson'], true),
'properties' => $properties
);
$i++;
# Add feature arrays to feature collection array
array_push($geojson['features'], $feature);
}
$objet_geojson=str_replace('"to_replace"','{"type" : "name", "properties" : {"name" : "EPSG:4326"}}', json_encode($geojson))}