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


12

Нещодавно мене запитали деякі студенти, які типи операцій ГІС-аналітик / розробник зазвичай намагаються автоматизувати, використовуючи Python з геопроцесором в пакеті сайту ArcGIS та ArcPy. Я думаю, може бути корисним знати при пошуку деяких вправ, щоб переконатися, що те, що ви створюєте, є актуальним для галузі та може бути використане пізніше вже на робочому місці.

Найпростішою відповіддю було б "прочитати довідку Esri і пройти зразки", але я шукав більш конкретні сценарії, які найчастіше реалізуються. Таким чином, обмін робочим потоком sush як "ми отримуємо .zip файл з shapefiles, ми використовуємо Python для його розпакування, проектуємо їх у систему координат X, завантажуємо в базу даних ArcSDE, надаємо користувачам доступ до цих даних". Будь ласка, почувайтеся комфортно, щоб надати стислий опис робочого процесу, не вимагаючи екстремальних деталей.

Відповіді:


10

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

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

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


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, і використовуючи arcpyїх, безболісно експортувати їх вночі, щоб ваші користувачі могли мати сучасні дані.
  3. Створення просторових наборів даних з різних наборів даних. Усі на підприємстві використовують (і часто зловживають) Excel для зберігання своїх даних. За допомогою arcpy(або інших методів Pythonic) легко взяти ті табличні дані, які мають просторовий компонент, і швидко створити з нього просторовий набір даних. Те саме стосується текстових файлів. Нещодавно я створив інструмент ArcToolbox для клієнта, який читає текстові файли у фірмовому форматі XYZ та створює полімалінії, що підтримують ZM (насправді не можна ділитися набагато більше, ніж на цьому).
  4. Перекладаючи дані ГІС, щоб вони могли подаватись у програмне забезпечення, яке не має поняття, що таке "просторовий". Я зараз пишу інструменти, які беруть набори даних ГІС (растри, вектори) і передають дані в програму 3D-моделювання через його API Python. Цей 3D-пакет взагалі не може працювати з форматами просторових даних, але він може працювати з текстовими значеннями та атрибутами, що стоять за просторовими даними. Для цього я використовую arcpyінформацію, витягаючу з бази даних геоданих та натискаю її до текстових файлів або до файлу конфігурації XML.
  5. Отримання даних. Отримали веб-сайт із таблицями даних, які вам потрібні? Використовуйте beautifulsoupдля його вилучення. У вас є FTP-сайт із сотнями чи тисячами файлів, які вам потрібно отримати? Використовуйте urllib2або ftplibзавантажуйте їх легко.

Це лише кілька прикладів. Що найкраще в Python на підприємстві, це те, що навіть не маючи повних прав адміністратора на вашій машині, що часто буває, ви все ще можете зробити трохи. Поєднуйте це з легкою кривою навчання та читальністю Python, і у вас є чудовий інструмент автоматизації для GIS Tech / Analyst, який не має багато досвіду програмування.


6

Я працюю в муніципалітеті, а банда ГІС забезпечує підтримку різних наших підрозділів (інженерна, будівельна інспекція, підзаконний акт, парки, пожежа тощо).

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

Як заявили інші, це лише кілька прикладів.

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