👋

Automating GIS Processes 2023 を読む その1

2024/01/24に公開

概要

ヘルシンキ大学地球科学・地理学科の GIS コースの教材であるAutomating GIS Processes 203を読んでいきます。

Lesson1

講義動画

https://youtu.be/heEKeH2ECSk

Overview

Pythonのshapelyパッケージを使って、Pythonで「単純な特徴」を作成し、操作する方法を学びます。

https://autogis-site.readthedocs.io/en/latest/lessons/lesson-1/overview.html

Pythonを使って空間データを扱い、分析する方法を学びます。コースでは、GIS関連のアプリケーションのために特別に書かれた多くのPythonパッケージのいくつかも知ることができます。

https://autogis-site.readthedocs.io/en/latest/lessons/lesson-1/course-motivation.html

このコースで学べること

学習目標 コース終了時には、以下のことができるようになります:

  • 異なるファイルフォーマットからの空間データの読み込みと書き込み
  • 座標参照システムの操作
  • ジオコーディングを使用して、住所を座標に変換する、
  • オーバーレイ関数を使用してジオメトリを組み合わせる(交差、結合)、
  • 値に基づいてデータを再分類する
  • 空間クエリーの実行
  • 簡単な空間分析
  • データを視覚化し、以下のような(インタラクティブな)マップを作成する:

https://autogis-site.readthedocs.io/en/latest/lessons/lesson-1/course-motivation.html#learning-objectives

Shapely and geometry objects

https://autogis-site.readthedocs.io/en/latest/lessons/lesson-1/geometry-objects.html

このレッスンでは、Shapely Python Packageを使ってPythonでジオメトリを作成し、操作する方法を学びます。

すべての地理空間ベクトルデータは、一連の基本的な幾何学的オブジェクトの組み合わせによって記述することができます:点、線、多角形は、空間データを扱うための基本的な成分です。

Pythonでは、shapelyというライブラリパッケージが、地理空間オブジェクトを扱い、さまざまな幾何演算を行うための標準ツールとなっている。例えば、地理情報のデータセット全体(別名「レイヤー」)を扱うgeopandas(レッスン2参照)のような、より高度なツールを使うには、shapelyがどのように動作するかを基本的に理解することが最も重要である。

Points
点ジオメトリは(2次元または3次元のユークリッド空間の)特異点を表す。点は1つの座標タプルで定義されます。

LineStrings
LineStringジオメトリ(および関連するLinearRings)は線を表します。これらは点のシーケンスで定義されます。点を順番に結ぶと線ができ、最初と最後の点が同じ場合はリニアリングになる。したがって、LineStringを記述するには少なくとも2つの点が必要であり、LinearRingを記述するには少なくとも3つの点が必要である(最初と最後は同一である)。

Polygons
最後に、多角形は面積を表します。多角形は、円周としてちょうど1つのLinearRingと、切り取られた穴を表す任意の数の追加のLinearRingによって定義されます。そのため、ポリゴンを定義するには最低でも3つの座標タプルが必要です。

Using shapely to create, access, manipulate and analyse geometric objects

Shapelyは幾何学オブジェクトに対して多くの便利な操作を行うことができ、幾何学オブジェクトの様々な属性を提供します。例えば、以下のことが可能です:

  • 点の集合から線や多角形を作成する
  • ジオメトリの面積、長さ、周囲長などの計算
  • ジオメトリの集合に対してジオメトリ演算を実行する。たとえば、ジオメトリのマージ(結合)、減算(差分)、ジオメトリ間の距離の計算など。
  • ジオメトリ間の関係を照会する。つまり、2 つのジオメトリが交差しているか、接触しているか、交差しているかなどを調べる。

Codes

lesson1 のコードを実行した結果は以下に置きました。

https://github.com/mopinfish/auto-gis-notebooks/blob/main/lessons/lesson-1/geometric-objects.ipynb

Discussion