海洋占总面积的百分比以及每个纬度陆地的复杂性

问题描述 投票:0回答:1

我有兴趣获得一个线图,显示每个纬度的海洋(即海洋水体,其中包括黑海等内海)占总表面积的比例。以及量化每个纬度陆地块的复杂性。但我不确定从哪里或如何开始,因为我通常不使用地图,而且谷歌也没有特别有洞察力。

对于获取每个纬度的海洋占总表面积的比例(或百分比)的第一部分,我有兴趣重新创建纬度图上的陆地公里数,但作为比例而不是绝对值:https:// gis.stackexchange.com/questions/190753/using-gis-to-define-average-land-distance-from-equator

这看起来与第一个图非常相似:http://www.radicalcartography.net/index.html?histland

不确定从哪里开始,尽管可能的方法是通过指定跨越每个纬度的整个多边形来计算面积。

对于第二部分,我想这应该是在每个纬度上画一条线并计算该线与世界地图形状文件的交点数量?这样,在 70°N 处的交叉点就会比赤道处少。

就投影而言,我并不挑剔,并且会对最准确的内容感到满意,并会接受任何建议。

我希望能够在 R 中执行上述操作,但也不介意在 Python 或 GIS 中执行上述操作,如果这样做更合乎逻辑的话。

感谢您提前提供的提示和建议!

r maps geospatial spatial geo
1个回答
0
投票

借用https://github.com/gkaramanis/xkcd-map创建一个包含地球陆地坐标的数据框:

library(rnaturalearth)
library(terra)
library(tidyverse)

world <- ne_countries(scale = 50, type = "countries", returnclass = "sf") %>%
  rmapshaper::ms_dissolve()
r <- terra::rast(world, nrows = 1000, ncols = 1000) # adj. for higher res. if wanted
rr <- rasterize(terra::vect(world), r)
rr_df <- terra::as.data.frame(rr, xy = TRUE)

我们可以绘制此图来确认它是什么:地球上有 343k 个(在此分辨率下)点,其中有陆地。这些是未投影的点,因此外观相当扭曲(例如,南极点的显示宽度与赤道一样大),但适合此目的。

ggplot(rr_df, aes(x,y, color = layer)) +
  geom_point(size = 0.1) +
  scale_y_continuous(breaks = scales::breaks_width(10))

在此分辨率下,地球表面在 1000 个纬度的每个纬度进行 1000 次采样,因此为了获得我们可以使用的土地份额:

rr_df %>%
  count(y) %>%
  ggplot(aes(n/1000, y)) +
  geom_area(orientation = "y") +
  scale_y_continuous(breaks = scales::breaks_width(10)) +
  scale_x_continuous(labels = scales::percent_format())

© www.soinside.com 2019 - 2024. All rights reserved.