Linguaggio di programmazione raccomandato per il telerilevamento?


14

Sto iniziando studi che speriamo possano portare a una lunga carriera come specialista del telerilevamento. Attualmente sto lavorando con ArcGIS per alcune applicazioni e sto imparando ENVI per altre. Mi sono reso conto che è indispensabile imparare un linguaggio di programmazione e sono bloccato di fronte a una scelta tra IDL e Python. Mi piacerebbe sapere quale linguaggio di programmazione la comunità raccomanda per il telerilevamento dei processi di superficie terrestre.

Risposte:


28

IDL è un fantastico linguaggio di programmazione autonomo (non è necessario ENVI). Mi piace la particolarità per l'elaborazione della matrice molto veloce su array di grandi dimensioni. @Aaron rende il suono IDL molto meno flessibile di quanto non lo sia in realtà. La maggior parte dello sviluppo di IDL è venuto dalle comunità di fisica e astronomia. Esiste un solido supporto per la programmazione matematica e statistica. Se in bundle con ENVI, tutte le chiamate (funzioni) della libreria sono disponibili in ENVI incluso il supporto per oggetti vettoriali spaziali. Esiste anche un gran numero di funzioni e modelli sviluppati dalla comunità di utenti. Uno dei vantaggi dell'apprendimento dell'IDL è che ti renderà commercializzabile nei negozi di rilevamento remoto "analitici".

Inoltre, non dimenticare che ERDAS ha un linguaggio di scripting (EML) che è abbastanza buono e facile da imparare. EML è la spina dorsale del modellatore grafico e i GMD sono solo script EML impacchettati che si trovano sotto l'interfaccia del modellatore grafico. Il vantaggio dell'utilizzo diretto di EML è che puoi utilizzare per / mentre loop e avere accesso a più funzionalità ERDAS in un linguaggio di scripting.

MATLAB è anche ottimo per l'elaborazione della matrice e ci sono versioni open source (ad esempio Octave) che hanno esattamente la stessa sintassi con benchmark simili. Questo è un linguaggio altamente flessibile con notevole potere. È una delle lingue preferite per la matematica applicata e l'ingegneria.

Le alternative Python NumPy e SciPy sono flessibili ma non ottimizzate come IDL e MATLAB. Pertanto, è necessario occuparsi dello spazio e della velocità quando si lavora con array di grandi dimensioni. Un enorme vantaggio di Python sono le librerie aggiuntive per eseguire una varietà di attività analitiche. Esistono pacchetti per il telerilevamento , statistiche non parametriche , collegamenti a classi spaziali (ad esempio GDAL, LibLAS) per nominare solo alcune delle funzionalità aggiunte disponibili attraverso i pacchetti.

Questo ci porta a R. Sono principalmente uno statistico spaziale, quindi questo è il mio linguaggio quotidiano. Il numero di pacchetti disponibili è sbalorditivo e, a sua volta, fornisce accesso a metodologie statistiche interdisciplinari all'avanguardia. Tuttavia, devo dire che è molto ingombrante quando si affrontano problemi di dati di grandi dimensioni. Le classi spaziali stanno migliorando molto e grazie al pacchetto raster che fornisce la capacità di contenere grandi quantità di dati dalla memoria, ora sono in grado di implementare alcuni modelli statistici abbastanza complessi utilizzando grandi array raster. Tuttavia, R è lento quando si affrontano problemi di memoria di grandi dimensioni. Il pacchetto BigMatrix consente di scrivere ed elaborare enormi array dal disco, ma il sovraccarico della codifica non è insignificante. Esistono anche collegamenti al software GDAL e GIS (ad es. GRASS, SAGA) che consentono l'elaborazione di oggetti spaziali al di fuori di R in un software specifico GIS, che è il modo in cui interagisco con il software GIS in questi giorni. Questo mi permette di sfruttare la funzionalità su più software senza lasciare R.

Quindi, ora che la cheerleading del software è fuori mano, la mia raccomandazione è "sì a tutte le opzioni di cui sopra". La programmazione è un'abilità che, una volta appresa, è facilmente applicabile ad altre lingue. Ci sono sorprendenti somiglianze tra C ++, R, IDL e Python. A parte alcune idiocentricità di codifica, ciò che si deve imparare sono le funzioni disponibili per implementare un dato modello / compito. Una volta fatto ciò, è solo una questione di sintassi che implementa strutture di codifica comuni.

A volte ci sono cose che funzionano meglio in un software o una lingua diversi. Ogni tanto scrivo codice in FORTRAN o C ++ perché è la scelta migliore per un determinato compito. È una questione di adattabilità. Potresti voler iniziare con Python perché, come linguaggio di scripting, può essere applicato a numerose attività e fornisce anche la disponibilità di pacchetti per analisi specializzate, ha un numero di risorse online gratuite ed è in qualche modo facile da imparare.


Ho votato a favore non solo perché è ben scritto e reattivo, ma anche perché ho avuto esperienze simili (inclusa la occasionale incursione in Fortran :-) e ho tratto conclusioni simili su questi linguaggi e ambienti applicativi.
whuber

+1 Un buon riassunto degli strumenti disponibili là fuori. Grazie per aver menzionato EML. Dal punto di vista dello scripting, EML è un po 'goffo rispetto a Python (IMOP), anche se molto utile se Erdas è la tua GUI RS preferita. Sfortunatamente, non esiste un linguaggio unificato che porta il meglio da GIS e RS. Sono assolutamente d'accordo sul fatto che ogni persona debba utilizzare il miglior metodo disponibile e avere a disposizione una varietà di lingue. Credo che uno specialista della RS in una sola lingua sia raro nel settore.
Aaron

Sono d'accordo che iniziare con Python suona come la mia scommessa migliore, dato che è open source e che ci sono molte risorse online disponibili. Ho accesso a ENVI, ma per la mia ricerca attuale, posso gestirlo senza conoscere IDL. Sto anche studiando le statistiche spaziali, quindi anche R sarà importante. @Aaron sembra aver ragione - gli specialisti di RS devono essere multilingue! Grazie ancora per la risposta dettagliata. Questo è davvero di grande aiuto per qualcuno che ha appena iniziato sul campo.
Emily,

@Emily, per le statistiche spaziali in Python dai un'occhiata al pacchetto PySAL ( geodacenter.asu.edu/pysal ). C'è un libro di Kenneth Bowman, "Un'introduzione alla programmazione con IDL" che è una buona introduzione generale. Penso che rimarrai sorpreso da quanto potresti arrivare semplicemente lavorando su questo unico libro. Come ho già detto, gran parte della sintassi e della struttura di codifica sono simili tra le lingue menzionate, senza perdere tempo. Dal momento che stai lavorando con ENVI alcune conoscenze di base di IDL sarebbero utili nella tua ricerca. Non è tutto o niente con una determinata lingua.
Jeffrey Evans,

questo post è un buon riassunto - un'aggiunta della mia esperienza: considerando l'alto prezzo di ArcGis, Envi, Matlab e altri strumenti, preferisco OpenSource, che è gratuito. Per me una combinazione di Python / gdal e QuantumGIS funziona perfettamente. Altri sul mio posto di lavoro usano Matlab (ma anche molto costoso). Nei miei dintorni, R sembra essere usato principalmente dai biologi per qualche motivo.
Max

15

Da una prospettiva di telerilevamento, il vantaggio principale di IDL è che estende la capacità di ENVI in modo simile a come il pacchetto sito arcpy Python estende la funzionalità di ArcGIS. Se non si avrà accesso alla piattaforma ENVI, prendere in considerazione l'apprendimento di un linguaggio di programmazione diverso. Inoltre, IDL è un prodotto commerciale, mentre Python è open-source e ha una base di supporto enorme.

Da una prospettiva pratica, Python , R (open-source) e MATLAB (commerciale) sono le lingue più importanti per il mio lavoro quotidiano basato sul telerilevamento. Uso MATLAB per gran parte dell'elaborazione delle immagini digitali, Python per altre attività relative al GIS e R per scopi grafici / analitici.

Infine, se dovessi concentrare tutti i miei sforzi su una lingua, sceglierei di imparare Python principalmente perché la funzionalità Python è molto più adatta all'elaborazione relativa a GIS oltre alla funzionalità basata su RS. In altre parole, Python è un tuttofare mentre IDL no. Inoltre, la NASA utilizza Python !


1
Ci sono molti moduli in Python, come pyh5 e numpy / scipy. Esistono anche librerie più grandi come OSSIM , in particolare per l'elaborazione delle immagini.
Roland

1
+1 su Python. È un linguaggio di uso generale e se è necessario utilizzare strumenti che potrebbero essere "pronti all'uso" con gli script GIS, Python può farlo.

Grazie ragazzi, sembra che inizierò a lavorare su Python e ad espandermi in altre lingue una volta che avrò scaricato quello. Molte grazie per il vostro aiuto.
Emily,

1
Non dimenticare di Rasterio: github.com/mapbox/rasterio una nuova libreria per raster per Python.
Alex Leith,

2

Consiglio vivamente di apprendere la teoria dell'informatica di base invece di concentrarsi su un linguaggio procedurale. L'acquisizione di una base nella teoria CS consentirebbe di utilizzare i linguaggi di programmazione in modo intercambiabile. Ogni giorno uso due o tre lingue per scrivere il codice (principalmente Matlab, R, Python), e nell'ultimo mese ho anche scritto codice in VB, BATCH e EASE (PCI Focus).

Questo non è solo importante per poter imparare facilmente più lingue, ma per evitare di commettere errori di base.

Alcuni argomenti consigliati sono:

  • tipi di dati, utilizzo della memoria
  • condizioni
  • iterazione
  • corrispondenza del modello
  • paradigma procedurale, modularità

Inoltre, se riscontri problemi con la scrittura del codice, fai un passo indietro e scrivi lo pseudocodice. Fondamentalmente scrivi passo dopo passo la logica dietro il tuo codice e ciò che vuoi che compia.

Se sei uno studente, ti consiglio di frequentare corsi di scienze del primo e secondo anno.

Saluti.


2

Penso che valga una risposta separata: una pagina assolutamente fantastica per imparare a usare Python per il telerilevamento è questa, le note delle lezioni sono un ottimo tutorial: http://www.gis.usu.edu/~chrisg/python / 2009 /

Per me, una combinazione di Python e QuantumGIS risolve tutte le mie esigenze di telerilevamento e GIS.


0

dipende davvero dai pacchetti che speri di utilizzare nel telerilevamento (analisi delle immagini). ArcGIS (ESRI) non è un pacchetto di telerilevamento. Se si desidera utilizzare pacchetti open source, concordo sul fatto che Python e R sono ottimi linguaggi. Vorrei anche prendere in considerazione C ++ e C, quindi puoi approfondire alcune delle librerie (es. GDAL). Se si desidera attenersi ai pacchetti commerciali standardizzati (COTS), sarà necessario esaminare meglio i linguaggi C (C, C ++ e C #). Buona codifica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.