Answers:
这很奇怪,好像人们突然发现Python的功能一样(没有ArcPy就是其中的一个Python模块),例如参见问题Visualize shapefile in Python:
您可以将所有(Pysal与shape,...)组合在一起,并将它们与其他Scientific模块混合使用。
因此,对于Python脚本示例,请在gis.stackexchange或Internet中搜索Pyshp Fiona,ogr,gdal或shape(很多示例,不仅是英语)。)
其中有一种法语(脚本和图形是通用的!):
- Python的:使用矢量和地质角度光栅层,没有GIS软件
的其他英语:
- GIS与Python,身材匀称,和Fiona
和西班牙
- 的使用顶点的坐标不规则多边形的面积确定
在gis.stackexchange
- 高度剖面线的每侧10公里
- 使用Pyshp更新属性
- 如何从栅格创建3D shapefile?
- 用于获取两点之间的高程差的Python脚本
-等
可以使用仅使用Python字典的Fiona来更简单地编写Aaron提出的脚本:
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')
还有两本书:
Eric Westra的Python地理空间开发。
使用 Joel Lawhead的Python学习地理空间分析
Python也可用作其他GIS应用,如QGIS(量子GIS),草地理信息系统,gvSIG或OpenJump或3D建模者脚本语言的Paraview(和搅拌机也!)。您可以在所有这些应用程序中使用大多数地理空间模块(请参阅使用Blender可视化QGIS数据)
我强烈建议USU网站使用Python使用开放源GIS进行地理处理,以帮助您入门。在整个练习中,他们主要使用GDAL / OGR库。安装GDAL / OGR可能会有些困难,因此此博客文章可能对您有所帮助:在Windows上为Python安装GDAL(和OGR)。另请查看在GIS.SE上使用Arcpy的替代方法。
以下开放源代码地理处理脚本示例(来自USU站点)用于提取属性数据并将其写入文本文件:
# import modules
import ogr, os, sys
# set the working directory
os.chdir('f:/data/classes/python/data')
# open the output text file for writing
file = open('hw1a.txt', 'w')
# get the shapefile driver
driver = ogr.GetDriverByName('ESRI Shapefile')
# open the data source
datasource = driver.Open('sites.shp', 0)
if datasource is None:
print 'Could not open file'
sys.exit(1)
# get the data layer
layer = datasource.GetLayer()
# loop through the features in the layer
feature = layer.GetNextFeature()
while feature:
# get the attributes
id = feature.GetFieldAsString('id')
cover = feature.GetFieldAsString('cover')
# get the x,y coordinates for the point
geom = feature.GetGeometryRef()
x = str(geom.GetX())
y = str(geom.GetY())
# write info out to the text file
file.write(id + ' ' + x + ' ' + y + ' ' + cover + '\n')
# destroy the feature and get a new one
feature.Destroy()
feature = layer.GetNextFeature()
# close the data source and text file
datasource.Destroy()
file.close()
.Destroy
是一个很棒的方法名称:p
您可能对GDAL / OGR感兴趣。
GDAL用于处理栅格,而OGR用于矢量。两者都是开源库。
如果要消除对ArcPy的依赖,可以通过将信息读取到数组并在纯Python中运行自己的计算来模拟某些功能。
我最近在一个多边形选择点,看到这样做这里。给定多边形顶点的坐标,它利用射线投射算法确定点是否位于多边形内。
我从来没有亲自使用过,但是办公室中的其他人喜欢匀称使用:https : //pypi.python.org/pypi/Shapely