Промышленные примеры использования ArcPy в Python для геообработки?

12

Недавно некоторые студенты спросили меня, какие типы операций GIS Analyst / Developer обычно пытаются автоматизировать с помощью Python с геообработкой в ​​пакете сайтов ArcGIS и ArcPy. Я думаю, что было бы полезно знать при поиске некоторых упражнений, чтобы убедиться, что то, что вы создаете, имеет отношение к отрасли и может быть использовано позже уже на рабочем месте.

Самый простой ответ - «прочитайте справку Esri и ознакомьтесь с примерами», но я искал более конкретные сценарии, которые наиболее распространены для реализации. Таким образом, совместное использование рабочих процессов, таких как «мы получаем файл .zip с шейп-файлами, мы используем его для распаковки, проецируем их в систему координат X, загружаем в базу геоданных ArcSDE, предоставляем пользователям доступ к этим данным». Пожалуйста, не стесняйтесь предоставить краткое описание рабочего процесса, никаких подробностей не требуется.

Алекс Терешенков
источник

Ответы:

10

Для меня, как подсказывает ваш вопрос, я много использую Python, в частности, для автоматизации пакетной обработки, а также для создания любых повторяющихся специализированных вычислений. В настоящее время я не использую ArcPy, потому что не могу позволить себе лицензии ESRI в качестве внештатного ГИС-консультанта. Я часто использую GDAL / OGR, Shapely, PostGIS, Numpy и SciPy, хотя все в моем списке можно было сделать с помощью ArcPy (и некоторые из них были). Примеры включают в себя:

  1. Получение зональной статистики для всей Великобритании, для которой сначала требуется наложение мозаичных 20-километровых растровых листов двух разных типов данных, выполнение некоторой «математики» для этих растров, объединение эквивалентной площади 10-километровых векторных многоугольных плиток, вычисление зональной статистики результата растровая математика и соединение таблицы статистики с исходными векторными данными перед выводом в шейп-файлы в логической структуре каталогов и записью на CD для клиента.
  2. Выполнение последовательных вычислений видимости каждые 100 м вдоль дороги или пути, а затем присвоение результатов расчета в виде значений M обратно в данных маршрута.
  3. Автоматизированный процесс создания трехмерных моделей ландшафта путем наложения мозаики / объединения листов растровых и векторных данных, обрезки до требуемой области и последующего преобразования в собственный (не ГИС) 3D-формат. Я использую маленькую библиотеку Python, которую я разработал для этой цели, в моей работе с фрилансерами.
  4. Один огромный проект, над которым я работал в команде, использовал ArcPy для создания пакетных процессов для преобразования или получения новых данных из данных ГИС в формат с функциями, которые могут быть использованы процедурным генератором компьютерных игр. Сценарии геообработки были вызваны «ведомым драйвером» пакетной обработки, также написанным на Python и работающим через Django.
  5. Python очень полезен даже для небольших задач, особенно там, где есть какое-либо повторение (например, функция обработки объекта). В ArcGIS Model Builder значительно улучшены средства управления потоком, появившиеся в версии 10, но, несмотря на это, он все еще часто не может обеспечить необходимый контроль и / или быстрее и проще просто написать процесс в ArcPy, чем пытаться Принудительный Модельер.
  6. Я создал инструмент в Python для выполнения анализа развернутого пути (чтобы вычислить, может ли очень длинное транспортное средство следовать заданному маршруту и ​​где трейлер, вероятно, будет вклиниваться в крутые повороты между зданиями. Это еще один специалист, работающий на фрилансе). арсенал.
  7. Генерация вывода из Mapnik
  8. До того, как ArcGIS стал многопоточным, я использовал Python, чтобы позволить мне порождать подпроцессы, которые иногда могли ускорить долгие, медленные вычисления без лишних затрат ArcMap, которые загромождали память.

Python в коммерческой геообработке великолепен, потому что у вас есть вся скорость и краткость сценариев, которые предоставляет Python, и скорость обработки скомпилированного кода в стиле C, потому что, хотя Python интерпретируется, он в основном вызывает компилируемый код в стиле C под капотом. Python предоставляет клей, который может удерживать вместе множество последовательных задач геообработки, и приведенный выше список - лишь небольшой снимок некоторых вещей, для которых я лично его использую. В «Старые добрые времена» мы настраивали файл Watch и позволяли ArcInfo записывать ввод командной строки, а затем очищать AML (который помнит Arc Macro Language!), Чтобы сделать повторно используемый процесс геообработки вызовов, склеенных вместе с AML. В наши дни все не так уж и отличается, за исключением того, что мы используем Python или C # в качестве клея.

оборота MappaGnosis
источник
1
Как ни странно, я только что ответил на этот вопрос ( gis.stackexchange.com/questions/52478/… ), в котором приведен еще один пример использования Python в качестве метода устранения утечек памяти в ArcGIS!
MappaGnosis
+1, я бы особенно хотел увидеть тему блога GIS.SE на # 4.
blah238
1
Хотя компания больше не существует, и я ушел некоторое время назад, другая компания купила IP, поэтому я не знаю, насколько я могу быть откровенным. В любом случае, вы можете получить некоторые подсказки относительно многопроцессорной стороны из моего ответа в ссылке в моем комментарии выше. Я также могу добавить, что наша ферма геообработки имела 16-ядерный компьютер, два 8-ядерных сервера и около дюжины двухъядерных ПК «в отставке», все они работали под управлением ведомого драйвера. ESRI даже послал некоторых парней прийти и посмотреть, что мы сделали, потому что мы не использовали ArcServer для этого. Мы запустили машины так сильно, что даже две загорелись!
MappaGnosis
7

С чего начать ... Я большой сторонник Python на предприятии, хотя сейчас я работаю в высшем правительстве штата и штата. Вот несколько примеров задач, для которых я использовал Python:

  1. Перемещение данных. Довольно простые задачи, такие как регулярное перемещение данных, можно очень легко автоматизировать с помощью Python, особенно с помощью shutilготового модуля.
  2. Экспорт классов объектов из базы данных ArcSDE и в шейп-файлы для использования другими пакетами программного обеспечения. ArcSDE (или другая реляционная база данных) часто является основной записью в организации, но не каждый программный пакет может подключиться к базе данных. Многие пакеты по-прежнему будут использовать хорошие ole shape-файлы, и, используя их arcpy, можно без проблем экспортировать их каждую ночь, чтобы ваши пользователи могли получать последние данные.
  3. Создание пространственных наборов данных из разнородных наборов данных. Все на предприятии используют (и часто злоупотребляют) Excel для хранения своих данных. С помощью arcpy(или других методов Pythonic) легко взять те табличные данные, которые имеют пространственный компонент, и быстро создать из них набор пространственных данных. То же самое касается текстовых файлов. Недавно я создал инструмент ArcToolbox для клиента, который читает текстовые файлы в проприетарном формате XYZ и создает полилинии с поддержкой ZM (на самом деле не может поделиться гораздо большим, чем на этом).
  4. Перевод ГИС-данных, чтобы они могли быть переданы в программное обеспечение, которое даже не представляет, что такое «пространственное». Сейчас я пишу инструменты, которые берут наборы данных ГИС (растры, векторы) и помещают данные в программу трехмерного моделирования через его API-интерфейс Python. Этот 3D-пакет вообще не может работать с форматами пространственных данных, но он может работать с текстовыми значениями и атрибутами за пространственными данными. Для этого я arcpyизвлекаю информацию из базы геоданных и отправляю ее либо в текстовые файлы, либо в файл конфигурации XML.
  5. Получение данных. Есть сайт с таблицами данных, которые вам нужны? Используйте, beautifulsoupчтобы извлечь его. У вас есть FTP-сайт с сотнями или тысячами файлов, которые вам нужно получить? Используйте urllib2или, ftplibчтобы загрузить их легко.

Это всего лишь несколько примеров. Что хорошо в Python на предприятии, так это то, что даже без полных прав администратора на вашем компьютере, что часто бывает, вы все равно можете достичь совсем немного. Объедините это с плавной кривой обучения и удобочитаемостью Python, и у вас есть отличный инструмент автоматизации для GIS Tech / Analyst, у которого нет большого опыта программирования.

Чед Купер
источник
6

Я работаю в муниципалитете, и банда ГИС оказывает поддержку нашим различным департаментам (Инженерно-технические работы, Строительная инспекция, Устав, Парки, Пожар и т. Д.).

  1. Обновление информации о посылках и гражданских адресах. У нас есть довольно длинные сценарии, которые манипулируют как пространственными, так и атрибутивными данными, что включает использование различных инструментов геообработки для выполнения пространственных операций, а также подключение к реляционным базам данных для сбора информации, которая затем присоединяется к нашим пространственным данным.
  2. Пользовательские инструменты. Мы создали пользовательские инструменты с помощью нового мастера надстроек Python для некоторых сотрудников, не относящихся к ГИС. Некоторым нашим сотрудникам необходимо читать пространственные данные, а также выполнять некоторые основные манипуляции. Мы разработали панели инструментов, которые позволяют им делать все, что им нужно, не вдаваясь в суть среды ArcGIS.

Как уже говорили другие, это всего лишь несколько примеров.

dchaboya
источник