Python3×地理空間データ 地理空間データプログラミングの流れ

2019年9月24日地図・GISGDAL, GDAL/OGR, OGR, Python

「Pythonで地理空間データプログラミング 」シリーズ第2弾です.

今回は, 地理空間データをPythonプログラミングによって操作するための簡単な流れを解説します.

よろしくお願いいたします.

全体の流れ

地図データを扱う際には,
まず肝心の 地理空間データを入手し,次に 地理空間データを操作できるライブラリを用いて読み込み,プログラミングをする,という流れが一般的かと思います.

もちろん例外もあるかと思いますが,とりあえずこの形式で説明していきます.

地理空間データの入手

一から巨大な 地理空間データを作成する機会は,まず無いと言っていいでしょう.

ほとんどの場合,国や自治体,団体などが提供しているものをダウンロードします.

主な地図データ入手元Webサイトを下に掲載します.

https://ujicya.jp/wordpress/mapdata-website/

多くのWebサイトでは,ベクタデータは「シェープファイル(.shp)」,ラスタデータは「Geotiff」で提供されていると思います.

地理空間データの読み込み

ここで,地理空間データを読み込むために必要なライブラリを説明します.

GDAL/OGR

GDAL/OGR(Geospatial Data Abstraction Library)とは,地理空間データの変換機能やその他ユーティリティを含むライブラリです.

サイト

GDAL/OGRを使うことで,多数の地図データファイル形式(ベクタ・ラスタ)を統一的なインターフェースで操作することができるようになります.

サポートされているファイル形式は,上記の公式サイトに載っていますが,ベクタで20種類以上,ラスタで50種類以上です.

また,数多くのプログラミング言語からの利用をサポートしています.
私の知る限りでは,C,C++,Python,R,Java,C#,Ruby,VB6,Perlはサポートされています.

ところで,GDAL/OGRと書きますが,本来,GDALとOGRは別物です.

区別としては,GDALはラスタを扱い,OGRはベクタを扱います.

しかし,現在は「GDAL」という名称の単一ライブラリに両者が統合されています.

そこで,わかりやすさのため,本ブログでは統合されたライブラリを「GDAL/OGR」と呼び,単なるGDALを「GDAL」と呼ぶことにします.

GDALのラスタデータモデル

GDALにおけるラスタデータモデル
GDALにおけるラスタデータモデル
『Python Geospatial Development, second edition』を参考に作成

GDALは,読み込んだラスタデータをこの図のようなオブジェクト(Dataset)に変換します.

以下に,Python3(※)での読み込み方の例を示します.

from osgeo import gdal
# 「gdal.Open」でgeotiffを読み込みます.
dataset = gdal.Open("xxx.tif")
print(type(dataset))
<class 'osgeo.gdal.Dataset'> 

※Python3の環境条件

  • Anaconda(Python3.7.3)
  • GDAL/OGRのinstall:「conda install gdal」
  • GDAL/OGRのライブラリ名:gdal 2.3.3

OGRのベクタデータモデル

OGRにおけるベクタデータモデル
OGRにおけるベクタデータモデル
『Python Geospatial Development, second edition』を参考に作成

OGRは,読み込んだベクタデータをこの図のようなオブジェクト(Data Source)に変換します.

読み込み方の例は以下の通りです.

from osgeo import ogr
#「ogr.Open」でシェープファイルを読みこみます.
datasource = ogr.Open("xxx.shp")
print(type(datasource))
<class 'osgeo.ogr.DataSource'> 

プログラミングで処理

読み込んだ後は,オブジェクトのプロパティやメソッドを用いて処理を実行していきます.

具体的な処理内容は,以降の回でご紹介できたらと思っています.

関連記事

https://ujicya.jp/wordpress/python-geospatial-programming-0/
https://ujicya.jp/wordpress/python-geospatial-programming-1/

地図・GISGDAL, GDAL/OGR, OGR, Python

Posted by タロック