RQGISを利用してみる

RQGISパッケージを利用することでQGISの関数を利用することができる。

インストール方法はvignetteにまとめられているので、そちらを参考に進めるとインストールできる。

ger <- raster::getData(name = "GADM", country = "DEU", level = 1)
library(sp)
library(tidyverse)
library(sf)
library(RQGIS)
set_env()
Trying to find QGIS in C:/OSGEO4~1.
$root
[1] "C:\\OSGeo4W64"

$qgis_prefix_path
[1] "C:\\OSGeo4W64\\apps\\qgis-ltr"

$python_plugins
[1] "C:\\OSGeo4W64\\apps\\qgis-ltr\\python\\plugins"

必要とするアルゴリズムを検索する場合にはfind_algoristhms()を利用する。 検索の際には正規表現を利用することができる。

find_algorithms(search_term = "(polygon)(centroid)")
[1] "Polygon centroids------------------------------------>qgis:polygoncentroids"
[2] "Polygon centroids------------------------------------>saga:polygoncentroids"
find_algorithms(search_term = "(split)(line)")
[1] "Split lines with lines------------------------------->qgis:splitlineswithlines"

使い方を確認したい場合にはget_usage()を利用する。

get_usage(alg = "qgis:polygoncentroids")
ALGORITHM: Polygon centroids
    INPUT_LAYER <ParameterVector>
    OUTPUT_LAYER <OutputVector>

必要なパラメータを確認するにはget_args_man()を利用する。

params <- get_args_man(alg = "qgis:polygoncentroids")
params
$INPUT_LAYER
[1] "None"

$OUTPUT_LAYER
[1] "None"

実際にqgisアルゴリズムを実行する。

params$INPUT_LAYER <- ger
params$OUTPUT_LAYER <- file.path(tempdir(), "get_coords.shp")
out <- run_qgis(alg = "qgis:polygoncentroids",
                INPUT_LAYER = ger,
                OUTPUT_LAYER = file.path(tempdir(), "ger_coords.shp"),
                load_output = T)

出力結果を確認する。qgis:polygoncentroid の場合はsfオブジェクトで結果が得られる。

class(out)
[1] "sf"         "tbl_df"     "tbl"        "data.frame"
plot(ger)
plot(out, add = T, col = "blue")

f:id:jerrarrdan:20171016212513p:plain

日本語を含むデータがある場合にはうまく実行できないので注意する必要がある。 実行できたとしてもデータフレームないの文字が文字化けしているので、データを確認すること。文字化けを回避する方法ご存知の方がいましたらコメントお願いいたします。