データ分析メモと北欧生活

旧Untitled Note. データ分析、計量経済・統計とR、水産管理、英語勉強、海外生活などについて備忘録や自分の勉強のOutputの場所として

MENU

日本の排他的経済水域の地図データ


仕事で日本の排他的経済水域の地図データを探していたのだが、日本の国土地理院の数値データ
国土数値情報ダウンロードサービス)などは見当たらなかった。

日本の排他的経済水域は、海上保安庁のウェブサイトではこういう形になっている。

海上保安庁 日本の領海等概念図

しかし、実際はいくつかの係争中水域や共同開発区域が存在する。

Rには、MazamaSpatialUtilというパッケージがあり、EEZの地図データが含まれている。

それによると、日本のEEZと係争中のエリアを区分けすると次のようになる。


# library
pacman::p_load(
  tidyverse,
  sf,
  rnaturalearth,
  patchwork
)


# Use function
`%!in%` <- Negate(`%in%`)


# Japan land
japan_sf <- ne_countries(country = c('japan','russia','south korea','north korea','china','taiwan','united states of america'),scale="large", returnclass = "sf") %>%
  st_transform(crs=4326)


# EEZ from MazamaSpatialUtils
eez_sf=MazamaSpatialUtils::SimpleCountriesEEZ %>% 
  st_as_sf() %>%
  st_transform(crs=4326) %>%
  filter(countryName %in% c("Japan","South Korea","China","Taiwan","Russia")) %>%
  filter(polygonID %!in% c(22,100,189,33)) # remove mainland China

# test plot of EEZ
ggplot(data=eez_sf) +
  geom_sf(fill="lightblue") + 
  geom_sf(data=japan_sf) +
  #geom_sf_label(aes(label=polygonID)) +
  theme_bw() +
  lims(x=c(120,160),y=c(15,48))


見比べてみると、韓国との暫定水域について、日本の概念図では竹島を日本側に含むラインがあるが、このデータでは存在しない事がわかる。
すなわち、「暫定水域」を定義するラインが存在しない。


EEZのデータは、他にMarine Regionsというウェブサイトで取得することができる。

このウェブサイトでは、EEZのデータについてバージョンが3つ存在する。
Version 1は2012年, Version 2は2014年, Version 3は2020年にリリースされている。


このうち、Version 2と3をダウンロードし、MazamaSpatialUtilのデータと比較してみた。

Marine Regions のEEZ Ver 2, Ver 3を重ねたデータ

すると、MazamaSpatialUtilのデータと、Version 3のデータは一致しているが、Version 2とは異なることが示された。


以下が描画に使用したコードである。

eez_sf_v2 = st_read("EEZ_land_union_v2_201410/EEZ_land_v2_201410.shp") %>%
  filter(str_detect(Country,"Japan")|str_detect(Country,"South Korea")|str_detect(Country,"Russia")|str_detect(Country,"China")) %>%
  st_transform(4326)
  
# Marine Regions ver 3
eez_sf_v3 = st_read("EEZ_land_union_v3_202003/EEZ_Land_v3_202030.shp") %>%
  filter(SOVEREIGN1 %in% c("Japan","South Korea","Russia","China")|SOVEREIGN2 %in% c("Japan","South Korea","Russia","China")|SOVEREIGN3 %in% c("Japan","South Korea","Russia","China")) %>%
  st_transform(4326)

# plot of EEZ: version 2 + version 3 comparison around Takeshima
plot_v2_v3_nationwide = ggplot() +
  geom_sf(data=eez_sf_v2,fill="transparent",col="blue") +
  geom_sf(data=eez_sf_v3,fill="transparent",col="red") +
  geom_sf(data=eez_sf,fill="transparent",col="green",linetype=2) +
  geom_sf(data=japan_sf) +
  annotate(geom = "text",label="Marine Regions version 2", x=142,y=20,col="blue",hjust=0) +
  annotate(geom = "text",label="Marine Regions version 3", x=142,y=19,col="red",hjust=0) +
  annotate(geom = "text",label="MazamaSpatialUtils", x=142,y=18,col="green",hjust=0) +
  labs(title="Marine Regions EEZ data: version 2 & 3") +
  lims(x=c(120,158),y=c(15,48)) +
  theme_minimal()

plot_v2_v3_nationwide


日本海を拡大すると、次のようになる。


# plot of EEZ: version 2 + version 3 comparison around Takeshima island
plot_v2_v3 = ggplot() +
  geom_sf(data=eez_sf_v2,fill="transparent",col="blue") +
  geom_sf(data=eez_sf_v3,fill="transparent",col="red") +
  geom_sf(data=eez_sf,fill="transparent",col="green",linetype=2) +
  geom_sf(data=japan_sf) +
  annotate(geom = "text",label="Marine Regions version 2", x=137,y=33,col="blue",hjust=0) +
  annotate(geom = "text",label="Marine Regions version 3", x=137,y=32.5,col="red",hjust=0) +
  annotate(geom = "text",label="MazamaSpatialUtils", x=137,y=32,col="green",hjust=0) +
  labs(title="Marine Regions EEZ data: version 2 & 3") + 
  lims(x=c(125,145),y=c(32,42)) +
  theme_minimal()

plot_v2_v3 


Version 2では、韓国との暫定水域とみられるものがデータとして記録されている。

そのため、冒頭の「日本の領海等概念図」に近い地図データを得るためにはMarine RegionsのVersion 2を利用すると可能となる。



 # 日本が入るポリゴンの抽出
  eez_sf1= st_read("data/raw/EEZ_land_union_v2_201410/EEZ_land_v2_201410.shp") %>%
    filter(str_detect(Country,"Japan")) %>%
    st_transform(4326)
  
 # ポリゴンを結合
  eez_sf2 = eez_sf1%>%
    st_union()
  
      # test plot of EEZ (polygon separated)
      ggplot() +
        geom_sf(data=eez_sf1,fill="lightblue") +
        geom_sf(data=japan_sf) +
        geom_sf_label(data=eez_sf1,aes(label=OBJECTID)) +
        lims(x=c(120,157),y=c(18,48)) +
        theme_minimal()

      # test plot of EEZ (combined)
      ggplot() +
        geom_sf(data=eez_sf2,fill="lightblue") +
        geom_sf(data=japan_sf) +
        lims(x=c(120,157),y=c(18,48)) +
        theme_minimal()


なぜVersion 2からVersion 3への変更について、境界線がこのようになっているかはわからない。