The fude package provides utilities to facilitate the handling of the Fude Polygon data downloadable from the Ministry of Agriculture, Forestry and Fisheries (MAFF) website. The word “fude” is a Japanese counter suffix used to denote land parcels.
Fude Polygon data can now be downloaded from two different MAFF websites (both available only in Japanese):
GeoJSON format:
https://open.fude.maff.go.jp
FlatGeobuf format:
https://www.maff.go.jp/j/tokei/census/shuraku_data/2020/mb/
You can install the released version of fude from CRAN with:
install.packages("fude")Or the development version from GitHub with:
# install.packages("devtools")
devtools::install_github("takeshinishimura/fude")There are two ways to load Fude Polygon data, depending on how the data was obtained:
library(fude)
d <- read_fude("~/2022_38.zip")d2 <- read_fude(pref = "愛媛")ls_fude(d)
#> name issue_year local_government_cd n pref_name city_name
#> 1 2022_382019 2022 382019 72045 愛媛県 松山市
#> 2 2022_382027 2022 382027 43396 愛媛県 今治市
#> 3 2022_382035 2022 382035 61683 愛媛県 宇和島市
#> 4 2022_382043 2022 382043 37753 愛媛県 八幡浜市
#> 5 2022_382051 2022 382051 15734 愛媛県 新居浜市
#> 6 2022_382060 2022 382060 63244 愛媛県 西条市
#> 7 2022_382078 2022 382078 37570 愛媛県 大洲市
#> 8 2022_382108 2022 382108 33302 愛媛県 伊予市
#> 9 2022_382132 2022 382132 34781 愛媛県 四国中央市
#> 10 2022_382141 2022 382141 73676 愛媛県 西予市
#> 11 2022_382159 2022 382159 24235 愛媛県 東温市
#> 12 2022_383562 2022 383562 2195 愛媛県 上島町
#> 13 2022_383864 2022 383864 22823 愛媛県 久万高原町
#> 14 2022_384011 2022 384011 8634 愛媛県 松前町
#> 15 2022_384020 2022 384020 7042 愛媛県 砥部町
#> 16 2022_384224 2022 384224 27131 愛媛県 内子町
#> 17 2022_384429 2022 384429 23429 愛媛県 伊方町
#> 18 2022_384844 2022 384844 9089 愛媛県 松野町
#> 19 2022_384887 2022 384887 16550 愛媛県 鬼北町
#> 20 2022_385069 2022 385069 22931 愛媛県 愛南町
#> city_romaji
#> 1 Matsuyama-shi
#> 2 Imabari-shi
#> 3 Uwajima-shi
#> 4 Yawatahama-shi
#> 5 Niihama-shi
#> 6 Saijo-shi
#> 7 Ozu-shi
#> 8 Iyo-shi
#> 9 Shikokuchuo-shi
#> 10 Seiyo-shi
#> 11 Toon-shi
#> 12 Kamijima-cho
#> 13 Kumakogen-cho
#> 14 Matsumae-cho
#> 15 Tobe-cho
#> 16 Uchiko-cho
#> 17 Ikata-cho
#> 18 Matsuno-cho
#> 19 Kihoku-cho
#> 20 Ainan-choNote: This feature is available only for data obtained from GeoJSON (Obtaining Data #1).
Convert local government codes into Japanese municipality names for easier management.
dren <- rename_fude(d)
names(dren)
#> [1] "2022_松山市" "2022_今治市" "2022_宇和島市" "2022_八幡浜市"
#> [5] "2022_新居浜市" "2022_西条市" "2022_大洲市" "2022_伊予市"
#> [9] "2022_四国中央市" "2022_西予市" "2022_東温市" "2022_上島町"
#> [13] "2022_久万高原町" "2022_松前町" "2022_砥部町" "2022_内子町"
#> [17] "2022_伊方町" "2022_松野町" "2022_鬼北町" "2022_愛南町"You can also rename the columns to Romaji instead of Japanese.
dren <- d |> rename_fude(suffix = TRUE, romaji = "title")
names(dren)
#> [1] "2022_Matsuyama-shi" "2022_Imabari-shi" "2022_Uwajima-shi"
#> [4] "2022_Yawatahama-shi" "2022_Niihama-shi" "2022_Saijo-shi"
#> [7] "2022_Ozu-shi" "2022_Iyo-shi" "2022_Shikokuchuo-shi"
#> [10] "2022_Seiyo-shi" "2022_Toon-shi" "2022_Kamijima-cho"
#> [13] "2022_Kumakogen-cho" "2022_Matsumae-cho" "2022_Tobe-cho"
#> [16] "2022_Uchiko-cho" "2022_Ikata-cho" "2022_Matsuno-cho"
#> [19] "2022_Kihoku-cho" "2022_Ainan-cho"Download the agricultural community boundary data, which corresponds to the Fude Polygon data, from the MAFF website: https://www.maff.go.jp/j/tokei/census/shuraku_data/2020/ma/ (available only in Japanese).
b <- get_boundary(d)You can easily combine Fude Polygons with agricultural community boundaries to create enriched spatial analyses or maps.
db <- combine_fude(d, b, city = "松山市", rcom = "由良|北浦|鷲ケ巣|門田|馬磯|泊|御手洗|船越")
library(ggplot2)
ggplot() +
geom_sf(data = db$fude, aes(fill = rcom_name), alpha = .8) +
guides(fill = guide_legend(reverse = TRUE, title = "興居島の集落別耕地")) +
theme_void() +
theme(legend.position = "bottom") +
theme(text = element_text(family = "Hiragino Sans"))
出典:農林水産省「筆ポリゴンデータ(2022年度公開)」および「農業集落境界データ(2020年度)」を加工して作成。
db$fude: Automatically assigns polygons on the
boundaries to a community.db$fude_split: Provides cleaner boundaries, but polygon
data near community borders may be divided.library(patchwork)
fude <- ggplot() +
geom_sf(data = db$fude, aes(fill = rcom_name), alpha = .8) +
theme_void() +
theme(legend.position = "none") +
coord_sf(xlim = c(132.658, 132.678), ylim = c(33.887, 33.902))
fude_split <- ggplot() +
geom_sf(data = db$fude_split, aes(fill = rcom_name), alpha = .8) +
theme_void() +
theme(legend.position = "none") +
coord_sf(xlim = c(132.658, 132.678), ylim = c(33.887, 33.902))
fude + fude_split
If you need to adjust this automatic assignment, you will need to write custom code. The rows that require attention can be identified with the following command.
library(dplyr)
library(sf)
db$fude |>
filter(polygon_uuid %in% (db$fude_split |> filter(duplicated(polygon_uuid)) |> pull(polygon_uuid))) |>
st_drop_geometry() |>
select(polygon_uuid, kcity_name, rcom_name, rcom_romaji) |>
head()
#> polygon_uuid kcity_name rcom_name rcom_romaji
#> 1 8085bc47-9af5-440f-89e9-f188d3b95746 興居島村 泊 Tomari
#> 2 26920da0-b63e-4994-a9eb-175e2982fe21 興居島村 門田 Kadota
#> 3 ac2e7293-6c2f-4feb-a95f-4729dc8d0aec 興居島村 由良 Yura
#> 4 ea130038-7035-4cf3-b71c-091783090d74 興居島村 船越 Funakoshi
#> 5 4aba8229-1b14-4eab-8a91-e10d9e841180 興居島村 船越 Funakoshi
#> 6 156a3459-25cb-494c-824f-9ba6b0fb6f23 興居島村 由良 YuraThe FlatGeobuf format offers a more efficient alternative to GeoJSON. A notable feature of this format is that each record already includes an accurately assigned agricultural community code.
db2 <- combine_fude(d2, b, city = "松山市", rcom = "由良|北浦|鷲ケ巣|門田|馬磯|泊|御手洗|船越")
ggplot() +
geom_sf(data = db2$fude, aes(fill = rcom_name), alpha = .8) +
guides(fill = guide_legend(reverse = TRUE, title = "興居島の集落別耕地")) +
theme_void() +
theme(legend.position = "bottom") +
theme(text = element_text(family = "Hiragino Sans"))
出典:農林水産省「筆ポリゴンデータ(2025年度公開)」および「農業集落境界データ(2020年度)」を加工して作成。
Data enables extraction based on city names, former city names, and agricultural community names.
Note: This feature is available only for data obtained from FlatGeobuf (Obtaining Data #2).
extract_fude(d2, city = "松山市", kcity = "興居島")
#> Simple feature collection with 1691 features and 6 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: 132.6373 ymin: 33.87055 xmax: 132.6991 ymax: 33.92544
#> Geodetic CRS: WGS 84
#> First 10 features:
#> polygon_uuid land_type issue_year point_lng
#> 1 5a72b4ef-b5f4-465e-9948-e93142819676 200 2025 132.6446
#> 2 c69d86d5-1fb2-4528-a87b-155d88260964 200 2025 132.6447
#> 3 627134ea-919c-4769-bd94-be16cb549c5b 200 2025 132.6445
#> 4 f2631019-d16e-42f9-8501-75f26515ca9a 200 2025 132.6441
#> 5 8fedb70d-4bb9-4447-879b-a0eeabc22915 200 2025 132.6437
#> 6 cd235cdf-da51-4ead-ad50-efc6ea1c84cf 200 2025 132.6434
#> 7 5853b7a1-62c3-4973-9e79-cabd3da6cdc7 200 2025 132.6436
#> 8 5e090780-6d16-4b9e-aca9-c56229851bfc 200 2025 132.6420
#> 9 90de4abf-e972-4031-987f-f3391b04b03c 200 2025 132.6421
#> 10 e5ade914-c803-42d1-9fa8-0921b98d69b8 200 2025 132.6423
#> point_lat key geometry
#> 1 33.88813 3820102004 MULTIPOLYGON (((132.6446 33...
#> 2 33.88768 3820102004 MULTIPOLYGON (((132.6444 33...
#> 3 33.88746 3820102004 MULTIPOLYGON (((132.6448 33...
#> 4 33.88755 3820102004 MULTIPOLYGON (((132.6442 33...
#> 5 33.88740 3820102004 MULTIPOLYGON (((132.6437 33...
#> 6 33.88729 3820102004 MULTIPOLYGON (((132.6434 33...
#> 7 33.88770 3820102004 MULTIPOLYGON (((132.6435 33...
#> 8 33.88782 3820102004 MULTIPOLYGON (((132.6418 33...
#> 9 33.88792 3820102004 MULTIPOLYGON (((132.6422 33...
#> 10 33.88765 3820102004 MULTIPOLYGON (((132.6422 33...You can explore Fude Polygon data interactively.
library(shiny)
s <- shiny_fude(db, rcom = TRUE)
# shiny::shinyApp(ui = s$ui, server = s$server)You can read data from the MAFF database (地域の農業を見て・知って・活かすDB).
b1 <- get_boundary(d2, path = "~", boundary_type = 1, quiet = TRUE)
b2 <- get_boundary(d2, path = "~", boundary_type = 2, quiet = TRUE)
b3 <- get_boundary(d2, path = "~", boundary_type = 3, quiet = TRUE)
m3 <- read_ikasudb(b3, "~/IA0001_2023_2020_38.xlsx")
m1 <- b1 |>
read_ikasudb("~/SA1009_2020_2020_38.xlsx") |>
read_ikasudb("~/GC0001_2019_2020_38.xlsx")mapview
packageIf you want to use mapview(), do the following.
db1 <- combine_fude(d, b, city = "伊方町")
db2 <- combine_fude(d, b, city = "八幡浜市")
db3 <- combine_fude(d, b, city = "西予市", kcity = "三瓶|二木生|三島|双岩")
db <- bind_fude(db1, db2, db3)
library(mapview)
mapview::mapview(db$fude, zcol = "rcom_name", layer.name = "農業集落名")