Рекомендована мова програмування для дистанційного зондування?


14

Я починаю дослідження, які, сподіваюся, призведуть до тривалої кар'єри як фахівця дистанційного зондування. Зараз я працюю з ArcGIS для одних програм та вивчаю ENVI для інших. Я зрозумів, що обов'язково я вивчаю мову програмування, і я стикаюся перед вибором між IDL та Python. Я хотів би почути, яку мову програмування рекомендує громада для дистанційного зондування процесів наземної поверхні.

Відповіді:


28

IDL - це фантастична окрема мова програмування (ENVI не потрібен). Мені це подобається за дуже швидку обробку матриць на великих масивах. @Aaron робить звук IDL набагато менш гнучким, ніж він є насправді. Більшість розробок ІДЛ припадає на громаду фізики та астрономії. Існує міцна підтримка математичного та статистичного програмування. Якщо в комплекті з ENVI, у вас є всі бібліотечні виклики (функції), доступні в ENVI, включаючи підтримку просторових векторних об'єктів. Також існує велика кількість функцій та моделей, розроблених спільнотою користувачів. Однією з переваг навчання IDL є те, що це зробить вас проданими в "аналітичних" магазинах дистанційного зондування.

Крім того, не забувайте, що ERDAS має мову сценаріїв (EML), яку досить добре і легко вивчити. EML є основою графічного моделера, а gmd - це лише упаковані сценарії EML, які знаходяться під інтерфейсом графічного моделера. Перевага використання EML безпосередньо полягає в тому, що ви можете використовувати для / while циклів і мати доступ до більшої функції ERDAS на мові сценаріїв.

MATLAB також дуже хороший для матричної обробки, і є версії з відкритим кодом (наприклад, Octave), які мають абсолютно однаковий синтаксис з подібними орієнтирами. Це надзвичайно гнучка мова, яка має значну потужність. Це одна з бажаних мов для прикладної математики та техніки.

Альтернативи Python NumPy та SciPy гнучкі, але не такі оптимізовані, як IDL та MATLAB. Таким чином, вам потрібно мати справу з простором та швидкістю при роботі з великими масивами. Однією з величезних переваг Python є додаткові бібліотеки для виконання різноманітних аналітичних завдань. Існують пакети для дистанційного зондування , непараметричної статистики , прив’язки до просторових класів (наприклад, GDAL, LibLAS), щоб назвати лише деякі додаткові функції, доступні через пакети.

Це приводить нас до Р. Я в першу чергу просторовий статистик, тому це моя щоденна мова. Кількість доступних пакетів є приголомшливою, що, в свою чергу, забезпечує доступ до передових міждисциплінарних статистичних методологій. Однак я мушу сказати, що це дуже громіздко при роботі з великими проблемами даних. Просторові класи стають набагато кращими, і завдяки растровому пакету, що забезпечує можливість зберігання великих даних у пам'яті, я зараз в змозі реалізувати досить складні статистичні моделі, що використовують великі растрові масиви. Але все-таки R повільно працює при великих проблемах з пам'яттю. Пакет BigMatrix дозволяє записувати та обробляти величезні масиви з диска, але накладні витрати кодування несуттєві. Також існують прив'язки до програмного забезпечення GDAL та GIS (наприклад, GRASS, SAGA), які дозволяють просторовій обробці об’єктів здійснюватися поза межами R в специфічному програмному забезпеченні для ГІС, саме таким чином я сьогодні взаємодію з програмним забезпеченням GIS. Це дозволяє мені використовувати функціональність для декількох програм, не залишаючи Р.

Отже, тепер, коли програмне забезпечення вболівальників не виходить, моя рекомендація - «так, для всіх перерахованих вище варіантів». Програмування - це навик, який, як тільки засвоївшись, легко застосовується до інших мов. Існує разюча подібність між C ++, R, IDL та Python. Крім деяких ідіоцентричних характеристик кодування, те, що потрібно вивчити, - це доступні функції для реалізації заданої моделі / завдання. Після цього це просто питання синтаксису, який реалізує загальні структури кодування.

Іноді є речі, які просто краще працюють в іншому програмному забезпеченні чи мові. Я інколи пишу код у FORTRAN або C ++, тому що це просто найкращий вибір для даного завдання. Це питання адаптованості. Ви можете почати з Python, тому що, як мова сценаріїв, вона може застосовуватися до численних завдань, вона також забезпечує доступність пакетів для спеціалізованого аналізу, має ряд безкоштовних онлайн-ресурсів і її легко вивчити.


Я підтримав це не лише тому, що це добре написано та чуйно, але й тому, що я мав подібний досвід (включаючи випадкові переїзди назад у Fortran :-) і робити подібні висновки щодо цих мов та середовищ додатків.
whuber

+1 Хороший підсумок доступних інструментів там. Дякуємо, що згадали про EML. З точки зору сценаріїв, EML трохи незграбний порівняно з Python (IMOP), хоча дуже зручно, якщо Erdas - це ваш GUI на вибір RS. На жаль, не існує єдиної мови, яка б приносила найкращі з ГІС та РС. Я абсолютно згоден з тим, що кожній людині потрібно використовувати найкращий доступний метод і мати у своєму розпорядженні різноманітні мови. Я вважаю, що одномовний спеціаліст з РС є рідкісним у цій галузі.
Аарон

Я погоджуюся, що починати з Python звучить як моя найкраща ставка, враховуючи той факт, що він є відкритим кодом і що є багато інтернет-ресурсів. У мене є доступ до ENVI, але для мого поточного дослідження я можу керувати, не знаючи IDL. Я також вивчаю просторову статистику, тому R також буде важливим. @Aaron, здається, має рацію - фахівці з RS повинні бути багатомовними! Ще раз дякую за детальну відповідь. Це справді величезна допомога для того, хто тільки починає в цій галузі.
Емілі

@Emily, для просторової статистики в Python подивіться на пакет PySAL ( geodacenter.asu.edu/pysal ). Є книга Кеннета Боумана "Вступ до програмування з ІДЛ", яка є досить хорошим загальним вступом. Я думаю, що ви здивуєтеся, як далеко ви дістанетесь, опрацювавши цю одну книгу. Як я вже згадував, значна частина синтаксису та структури кодування схожі між мовами, про які йдеться, не витрачаючи часу. Оскільки ви працюєте з ENVI, деякі основні знання IDL були б корисними у ваших дослідженнях. Це не все або нічого з даною мовою.
Джефрі Еванс

ця публікація є хорошим підсумком - доповненням від мого досвіду: Враховуючи високу ціну ArcGis, Envi, Matlab та інших інструментів, я віддаю перевагу OpenSource, який є безкоштовним. Для мене поєднання Python / gdal та QuantumGIS прекрасно працює. Інші на моєму робочому місці використовують Matlab (але також дуже дорого). У моєму оточенні, здається, R чомусь використовується біологами.
Макс

15

З точки зору віддаленого зондування, головна перевага IDL полягає в тому, що він розширює можливості ENVI, аналогічно тому, як веб-сайт пакету Python arcpy розширює функціональність ArcGIS. Якщо у вас не буде доступу до платформи ENVI, розгляньте вивчення іншої мови програмування. Крім того, IDL - комерційний продукт, тоді як Python є відкритим кодом і має величезну базу підтримки.

З практичної точки зору, Python , R (з відкритим кодом) та MATLAB (комерційний) - це найважливіші мови для моєї щоденної роботи на основі дистанційного зондування. Я використовую MATLAB для більшої частини цифрової обробки зображень, Python для виконання інших завдань, пов'язаних з ГІС, і R для графічних / аналітичних цілей.

Нарешті, якби мені довелося зосередити всі свої зусилля на одній мові, я б вирішив вивчити Python головним чином тому, що функціональність Python набагато більше підходить для GIS-обробки, крім функціоналу на основі RS. Іншими словами, Python - це джек-оф-торги, тоді як IDL - ні. Крім того, NASA використовує Python !


1
Всередині python є багато модулів, таких як pyh5 та numpy / scipy. Існують також більші бібліотеки, такі як OSSIM , спеціально для обробки зображень.
Роланд

1
+1 на пітоні. Це загальна мова, і якщо вам потрібно використовувати інструменти, які можуть випасти "з коробки" за допомогою ГІС-сценаріїв, python може це зробити.

Дякую, хлопці, звучить так, що я почну працювати над Python та розширюватимуться іншими мовами, коли я його знижу. Велике спасибі за вашу допомогу.
Емілі

1
Не забувайте про Rasterio: github.com/mapbox/rasterio - нову бібліотеку для растерів для Python.
Алекс Лейт

2

Я настійно пропоную вивчити базову теорію інформатики, а не зосереджуватися на одній процедурній мові. Набуття фундаменту в теорії CS дозволить вам використовувати мови програмування взаємозамінно. Щодня я використовую дві-три мови для написання коду (здебільшого Matlab, R, Python), а за останній місяць я також писав код у VB, BATCH та EASE (PCI Focus).

Це не тільки важливо, щоб можна було легко вивчити кілька мов, але й уникати основних помилок.

Кілька рекомендованих тем:

  • типи даних, використання пам'яті
  • умови
  • ітерація
  • відповідність шаблону
  • процедурна парадигма, модульність

Крім того, якщо у вас виникли проблеми з написанням коду, зробіть крок назад і напишіть псевдокод. В основному запишіть покрокову логіку, що стоїть за вашим кодом, і те, що ви хочете, щоб він виконав.

Якщо ви студент, я рекомендую вам пройти курс перших і другого курсів комп’ютерних наук.

Ура.


2

Я думаю, що це варто окремої відповіді: абсолютно чудова сторінка для вивчення того, як використовувати Python для віддаленого зондування - це ця, лекції - це чудовий підручник: http://www.gis.usu.edu/~chrisg/python / 2009 /

Для мене поєднання Python та QuantumGIS вирішує всі мої потреби в віддаленому зондуванні та ГІС.


0

це дійсно залежить від пакетів, які ви сподіваєтеся використовувати для дистанційного зондування (аналіз зображення). ArcGIS (ESRI) - не пакет дистанційного зондування. Якщо ви хочете використовувати пакети з відкритим кодом, я погоджуюся, що Python та R - чудові мови. Я б також розглядав C ++ і C, тому ви можете зануритися глибше в деякі бібліотеки (тобто: GDAL). Якщо ви хочете дотримуватись комерційних пакетів (COTS) з комерційними пакетами, то вам потрібно більше вивчити мови C (C, C ++ та C #). Щасливе кодування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.