gpt4 book ai didi

r - 从 R 中的经纬度点获取国家(和大陆)

转载 作者:行者123 更新时间:2023-12-03 23:32:01 26 4
gpt4 key购买 nike

作为 a question I posted yesterday 的后续行动, R 中是否有包/函数可以为我提供由经度和纬度定义的点所在的国家(和大陆)? 与已完成的事情类似的事情 here in MatLab.

数据框看起来像这样......

Point_Name              Longitude   Latitude
University of Arkansas 36.067832 -94.173655
Lehigh University 40.601458 -75.360063
Harvard University 42.379393 -71.115897

我想输出上面添加了国家和大陆列的数据框。 作为额外奖励 , 一个列有美国各州的人在美国(和“其他”为美国以外的人)?

最佳答案

要获得大陆,您可以修改 coords2country 的最后一行函数使用 rworldmap从这里 answer创建一个 coords2continent功能如下图。选择您想要 6 大陆还是 7 大陆模型。我会考虑把这段代码放进rworldmap .

library(sp)
library(rworldmap)

# The single argument to this function, points, is a data.frame in which:
# - column 1 contains the longitude in degrees
# - column 2 contains the latitude in degrees
coords2continent = function(points)
{
countriesSP <- getMap(resolution='low')
#countriesSP <- getMap(resolution='high') #you could use high res map from rworldxtra if you were concerned about detail

# converting points to a SpatialPoints object
# setting CRS directly to that from rworldmap
pointsSP = SpatialPoints(points, proj4string=CRS(proj4string(countriesSP)))


# use 'over' to get indices of the Polygons object containing each point
indices = over(pointsSP, countriesSP)

#indices$continent # returns the continent (6 continent model)
indices$REGION # returns the continent (7 continent model)
#indices$ADMIN #returns country name
#indices$ISO3 # returns the ISO3 code
}

这是一个测试。
points = data.frame(lon=c(0, 90, -45, -100, 130), lat=c(52, 40, -10, 45, -30 ))

coords2continent(points)
#[1] Europe Asia South America North America Australia
coords2country(points)
#[1] United Kingdom China Brazil United States of America Australia

关于r - 从 R 中的经纬度点获取国家(和大陆),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21708488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com