2024年10月26日 09:42
.gfw
ファイル)は画像データと地理的な位置関係を関連付けるために使用されます。この記事では、指定したフォルダ内にあるすべてのワールドファイルを読み込み、そのデータからポリゴンを生成し、最終的にシェイプファイル(.shp
ファイル)として出力するPythonスクリプトをご紹介します。このスクリプトは、シェイプファイルを自動生成することでGISデータの管理や分析の効率化を図るツールです。geopandas
とshapely
を使用して開発されています。geopandas
は、シェイプファイルなどの地理空間データを簡単に操作するためのパワフルなライブラリです。pip
コマンドでインストールしてください。pip install geopandas shapely
import geopandas as gpd
from shapely.geometry import Polygon
import os
# フォルダパスの設定
folder_path = r"C:\Users\C\Desktop\outputGeoTIFFとワールドファイル"
output_folder = r"C:\Users\C\Desktop\output"
# EPSGコード
epsg_code = 2450
# すべてのポリゴンと属性情報を保存するためのリスト
polygons = []
attributes = []
# ファイルの処理
gfw_files = [f for f in os.listdir(folder_path) if f.endswith('.gfw')]
processed_count = 0 # 処理したファイル数のカウント
for i, gfw_file in enumerate(gfw_files, start=1):
# ファイル名から座標を計算
filename = os.path.splitext(gfw_file)[0]
# '-'で分割し、空の要素を除外してリストにする
parts = [part for part in filename.split('-') if part]
if len(parts) == 2:
y_part, x_part = map(int, parts)
# Y座標とX座標の計算(測量系座標なので順序に注意)
y_coord = -(x_part - 10) * 40
x_coord = -y_part * 40
# ポリゴンの作成 (400m x 400m)
polygon = Polygon([
(x_coord, y_coord),
(x_coord + 400, y_coord),
(x_coord + 400, y_coord - 400),
(x_coord, y_coord - 400)
])
# ポリゴンと属性情報をリストに追加
polygons.append(polygon)
attributes.append({'filename': filename, 'x_coord': x_coord, 'y_coord': y_coord})
# コンソールへの出力
print(f"処理番号 {i}: ファイル {gfw_file} 処理中")
print(f" X座標: {x_coord}, Y座標: {y_coord}")
# 処理カウントをインクリメント
processed_count += 1
else:
print(f"警告: ファイル名 '{gfw_file}' の形式が予期しないものであるため、スキップします。")
# GeoDataFrameの作成
if polygons:
gdf = gpd.GeoDataFrame(attributes, geometry=polygons, crs=f"EPSG:{epsg_code}")
# まとめてシェープファイルの保存
output_file = os.path.join(output_folder, "output_shp.shp")
gdf.to_file(output_file)
print(f"\nすべてのポリゴンを '{output_file}' に保存しました。")
else:
print("エラー: 有効なポリゴンが作成されなかったため、シェープファイルは保存されませんでした。")
# 総処理数の表示
print(f"\n総処理ファイル数: {processed_count} 件")
# スクリプトの終了を待つ
input("\n処理が完了しました。エンターキーを押して終了してください。")
y-x
のようになっている場合のみ処理されます。異なる形式のファイル名はスキップされるため、ファイル名が正しい形式であることを確認してください。