1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rを用いてラスターデータを結合する

Posted at

はじめに

今回はラスターデータの結合を行います。
前回作成したマップでは神奈川県の西方が切れていました。理由はASTER GDEMからダウンロードする際のエリアが異っていたためです。
前回から追加したコードは1)ラスターデータを結合する、2)神奈川県のshpファイルをもとにマスクするの2点です。

【前回記事】

コード全体像

library(rayshader)
library(raster)
library(sf)
library(ggplot2)
# Combine RasterFile
library(terra)

# Package for colorpallet
library(viridis) 
library(cptcity)

library(dplyr)

#--------------------------
# DRAFT: COMBINE RASTER FILE
#--------------------------
# Merging raster in R
# https://gis.stackexchange.com/questions/407623/merging-raster-in-r
# 同一フォルダ内にあるTifファイルのリストを作成
img <- list.files("./0003_DEM/", "tif$", full.names=TRUE) # the $ exludes aux-files
ic <- sprc(lapply(img, rast))
r <- mosaic(ic)

#--------------------------
# DRAFT: IMPORT RASTER FILE
#--------------------------
kanagawa = raster(r)
kanagawa_mat = raster_to_matrix(kanagawa)
st_crs(kanagawa)

kanagawa_small = resize_matrix(kanagawa_mat,0.25)

# Output Map
kanagawa_small %>% 
  height_shade() %>% 
  plot_map()

#--------------------------
# DRAFT: IMPORT VECTOR FILE
#--------------------------
## read_sf
kanagawa_sf <- sf::read_sf("./000_map/kanagawa_N03-20220101_14_GML/N03-22_14_220101.shp",
                           options= c("ENCODING=CP932"),
                           quiet = FALSE)
## CRSの確認
crs(kanagawa_sf)
## CRSの変換
kanagawa_sf <- st_transform(kanagawa_sf, crs = proj4string(kanagawa))

## crop
kanagawa_crop <- crop(kanagawa, extent(kanagawa_sf))
kanagawa_all <- mask(kanagawa_crop, kanagawa_sf)
crs(kanagawa_all)

## Check that it worked
plot(kanagawa_all)
kanagawa_all

#--------------------------
# DRAFT: OUTPUT MAP
#--------------------------

# ggplotで描画するため、tibble形式に変換
kanagawa_all_dem <-
  kanagawa_all %>%   # ラスターDEM
  as.data.frame( xy = TRUE ) %>% # rasterをデータフレームに変換
  tibble::as_tibble() %>% # tipple形式に変換
  dplyr::rename("Elevation" = Band.1)  # 標高値をElevationにリネーム

kanagawa_only <- dplyr::filter(kanagawa_sf, N03_001 == "神奈川県")

# Map出力
ggplot() +
  xlab("longitude") +
  ylab("latitude") +
  theme_minimal() +
  geom_raster(data = kanagawa_all_dem ,   # 標高ラスタ
              aes(x, y, fill = Elevation),
              hjust = 0, vjust = 0) +
  scale_fill_gradientn(colours = cptcity::cpt(pal = "tp_tpushum" , n = 100), na.value = NA, limits = c(0, 1750)) + # カラーパレットにcptを利用
  #scale_fill_continuous(na.value = "transparent") +
  #geom_contour(data = kanagawa_all_dem, aes(x, y, z = Elevation), col = "gray70", size = 0.2) +  # 等高線描画
  geom_sf(data = kanagawa_sf , col = "gray40" , fill = NA, lwd = 0.3) +
  scale_colour_viridis(option = "cividis" , discrete =TRUE ) +
  
  guides(fill="none") 

完成版

kanagawa_baseMap.png

STEP1 必要なパッケージ

事前にRに以下のパッケージをインストールします。
terraパッケージはラスターデータとベクトルデータを用いた空間データ解析のためのパッケージです。今回扱ったラスターデータの結合の他にもリモートセンシングの分析も行うことができます。

install.packages("terra")

STEP2 ラスターデータの結合

ラスターデータの結合にあたっては以下のサイトを参考にしました。

同一フォルダ内にあるTiffファイルのリストを作成し、結合することができます。
今回は2つのTiffファイルでしたが、複数のファイルを結合することができます。

# Merging raster in R
# https://gis.stackexchange.com/questions/407623/merging-raster-in-r
# 同一フォルダ内にあるTifファイルのリストを作成
img <- list.files("./0003_DEM/", "tif$", full.names=TRUE) # the $ exludes aux-files
ic <- sprc(lapply(img, rast))
r <- mosaic(ic)

結合したラスターデータ

kanagawa = raster(r)
kanagawa_mat = raster_to_matrix(kanagawa)
st_crs(kanagawa)

kanagawa_small = resize_matrix(kanagawa_mat,0.25)

# Output Map
kanagawa_small %>% 
  height_shade() %>% 
  plot_map()

元データ
ASTGTMV003_N35E138_dem.tif
Rplot01.png
ASTGTMV003_N35E138_dem.tif
Rplot02.png

結合したデータ
kantoAndFuji.png

STEP3 マスクの設定

## crop
kanagawa_crop <- crop(kanagawa, extent(kanagawa_sf))
kanagawa_all <- mask(kanagawa_crop, kanagawa_sf)
crs(kanagawa_all)

crop()は特定の領域に画像を切り取るために用います。今回は神奈川県が含まれる緯度経度でクロップしています。
また、mask()は特定の形状のみ表示します。今回は作成したshpファイルから表示する形状を設定しました。

その上で地図を作成しました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?