2009-12-21 24 views
13

Veri noktalarını bir coğrafi projeksiyondan (Lat Long, Mercator, UTM) diğerine dönüştürmem gerekiyor ve bunu yapabilecek bir dizi PHP aracı veya işlevi olup olmadığını merak ediyorum. Bulduğum formüllere dayanarak bir tane yazmayı denedim, ama yeterince doğru değildi ve her yerde daha iyi formüller bulamadım, bu yüzden bir yerlerde hazır ambalajlı fonksiyonlar olup olmadığını merak ediyordum. Başarısız, PROJ.4 gibi bir şey ne olacak? Teşekkürler!PHP'de GIS mekansal işlevleri?

cevap

8

MapServer/MapScript dağıtımında mevcut bir Project4 PHP modülü var. Bence DM Solutions tarafından yönetiliyor, ancak çevrimiçi bir belge bulamadım. Mevcut işlevleri kontrol etmek için kaynak koduna bakmak zorunda kaldım. Bu şekilde gitmek istiyorsanız

<?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); 

?> 

, sen Mapserver source kod klasöründen php_proj.c derlemek zorunda kalacak (mapserver-XXX/mapscript:

Neyse, bu projeksiyonlar arasındaki koordinatları Dönüşümü nasıl olduğunu/php3) ve uzantıyı PHP'ye yükleyin. Daha önce söylediğim gibi, çevrimiçi dokümantasyon yok, bu yüzden herhangi bir sorun bulursanız haber verin.

Bu yardımcı olur umarım.

+0

Yardımlarınız için teşekkürler. Bu, gitmenin en iyi yolu gibi görünüyor ve PHP MapScript yüklemesinde bir bölümü olan bir MapServer belgesini (http://www.mapserver.org/MapServer.pdf) buldum ve nasıl kullanacağımın bazı örnekleri. Şimdiye kadar PHP ile ilgili temel bilgilerim var ve ne yapmak istediğimi kafamda var, bu yüzden birkaç alıştırma yaptım ve PHP ile mySQL'in yapabildiğinden emin olmak için birkaç kitap okudum. neye ihtiyacım var. Şimdiye kadar iyi görünüyor ve MapScript sadece bir şey gibi görünüyor. Yardımınız için teşekkürler - biraz daha fazla aldığımda size belirli bir yardım isteyebilirim. –

+0

Güncelleme - benim hosting kurulum ile, bu php_mapscript.dll eklemek için bir sorun olabilir gibi görünüyor. "Dl ('php_mapscript.dll') komutunu kullandığımda bir hatam var;". Hata: "Uyarı: dl() [function.dl]: Çok iş parçacıklı olmayan Web sunucularında desteklenmiyor - php.ini içinde php.ini dosyasında extension = php_mapscript.dll öğesini kullanın." PHP.ini dosyasını sunucularında değiştirebilirler. –

+0

PROJ4 işlevselliğine ilişkin işlevlerin mapscript kitaplığında (php_mapscript.dll) bulunmadığını, ancak php_proj.dll dosyasında bulunduğunu unutmayın. Kendinizi php_proj.c'den derlemeniz gereken farklı bir kütüphanedir. Sadece Linux altında derleme tecrübem var, ama belki de Windows üzerinde deneyebilirsiniz. – amercader

1

Sen proj4js tercüme ve burada mevcuttur gelmiş API proj4php kullanabilirsiniz: https://sourceforge.net/projects/proj4php/

O Lambert93 için WGS84'e büyük çalışır, ancak diğerleri projeksiyonlar ile çalışmak için bazı düzeltme gerekir. Yardım edebilirim.

Hoşçakal.

+0

proj4php çok yardımcı oldu, ben test ettim, sonuç oldukça hassas. –

+0

[_ "Bu projenin dosya yok." _] (Http://sourceforge.net/projects/proj4php/files/?source=navbar) – elrobis