ГИС пространственные функции в PHP?

Мне нужно преобразовать точки данных из одной географической проекции (Lat Long, Mercator, UTM) в другую, и мне интересно, есть ли набор инструментов или функций PHP, которые могут это сделать? Я попробовал написать один сам по формулам, которые я нашел, но он не был достаточно точным, и я не могу найти лучшие формулы где угодно, поэтому мне было интересно, есть ли где-то какие-то расфасованные функции. В противном случае, что-нибудь вроде PROJ.4? Спасибо!

Ответы

Ответ 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, с которой вы можете протестировать.