IDL est un fantastique langage de programmation autonome (vous n'avez pas besoin d'ENVI). Je l'aime particulièrement pour un traitement matriciel très rapide sur de grands tableaux. @Aaron rend le son IDL beaucoup moins flexible qu'il ne l'est vraiment. La majorité du développement IDL provient des communautés de physique et d'astronomie. Il existe un support robuste pour la programmation mathématique et statistique. Si fourni avec ENVI, vous disposez de tous les appels de bibliothèque (fonctions) disponibles dans ENVI, y compris la prise en charge des objets vectoriels spatiaux. Il existe également un grand nombre de fonctions et de modèles développés par la communauté des utilisateurs. L'un des avantages de l'apprentissage de l'IDL est qu'il vous rendra commercialisable dans les magasins de télédétection "analytiques".
N'oubliez pas non plus qu'ERDAS possède un langage de script (EML) assez bon et facile à apprendre. EML est l'épine dorsale du modeleur graphique et les gmd ne sont que des scripts EML packagés qui se trouvent sous l'interface du modeleur graphique. L'avantage d'utiliser directement EML est que vous pouvez utiliser des boucles for / while et avoir accès à davantage de fonctionnalités ERDAS dans un langage de script.
MATLAB est également très bon pour le traitement matriciel et il existe des versions open source (par exemple, Octave) qui ont exactement la même syntaxe avec des benchmarks similaires. Il s'agit d'un langage très flexible avec une puissance considérable. C'est l'une des langues préférées pour les mathématiques appliquées et l'ingénierie.
Les alternatives Python NumPy et SciPy sont flexibles mais pas aussi optimisées que IDL et MATLAB. En tant que tel, vous devez gérer l'espace et la vitesse d'adressage lorsque vous travaillez avec de grandes baies. Un énorme avantage de Python sont les bibliothèques supplémentaires pour effectuer une variété de tâches analytiques. Il existe des packages pour la télédétection , des statistiques non paramétriques , des liaisons aux classes spatiales (par exemple GDAL, LibLAS) pour ne nommer que quelques-unes des fonctionnalités supplémentaires disponibles via les packages.
Cela nous amène à R. Je suis principalement un statisticien spatial donc, c'est mon langage de tous les jours. Le nombre de progiciels disponibles est stupéfiant, ce qui, à son tour, donne accès à des méthodologies statistiques interdisciplinaires de pointe. Cependant, je dois dire que c'est très lourd lorsque l'on traite de gros problèmes de données. Les classes spatiales s'améliorent beaucoup et grâce au package raster offrant la possibilité de conserver de grandes données hors de la mémoire, je suis maintenant en mesure de mettre en œuvre des modèles statistiques assez complexes en utilisant de grands tableaux raster. Mais encore, R est lent lorsqu'il s'agit de gros problèmes de mémoire. Le package BigMatrix permet d'écrire et de traiter d'énormes tableaux à partir du disque, mais la surcharge de codage n'est pas négligeable. Il existe également des liaisons avec les logiciels GDAL et GIS (par exemple, GRASS, SAGA) qui permettent au traitement des objets spatiaux de se produire en dehors de R dans un logiciel spécifique au SIG, c'est ainsi que j'interagis avec le logiciel SIG de nos jours. Cela me permet de tirer parti des fonctionnalités de plusieurs logiciels sans quitter R.
Donc, maintenant que le logiciel de cheerleading est à l'écart, ma recommandation est "oui à toutes les options ci-dessus". La programmation est une compétence qui, une fois apprise, est facilement applicable à d'autres langues. Il existe des similitudes frappantes entre C ++, R, IDL et Python. Mis à part quelques idiocentricités de codage, ce qu'il faut apprendre, ce sont les fonctions disponibles pour implémenter un modèle / tâche donné. Une fois cela fait, ce n'est qu'une question de syntaxe qui implémente des structures de codage communes.
Parfois, il y a des choses qui fonctionnent mieux dans un logiciel ou un langage différent. J'écris de temps en temps du code en FORTRAN ou C ++ parce que c'est juste le meilleur choix pour une tâche donnée. C'est une question d'adaptabilité. Vous voudrez peut-être commencer par Python car, en tant que langage de script, il peut être appliqué à de nombreuses tâches, il fournit également la disponibilité de packages pour une analyse spécialisée, dispose d'un certain nombre de ressources en ligne gratuites et est assez facile à apprendre.