R 如何将数据存储到形状文件的六边形中并进行打印?

R 如何将数据存储到形状文件的六边形中并进行打印?,r,ggplot2,shapefile,sf,binning,R,Ggplot2,Shapefile,Sf,Binning,我对r和这个网站都是新手。我目前的分销项目遇到了一些麻烦。我的目标是创建一个带有六边形的地图,该六边形具有基于不同属性的颜色渐变。例如六边形中的记录数、物种数、稀疏度等。我从两个形状文件开始 一个用于六边形: 具有10242个功能和4个字段的简单功能集合 几何图形类型:多多边形 尺寸:XY bbox:xmin:-180 ymin:-90 xmax:180 ymax:90 注册登记号码:4326 前10个功能: ID CENTRELAT CENTRELON AREA

我对r和这个网站都是新手。我目前的分销项目遇到了一些麻烦。我的目标是创建一个带有六边形的地图,该六边形具有基于不同属性的颜色渐变。例如六边形中的记录数、物种数、稀疏度等。我从两个形状文件开始

一个用于六边形:

具有10242个功能和4个字段的简单功能集合

几何图形类型:多多边形

尺寸:XY

bbox:xmin:-180 ymin:-90 xmax:180 ymax:90

注册登记号码:4326

前10个功能:

 ID CENTRELAT  CENTRELON     AREA                       geometry

 1 -43.06618   41.95708 41583.14 MULTIPOLYGON (((43.50039 -4...

 2 -73.41802 -144.73583 41836.20 MULTIPOLYGON (((-147.695 -7...

 4862 -82.71189  -73.45815 50247.96 MULTIPOLYGON (((-78.89901 -...

 7162  88.01938   53.07438 50258.17 MULTIPOLYGON (((36.63494 87...

 3 -75.32015 -145.44626 50215.61 MULTIPOLYGON (((-148.815 -7...

 4 -77.21239 -146.36437 50225.85 MULTIPOLYGON (((-150.2982 -...

 5 -79.11698 -147.60550 50234.84 MULTIPOLYGON (((-152.3518 -...

 6 -81.03039 -149.37750 50242.49 MULTIPOLYGON (((-155.3729 -...

 7 -82.94618 -152.11105 50248.70 MULTIPOLYGON (((-160.2168 -...

 8 -84.84996 -156.85274 50253.03 MULTIPOLYGON (((-169.0374 -...
一个用于贴图:几何体类型:多边形;尺寸:XY;bbox:xmin:-180ymin:-90xmax:180ymax:83.64513;注册登记号码:4326

它是来自此链接的土地形状文件:

我用st_read函数加载了它们。并使用以下代码创建了一个地图:

 ggplot() +
  geom_sf(data = hex5) +
  geom_sf(data = land) +
  coord_sf(1, xlim = c(100, 180), ylim = c(0, 90))

我有一个包含物种名称、经度和纬度的数据框。大约6300个条目

scientific              lat         lon
1   Acoetes melanonota  11.75690    124.8010
2   Acoetes melanonota  11.97500    102.7350
3   Acoetes melanonota  13.33000    100.9200
4   Acrocirrus muroranensis 42.31400    140.9670
5   Acrocirrus uchidai  43.04800    144.8560
6   Acrocirrus validus  35.30000    139.4830
7   Acutomunna minuta   29.84047    130.9178
8   Admetella longipedata   13.35830    120.5090
9   Admetella longipedata   13.60310    120.7570
10  Aega acuticauda 11.95750    124.1780
如何将这些数据存储到地图的六边形中,并使用渐变对其进行着色


多谢各位

据我所知,你有一些点和一些多边形。您希望按点所在的多边形汇总点的值。我制作了一个可能解决方案的可复制示例:

库(sf)
库(数据表)
图书馆(dplyr)
#创建一个四边形网格
sfc=sf::st_sfc(sf::st_多边形(列表(rbind(c(0,0),c(1,0),c(1,1),c(0,0 '))))
G=sf::st_make_网格(sfc,cellsize=0.1,square=FALSE)
#转换为sf对象
G=sf::st_as_sf(data.table(id_hex=1:76,geom=sf::st_as_text(G)),wkt='geom')
#使用随机值在栅格上创建随机点
n=500
p=数据表(id_点=1:n,
值=rnorm(n),
x=样品(序号(0,1,0.01),n,替换=T),
y=样品(序号(0,1,0.01),n,替换=T)
)
p=p[x>=y]
P=sf::st_as_sf(P,coords=c('x','y'))
#绘图几何
绘图(sf::st_几何体(G))
绘图(P,add=TRUE)

#连接几何图形以将每个多边形与其包含的点相关联
#分组并总结
J=sf::st_join(G,P,join=sf::st_contains)%>%
dplyr::分组依据(id\U十六进制)%>%
dplyr::总结(sum_值=sum(值,na.rm=F),
计数值=长度(值),
平均值=平均值(数值,na.rm=F))
图(J)

#使用mapview软件包绘制交互式地图
mapview::mapview(J,zcol=“count_value”)+
地图视图::地图视图(P)


据我所知,由(v0.3.0)创建于2020-04-25,您有一些点和多边形。您希望按点所在的多边形汇总点的值。我制作了一个可能解决方案的可复制示例:

库(sf)
库(数据表)
图书馆(dplyr)
#创建一个四边形网格
sfc=sf::st_sfc(sf::st_多边形(列表(rbind(c(0,0),c(1,0),c(1,1),c(0,0 '))))
G=sf::st_make_网格(sfc,cellsize=0.1,square=FALSE)
#转换为sf对象
G=sf::st_as_sf(data.table(id_hex=1:76,geom=sf::st_as_text(G)),wkt='geom')
#使用随机值在栅格上创建随机点
n=500
p=数据表(id_点=1:n,
值=rnorm(n),
x=样品(序号(0,1,0.01),n,替换=T),
y=样品(序号(0,1,0.01),n,替换=T)
)
p=p[x>=y]
P=sf::st_as_sf(P,coords=c('x','y'))
#绘图几何
绘图(sf::st_几何体(G))
绘图(P,add=TRUE)

#连接几何图形以将每个多边形与其包含的点相关联
#分组并总结
J=sf::st_join(G,P,join=sf::st_contains)%>%
dplyr::分组依据(id\U十六进制)%>%
dplyr::总结(sum_值=sum(值,na.rm=F),
计数值=长度(值),
平均值=平均值(数值,na.rm=F))
图(J)

#使用mapview软件包绘制交互式地图
mapview::mapview(J,zcol=“count_value”)+
地图视图::地图视图(P)


(v0.3.0)于2020年4月25日创建,您好,您可能需要添加一些,以便更容易理解问题并给出答案。例如,您可以提供六边形的样本和带有物种名称的data.frame。根据您所说的,我建议您使用
sf::st_as_sf
将data.frame转换为一个空间对象(这些是点吗?),然后使用
sf::st_intersects
或任何空间连接按六边形计算点数。@Duccio谢谢您的输入,我添加了更多信息。我尝试了以下方法:data\u sf如果要进行交叉并返回几何图形,应使用
st\u交叉
,而不是
st\u交叉
。我贴了一个答案,希望对你有帮助。对于这些与GIS相关的问题,您可能会找到更多关于Hi的帮助,您可能希望添加一些帮助,以便更容易理解问题并给出答案。例如,您可以提供六边形的样本和带有物种名称的data.frame。根据您所说的,我建议您使用
sf::st_as_sf
将data.frame转换为一个空间对象(这些是点吗?),然后使用
sf::st_intersects
或任何空间连接按六边形计算点数。@Duccio谢谢您的输入,我添加了更多信息。我尝试了以下方法:data\u sf如果要进行交叉并返回几何图形,应使用
st\u交叉
,而不是
st\u交叉
。我贴了一个答案,希望对你有帮助。对于这些类型的GIS相关问题,您可能会在