Bahasa pemrograman yang disarankan untuk penginderaan jauh?

14

Saya memulai studi yang mudah-mudahan akan mengarah ke karir panjang sebagai spesialis penginderaan jauh. Saat ini saya bekerja dengan ArcGIS untuk beberapa aplikasi dan belajar ENVI untuk yang lain. Saya menyadari bahwa sangat penting bagi saya untuk belajar bahasa pemrograman, dan saya terjebak menghadapi pilihan antara IDL dan Python. Saya akan senang mendengar bahasa pemrograman mana yang direkomendasikan masyarakat untuk penginderaan jarak jauh dari proses permukaan tanah.

Emily
sumber

Jawaban:

28

IDL adalah bahasa pemrograman mandiri yang fantastis (Anda tidak perlu ENVI). Saya khususnya suka untuk pemrosesan matriks yang sangat cepat pada array besar. @ Harun membuat IDL terdengar kurang fleksibel daripada yang sebenarnya. Mayoritas pengembangan IDL keluar dari komunitas Fisika dan Astronomi. Ada dukungan kuat untuk pemrograman matematika dan statistik. Jika dibundel dengan ENVI, Anda memiliki semua panggilan perpustakaan (fungsi) yang tersedia di ENVI termasuk dukungan untuk objek vektor spasial. Ada juga sejumlah besar fungsi dan model yang dikembangkan oleh komunitas pengguna. Satu keuntungan mempelajari IDL adalah bahwa hal itu akan membuat Anda dapat dipasarkan di toko penginderaan jauh "analitik".

Juga, jangan lupa bahwa ERDAS memiliki bahasa scripting (EML) yang cukup bagus dan mudah dipelajari. EML adalah tulang punggung dari pemodel grafis dan gmd's hanya dikemas skrip EML yang duduk di bawah antarmuka pemodel grafik. Keuntungan menggunakan EML secara langsung adalah bahwa Anda dapat menggunakan loop untuk / sementara dan memiliki akses ke lebih banyak fungsi ERDAS dalam bahasa scripting.

MATLAB juga sangat baik untuk pemrosesan matriks dan ada versi open source (misalnya, Oktaf) yang memiliki sintaks yang persis sama dengan tolok ukur yang sama. Ini adalah bahasa yang sangat fleksibel dengan kekuatan yang besar. Ini adalah salah satu bahasa yang disukai untuk matematika dan teknik terapan.

Alternatif Python NumPy dan SciPy fleksibel tetapi tidak dioptimalkan seperti IDL dan MATLAB. Karena itu, Anda perlu berurusan dengan mengatasi ruang dan kecepatan saat bekerja dengan array besar. Satu keuntungan besar dari Python adalah pustaka tambahan untuk melakukan berbagai tugas analitis. Ada paket untuk penginderaan jarak jauh , statistik nonparametrik , binding ke kelas spasial (misalnya GDAL, LibLAS) untuk menyebutkan beberapa fungsi tambahan yang tersedia melalui paket.

Ini membawa kita ke R. Saya terutama ahli statistik spasial jadi, ini adalah bahasa sehari-hari saya. Jumlah paket yang tersedia sangat mengejutkan, yang pada gilirannya, menyediakan akses ke metodologi statistik lintas-disiplin yang canggih. Namun, saya harus mengatakan bahwa itu sangat rumit ketika berhadapan dengan masalah data yang besar. Kelas spasial menjadi jauh lebih baik dan karena paket raster memberikan kemampuan untuk menahan data besar dari memori, saya sekarang dapat menerapkan beberapa model statistik yang cukup kompleks menggunakan array raster besar. Namun tetap saja, R lambat ketika berhadapan dengan masalah memori yang besar. Paket BigMatrix memungkinkan untuk menulis dan memproses array besar dari disk tetapi overhead pengkodean tidak signifikan. Ada juga binding ke perangkat lunak GDAL dan GIS (misalnya, GRASS, SAGA) yang memungkinkan pemrosesan objek spasial terjadi di luar R dalam perangkat lunak khusus SIG, yang merupakan cara saya berinteraksi dengan perangkat lunak SIG saat ini. Ini memungkinkan saya untuk meningkatkan fungsionalitas di banyak perangkat lunak tanpa meninggalkan R.

Jadi, sekarang pemandu sorak perangkat lunak sudah tidak ada, rekomendasi saya adalah "ya untuk semua opsi di atas". Pemrograman adalah keterampilan yang, sekali dipelajari, mudah diterapkan ke bahasa lain. Ada kesamaan yang mencolok antara C ++, R, IDL dan Python. Selain dari beberapa keanehan pengkodean, yang harus dipelajari adalah fungsi yang tersedia untuk mengimplementasikan model / tugas yang diberikan. Setelah ini dilakukan, itu hanya masalah sintaks yang mengimplementasikan struktur pengkodean umum.

Terkadang ada hal-hal yang hanya berfungsi lebih baik dalam perangkat lunak atau bahasa yang berbeda. Saya kadang-kadang menulis kode dalam FORTRAN atau C ++ karena itu hanya pilihan terbaik untuk tugas yang diberikan. Ini adalah masalah kemampuan beradaptasi. Anda mungkin ingin memulai dengan Python karena, sebagai bahasa scripting, ini dapat diterapkan ke banyak tugas yang juga menyediakan ketersediaan paket untuk analisis khusus, memiliki sejumlah sumber daya online gratis dan agak mudah dipelajari.

Jeffrey Evans
sumber
Saya membatalkan ini bukan hanya karena ditulis dengan baik dan responsif tetapi juga karena saya memiliki pengalaman yang sama (termasuk perampokan kembali ke Fortran :-) dan menarik kesimpulan serupa tentang bahasa-bahasa ini dan lingkungan aplikasi.
whuber
+1 Ringkasan bagus dari alat yang tersedia di luar sana. Terima kasih telah menyebutkan EML. Dari perspektif scripting, EML agak kikuk dibandingkan dengan Python (IMOP), meskipun sangat berguna jika Erdas adalah RS GUI pilihan Anda. Sayangnya, tidak ada bahasa yang menyatukan yang membawa yang terbaik dari GIS dan RS. Saya benar-benar setuju bahwa setiap orang perlu menggunakan metode terbaik yang tersedia dan memiliki berbagai bahasa yang mereka miliki. Saya yakin, spesialis RS satu bahasa jarang ada di lapangan.
Aaron
Saya setuju bahwa memulai dengan Python kedengarannya pilihan terbaik saya, mengingat fakta bahwa itu open source dan ada banyak sumber daya online yang tersedia. Saya memang memiliki akses ke ENVI, tetapi untuk penelitian saya saat ini, saya dapat mengelola tanpa mengetahui IDL. Saya juga mempelajari statistik spasial, jadi R juga penting. @ Harun tampaknya benar - Spesialis RS harus multibahasa! Sekali lagi terima kasih atas tanggapan terinci. Ini benar-benar bantuan besar bagi seseorang yang baru memulai di lapangan.
Emily
@Emily, untuk statistik spasial di Python lihat paket PySAL ( geodacenter.asu.edu/pysal ). Ada sebuah buku karya Kenneth Bowman, "Pengantar Pemrograman dengan IDL" yang merupakan pengantar umum yang cukup bagus. Saya pikir Anda akan terkejut seberapa jauh Anda bisa dengan hanya mengerjakan buku yang satu ini. Seperti yang saya sebutkan, banyak sintaks dan struktur pengkodean yang serupa antara bahasa yang disebutkan, jadi tidak ada waktu yang terbuang. Karena Anda bekerja dengan ENVI, beberapa pengetahuan dasar IDL akan sangat membantu dalam penelitian Anda. Tidak semua atau tidak sama sekali dengan bahasa yang diberikan.
Jeffrey Evans
posting ini adalah ringkasan yang bagus - tambahan dari pengalaman saya: Mengingat tingginya harga ArcGis, Envi, Matlab dan alat-alat lainnya, saya lebih suka OpenSource, yang gratis. Bagi saya kombinasi Python / gdal dan QuantumGIS berfungsi dengan sempurna. Orang lain di tempat kerja saya menggunakan Matlab (tetapi juga sangat mahal). Di sekitar saya, R tampaknya banyak digunakan oleh ahli biologi untuk beberapa alasan.
Max
15

Dari perspektif penginderaan jauh, manfaat utama IDL adalah bahwa ia memperluas kemampuan ENVI mirip dengan bagaimana paket situs arcpy Python memperluas fungsi ArcGIS. Jika Anda tidak akan memiliki akses ke platform ENVI, coba pelajari bahasa pemrograman lain. Selain itu IDL adalah produk komersial sedangkan Python adalah open-source dan memiliki basis dukungan yang sangat besar.

Dari perspektif praktis, Python , R (open-source) dan MATLAB (komersial) adalah bahasa yang paling penting untuk pekerjaan berbasis penginderaan jarak jauh saya sehari-hari. Saya menggunakan MATLAB untuk sebagian besar pemrosesan gambar digital, Python untuk lebih banyak tugas terkait GIS dan R untuk grafis / keperluan analitis.

Akhirnya, jika saya harus memfokuskan semua upaya saya pada satu bahasa, saya akan memilih untuk belajar Python terutama karena fungsi Python jauh lebih cocok untuk pemrosesan terkait GIS selain fungsionalitas berbasis RS. Dengan kata lain, Python adalah jack-of-all-trade sedangkan IDL tidak. Selain itu, NASA menggunakan Python !

Harun
sumber
1
Ada banyak modul di dalam python, seperti pyh5 dan numpy / scipy. Ada juga perpustakaan yang lebih besar seperti OSSIM , khusus untuk pemrosesan gambar.
Roland
1
+1 pada python. Ini adalah bahasa tujuan umum, dan jika Anda perlu menggunakan alat yang mungkin 'keluar dari kotak' dengan skrip GIS, python dapat melakukannya.
Terima kasih teman-teman, sepertinya saya akan mulai bekerja dengan Python dan berkembang ke bahasa lain begitu saya memilikinya. Terima kasih banyak atas bantuanmu.
Emily
1
Jangan lupa tentang Rasterio: github.com/mapbox/rasterio perpustakaan baru untuk raster untuk Python.
Alex Leith
2

Saya sangat menyarankan belajar teori ilmu komputer dasar daripada berfokus pada satu bahasa prosedural. Memperoleh dasar dalam teori CS akan memungkinkan Anda untuk menggunakan bahasa pemrograman secara bergantian. Setiap hari saya menggunakan dua hingga tiga bahasa untuk menulis kode (Sebagian besar Matlab, R, Python), dan pada bulan lalu saya juga menulis kode dalam VB, BATCH, dan EASE (PCI Focus).

Ini tidak hanya penting untuk dapat dengan mudah mempelajari berbagai bahasa, tetapi untuk menghindari membuat kesalahan mendasar.

Beberapa topik yang disarankan adalah:

  • tipe data, penggunaan memori
  • kondisi
  • pengulangan
  • pencocokan pola
  • paradigma prosedural, modularitas

Juga, jika Anda mengalami masalah dalam menulis kode, mundurlah dan tulis pseudocode. Pada dasarnya, tulis selangkah demi selangkah logika di balik kode Anda dan apa yang ingin Anda capai.

Jika Anda seorang siswa, saya sarankan mengambil kursus comp sci tahun pertama dan kedua.

Bersulang.

Jean B.
sumber
2

Saya pikir ini bernilai jawaban yang terpisah: Halaman yang sangat bagus untuk belajar tentang cara menggunakan Python untuk Penginderaan Jauh adalah yang ini, catatan kuliah menjadi tutorial yang bagus: http://www.gis.usu.edu/ ~ chrisg/python / 2009 /

Bagi saya, kombinasi Python dan QuantumGIS memecahkan semua kebutuhan Penginderaan Jauh dan GIS saya.

Maks
sumber
0

ini sangat tergantung pada paket yang ingin Anda gunakan dalam penginderaan jauh (analisis gambar). ArcGIS (ESRI) bukan paket penginderaan jauh. Jika Anda ingin menggunakan paket open source saya setuju bahwa Python dan R adalah bahasa yang bagus. Saya juga akan mempertimbangkan C ++ dan C, sehingga Anda dapat menyelam lebih dalam ke beberapa perpustakaan (yaitu: GDAL). Jika Anda ingin tetap dengan paket komersial dari rak (COTS), maka Anda akan ingin melihat lebih dalam bahasa C (C, C ++, dan C #). Selamat coding.

Ryan Garnett
sumber