QGIS3でshapefileをまとめて変換する

f:id:Chiakikun:20180512175722j:plain

初めに謝っておきます。タイトルに偽り有りです。実際にはQGISをインストールした環境で、PowerShell使って複数のファイルをまとめて変換してしまおうということです。すみません。

QGISをインストールすると「OGR」というベクターフォーマットを扱うライブラリも一緒にインストールされます。このページでは、このOGRの機能を使って、複数のshapefileを別のファイル形式に変換する方法を紹介します。OGRを使うために、こちらのページで紹介した、環境変数の設定までを済ませておいて下さい。

 

f:id:Chiakikun:20180827222018p:plain

Powershellを起動し、「ogr2ogr」コマンドが使えるようになっているか確認します。ogr2ogrを使って、shapefileを変換していきます。

 

f:id:Chiakikun:20180827222139p:plain

③使えているようです。

 

f:id:Chiakikun:20180827222159p:plain

④「mkdir test」「cd test」と入力します。testというディレクトリを作成して、その中に移動するという意味です。

 

f:id:Chiakikun:20180827222304p:plain

 ⑤「explorer .」と入力します。エクスプローラーを起動して、testディレクトリ内を表示するという意味です。

 

f:id:Chiakikun:20180827222443p:plain

⑥立ち上げたエクスプローラーの中(testディレクトリ)に、変換したいshapefileを置いてください。

 

f:id:Chiakikun:20180827222550p:plain

powershellに戻って、以下のコマンドをコピーして、powershellに張り付けてください。

---------------------------------ここから----------------------------------------

$env:GDAL_FILENAME_IS_UTF8="NO"
$env:GDAL_DATA="C:\Program Files\QGIS 3.2\share\epsg_csv"
$env:SHAPE_ENCODING="ISO-8859-1"

$before=".shp"
$after=".mif"
$type='"MapInfo file"'

New-Item .\"conv" -itemType Directory -Force
foreach ($s in Get-ChildItem .\ -Name *$before){ $new = [System.IO.Path]::ChangeExtension($s, $after); ogr2ogr -f $type .\conv\$new $s }

---------------------------------ここまで----------------------------------------

 

f:id:Chiakikun:20180827222802p:plain

ディレクトリ「conv」ができています。

 

f:id:Chiakikun:20180827222827p:plain

shapefileがmifに変換されています。

 

f:id:Chiakikun:20180827222905p:plain

QGISで開いてみたところです。

 

⑪⑦のコードの

$after=".mif"
$type='"MapInfo file"'

$after=".kml"
$type='"KML"'

とするとKML形式で、

$after=".mif"
$type='"MapInfo file"'

$after=".json"
$type='"GeoJSON"'

とすると、JSON形式で変換されます。

お疲れさまでした。