首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于GeoJSON的PHP格式

用于GeoJSON的PHP格式
EN

Stack Overflow用户
提问于 2018-01-24 16:06:53
回答 1查看 1.1K关注 0票数 0

尝试使用PHP格式化GeoJSON (多边形)几何部分的数据

代码语言:javascript
复制
$sql = "SELECT ST_AsGeoJSON(`geom`) as Geo FROM `usa` WHERE 1";

返回如下的记录:

代码语言:javascript
复制
{"type": "Polygon", "coordinates": [[[-101.4073933...

到目前为止,我的代码尝试了格式化几何图形块的3种不同的方式,都失败了。

代码语言:javascript
复制
while ($res = mysqli_fetch_array($result,MYSQLI_ASSOC)) {

$msg [] = array(
        'type' => 'Feature',

        'geometry' => 
            $res['Geo'],
         /// ERROR  "geometry" member should be object, but is an String instead
        //"geometry":"{\"type\": \"Polygon\", \"coordinates\": [[[-104.05361517875079, 41.698


        'geometry' => array(
            $res['Geo'],
        ),   ///ERROR "geometry" member should be object, but is an Array instead
        //"geometry":["{\"type\": \"Polygon\", \"coordinates\": [[[-104.05361517875079, 41.6


        'geometry' => array(
            'type' => $res['Geo'].['type'],
            'coordinates' => $res['Geo'].['coordinates'],
        ),  
        //"geometry":{"type":"{\"type\": \"Polygon\", \"coordinates\": [[[[-122.4020155875262, 48.22521

它最终看起来应该是这样的:

代码语言:javascript
复制
"geometry": { "type": "Polygon", "coordinates": [[[  -73.3450469
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-29 13:52:58

顾名思义,ST_AsGeoJSON返回JSON。这意味着$res['Geo']是一个字符串,一个表示GeoJSON对象的JSON字符串。如果将该字符串放入PHP数组(稍后为json_encode ),则将生成字符串的JSON编码。相反,您需要的是数组或对象,然后可以使用json_encode,它将是JSON中的对象,而不是字符串。

因此,JSON-解码从数据库获取PHP对象的值:

代码语言:javascript
复制
$msg[] = array(
    'type' => 'Feature',
    'geometry' => json_decode($res['Geo']),
    ...
);

稍后,当JSON编码$msg时,它将如下所示:

代码语言:javascript
复制
"geometry": {"type": "Polygon", "coordinates": ...}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48426813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档