IDL ist eine fantastische eigenständige Programmiersprache (Sie benötigen kein ENVI). Ich mag es besonders für die sehr schnelle Matrixverarbeitung auf großen Arrays. Mit @Aaron klingt IDL viel weniger flexibel als es wirklich ist. Der Großteil der IDL-Entwicklung stammte aus den Bereichen Physik und Astronomie. Es gibt eine solide Unterstützung für die mathematische und statistische Programmierung. In Kombination mit ENVI stehen Ihnen alle in ENVI verfügbaren Bibliotheksaufrufe (Funktionen) zur Verfügung, einschließlich der Unterstützung für räumliche Vektorobjekte. Es gibt auch eine große Anzahl von Funktionen und Modellen, die von der Benutzergemeinschaft entwickelt wurden. Ein Vorteil beim Erlernen von IDL ist, dass Sie damit in "analytischen" Fernerkundungsgeschäften marktfähig werden.
Vergessen Sie auch nicht, dass ERDAS eine Skriptsprache (EML) hat, die recht gut und einfach zu erlernen ist. EML ist das Rückgrat des Grafik-Modellierers und GMDs sind einfach verpackte EML-Skripte, die sich unter der Oberfläche des Grafik-Modellierers befinden. Der Vorteil der direkten Verwendung von EML besteht darin, dass Sie for / while-Schleifen verwenden und Zugriff auf weitere ERDAS-Funktionen in einer Skriptsprache haben können.
MATLAB eignet sich auch sehr gut für die Matrixverarbeitung, und es gibt Open-Source-Versionen (z. B. Octave), die dieselbe Syntax mit ähnlichen Benchmarks aufweisen. Dies ist eine hochflexible Sprache mit beträchtlicher Kraft. Es ist eine der bevorzugten Sprachen für angewandte Mathematik und Ingenieurwissenschaften.
Die Python-Alternativen NumPy und SciPy sind flexibel, aber nicht so optimiert wie IDL und MATLAB. Aus diesem Grund müssen Sie sich mit der Adressierung von Speicherplatz und Geschwindigkeit befassen, wenn Sie mit großen Arrays arbeiten. Ein großer Vorteil von Python sind die zusätzlichen Bibliotheken zur Durchführung einer Vielzahl von analytischen Aufgaben. Es gibt Pakete für Fernerkundung , nichtparametrische Statistiken und Bindungen an räumliche Klassen (z. B. GDAL, LibLAS), um nur einige der zusätzlichen Funktionen zu nennen, die durch Pakete verfügbar sind.
Das bringt uns zu R. Ich bin in erster Linie ein Raumstatistiker, das ist also meine Alltagssprache. Die Anzahl der verfügbaren Pakete ist unübersehbar, was wiederum den Zugang zu den neuesten disziplinübergreifenden statistischen Methoden ermöglicht. Allerdings muss ich sagen, dass es bei großen Datenproblemen sehr umständlich ist. Die räumlichen Klassen werden immer besser und da das Rasterpaket die Möglichkeit bietet, große Datenmengen außerhalb des Speichers zu speichern, kann ich jetzt einige recht komplexe statistische Modelle mit großen Raster-Arrays implementieren. Trotzdem ist R langsam, wenn es um Probleme mit großem Speicher geht. Das BigMatrix-Paket ermöglicht das Schreiben und Verarbeiten großer Arrays von der Festplatte, der Codierungsaufwand ist jedoch nicht unerheblich. Es gibt auch Bindungen zu GDAL- und GIS-Software (z. B. GRASS, SAGA), mit denen die räumliche Objektverarbeitung außerhalb von R in einer GIS-spezifischen Software erfolgen kann. So interagiere ich heutzutage mit GIS-Software. Auf diese Weise kann ich die Funktionalität für mehrere Softwareprogramme nutzen, ohne R zu verlassen.
Nachdem das Software-Cheerleading nun aus dem Weg geräumt ist, lautet meine Empfehlung "Ja zu allen oben genannten Optionen". Das Programmieren ist eine Fähigkeit, die, sobald sie gelernt ist, leicht auf andere Sprachen angewendet werden kann. Es gibt bemerkenswerte Ähnlichkeiten zwischen C ++, R, IDL und Python. Abgesehen von einigen Kodierungsidiozentrien müssen die verfügbaren Funktionen zur Implementierung eines bestimmten Modells / einer bestimmten Aufgabe erlernt werden. Sobald dies erledigt ist, ist es nur eine Frage der Syntax, die allgemeine Codierungsstrukturen implementiert.
Manchmal gibt es Dinge, die in einer anderen Software oder Sprache besser funktionieren. Ich schreibe gelegentlich Code in FORTRAN oder C ++, weil es für eine bestimmte Aufgabe einfach die beste Wahl ist. Es geht um Anpassungsfähigkeit. Möglicherweise möchten Sie mit Python beginnen, da es als Skriptsprache auf zahlreiche Aufgaben angewendet werden kann, außerdem die Verfügbarkeit von Paketen für spezielle Analysen bietet, über eine Reihe kostenloser Online-Ressourcen verfügt und relativ einfach zu erlernen ist.
Unter dem Gesichtspunkt der Fernerkundung besteht der Hauptvorteil von IDL darin, dass es die Funktionen von ENVI erweitert, ähnlich wie das Site-Paket Python arcpy die Funktionen von ArcGIS erweitert. Wenn Sie keinen Zugriff auf die ENVI-Plattform haben, sollten Sie eine andere Programmiersprache lernen. Zusätzlich ist IDL ein kommerzielles Produkt, wohingegen Python Open Source ist und eine riesige Supportbasis hat.
Aus praktischer Sicht sind Python , R (Open Source) und MATLAB (kommerziell) die wichtigsten Sprachen für meine tägliche Arbeit mit Fernerkundung. Ich benutze MATLAB für einen Großteil der digitalen Bildverarbeitung, Python für mehr GIS-bezogene Aufgaben und R für Grafik- / Analysezwecke.
Wenn ich mich auf eine Sprache konzentrieren müsste, würde ich Python hauptsächlich deshalb lernen, weil die Python-Funktionalität neben der RS-basierten Funktionalität viel besser für die GIS-bezogene Verarbeitung geeignet ist. Mit anderen Worten, Python ist ein Alleskönner, IDL nicht. Außerdem benutzt die NASA Python !
quelle
Ich empfehle dringend, grundlegende Informatik-Theorie zu lernen, anstatt sich auf eine prozedurale Sprache zu konzentrieren. Wenn Sie eine Grundlage in CS-Theorie erwerben, können Sie Programmiersprachen austauschbar verwenden. Täglich verwende ich zwei bis drei Sprachen zum Schreiben von Code (hauptsächlich Matlab, R, Python), und im letzten Monat habe ich auch Code in VB, BATCH und EASE (PCI Focus) geschrieben.
Dies ist nicht nur wichtig, um problemlos mehrere Sprachen zu lernen, sondern auch, um grundlegende Fehler zu vermeiden.
Einige empfohlene Themen sind:
Wenn Sie Probleme beim Schreiben von Code haben, gehen Sie einen Schritt zurück und schreiben Sie Pseudocode. Schreiben Sie im Grunde Schritt für Schritt die Logik hinter Ihrem Code und was Sie damit erreichen möchten.
Wenn Sie Student sind, empfehle ich die Teilnahme an Comp-Sci-Kursen im ersten und zweiten Jahr.
Prost.
quelle
Ich denke , das wert ist , eine separate Antwort: Eine absolut tolle Seite für das Lernen, wie man Python verwenden , für Fernerkundung ist dieser, Skriptum ein großes Tutorial zu sein: http://www.gis.usu.edu/~chrisg/python / 2009 /
Für mich erfüllt eine Kombination aus Python und QuantumGIS alle meine Anforderungen an Fernerkundung und GIS.
quelle
Es hängt wirklich von den Paketen ab, die Sie für die Fernerkundung (Bildanalyse) verwenden möchten. ArcGIS (ESRI) ist kein Fernerkundungspaket. Wenn Sie Open-Source-Pakete verwenden möchten, würde ich zustimmen, dass Python und R großartige Sprachen sind. Ich würde auch C ++ und C in Betracht ziehen, so dass Sie tiefer in einige der Bibliotheken eintauchen können (dh: GDAL). Wenn Sie bei COTS-Paketen (Commercial Off-the-Shelf) bleiben möchten, sollten Sie sich eingehender mit den C-Sprachen (C, C ++ und C #) befassen. Fröhliches Codieren.
quelle