中国各区县距离海岸线和港口的距离

上次分享了中国各个城市距离海岸线和港口的距离,不少小伙伴提到自己还需要各个区县距离海岸线和港口的距离。今天就再帮培训班的小伙伴计算下各个区县距离海岸线和港口的距离。

各个区县质心距离海岸线的距离

首先我们需要一份海岸线的矢量数据:

计算城市质心可以使用城市的矢量数据,在 R 语言里面计算质心可以使用 sf 包的 st_centroid() 函数:

# 计算各个区县的质心
county %>%
st_centroid() -> county_centroid
然后就可以计算各个城市的质心距离海岸线的距离了,使用 sf 的 st_distance() 包即可:

county_centroid %>%
mutate(dist = st_distance(county_centroid, hax)[,1],
dist = units::set_units(dist, km),
dist = as.numeric(dist)) -> county_centroid
county_centroid

#> Simple feature collection with 2900 features and 8 fields
#> geometry type: POINT
#> dimension: XY
#> bbox: xmin: 74.90689 ymin: 16.84913 xmax: 134.2809 ymax: 52.93326
#> geographic CRS: WGS 84
#> # A tibble: 2,900 x 9
#> 县代码 县 省代码 省 市代码 市 类型
#> * <dbl> <chr> <dbl> <chr> <dbl> <chr> <chr>
#> 1 110101 东城区 110000 北京市 110000 北京市 市辖区
#> 2 110102 西城区 110000 北京市 110000 北京市 市辖区
#> 3 110105 朝阳区 110000 北京市 110000 北京市 市辖区
#> 4 110106 丰台区 110000 北京市 110000 北京市 市辖区
#> 5 110107 石景山区 110000 北京市 110000 北京市 市辖区
#> 6 110108 海淀区 110000 北京市 110000 北京市 市辖区
#> 7 110109 门头沟区 110000 北京市 110000 北京市 市辖区
#> 8 110111 房山区 110000 北京市 110000 北京市 市辖区
#> 9 110112 通州区 110000 北京市 110000 北京市 市辖区
#> 10 110113 顺义区 110000 北京市 110000 北京市 市辖区
#> # … with 2,890 more rows, and 2 more variables:
#> # geometry <POINT [°]>, dist <dbl>

各个区县质心距离海岸线的最短距离如下图展示:

各个区县质心距离港口的距离

方法类似。港口数据来源于交通部发布的《全国沿海港口布局规划》,其中等级 1 表示主要港口。

各个区县质心距离最近港口的距离如下图展示:

上图中红色的点表示港口的位置。

另外大家可以还需要各个区县距离各个港口的距离,我还准备了一份距离矩阵数据(xlsx 和 dta 格式的数据):

bind_cols(
county %>%
st_drop_geometry(),
gkdist %>%
as_tibble() %>%
mutate(across(everything(), ~units::set_units(.x, "km"))) %>%
mutate_all(as.numeric) %>%
set_names(gk$港口名称)
)

#> # A tibble: 2,900 × 51
#> 县代码 县 省代码 省 市代码 市 上海港 大连港
#> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl>
#> 1 110101 东城… 110000 北京… 110000 北京… 1121. 464.
#> 2 110102 西城… 110000 北京… 110000 北京… 1123. 468.
#> 3 110105 朝阳… 110000 北京… 110000 北京… 1121. 456.
#> 4 110106 丰台… 110000 北京… 110000 北京… 1120. 476.
#> 5 110107 石景… 110000 北京… 110000 北京… 1133. 484.
#> 6 110108 海淀… 110000 北京… 110000 北京… 1139. 482.
#> 7 110109 门头… 110000 北京… 110000 北京… 1155. 518.
#> 8 110111 房山… 110000 北京… 110000 北京… 1126. 507.
#> 9 110112 通州… 110000 北京… 110000 北京… 1098. 435.
#> 10 110113 顺义… 110000 北京… 110000 北京… 1133. 445.
#> # ℹ 2,890 more rows
#> # ℹ 43 more variables: 营口港 <dbl>, 丹东港 <dbl>,
#> # 锦州港 <dbl>, 天津港 <dbl>, 唐山港 <dbl>,
#> # 秦皇岛港 <dbl>, 黄骅港 <dbl>, 青岛港 <dbl>,
#> # 烟台港 <dbl>, 威海港 <dbl>, 日照港 <dbl>,
#> # 宁波港 <dbl>, 舟山港 <dbl>, 温州港 <dbl>,
#> # 台州港 <dbl>, 嘉兴港 <dbl>, 苏州港 <dbl>, …
#> # ℹ Use `print(n = ...)` to see more rows

点击这里跳转到 RStata 短书平台获取附件:中国各区县距离海岸线和港口的距离

评论