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

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

13
задан Reg H 21 December 2009 в 12:26
поделиться

2 ответа

В дистрибутиве 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 (mapserver-XXX / mapscript / php3) и загрузите расширение в PHP. Как я уже сказал, в Интернете нет документации, поэтому дайте мне знать, если вы обнаружите какие-либо проблемы.

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

8
ответ дан 2 December 2019 в 01:31
поделиться

Нет согласно стандарту. Попробуйте включить заголовок с макросом:

 #define QUOTE(x) #x

и создать printf как:

 printf(QUOTE(hello));
-121--4121263-

Вы можете попробовать что-то вроде:

a = [1 2 3 4 5]'
l = size(a)
for i=2:5
    a(1:5, i) = a(1:5)

Цикл просто продолжает добавлять столбцы в конец.

-121--4605281-

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

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

0
ответ дан 2 December 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: