我有一个 geojson 文件,其中包含不列颠群岛周围的多边形数据。 使用 php,我尝试将此文件导入到 mysql 数据库中,以便我可以执行空间查询。
geojson 文件使用 WGS 84 (EPSG:4326) 坐标系。 我想将这些坐标转换为纬度/经度。我发现这里找到了一些代码来进行每个点的转换,https://stackoverflow.com/a/18336137/1485815
但是,它需要UTM号码。这很好,但不列颠群岛分为 3 个不同的 UTM 代码 29,30 和 31,所以我不知道该使用哪一个,或者我需要在每个坐标的基础上计算出使用哪一个
我自己正在做一个使用此类翻译的项目。尝试这个。 proj4php\Proj4php 我发现它能够毫无问题地转换我迄今为止遇到的任何数据。作为循环函数的提示,仅包含 github 示例中显示的一些代码来重新运行每个循环,否则会大大减慢进程速度。下面是我的实现方式。
function spnc_wgs($x, $y) {
global $proj4, $proj_given, $proj_WGS84;
// Create a point.
$pointSrc = new Point($x, $y, $proj_given); //x, y
// Transform the point between datums.
$pointDest = $proj4->transform($proj_WGS84, $pointSrc);
//output lat/lon as array
$output = explode(" ", $pointDest->toShortString());
return array('lon' => $output[0], 'lat' => $output[1]);
}
我在 php 文件的开头使用它:
include($_SERVER['DOCUMENT_ROOT']."/vendor/autoload.php");
use proj4php\Proj4php;
use proj4php\Proj;
use proj4php\Point;
$proj4 = new Proj4php();
$proj_WGS84 = new Proj('EPSG:4326', $proj4);
在调用函数之前我设置了源投影:
$proj_given = new Proj($projection_used, $proj4);
有关所有可用 EPSG 的完整列表:空间参考列表
享受并祝你好运!!