Daily Archives: 06/20/2013

PythonでOGRをちょろっと使ってみる。[Chapter 2]

PythonでOGRを使ってみる。[Chapter 2]

PythonでGeoSpatialをやってみる。[Chapter 1] に引き続き、GDAL/OGR Libraryについての基本を学んでおきます。PythonでGeoSpatialをやってみる。[Chapter 1] でPythonとGeoSpatialに関するlibraryが設定できているもとして進めていきます。

本tutorialは、Python Geospatial Developmentを参考にして、実践的に使えるPythonでGeoSpatialの使い方を学んでいくものです。

また、本Blog中のsource code等に関しては、あくまでも参考としてください。なにがあっても責任とれませんので。
そこんところ、ヨロシク~~!!

OGRとは?

OGR-GroPacific.orgに日本語の情報がありますので、参考にしてください。
本家のHPは、OGR HPです。

OGRとは、「ベクトル空間情報データを扱うためのlibrary群」と言えるでしょうか。
Python Geospatial Developmentによれば、
blog.godo-tys.jp_wp-content_gallery_python_02_ogr_image.jpg

の図のようなobject構成になっています。

OGRで扱うことのできるformatは、本家HPのこちらを参考にしてください。網羅している数がすごいですね。

OGRのexample code

まず、sample dataのTM_WORLD_BORDERS-0.3からView raw fileをclickしてdownload、その後解凍しておきます。
私の開発環境では、f:¥shapefile_dataのfolderを作成して、解凍したfileをcopyしておきます。

Ediorで下記のcodeを入力して、保存します。
保存先はf:¥python_example¥chapter_3¥ folderにogr-example.pyで保存します。

[python]
from osgeo import ogr

shapefile = ogr.Open("f:¥¥shapefile_data¥¥TM_WORLD_BORDERS-0.3.shp")
layer = shapefile.GetLayer(0)

for i in range(layer.GetFeatureCount()):
feature = layer.GetFeature(i)
name = feature.GetField("NAME")
geometry = feature.GetGeometryRef()
print i, name, geometry.GetGeometryName()

[/python]

注意)上記codeで¥¥は全角ですので、半角にするかもしくは、バックスラッシュに置き換えてください。

次に、cmdターミナル上で、ちまちま入力するのはめんどうなので、GUI Shellを使います。
スタート → プログラム → Python 2.7 → IDLE(Python GUI)でShellを動かすと、
blog.godo-tys.jp_wp-content_gallery_python_02_image01.jpg

な感じでPython SHellが起動します。

メニューから File → Open で先ほどのogr-example.pyを読み込みこむと、
blog.godo-tys.jp_wp-content_gallery_python_02_image02.jpg

な感じでfile openされます。

後は、F5 keyを押すか、メニューからRUN → Run Moduleで実行できます。

では、実行してみると、
blog.godo-tys.jp_wp-content_gallery_python_02_image03.jpg

な感じでShapefileのattibuteがずらずらと表示されます。

とりあえずは問題ないようですね。

後、libraryに何が含まれているかは、helpコマンドでみることができます。
たとえば、osgeo.ogr.DataSource.CopyLayerをどのように呼び出すのか?
blog.godo-tys.jp_wp-content_gallery_python_02_image04.jpg

な感じで使うことができます。ただし、最初にLibraryをimportしておく必要があります。

今回のまとめ

今回は、Python GUI Shellを使って、超~~簡単なOGRのexampleを作成しました。
次回は、超~~簡単なGDALの使い方について学んでいきます。

また、本tutorialは、Python Scriptの基本的なことはある程度理解している前提で今後も話を進めていきます。また、誤字、脱字、spell間違いや勘違いも多々出てくると考えられます。
それは違うじゃん!!とかいろんな意見をいただければと思います。
そこんところ ヨロシク~~!!

Python GeoSpatial Tutorialの目次に戻る。

1 / 11

Social Widgets powered by AB-WebLog.com.