提问人:L Tyrone 提问时间:11/15/2023 更新时间:11/15/2023 访问量:22
按国家/地区将 GLOBathy 数据集中的所有数据复制到新文件夹
Copy all data from the GLOBathy dataset by country to a new folder
问:
GLOBathy是一个数据集,其中包含地球上几乎所有湖泊的水深测量(此链接提供15.58GB .zip)。它包含 1.4m+ 记录,分为多个子目录。有关联的属性表,记录了每个文件所属的国家/地区(链接)。
从子目录中提取数据有些麻烦,因为文件名相对于它们所属的国家/地区没有“直观”的顺序。此外,我发现 GIS 程序在从多个目录中提取数据时速度非常慢,并且通常需要在某种程度上进行循环。
我自我回答这个问题是为了:a)为可能遇到此问题的其他人提供解决方案;b)看看是否有人知道更有效的方法。
答:
1赞
L Tyrone
11/15/2023
#1
这是一种按国家/地区从 GLOBathy 数据中提取文件的方法。我已经对代码进行了注释,如果需要澄清或发现问题,请发表评论:
library(dplyr)
# Load the GLOBathy_basic_parameters(ALL_LAKES).csv file
GLOBathy_all <- read.csv("C:/GLOBathy_basic_parameters/GLOBathy_basic_parameters(ALL_LAKES).csv",
stringsAsFactors = FALSE)
# Define country of interest
country_sub <- "New Zealand"
# Define output directory (must already exist)
output_folder <- "C:/New Zealand"
# Extract records from GLOBathy_all that match country_sub and create associated file paths
GLOBathy_sub <- GLOBathy_all %>%
filter(Country == country_sub) %>% # Filter by country
mutate(temp1 = ifelse(Hylak_id > 1400000, # Get upper value of sub folder
nrow(GLOBathy_all),
paste0(ceiling(Hylak_id / 100000) * 100, "K")),
temp2 = ifelse(Hylak_id <= 100000, # Round Hylak_id down to nearest 100000, two steps required for cases where Hylak_id == upper threshhold of folder names
1,
floor(Hylak_id / 100000) * 100000),
temp3 = ifelse(temp2 == 1, # Get lower value of sub folder
paste0(1, "_"),
ifelse(temp2 > 100000 & temp2 == Hylak_id, # If value == folder threshhold, subtract 100000
paste0((temp2 - 100000) / 1000, "K_"),
paste0(temp2 / 1000, "K_"))),
temp4 = ceiling(Hylak_id / 1000) * 1000, # Get upper value of sub sub folder
temp5 = paste0(temp4 - 999, "_"), # Get lower value of sub sub folder
folders = paste0("C:/Bathymetry_Rasters/", # Create folder path
temp3, temp1, "/", temp5, temp4),
files = paste0(folders, "/", Hylak_id, "_bathymetry.tif")) %>% # Create file path
select(-contains("temp"))
# Copy files to new directory
file.copy(GLOBathy_sub$files, output_folder)
评论
1赞
Chris
11/15/2023
NATURE:GLOBathy,2022 年全球湖泊测深数据集,开放获取。我需要在仅解压缩部分内容的背景下探索这个宝库,因为我的 HD 已接近其有用数据卷寿命的尽头。您的上述内容提供了考虑导航的方法,因为文章中的元数据有些信息不足。欢迎来到 1300+
0赞
L Tyrone
11/15/2023
@Chris哈哈谢谢。完全了解存储问题,我目前正在提取加拿大的数据,我可怜的 500GB SSD 已经很满了。是的,元数据绝对是平均水平。但是,GLOBathy_basic_parameters(ALL_LAKES).csv 具有湖泊倾倒点的纬度/经度,因此您可以集成包以进一步缩小搜索区域并排除一定大小的湖泊。sf
0赞
Chris
11/15/2023
你对水文学感兴趣吗?鉴于你在社会(权力)流行病学方面的研究,福柯潜伏着。虽然我承认我喜欢水文学,但这种方式让执业水文学家感到畏缩,因为我认为一维流程图类似于早期的眼动追踪图。
0赞
L Tyrone
11/15/2023
想要创建一些山体阴影(lakeshades?)来表示文化地图基础层中的湖泊,我这样做是为了好玩。我打算对所有湖泊要素的符号系统进行标准化,而不考虑相对高程,例如,所有湖泊的表面高程均为 0m。确实尝试使用 etopo 数据和湖泊多边形文件创建我自己的文件,但我正在捕获湖泊多边形之外的高程,这使得我的方法不切实际。使用 GLOBathy 最终变得更加省时和可靠
0赞
L Tyrone
11/15/2023
仅供参考,使用我的 Win10 机器的 SSD,复制加拿大湖文件(n = 879987,7.71GB)需要 2.216754 小时
评论