PythonでGeoSpatialをやってみる。[Chapter 1]

PythonでGeoSpatialをやってみる。[Chapter 1]

さて、手元にずいぶん前に購入したPython Geospatial Developmentなる書籍があるので、これを使いながらPythonでGeoSpatialの使い方を学んでいきましょう。
それほど、Pythonに詳しくないです、ArcGISをPythonでmodelを作る仕事があったため、参考で買ったものです。

Python Geospatial Developmentの表紙は、

です。

「GISやるならPythonでしょ!!」ということで、ちょいと始めましょう。

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

なんと、Python Geospatial Development – Second Editionが出てました。

ま、とりあえずは、First-Editionからやってみて、余力があればSecond-Editionに手をだすことにします。

PythonのInstallと環境設定

Pythonを動かす環境ですが、
- Windows 7 64 bit (32bitでも可)
- Python 2.7.5 (2013年6月18日現在最新版)
で行います。

- まずは、Python Programming Language – Official Websiteの左側のメニューのWindows Installerをclickしてpython-2.7.5.msiをdownloadします。
- 次に、python-2.7.5.msiをclickして、installを開始します。
- Install先は、C:¥Python27とします。
- 環境設定は、システム変数の設定でPATHにc:¥Python27;c:¥Python27¥Scripts;を追加します。pathの区切りは必ず;になるようにします。

Pythonのinstallについては、Pythonインストールと環境設定が参考になります。Python-2.6.5について書かれていますが、2.7.5に読み替えても大丈夫です。

easy_install install

Windows環境でeasy_installが使えるようにしましょう。

まずは、distribute_setup.py を利用するのが簡単です。
以下のアドレスから取得します。
http://python-distribute.org/distribute_setup.py
適当なところに保存します。

cmdターミナルから、

python distribute_setup.py

を実行します。
これで、c:¥Python27¥Scripts; folderが作成されて、easy_install.exeがinstallされます。

cmdターミナルから、

easy_install --version

でエラーが出ないことをかくにんして、

easy_install pip

でPythonのpackage manegerのpipをinstallしておきます。

GDAL/OGRのInstallと環境設定

GDAL/OGRのlibraryはこちらからダウンロードしてセットアップしました。
動作確認したのは、release-1600-gdal-1-9-2-mapserver-6-0-3のgdal-19-1600-core.msiGDAL-1.9.2.win32-py2.7.msiを使いました。

- gdal-19-1600-core.msiのinstallを行う。
- GDAL-1.9.2.win32-py2.7.msiのinstallを行う。
- 環境設定は、システム変数の設定でPATHに;C:¥Program Files (x86)¥GDAL;を追加します。pathの区切りは必ず;になるようにします。
- システム環境変数に新規に作成します。その際、変数名をGDAL_DATA、変数値をC:¥Program Files (x86)¥GDAL¥gdal-dataとします。32bit環境では、(x86)は入りません。

Python GDAL/OGRについては、Python,GIS,and STUFFが参考になります。

これで準備完了です。

Python動作確認

では、Pythonを動かしてみましょう。
スタート → プログラム → Python 2.7 → Python(command line)でcmdターミナルが表示されます。
試しに、

print "こんにちは"

と入力して、リターンキーを押すと、
blog.godo-tys.jp_wp-content_gallery_python_01_image01.jpg

な感じで表示されます。
とりあえずは、PythonはOKです。

GDAL/OGR動作確認

次に、GDAL/OGR libraryがうまく読み込めるかのテストをします。

import osgeo.ogr

と入力して、リターンキーを押すと、
blog.godo-tys.jp_wp-content_gallery_python_01_image02.jpg

な感じで、>>> promptが帰ってきた場合は、PATHの設定等がうまくいっています。
もし、
blog.godo-tys.jp_wp-content_gallery_python_01_image03.jpg

のようにエラーが表示された場合は、GDALのPathの設定やGDAL_DATAの設定がうまくいってない可能性があるので、再度システム環境変数のチェックをしてください。

PythonでShapefileを読み込む

次に、shapefileを読み込んでみましょう。
Python Geospatial DevelopmentのChapter 2にサンプルのshapefileがあるので、tl_2009_us_state shapefileをdownloadして、解凍しておきます。
私の開発環境では、f:¥shapefile_dataのfolderを作成して
blog.godo-tys.jp_wp-content_gallery_python_01_image04.jpg

な感じで解凍しました。

次に、スタート → プログラム → Python 2.7 → Python(command line)でPythonを動かします。
以下のコマンドを順に入力していきます。

import osgeo.ogr
shapefile = osgeo.ogr.Open("F:¥¥shapefile_data¥¥tl_2009_us_state.shp")
numLayers = shapefile.GetLayerCount()
print "Shapefile contains %d layers" % numLayers
layer = shapefile.GetLayer(0)
spatialRef = layer.GetSpatialRef().ExportToProj4()
numFeatures = layer.GetFeatureCount(0)
print "spatial reference %s" % (spatialRef)
print "features: %d" % (numFeatures)

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

cmdターミナル上では、
blog.godo-tys.jp_wp-content_gallery_python_01_image05.jpg

な感じで表示されます。(USAの地図で56州あります。)

とりあえずは、Shapefileも読み込めているようですね。QGISなどGIS Applicationでshapefileを確認しておいてください。

今回のまとめ

Pythonが動く環境を作成して、Shapefileを読み込んでみました。
次回は、もうちょっとGDAL/OGRの使い方とShapefileの取り扱いについて学んでいきます。

後、GeoToolsも使いこなせればいいですよね。 とりあえずは、EclipseでGeoToolsでmapをやってみたいと考えていますが、なんかJavaってなじめないんですよね。。。

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


**[[http://blog.godo-tys.jp/python-geospatial-tutorial/|Python GeoSpatial Tutorialの目次に戻る。]]**

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

WP-SpamFree by Pole Position Marketing

Social Widgets powered by AB-WebLog.com.