gdalとは
地理空間データを扱うためのオープンソースのソフトウェアライブラリです。
主にラスタデータやベクタデータの変換や解析に使用されます。
ここでは、shpファイルの座標変換(Tokyo → 2000、2000 → 2011)に使用します。
コマンドとしてはogr2ogrというものを使用し、パラメータはgsbファイルを使用します。
準備(インストールなど)
パラメータのダウンロード
Tokyo → 2000では、TKY2JGD.gsbを
2000 → 2011では、touhokutaiheiyouoki2011.gsbを
使用します。
こちらのサイト(https://github.com/tohka/JapanGridShift/tree/master/gsb_files)よりダウンロードが可能です。
後ほど、pathを指定するので、わかるところに保存します。
※今回は、D:\parに保存。
gdalのインストール
OSGeo4W installerをダウンロードします。こちらのサイト(https://qgis.org/resources/installation-guide/#osgeo4w-installer)よりダウンロードします。
アドバンスインストールおよびエクスプレスインストールから、GDALをインストールします。
gdal等のpathの設定
環境変数のpath等を設定します。
システム環境変数のPathを選択して、ogr2ogr.exeがあるpathを入力します。
※今回は、C:\Program Files\QGIS 3.36.3\bin
また、PROJ_LIBをシステム環境変数に追加し、proj.dbのファイルがあるpathを指定します。
ここで、proj.dbのバージョンが古いとエラーが出るので、その際は新しいバージョンのものを再度インストールする必要があります。
※今回は、筆者がPostgreSQLを入れていたため、pathは、C:\Program Files\PostgreSQL\14\share\contrib\postgis-3.4\proj を指定しています。
実際のコマンド入力
ターミナルを起動し、cdのコマンドで変換したいshpファイルがあるディレクトリに移動します。
Tokyo → 2000への変換(TKY2JGD.gsbを使用)
下記の3つのコマンドを順番に実行していきます。
Tokyoの平面直角座標系 → Tokyoの地理座標系への変換
ogr2ogr -f “ESRI Shapefile” -s_srs “EPSG:30170” -t_srs “EPSG:4301” -lco ENCODING=UTF-8 step1_tokyo_geo_utf8 input.shp
※EPSG:30170には、もとのshpファイルの座標系を入力します。
変換にあたり、平面直角座標系から地理座標系(Tokyoの地理座標系:EPSG:4301)に変換する必要があります。
ENCODING=UTF-8 では文字形式を入力します。
Shift-JISなどもあります。
Tokyoの地理座標系 → 2000の地理座標系の変換
ogr2ogr -f “ESRI Shapefile” -s_srs “+proj=latlong +nadgrids=D:\par\TKY2JGD.gsb +ellps=bessel” -t_srs “EPSG:4612” -lco ENCODING=UTF-8 step1_tokyo_geo_gsb.shp step1_tokyo_geo_utf8.shp
※D:\par\TKY2JGD.gsbには、gsbファイルを保存しているpathを入力します。
2000の地理座標系 → 2000の平面直角座標系へ変換
ogr2ogr -f “ESRI Shapefile” -s_srs “EPSG:4612” -t_srs “EPSG:2452” -lco ENCODING=UTF-8 step2_2000_geo.shp step1_tokyo_geo_gsb.shp
2000 → 2011 への変換(touhokutaiheiyouoki2011.gsbを使用)
下記の3つのコマンドを順番に実行していきます。
2000の平面直角座標系 → 2000の地理座標系への変換
ogr2ogr -f “ESRI Shapefile” -s_srs “EPSG:2452” -t_srs “EPSG:4612” -lco ENCODING=Shift-JIS step1_2000_geo.shp input.shp
2000の地理座標系 → 2011の地理座標系への変換
ogr2ogr -f “ESRI Shapefile” -s_srs “+proj=longlat +ellps=GRS80 +nadgrids=D:/par/touhokutaiheiyouoki2011.gsb +no_defs” -t_srs “EPSG:6668” -lco ENCODING=Shift_JIS step2_2011_geo.shp step1_2000_geo.shp
2011の地理座標系 → 2011の平面直角座標系への変換
ogr2ogr -f “ESRI Shapefile” -s_srs “EPSG:6668” -t_srs “EPSG:6678” -lco ENCODING=Shift_JIS output_projected.shp step2_2011_geo.shp
GUIで一括変換
GUIで変換できるツールを作成しました(pythonで動きます)。
コードを開いて、メモ帳などに保存後、拡張子を.pyに変更してください。
ご自由にダウンロードください。
エクセルには、EPSGファイルの一覧を載せております。
tokyo_to_2000_converter(.pyにしてください)
2000_to_2011_converter(.pyにしてください)
tokyo_to_2000_converter.py及び2000_to_2011_converter.pyで右クリック → プログラムから開く → python を選択
入力フォルダや出力フォルダ、座標系、Encodingなどを入力して、変換開始をクリックすると、一括でshpファイルが変換されます。
※原則、encodingはUTF-8で入れておいた方が良いようです。