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はシンプルで使いやすく、多くの地理情報関連のプロジェクトで使用されています。ぜひ、このライブラリを使って、地理情報を操作するプロジェクトを始めてみてください。