QGIS3で国土地理院の数値標高モデルを読み込む
以前このページでは、国土地理院の数値標高モデルをAsciiGridに変換するプログラムを公開していましたが、最近はGeoTiffの扱いにも慣れてきたので、GeoTiffに変換してQGISにインポートするプラグインを作成してみました。QGIS3.6以前のバージョンでは動かないかもしれません。ご使用については、どうか自己責任でお願いします。
プラグイン作成にあたり、「PythonでJPGIS(GML)形式DEMをGeotiffファイルに変換(https://tm23forest.com/contents/python-jpgis-gml-dem-geotiff)」や、
「GIS奮闘記(http://sanvarie.hatenablog.com/entry/2016/01/10/163027)」を参考に作成しました。有益な情報をありがとうございます。皆様に感謝いたします。
ダウンロードする
プラグインをダウンロードする
https://github.com/Chiakikun/fg_gml_importerからプログラムをダウンロードして下さい。上の赤丸部分を押下した後に出てくる、下の赤丸部分からダウンロードできます。
インストール
プラグインをインストールするダイアログを表示する
QGISのメニューから『プラグイン』→『プラグインの管理とインストール』を選択します。
インストールするプラグインファイルを選択する
『ZIPからインストールする』を選択して、ダウンロードしたZIPファイルを選択してインストールを実行します。
警告が出ますが、『はい』ボタンを押下して先に進みます。
アイコンが表示される
インストールが完了すると、QGISのメニューにアイコンが追加されます。
プラグインを実行してみる
追加されたアイコンをクリックすると、ダイアログが表示されるので、ダウンロードした数値モデルのzipファイルの格納先フォルダを選択して、『実行』ボタンを押下します。
選択したフォルダにGeoTiffを作成します。全て作成できたらQGISにインポートされます。
お疲れさまでした。
QGIS3のインストール手順
このページではQGIS3.2をインストールする手順を紹介しています。現在QGISは3.8.2ですので、もしかしたら、このページの内容はそのまま使えないかもしれません。
インストーラーからインストールする
インストーラーをダウンロードする
インストーラーを選択する
https://www.qgis.org/ja/site/forusers/download.html にアクセスして、赤丸部分のインストーラーを選択します。このインストーラーは一度ダウンロードすれば、後はネットワークに接続しなくても、インストールすることができます。ネットワークインストーラーですと、インストールが終わるまでネットに接続していなければならない点が少し煩わしく感じたので、スタンドアロンインストーラを選択しました。
インストーラーを保存する
インストーラーを保存するか聞いてくるので、ファイルを保存ボタンをクリックします。
インストールする
インストーラーを実行する
ダウンロードしたインストーラーを実行します。
契約条件を読む
契約条件を読んだら『同意する』ボタンを押下します。
データセットの選択
使用したいデータがある場合は、ここで選択してください。何も選択しなくてもQGISの使用に全く問題はありません。『インストール』ボタンを押下します。
インストール開始
QGISのインストールが始まります。
このダイアログが出たら、インストール完了です。通常使用ならこれで以上です。
パスを設定する
QGISに付属のPythonやGDAL等便利なコマンドを使えるようにするために、以下のページではパスのの設定方法を紹介しています。ご興味があれば、ご覧ください。QGISを使うだけでしたら、パスは設定しなくても問題はありません。
ソースからインストールする
基本的にはこちらQGIS公式の通りにするだけです。
環境構築
まずはいろいろダウンロードしていきます。
Visual Studio 2015
上の画像①からVisual Studio 2015 Communitiy Editionをダウンロードして実行します。
インストールするパッケージは上の画像②で示されているように、"Common Tools for Visual C++ 2015"と"Tools (1.4.1) and Windows 10 SDK (10.0.14393)" under "Universal Windows App Development Tools"を選択してください。
CMake
上の画像③のリンクからCMakeをインストールします。
Cygwin
上の画像④のリンクからcygwinのインストーラーをダウンロードします。インストールするパッケージは「bison」、「flex」、「git」です。
osgeo4w
上の画像⑤のリンクからインストーラーをダウンロードします。インストールするパッケージは「qgis-dev-deps」を選択します。Searchで入力すると簡単に見つかります。
ninja
上の画像⑥のリンクからダウンロードします。ninja.exeを「C:\OSGeo4W64\bin\」にコピーしてください。
ソースダウンロード
デスクトップに出来ている(はず)の「Cygwin64 Terminal」を管理者権限で実行します。
上の画像のコマンドをCygwin Terminalで実行していきます。
実行している様子。
ソリューションファイル作成
「C:\OSGeo4W64\OSGeo4W-dev.bat
」を作成します。中身は下の通り。
@echo off call C:\OSGeo4W64\QGIS\ms-windows\osgeo4w\msvc-env.bat x86_64 @cmd
このバッチを実行した後、「C:\OSGeo4W64\QGIS\ms-windows\osgeo4w」に移動して
「configonly.bat」を実行します。
ソリューションファイルを作成している様子。
もし「Could NOT find ZSTD (missing: ZSTD_LIBRARY ZSTD_INCLUDE_DIR)」とエラーが出たので、以下のようにしました。
「https://github.com/facebook/zstd/releases」からソースとバイナリをダウンロードしてきます。
バイナリのzipファイルのincludeフォルダ内の中身を「C:\OSGeo4W64\include」にコピーしました。
ソースをMTオプションでコンパイルして、作成されたlibzstd_static.libをzstd.libにリネームして「C:\OSGeo4W64\lib」にコピーしました。
コンパイルする
ここまでで、ソリューションファイルが「C:\OSGeo4W64\QGIS\ms-windows\osgeo4w\build-qgis-test-x86_64\qgis.sln
」に出来ていることと思います。ソリューションファイルを実行する前にOSGeo4W-dev.bat
と実行して、「call gdal-dev-env.bat」コマンドを実行します。
バッチファイルを実行したら、「devenv」を実行します。Visual Studioが起動するので、作成したソリューションファイルを開きます。
「ALL_BUILD」ターゲットを実行します。とても時間がかかるのでしばらくお待ちください。
無事ビルドできたら、デバッグができるかも確認しておきます。「qgis」ターゲットで右クリックの「デバッグ」メニューからデバッグを実行すると、qgisが起動して、Visual Studioもデバッグモードになります。
デバッグしている様子。
インストール
インストールは「インストール」ターゲットをビルドすると、「C:\OSGeo4W64\apps\qgis-test\bin」にqgis.exeが作成されます。実行してみると、色々エラーが出ることと思います。最終的にqgis.exeと同じフォルダ階層に以下の内容のqgis.envを置くことでエラーが出なくなりました。バイナリインストールしてあるPCから抜いてきて少し編集したものなので、無駄なところがあるかもしれません。
PATH=C:\OSGeo4W64\apps\gdal-dev\bin;C:\OSGeo4W64\apps\proj-dev\bin;C:\OSGeo4W64\apps\qgis-test\bin;C:\OSGeo4W64\apps\Python37;C:\OSGeo4W64\apps\Python37\Scripts;C:\OSGeo4W64\apps\qt5\bin;C:\OSGeo4W64\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBem GDAL_DATA=C:\OSGeo4W64\share\gdal GDAL_DRIVER_PATH=C:\OSGeo4W64\bin\gdalplugins GDAL_FILENAME_IS_UTF8=YES GEOTIFF_CSV=C:\OSGeo4W64\share\epsg_csv JPEGMEM=1000000 OSGEO4W_ROOT=C:\OSGeo4W64 PROJ_LIB=C:\OSGeo4W64\share\proj PYTHONHOME=C:\OSGeo4W64\apps\Python37 PYTHONPATH=C:\OSGeo4W64\apps\Python37;C:\OSGeo4W64\apps\Python37\Scripts;C:\OSGeo4W64\apps\qgis-test\python;C:\OSGeo4W64\apps\qgis-test\python\plugins QGIS_PREFIX_PATH=C:\OSGeo4W64\apps\qgis-test\ QT_PLUGIN_PATH=C:\OSGeo4W64\apps\qgis-ltr\qtplugins;C:\OSGeo4W64\apps\qt5\plugins VSI_CACHE=TRUE VSI_CACHE_SIZE=1000000 O4W_QT_PREFIX=C:/OSGeo4W64/apps/Qt5 O4W_QT_BINARIES=C:/OSGeo4W64/apps/Qt5/bin O4W_QT_PLUGINS=C:/OSGeo4W64/apps/Qt5/plugins O4W_QT_LIBRARIES=C:/OSGeo4W64/apps/Qt5/lib O4W_QT_TRANSLATIONS=C:/OSGeo4W64/apps/Qt5/translations O4W_QT_HEADERS=C:/OSGeo4W64/apps/Qt5/include
実行している様子。国土地理院が提供している地理院タイルを表示させています。
最後までご覧頂き、ありがとうございました
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に貼り付けて実行してみてください。
お疲れさまでした。