Мне нужно преобразовать точки данных из одной географической проекции (Lat Long, Mercator, UTM) в другую, и мне интересно, есть ли набор инструментов или функций PHP, которые могут это сделать? Я попробовал написать один сам по формулам, которые я нашел, но он не был достаточно точным, и я не могу найти лучшие формулы где угодно, поэтому мне было интересно, есть ли где-то какие-то расфасованные функции. В противном случае, что-нибудь вроде PROJ.4? Спасибо!
ГИС пространственные функции в PHP?
Ответ 1
Существует модуль PHP Proj4, доступный в дистрибутиве MapServer/MapScript. Я думаю, что это поддерживается DM Solutions, но я не мог найти документацию в Интернете. Чтобы проверить доступные функции, мне пришлось посмотреть исходный код.
Во всяком случае, так вы можете преобразовывать координаты между проекциями:
<?php
//UTM zone 31N
$projDefSrc = array("proj=utm","zone=31","ellps=intl","units=m","no_defs");
$pjSrc = pj_init($projDefSrc);
//WGS84
$projDefDest = array("proj=longlat","ellps=WGS84","datum=WGS84","no_defs");
$pjDest = pj_init($projDefDest);
$x = 446423;
$y = 4610005;
$test = pj_transform($pjSrc,$pjDest,$x,$y);
//Outputs: Array ( [u] => 2.3567240656 [v] => 41.6384346565 )
print_r($test);
?>
Если вы хотите пойти по этому пути, вам нужно будет скомпилировать php_proj.c из папки с драйверами Mapserver (mapserver-XXX/mapscript/php3) и загрузить расширение в PHP. Как я уже говорил, в Интернете нет документации, поэтому дайте мне знать, если у вас возникнут проблемы.
Надеюсь, что это поможет.
Ответ 2
Вы можете использовать api proj4php, который я перевел с proj4js, и доступен здесь: https://sourceforge.net/projects/proj4php/
Он отлично работает с WGS84 до Lambert93, но нуждается в исправлении для работы с другими проекциями. Я могу помочь.
Bye.
Ответ 3
Можно ли запустить ArcGIS Server? ESRI имеет новую службу, называемую службой геометрии, которая позволяет выполнять геометрию манипуляции/преобразования/etc через различные интерфейсы обслуживания.
Вы можете найти примерную версию http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer, с которой вы можете протестировать.