gpt4 book ai didi

php - 在 PHP 中解析 GeoJson 字符串

转载 作者:行者123 更新时间:2023-11-29 12:06:19 24 4
gpt4 key购买 nike

我想从 String 下面获取多边形坐标。

{"polygon":{"type":"Feature","properties":[],"geometry":{"type":"Polygon","coordinates":[[[-7302732.4720101,6527844.6333235],[-3193477.8319711,6606116.1502766],[-5111129.9973226,5001550.0527375],[-6637424.5779086,4884142.7773079],[-7772361.5737289,5158093.0866438],[-7302732.4720101,6527844.6333235]]]},"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}}

这是我使用以下代码解码为数组的 GeoJson 字符串:

$polygon = CJSON::decode($str);

当我想获取多边形时出现错误!

$var= $polygon->polygon;

或使用以下代码:

$polygon = CJSON::decode($str,true);
$var = $polygon['polygon'];

虽然获取坐标:

foreach($polygon as $key=>$value)
$coordinates = $value['coordinates'];
or
$coordinates = $value[coordinates];

我如何从我从 javascript 发送到 php 的 geojson 中获取坐标,以便使用 postgis 保存在 postgresql 上?

最佳答案

$polygon->polygon->geometry->coordinates[0]

$polygon['polygon']['geometry']['coordinates'][0]

你拥有的是一个多维数组/对象,不确定在你的情况下解码时它被输出到哪个,因为看起来你有一个类正在做它我会使用 json_decode,但无论如何。是的,从它的外观来看,多边形是主要对象,然后是几何图形,这是一个具有类型和坐标的对象,然后坐标中有多个对象/数组。

如果我输入正确,上面的示例将显示该对象中的第一组坐标。当然你可以通过循环运行它,即:

如果它是一个对象,假设您的类解码为对象而不是数组。不确定 $polygon = CJSON::decode($str,true); 的作用。但是,如果它类似于 json_decode(),那么您应该已经准备就绪。

这是我分解对象的方法,正如你在这里展示的那样,值得注意的是你可能想检查计数,看看是否首先设置了对象,或者对象中是否存在该属性以防止其他方式代码打破了道路。但我这里所提供的只是其核心的纯粹示例,尽管如此,它仍将达到其目的。但不会错误处理,这就是为什么我说你可能想进一步详细说明它做这些检查。

无论如何这是我的代码:

<?php
$str = '{"polygon":{"type":"Feature","properties":[],"geometry":{"type":"Polygon","coordinates":[[[-7302732.4720101,6527844.6333235],[-3193477.8319711,6606116.1502766],[-5111129.9973226,5001550.0527375],[-6637424.5779086,4884142.7773079],[-7772361.5737289,5158093.0866438],[-7302732.4720101,6527844.6333235]]]},"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}}';

$polygon = json_decode($str);
echo'<pre>';print_r($polygon);echo'</pre>';

$set = 1;
foreach($polygon->polygon->geometry->coordinates[0] as $coordinates)
{
echo 'Set '.$set.': ';$set++;
echo $coordinates[0].','.$coordinates[1].'<br>';
}
?>

查看实际效果 http://7pz.net/geojson-parse.php (滚动到底部)

关于php - 在 PHP 中解析 GeoJson 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com