Це дивно, як ніби люди раптом виявили силу Python (без ArcPy, який є лише одним модулем Python серед інших), див., Наприклад, питання Візуалізація форм-файлу в Python :
- Геопросторова обробка в Python має дуже довгу історію, набагато старшу за Arcpy (або arcgisscripting) -> не "імітуючи" можливості ArcPy тут, як каже Павло, більшість були вже до ArcPy.
- Посилання на модулі Python - це індекс пакету Python ( Pypi ), і є спеціальний розділ: Тема :: Науково-технічні роботи :: ГІС
- Ви можете робити що-небудь за допомогою цих модулів, і це часто простіше і швидше, ніж ArcPy, оскільки це чистий Python (без курсорів ...).
- Shapely є одним із цих модулів для обробки геопросторових геометрій -> обчислення площ багатокутника та перетворення полігонів у точки ..
- якщо ви хочете обробити векторні шари, є osgeo / ogr , Fiona або Pyshp (та інші, менш використовувані) -> запитуйте файл форми за атрибутами, створюйте новий шар з вибору, обчислюйте області багатокутника, перетворюйте багатокутники в точки
- для обробки растрових стандартів є osgeo / gdal
- для просторового аналізу існує Pysal
- для 3D ви можете використовувати інші наукові модулі, такі як numpy або scipy (3D-алгоритми, сітки, а також статистику, геостатистику, 2D або 3D)
- І я не говорю про mapnik , matplotlib / basemap , Geodjango та ...
Ви можете поєднати всі (Pysal з витонченими, ...) і змішати їх з іншими науковими модулями.
Таким чином, для прикладів Python Script шукайте Pyshp Fiona, ogr, gdal або shapely в gis.stackexchange або Інтернеті (багато прикладів, не лише англійською мовою).
Один з них французькою мовою (сценарії та рисунки є універсальними!):
- Python: Використання векторних та растрових шарів в геологічній перспективі, без програмного забезпечення GIS
інше англійською мовою:
- ГІС з Python, Shapely та Fiona
та іспанською мовою
- Визначення ділянок неправильних багатокутників за допомогою координат вершин
у gis.stackexchange
- Профіль висоти на 10 км в кожній стороні лінії
- Оновлення атрибутів за допомогою Pyshp
- Як створити файл 3D форми з растру?
- Сценарій Python для отримання різниці висот між двома точками
- тощо
Сценарій, представлений Аароном, можна писати простіше за допомогою Fiona, яка використовує лише словники Python:
import fiona
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(point['geometry']['coordinates'][0])
y = str(point['geometry']['coordinates'][21])
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
і якщо ви додатково використовуєте:
from shapely.geometry import shape
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(shape(pt['geometry']).x)
y = str(shape(pt['geometry']).y)
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
Також є дві книги:
Геопросторовий розвиток Пітона Еріка Вестри.
Навчання геопросторовому аналізу з Python of Joel Lawhead
Python також використовується як сценарій мови в інших GIS-програмах, таких як QGIS (Quantum GIS), GRASS GIS, gvSIG або OpenJump або 3D-модельєрах, таких як Paraview (і Blender також!). І ви можете використовувати більшість геопросторових модулів у всіх цих додатках (див. Візуалізація даних QGIS за допомогою Blender )