ГИС пространственные функции в PHP? - PullRequest
13 голосов
/ 21 декабря 2009

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

Ответы [ 3 ]

8 голосов
/ 21 декабря 2009

В дистрибутиве MapServer / MapScript доступен PHP-модуль Proj4. Я думаю, что это обслуживается 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-X.X.X / mapscript / php3) и загрузить расширение в PHP. Как я уже говорил, в сети нет документации, поэтому сообщите мне, если обнаружите какие-либо проблемы.

Надеюсь, это поможет.

1 голос
/ 06 апреля 2011

Вы можете использовать api proj4php, который я перевел с proj4js и доступен здесь: https://sourceforge.net/projects/proj4php/

Он отлично работает от WGS84 до Lambert93, но нуждается в некотором исправлении для работы с другими проекциями. Я могу помочь.

Bye.

0 голосов
/ 05 февраля 2010

Можете ли вы запустить ArcGIS Server? ESRI имеет новый сервис, называемый сервисом Geometry, который позволяет вам выполнять манипуляции с геометрией / преобразование / и т.д. через различные сервисные интерфейсы.

Образец версии можно найти по адресу http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer, с которой можно протестировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...