Daily Archives: 06/23/2013

PythonでGeoSpatial dataの解析と操作について[Chapter 5]

PythonでGeoSpatial dataの解析と操作について[Chapter 5]

PythonでProjectionを使ってみる。[Chapter 4] に引き続き、PythonでGeoSpatial dataの解析と操作について基本を学んでおきます。PythonでGeoSpatialをやってみる。[Chapter 1] でPythonとGeoSpatialに関するlibraryが設定できているもとして進めていきます。

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

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

GeoSpatial dataの解析と操作

空間情報データを扱うイメージとしては、QGISやArcGISのジオプロセッシングのようなものです。
shapelyは、二次元の地理空間ジオメトリの操作および分析のためのPythonパッケージです。
shapelyにおける地理空間データ操作は、C++で作成されたGEOSライブラリに基づいています。。
GEOSは、Javaプログラマのための同じ機能を提供しています。それは、 “Java toporogy suite”と呼ばれるlibraryをbaseとしています。
shapelyは、直接Pythonからこれらの操作を使用することが容易になり、GEOSにPython interfaceが用意されています。

shapely

PythonでGeoSpatial(空間情報)dataを解析や操作する場合、shapely libraryを使います。shapelyについては、pypi – shapelyを参考にしてください。

shapelyとは、「Pythonで使うGeoProccesingのためのlibrary群」と言えるでしょうか。
Python Geospatial Developmentによれば、
blog.godo-tys.jp_wp-content_gallery_python_05_shapely_image1.jpg

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

それぞれは、

  1. Point classは、空間内の一点を表しています。二次元(x、y)をまたは(x、y、z)の三次元をポイントすることができます。
  2. LineStringsは、lineを形成するための接合点の配列を示します。
  3. LinearRing classは出発点に最終点のLinsStringsを含みます。それぞれのLinearRingは交差または触れることができません。
  4. Polygon classは、必要に応じてその内部に一つ以上の”穴”で、塗りつぶされた領域を表します。
  5. MultiPoint classは、pointのcollectionを表します。
  6. MultiLineString classは、LineStringのcollectionを表します。
  7. MultiPolygon classは、Polygonのcollectionを表します。
  8. GeometryCollection classは、Points, Lines, LinearRings, とPolygonsを組み合わせたcollectionを表します。

shapelyについては、shapely GitHUBを参考にしてください。shapelyについて説明し出すと結構な量になるので、自習しておいてくださいね。

shapelyのexample code

shapely Install

まずは、spapely dowmloadから、使用しているPythonのversionにあわせたinstallerをdownloadします。
ここでは、Shapely-1.2.17.win32-py2.7.exeをdownloadして、installします。

Example code

次に、Ediorで下記のcodeを入力して、保存します。
保存先はf:¥python_example¥chapter_3¥ folderにpyproj-example.pyで保存します。
下記のcodeは、
blog.godo-tys.jp_wp-content_gallery_python_05_example_image.jpg

な感じのイメージで円を四角でintersectしてその結果の座標を出力しています。

[python]
import shapely.geometry

pt = shapely.geometry.Point(0, 0)
circle = pt.buffer(1.0)

square = shapely.geometry.Polygon([(0, 0), (1, 0),
(1, 1), (0, 1),
(0, 0)])

intersect = circle.intersection(square)
for x,y in intersect.exterior.coords:
print x,y

[/python]

次に、スタート → プログラム → Python 2.7 → IDLE(Python GUI)でShellを動かて、メニューから File → Open で先ほどのpyproj-example.pyを読み込みこむと、
blog.godo-tys.jp_wp-content_gallery_python_05_image01.jpg

な感じでfile openされます。

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

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

な感じでintersectの結果座標値が表示されます。

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

後、libraryに何が含まれているかは、helpコマンドでみることができます。
たとえば、shapelyのlibraryのclass構成などが表示されて、
blog.godo-tys.jp_wp-content_gallery_python_05_image03.jpg

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

今回のまとめ

今回は、Python GUI Shellを使って、超~~簡単なshapelyのexampleを作成しました。
次回は、PythonでのGeoSpatial dataの可視化について学んでいきます。

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

Python GeoSpatial Tutorialの目次に戻る。

1 / 11

Social Widgets powered by AB-WebLog.com.