回答:
奇妙なことです。まるで人々が突然Pythonの力を発見したようです(ArcPyはPythonモジュールの1つにすぎません)。たとえば、質問Visualize shapefile in Pythonを参照してください。
すべてを組み合わせて(Pysal with shapely、...)、それらを他のScientificモジュールと混合できます。
したがって、Pythonスクリプトの例については、gis.stackexchangeまたはインターネット(英語だけでなく、多くの例)でPyshp Fiona、ogr、gdal、またはshapelyを検索してください。
そのうちの1つはフランス語です(スクリプトと図は普遍的です!):
- パイソン:GISソフトウェアを使用せず、地質学的観点でベクトルおよびラスター層を使用し
英語の他:
- Pythonの、格好の良い、とフィオナとGIS
とスペイン語
- 頂点の座標を使用して、不規則な多角形の領域の決意
gis.stackexchangeに
- 高度プロファイル10キロラインの各側面
- Pyshpを使用して属性の更新
- ラスタから3Dシェープファイルを作成する方法を?
- 2点間の高低差を取得するためのPythonスクリプト
-など
Aaronが提示したスクリプトは、Python辞書のみを使用するFionaでより簡単に記述できます。
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')
また、さらにshapelyを使用する場合:
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')
2冊の本もあります:
Eric WestraのPython地理空間開発。
Python of Joel Lawhead による地理空間分析の学習
Pythonは、QGIS(Quantum GIS)、GRASS GIS、gvSIGまたはOpenJumpなどの他のGISアプリケーション、またはParaview(およびBlenderも!)などの3Dモデラーでスクリプト言語として使用されます。そして、これらすべてのアプリケーションで地理空間モジュールの大部分を使用できます(BlenderによるQGISデータの視覚化を参照)
開始するには、USUサイトのOpen Source GISを使用したPythonによるジオプロセシングを強くお勧めします。主に演習全体で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で実行することにより、いくつかの機能を模倣できます。
ここで見られるように、私は最近、ポリゴン内のポイントを選択してこれを行いました。レイキャスティングアルゴリズムを使用して、ポリゴンの頂点の座標を指定して、ポイントがポリゴン内にあるかどうかを判断します。