Uzaktan algılama için önerilen programlama dili?


14

Umarım uzaktan algılama uzmanı olarak uzun bir kariyere yol açacak çalışmalara başlıyorum. Şu anda ArcGIS ile bazı uygulamalar için çalışıyorum ve diğerleri için ENVI öğreniyorum. Bir programlama dili öğrenmenin zorunlu olduğunu fark ettim ve IDL ve Python arasında bir seçimle karşı karşıya kaldım. Topluluğun kara yüzeyi süreçlerinin uzaktan algılanması için hangi programlama dilini önerdiğini duymak isterim.

Yanıtlar:


28

IDL harika bir bağımsız programlama dilidir (ENVI'ye ihtiyacınız yoktur). Büyük dizilerde çok hızlı matris işleme için bunu seviyorum. @Aaron, IDL'nin sesini gerçekten olduğundan daha az esnek hale getirir. IDL gelişiminin çoğu Fizik ve Astronomi topluluklarından geldi. Matematiksel ve istatistiksel programlama için güçlü bir destek var. ENVI ile paketlenmişse, uzamsal vektör nesneleri desteği de dahil olmak üzere ENVI'de bulunan tüm kütüphane çağrılarına (işlevlerine) sahipsiniz. Kullanıcı topluluğu tarafından geliştirilen çok sayıda işlev ve model de vardır. IDL öğrenmenin bir avantajı, sizi "analitik" uzaktan algılama mağazalarında pazarlanabilir hale getirmesidir.

Ayrıca, ERDAS'ın oldukça iyi ve öğrenmesi kolay bir betik diline (EML) sahip olduğunu unutmayın. EML, grafik modelleyicinin belkemiğidir ve gmd'ler sadece grafik modelleyici arabiriminin altında bulunan paketlenmiş EML komut dosyalarıdır. EML'yi doğrudan kullanmanın avantajı, döngüler için / while döngüleri kullanabilmeniz ve bir komut dosyası dilinde daha fazla ERDAS işlevine erişebilmenizdir.

MATLAB, matris işleme için de çok iyidir ve benzer ölçütlerle tam olarak aynı sözdizimine sahip açık kaynak sürümleri (örneğin, Octave) vardır. Bu, oldukça güçlü ve oldukça güçlü bir dildir. Uygulamalı matematik ve mühendislik için tercih edilen dillerden biridir.

Python alternatifleri NumPy ve SciPy esnektir, ancak IDL ve MATLAB kadar optimize edilmemiştir. Bu nedenle, büyük dizilerle çalışırken alanı ve hızı ele almanız gerekir. Python'un büyük bir avantajı, çeşitli analitik görevleri gerçekleştirmek için ek kütüphanelerdir. İçin paketler vardır uzaktan algılama , parametrik olmayan istatistikler sadece paketleriyle mevcut ek işlevsellik bazı isim mekansal sınıfların (örneğin GDAL, LibLAS) için, bağlamaları.

Bu bizi R'ye getiriyor. Ben öncelikle mekânsal bir istatistikçiyim, bu yüzden benim günlük dilim. Mevcut paketlerin sayısı şaşırtıcıdır ve bu da son teknoloji disiplinler arası istatistiksel yöntemlere erişim sağlamaktadır. Ancak, büyük veri sorunlarıyla uğraşırken çok hantal olduğunu söylemeliyim. Uzamsal sınıflar çok daha iyi hale geliyor ve büyük verileri hafızadan uzak tutma yeteneği sağlayan tarama paketi sayesinde artık büyük tarama dizileri kullanarak oldukça karmaşık bazı istatistiksel modeller uygulayabiliyorum. Ancak yine de, büyük bellek sorunlarıyla uğraşırken R yavaştır. BigMatrix paketi diskten büyük dizilerin yazılmasına ve işlenmesine izin verir, ancak kodlama yükü önemsiz değildir GDAL ve GIS yazılımına (ör. GRASS, SAGA), GIS'e özgü bir yazılımda uzamsal nesne işlemenin R dışında gerçekleşmesine izin verir, bu yüzden bu günlerde GIS yazılımıyla nasıl etkileşime gireceğim. Bu, R'den ayrılmadan birden fazla yazılımda işlevsellikten yararlanmamı sağlıyor.

Yani, şimdi amigo yazılım yoldan çıktı, benim tavsiyem "yukarıdaki tüm seçeneklere evet" dir. Programlama, öğrenildikten sonra diğer dillere kolayca uygulanabilen bir beceridir. C ++, R, IDL ve Python arasında çarpıcı benzerlikler vardır. Bazı kodlama becerilerinin yanı sıra, öğrenilmesi gereken şey, belirli bir modeli / görevi uygulamak için mevcut işlevlerdir. Bu yapıldıktan sonra, sadece ortak kodlama yapılarını uygulayan sözdizimi meselesidir.

Bazen farklı bir yazılımda veya dilde daha iyi çalışan şeyler vardır. Bazen belirli bir görev için en iyi seçim olduğundan FORTRAN veya C ++ 'da kod yazıyorum. Bu bir uyarlanabilirlik meselesidir. Python ile başlamak isteyebilirsiniz, çünkü bir komut dosyası dili olarak, özel analiz için paketlerin kullanılabilirliğini sağladığı, bir dizi ücretsiz çevrimiçi kaynağa sahip olduğu ve öğrenmesi biraz kolay olduğu için birçok göreve uygulanabilir.


Bunu sadece iyi yazılmış ve duyarlı olduğu için değil, aynı zamanda (bazen Fortran'a ara ara dahil :-) ve bu diller ve uygulama ortamları hakkında benzer sonuçlar çıkardığım için de onayladım.
whuber

+1 Mevcut araçların iyi bir özeti. EML'den bahsettiğiniz için teşekkür ederiz. Komut dosyası oluşturma açısından EML, Python'a (IMOP) kıyasla biraz tıknazdır, ancak Erdas sizin tercih ettiğiniz RS GUI ise çok kullanışlıdır. Ne yazık ki, GIS ve RS'den en iyisini getiren birleşik bir dil yoktur. Her insanın mevcut en iyi yöntemi kullanması ve emrinde çeşitli diller olması gerektiğine kesinlikle katılıyorum. Tek bir RS uzmanının bu alanda nadir olduğunu düşünüyorum.
Aaron

Açık kaynak olduğu ve birçok çevrimiçi kaynağın mevcut olduğu göz önüne alındığında, Python ile başlamanın en iyi bahisim gibi geldiğini kabul ediyorum. ENVI'ya erişimim var, ancak mevcut araştırmam için IDL bilmeden idare edebilirim. Ben de mekânsal istatistikleri inceliyorum, bu yüzden R de önemli olacak. @Aaron haklı görünüyor - RS uzmanları çok dilli olmalı! Ayrıntılı yanıt için tekrar teşekkürler. Bu, sahaya yeni başlayan biri için gerçekten çok büyük bir yardım.
Emily

@Emily, Python'daki mekansal istatistikler için PySAL paketine ( geodacenter.asu.edu/pysal ) bir göz atın . Kenneth Bowman'ın "IDL ile Programlamaya Giriş" adlı kitabı oldukça iyi bir genel tanıtım. Sadece bu kitap üzerinde çalışarak ne kadar ilerleyeceğinize şaşıracağınızı düşünüyorum. Bahsettiğim gibi, sözdizimi ve kodlama yapısının çoğu bahsedilen diller arasında benzerdir, boşa zaman harcanmaz. ENVI ile çalıştığınız için IDL hakkında bazı temel bilgiler araştırmanızda yardımcı olacaktır. Belirli bir dille hepsi ya da hiçbir şey değildir.
Jeffrey Evans

Bu yazı iyi bir özet - deneyimlerime ek olarak: ArcGis, Envi, Matlab ve diğer araçların yüksek fiyatı göz önüne alındığında, ücretsiz olan OpenSource'u tercih ediyorum. Benim için Python / gdal ve QuantumGIS kombinasyonu mükemmel çalışıyor. İşyerimdeki diğerleri Matlab kullanıyor (ama aynı zamanda çok pahalı). Çevremde, R çoğunlukla biyologlar tarafından bir nedenden dolayı kullanılıyor gibi görünüyor.
Max

15

Uzaktan algılama perspektifinden bakıldığında, IDL'nin ana yararı, ENVI kapasitesini Python arcpy site paketinin ArcGIS'in işlevselliğini genişletme şekline genişletmesidir. ENVI platformuna erişiminiz olmayacaksa, farklı bir programlama dili öğrenmeyi düşünün. Buna ek olarak, IDL ticari bir üründür, Python açık kaynak kodlu ve büyük bir destek tabanına sahiptir.

Pratik bir bakış açısından, Python , R (açık kaynak) ve MATLAB (ticari) günlük uzaktan algılama tabanlı çalışmalarım için en önemli dillerdir. Dijital görüntü işlemenin çoğunda MATLAB, daha fazla CBS ile ilgili görevler için Python ve grafik / analitik amaçlar için R kullanıyorum.

Son olarak, tüm çabalarımı bir dile odaklamak zorunda kalsaydım, Python'u öğrenmeyi tercih ederim, çünkü Python işlevselliği RS tabanlı işlevselliğe ek olarak GIS ile ilgili işlemlere çok daha uygundur. Başka bir deyişle, Python IDL değil, tüm esnaf bir esnaf. Ayrıca NASA, Python kullanıyor !


1
Python'da pyh5 ve numpy / scipy gibi birçok modül vardır. Özellikle görüntü işleme için OSSIM gibi daha büyük kütüphaneler de vardır .
Roland

1
Python'da +1. Bu genel amaçlı bir dildir ve GIS komut dosyası ile 'kutudan çıkabilen' araçlar kullanmanız gerekiyorsa, python bunu yapabilir.

Teşekkürler çocuklar, sesler Python üzerinde çalışmaya başlayacak ve bir kez aldığımda diğer dillere genişleyeceğim. Yardımın için çok teşekkürler.
Emily

1
Rasterio'yu unutmayın: github.com/mapbox/rasterio Python için rasterler için yeni bir kütüphane.
Alex Leith

2

Prosedürel bir dile odaklanmak yerine temel bilgisayar bilimi teorisini öğrenmenizi şiddetle tavsiye ediyorum. CS teorisinde bir temel edinmek, programlama dillerini dönüşümlü olarak kullanmanıza izin verecektir. Günlük bazda kod yazmak için iki ila üç dil kullanıyorum (Çoğunlukla Matlab, R, Python) ve geçen ay VB, BATCH ve EASE (PCI Focus) kodları da yazdım.

Bu sadece birden fazla dili kolayca öğrenebilmek için değil, aynı zamanda temel hatalar yapmaktan da kaçınmak için önemlidir.

Önerilen birkaç konu:

  • veri tipleri, bellek kullanımı
  • koşullar
  • tekrarlama
  • kalıp eşleme
  • usul paradigması, modülerlik

Ayrıca, kod yazma konusunda sorun yaşıyorsanız geri adım atın ve sözde kod yazın. Temel olarak kodunuzun arkasındaki mantığı ve neyi başarmasını istediğinizi adım adım yazın.

Eğer bir öğrenciyseniz birinci ve ikinci yıl bilgisayar bilimleri derslerini almanızı öneririm.

Şerefe.


2

Bunun ayrı bir yanıta değer olduğunu düşünüyorum: Uzaktan Algılama için Python'un nasıl kullanılacağını öğrenmek için kesinlikle harika bir sayfa bu, ders notları harika bir öğretici: http://www.gis.usu.edu/~chrisg/python / 2009 /

Benim için Python ve QuantumGIS kombinasyonu tüm Uzaktan Algılama ve GIS ihtiyaçlarımı çözüyor.


0

gerçekten uzaktan algılamada kullanmayı umduğunuz paketlere bağlıdır (görüntü analizi). ArcGIS (ESRI) bir uzaktan algılama paketi değildir. Açık kaynak paketleri kullanmak istiyorsanız, Python ve R'nin harika diller olduğunu kabul ediyorum. Ayrıca C ++ ve C düşünürdüm, bu yüzden bazı kütüphanelere daha derin dalış yapabilirsiniz (yani: GDAL). Reklamsız (COTS) paketlerini ticari olarak kullanmak istiyorsanız, C dillerine (C, C ++ ve C #) daha fazla bakmak istersiniz. Mutlu kodlama.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.