r中的sf-一个投影有效,另一个则抛出无效的几何错误



我试图用sfggplot2绘制一些地图,但我有一些奇怪的行为。在使用EPSG投影编号3310之前,我正在运行地图,效果很好:

world <- st_read("world_map_path.shp")
syear <- st_read("data_path.shp")
proj <- 3310
ggplot(data = world) + 
geom_sf() + 
geom_sf(data=syear, aes(fill=owner), size=0.2) +
coord_sf(crs=proj)

上面的代码没有返回错误,并且完美地呈现了一个映射。但是,使用手动输入的正交投影运行几乎完全相同的代码会导致无效的几何图形错误。代码:

world <- st_read("world_map_path.shp")
syear <- st_read("data_path.shp")
proj <- "+proj=ortho +lon_0=35 +lat_0=90"
ggplot(data = world) + 
geom_sf() + 
geom_sf(data=syear, aes(fill=owner), size=0.2) +
coord_sf(crs=proj)

错误:

Error in CPL_geos_is_empty(st_geometry(x)) :
Evaluation error: IllegalArgumentException: Invalid number of points in LinearRing found 2 - must be 0 or >= 4.
Calls: <Anonymous> ... st_as_grob.sfc_MULTIPOLYGON -> st_is_empty -> CPL_geos_is_empty
Execution halted

我在这里做错了什么?我的代码或输入数据中有错误吗?所说的错误是什么?

我在用sf进行正交投影时也遇到过同样的问题。我已经尝试了st_make_valid((的所有方法,还尝试了一种解决方案,以确保使用正交法沿地球旋转时几何图形不会消失。当我使用数据帧和coord_map((而不是sf时,它工作得很好。

相关内容

  • 没有找到相关文章

最新更新