Estoy empezando los estudios que se espera llevar a una larga carrera como especialista en teledetección. Actualmente estoy trabajando con ArcGIS para algunas de las aplicaciones y AMBIENTE de aprendizaje para los demás. Me he dado cuenta de que es imperativo que tengo que aprender un lenguaje de programación, y estoy pegado enfrenta a una elección entre el IDL y Python. Me encantaría saber que lenguaje de programación de la comunidad recomienda para la detección remota de la superficie de la tierra de los procesos.
Respuestas
¿Demasiados anuncios?IDL es un fantástico independiente del lenguaje de programación (no es necesario ENVI). Yo particularidad gusta por muy rápido procesamiento de la matriz en las matrices grandes. @Aaron hace IDL sonido mucho menos flexible, a continuación, lo que realmente es. La mayoría de IDL desarrollo salió de la Física y la Astronomía comunidades. Hay un fuerte apoyo para la matemática y la estadística de programación. Si viene con el MEDIO, tiene todas las llamadas a la biblioteca (funciones) disponible en el MEDIO, incluyendo el apoyo para el vector espacial de los objetos. También hay un gran número de funciones y modelos desarrollados por la comunidad de usuarios. Una de las ventajas para el aprendizaje de IDL es que va a hacer usted negociables en la "analítica" de la teledetección tiendas.
También, no hay que olvidar que ERDAS tiene un lenguaje de secuencias de comandos (EML) que es bastante bueno y fácil de aprender. EML es la columna vertebral de la gráfica modeler y gmd se empaquetan EML secuencias de comandos que se siente en el gráfico modelador de la interfaz. La ventaja de utilizar el EML directamente es que usted puede utilizar para/bucles while y tener acceso a más ERDAS de la funcionalidad de un lenguaje de secuencias de comandos.
MATLAB también es muy bueno para el procesamiento de la matriz y no son de código abierto versiones (por ejemplo, la Octava) que tienen exactamente la misma sintaxis con similares puntos de referencia. Este es un método muy flexible idioma con un considerable poder. Es uno de los preferidos del lenguaje de las matemáticas aplicadas y la ingeniería.
El Python alternativas NumPy y SciPy son flexibles pero no tan optimizado como el IDL y MATLAB. Como tal, usted necesita para lidiar con espacio de direccionamiento y la velocidad cuando se trabaja con matrices grandes. Una gran ventaja de Python son las bibliotecas adicionales para realizar una variedad de tareas de análisis. Hay paquetes para la teledetección, no paramétrica, estadísticas, enlaces espacial de las clases (por ejemplo, GDAL, LibLAS), por nombrar sólo algunas de las funciones adicionales disponibles a través de los paquetes.
Esto nos lleva a R. soy principalmente un espacio estadístico es así, esta es mi lenguaje cotidiano. El número de paquetes disponibles es asombroso que, a su vez, proporciona acceso a las tecnologías de punta de la cruz-la disciplina metodologías estadísticas. Sin embargo, tengo que decir que es muy engorroso cuando se trabaja con grandes problemas con los datos. La distribución espacial de las clases están mejorando mucho, y debido a la trama paquete que proporciona la capacidad de retener grandes cantidades de datos de la memoria ahora soy capaz de implementar algunos bastante complejos modelos estadísticos utilizando gran trama de matrices. Pero aún así, R es lento cuando se trabaja con grandes problemas de la memoria. El BigMatrix paquete permite la escritura y el procesamiento de grandes matrices de disco, pero la codificación de sobrecarga no es insignificante también Hay enlaces a GDAL y software SIG (por ejemplo, la HIERBA, de la SAGA) que permiten a los objetos espaciales de procesamiento de ocurrir fuera de la R en un SIG de software específico, que es la forma en que interactúan con el software SIG en estos días. Esto me permite aprovechar la funcionalidad a través de múltiples software sin salir de R.
Así que, ahora que el software de porristas está fuera del camino, mi recomendación es "sí a todas las opciones de arriba". La programación es una habilidad que, una vez aprendido, se aplica fácilmente a otros idiomas. Hay sorprendentes similitudes entre C++, R, IDL y Python. Aparte de algunos de codificación idiocentricities, lo que uno debe aprender son las funciones para implementar un modelo dado/tarea. Una vez hecho esto, solo es una cuestión de sintaxis que implementa común de codificación de estructuras.
A veces hay cosas que funcionan mejor en diferentes tipos de software o lenguaje. De vez en cuando escribir código en FORTRAN o C++ porque es simplemente la mejor opción para una determinada tarea. Es una cuestión de capacidad de adaptación. Usted puede empezar con Python porque, como un lenguaje de secuencias de comandos, puede aplicarse a numerosas tareas también proporciona la disponibilidad de los paquetes para análisis especializados, tiene una serie de recursos gratuitos en línea y es algo fácil de aprender.
A partir de una detección remota perspectiva, el principal beneficio de IDL es que se amplía la capacidad de la comisión ENVI de manera similar a la de Python arcpy paquete de sitio extiende la funcionalidad de ArcGIS. Si usted no tiene acceso a LA plataforma, consideran que el aprendizaje de un lenguaje de programación diferente. Además IDL es un producto comercial, mientras que Python es de código abierto y tiene una enorme base de apoyo.
Desde una perspectiva práctica, Python, R (open-source) y MATLAB (comercial) son los idiomas más importantes para mi día-a-día de la teledetección. Puedo usar MATLAB para gran parte de la tratamiento de la imagen digital, Python para obtener más SIG relacionados con las tareas y R para gráficos/fines analíticos.
Por último, si me tenía que centrar todos mis esfuerzos en un idioma, yo elegiría para aprender Python, principalmente porque Python funcionalidad es mucho más adecuado para el SIG, relacionado con el procesamiento en adición a RS basado en la funcionalidad. En otras palabras, Python es un gato-de-todo-negocia mientras que el IDL no es. Además, la NASA utiliza Python!
Yo sugiero conocimientos básicos de ciencias de la computación teoría en lugar de centrarse en un lenguaje procedimental. La adquisición de una base en el CS de la teoría de permitir el uso de lenguajes de programación de forma intercambiable. En un día-a-día yo uso dos o tres idiomas a escribir el código (en su Mayoría de Matlab, R, Python), y en el último mes también he escrito el código en VB, por LOTES, y la FACILIDAD (PCI).
Esto es importante no sólo para ser capaz de aprender varios idiomas, pero para evitar cometer errores básicos.
Un par recomendado temas son:
- tipos de datos, uso de memoria
- condiciones
- iteración
- la coincidencia de patrón
- procedimiento de paradigma, la modularidad
También, si usted está teniendo problemas en la escritura del código, dar un paso atrás y escribir pseudocódigo. Básicamente, escribir paso a paso la lógica detrás de su código y lo que usted quiere lograr.
Si eres un estudiante me recomienda tomar de primero y segundo años comp sci cursos.
Saludos.
Creo que esto es digno de un separado respuesta: absolutamente Una gran página para aprender sobre cómo usar Python para la Teledetección es este uno, apuntes de ser un gran tutorial: http://www.gis.usu.edu/~chrisg/python/2009/
Para mí, una combinación de Python y de QuantumGIS resuelve todos mis Teledetección y SIG.
realmente depende de los paquetes de esperanza para el uso de la teledetección (análisis de imagen). ArcGIS (ESRI) no es un teledetección paquete. Si desea utilizar los paquetes de código abierto yo estaría de acuerdo en que Python y R son los grandes idiomas. También me gustaría considerar la posibilidad de C++ y C, por lo que se puede profundizar más en algunas de las bibliotecas (es decir: GDAL). Si quieres seguir con commercial off the shelf (COTS), paquetes, entonces usted tendrá que mirar más en el C lenguajes (C, C++ y C#). Feliz codificación.