---
title: "How to use mesh cord in R"
author: "Shinya Uryu"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{How to use mesh cord in R}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

## 概要

**jpmesh**パッケージは、日本国内で利用される「地域メッシュ（メッシュコード）」をRから容易に利用可能にするパッケージです。地域メッシュとは、日本国土を緯度・経度により方形の小地域区画に細分することで、同一の基準による統計調査などの結果を得ることが可能となります。80kmから100mまでのメッシュコードに対応し、メッシュコードと緯度経度座標との相互変換を行います。

**jpmesh**の主な機能として、「緯度経度からの地域メッシュへの変換」、「地域メッシュからの緯度経度の取得」、「都道府県単位やleaflet上へのマッピング」があります。なお地域メッシュと緯度経度の変換の基礎は[竹中明夫さんのRコード](http://takenaka-akio.org/etc/meshcode/r_code.html)が基礎となっています。ここではその使い方を紹介します。

パッケージをインストールしたら環境内で利用可能にするため、読み込みを行いましょう。また、このサンプルページで用いるパッケージも同時に読み込むようにしておきます。

```{r, warning = FALSE, message = FALSE}
library(jpmesh)
library(sf)
library(purrr)
```

#### 緯度経度と地域メッシュの相互変換

`mesh_to_coords()`関数を利用し、緯度経度から地域メッシュを得ることができます。この関数では11桁までの細分地域メッシュに対応し、メッシュの中心座標とメッシュの範囲を示す値を返します。

```{r}
mesh_to_coords(5133)
mesh_to_coords(513377)
mesh_to_coords(51337783)
```

得られるメッシュの領域データを使ってメッシュのポリゴンを作成する例です。

```{r}
export_mesh(5133778311)
```


緯度経度から地域メッシュを得ることもできます。これには`coords_to_mesh()`を利用します。引数に緯度と経度を与え、取得対象のメッシュコードの大きさを指定します。メッシュコードの大きさの初期値は標準地域メッシュ、すなわち1kmメッシュです。

```{r}
coords_to_mesh(133, 34)
coords_to_mesh(133, 34, mesh_size = 80)
coords_to_mesh(133, 34, mesh_size = 0.125)
```

また対象の地域メッシュ内に含まれる緯度経度からスケールダウンした地域メッシュや、隣接するメッシュコードを得ることができます。

```{r}
# 80kmメッシュに含まれる10kmメッシュを返します
coords_to_mesh(133, 34, mesh_size = 80) %>% 
  fine_separate()

# 隣接するメッシュコードを同じスケールで返します
coords_to_mesh(133, 34, mesh_size = 80) %>% 
  neighbor_mesh()
coords_to_mesh(133, 34, 0.5) %>% 
  neighbor_mesh()
```

#### 都道府県単位での基準地域メッシュの描画

**jpmesh**では、都道府県および市区町村名を含んだ基準地域メッシュのデータセットを用意しています。これを利用することで、都道府県や市区町村単位での地域メッシュを扱うことができます。

```{r, results = "asis"}
administration_mesh(code = 33, to_mesh_size = 80) %>% 
  head() %>% 
  knitr::kable(format = "markdown")
```

## Session Information

```{r, sessioninfo}
sessionInfo()
```
