Это странно, как если бы люди внезапно обнаружили мощь 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 с shapely, ...) и смешать их с другими научными модулями.
Таким образом, для примеров сценариев Python найдите Pyshp Fiona, ogr, gdal или shapely в gis.stackexchange или в Интернете (много примеров, не только на английском).)
Один из них на французском языке (сценарии и рисунки универсальны!):
- Python: использование векторных и растровых слоев в геологической перспективе, без программного обеспечения ГИС,
другое на английском языке:
- ГИС с Python, Shapely и Fiona
и на испанском языке
- Определение областей неправильных многоугольников с использованием координат вершин
в gis.stackexchange
- Профиль высоты 10 км с каждой стороны линии
- Обновление атрибутов с помощью Pyshp
- Как создать 3D-файл формы из растра?
- Python Script для получения разницы высот между двумя точками и
т. Д.
Сценарий, представленный Аароном, можно написать проще с помощью 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 Geospatial Development Эрика Вестра.
Изучение геопространственного анализа с помощью Python of Joel Lawhead
Python также используется в качестве языка сценариев в других ГИС-приложениях, таких как QGIS (Quantum GIS), GRASS GIS, gvSIG или OpenJump, или в 3D-моделлерах, таких как Paraview (и Blender !). И вы можете использовать большинство геопространственных модулей во всех этих приложениях (см. Визуализация данных QGIS с помощью Blender )