Pythonには、地理情報システムでよく使用されるシェープファイルを操作するためのライブラリがあります。その中でも、pyshpというライブラリは、シンプルで使いやすく、多くの地理情報関連のプロジェクトで使われています。
pyshpとは
pyshpは、Pythonでシェープファイルを読み込んだり、書き込んだり、編集したりするためのライブラリです。shapefile形式は、GIS(地理情報システム)でよく使われる地理空間データのフォーマットです。pyshpは、.shp、.dbf、.shxなどのシェープファイルの各部分を扱うことができます。
pyshpのインストール方法
pyshpをインストールするには、次のコマンドを使用します。
pip install pyshp
シェープファイルの読み込み
まず、pyshpを使ってシェープファイルを読み込む方法を見てみましょう。以下のコードは、shapefileを読み込み、ポイント(点)の座標を出力する例です。
import shapefile
sf = shapefile.Reader("path/to/shapefile.shp")
# ポイントの座標を出力する
for shape in sf.shapeRecords():
x = shape.shape.points[0][0]
y = shape.shape.points[0][1]
print(x, y)
シェープファイルの書き込み
次に、pyshpを使ってシェープファイルを書き込む方法を見てみましょう。以下のコードは、ポイント(点)を含む新しいshapefileを作成する例です。
import shapefile
w = shapefile.Writer("path/to/new/shapefile")
# フィールドを追加する
w.field("Name", "C")
# ポイントを追加する
w.point(0, 0)
w.record("Point 1")
w.point(1, 1)
w.record("Point 2")
# shapefileを保存する
w.save()
シェープファイルの編集
最後に、pyshpを使ってシェープファイルを編集する方法を見てみましょう。以下のコードは、shapefileの1つの属性を変更する例です。
import shapefile
sf = shapefile.Reader("path/to/shapefile.shp")
shapes = sf.shapes()
records = sf.records()
# 1つ目のポイントの名前を変更する
records[0][0] = "New Name"
#
# shapefileを書き込むために必要なファイルを準備する
w = shapefile.Writer("path/to/new/shapefile")
for i, shape in enumerate(shapes):
w._shapes.append(shape)
w.record(*records[i])
# shapefileを保存する
w.save("path/to/new/shapefile.shp")
まとめ
以上で、pyshpを使ってシェープファイルを読み込んだり、書き込んだり、編集したりする方法について説明しました。pyshpはシンプルで使いやすく、多くの地理情報関連のプロジェクトで使用されています。ぜひ、このライブラリを使って、地理情報を操作するプロジェクトを始めてみてください。