ワールドファイルからシェイプファイルを自動生成

ワールドファイルからシェイプファイルを自動生成 GISアプリ
ワールドファイルからシェイプファイルを自動生成

ワールドファイルからシェイプファイルを自動生成するツールの紹介

概要

地理情報システム(GIS)において、ワールドファイル(.gfwファイル)は画像データと地理的な位置関係を関連付けるために使用されます。この記事では、指定したフォルダ内にあるすべてのワールドファイルを読み込み、そのデータからポリゴンを生成し、最終的にシェイプファイル(.shpファイル)として出力するPythonスクリプトをご紹介します。このスクリプトは、シェイプファイルを自動生成することでGISデータの管理や分析の効率化を図るツールです。

ツールの使用方法

このツールはPythonと、PythonのGIS関連ライブラリであるgeopandasshapelyを使用して開発されています。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のようになっている場合のみ処理されます。異なる形式のファイル名はスキップされるため、ファイル名が正しい形式であることを確認してください。
  • EPSGコードがデータに合っているかを必ず確認してください。

まとめ

このスクリプトは、ワールドファイルからシェイプファイルを効率的に生成するための便利なツールです。大規模なデータを扱う際にも自動化によって作業を大幅に短縮できます。ぜひお試しください。

#GIS #地理情報システム #Python #GeoPandas #Shapely #シェイプファイル #ワールドファイル #自動化 #プログラミング #地理データ #Pythonプログラミング #ツール紹介 #シェイプファイル生成 #EPSG #空間解析 #地理空間データ #地図作成 #データ可視化 #gkukan.jp

 

コメント

タイトルとURLをコピーしました