QGISに付属の便利なコマンド
- ファイルを変換する
- ファイルの座標系を変える
- ファイルをまとめて変換する
- PostGISにインポートする
- GeoPackageにGeoTiffを追加する
- GeoPackageにシェープファイルを追加する
QGISをインストールすると、便利なコマンドが付いてくるので、いくつか使い方を紹介します。 このページではQGISのバージョンは3.6、PowerShellのバージョンは5.1.17763.592を使っています。
こちらのページで紹介した、環境変数の設定までを済ませておいて下さい。
ファイルを変換する
ogr2ogr -f "MapInfo File" 変換後ファイル.mif 変換前ファイル.shp
変換前.shpを変換後ファイル.mifに変換します。-f のオプションに渡す文字列には、変換後のファイルフォーマットを指定します。どんなフォーマットが対応しているかは、次のコマンドで確認できます。
ogrinfo --formats
日本語が文字化けする場合
ogr2ogr -lco ENCODING=cp932 -f "MapInfo File" 変換後ファイル.mif 変換前ファイル.shp
Shift-JISで出力したい場合は、オプションに「-lco ENCODING=cp932」を指定します。
ファイルの座標系を変える
ogr2ogr -t_srs EPSG:2443 -s_srs EPSG:4326 変換後ファイル.mif 変換前ファイル.mif
-t_srsで変換後ファイルの座標系を指定します。
-s_srsで変換前ファイルの座標系を指定します。
ファイルをまとめて変換する
指定したフォルダ内のシェープファイルをKMLに変換するコードです。
$env:GDAL_DATA="C:\Program Files\QGIS 3.6\share\epsg_csv" # GDALが使うデータフォルダ $before=".shp" # 変換前の拡張子 $after=".kml" # 変換後の拡張子 $dir="d:\変換したいファイル" # 変換したいファイルが格納されているフォルダ $type="KML" # 変換後のファイルタイプ New-Item $dir\"conv" -itemType Directory -Force foreach ($s in Get-ChildItem $dir\ -Name *$before) { $new = [System.IO.Path]::ChangeExtension($s, $after) ogr2ogr -f $type $dir\conv\$new $dir\$s }
上のコードの1~5行目を編集して、PowerShellに貼り付けて実行してみてください。
PostGISにインポートする
ogr2ogr -lco encoding=CP932 PG:"host=localhost user=ユーザー名 dbname=インポート先データベース password=〇〇〇〇" -nln レイヤ名 インポートしたいファイル
GeoPackageにGeoTiffを追加する
gdal_translate -of GPKG 追加したいtiff.tif 追加先.gpkg -co APPEND_SUBDATASET=YES -co RASTER_TABLE=テーブル名
追加先.gpkgが存在しない場合は、作成されます。
GeoPackageにシェープファイルを追加する
$dst="F:\〇〇.gpkg" # 追加先のgeopackageファイル foreach ($s in Get-ChildItem .\ -Name *.shp) { ogr2ogr -append $dst $s }
shpが格納されているフォルダに移って、上のコードの1行目を編集して、PowerShellに貼り付けて実行してみてください。
お疲れさまでした。