相关疑难解决方法(0)

从点创建凸包多边形并保存为shapefile

需要帮助重新解决R中的转换问题.

我已经计算了一团云的凸包.我想从构成凸包的点开始构建一个多边形对象,并将其保存为可由GIS软件(ArcMap等)读取的shapefile.

我的代码看起来像这样:

gps <- read.csv(f)  ##reads the lat-long coordinates  file 
x <- gps$LONGITUDE  ##tells R which columns is which
y <- gps$LATITUDE
z<-chull(x,y)       ##calculates the convex hull --this is just a list of x-y points, N vertex 
dfHull <-cbind(x[z],y[z])  ##the convex hull expressed as a list of selected x-y points
plot(dfHull)     ##this plots the vertex of the polygon, just a check
lines(dfhull)    ##plots the polygon in screen

##generate polygon shapefile, from dfHull, and …
Run Code Online (Sandbox Code Playgroud)

r polygon shapefile

19
推荐指数
1
解决办法
1万
查看次数

在ggplot中的等值线图与具有孔的多边形

我试图绘制德国的等值线图,显示各州的贫困率(受这个问题的启发).

问题是,有些州(例如柏林)完全被其他州(勃兰登堡州)所包围,而且我很难让ggplot认出勃兰登堡的"洞".

此示例的数据在此处.

library(rgdal)
library(ggplot2)
library(RColorBrewer)

map <- readOGR(dsn=".", layer="germany3")
pov <- read.csv("gerpoverty.csv")

mrg.df <- data.frame(id=rownames(map@data),ID_1=map@data$ID_1)
mrg.df <- merge(mrg.df,pov, by="ID_1")
map.df <- fortify(map)
map.df <- merge(map.df,mrg.df[,c("id","poverty")], by="id")
ggplot(map.df, aes(x=long, y=lat, group=group)) +
  geom_polygon(aes(fill=poverty))+
  geom_path(colour="grey50")+
  scale_fill_gradientn(colours=brewer.pal(5,"OrRd"))+
  labs(x="",y="")+ theme_bw()+
  coord_fixed()
Run Code Online (Sandbox Code Playgroud)

请注意柏林和勃兰登堡(东北部)的颜色是如何相同的.他们不应该 - 柏林的贫困率远远低于勃兰登堡州.似乎ggplot正在渲染柏林多边形,然后在其上渲染勃兰登堡多边形,没有洞.

如果我geom_polygon(...)按照这里的建议改变呼叫,我可以修复柏林/勃兰登堡问题,但现在三个最北端的状态都被错误地渲染了.

ggplot(map.df, aes(x=long, y=lat, group=group)) +
  geom_polygon(aes(group=poverty, fill=poverty))+
  geom_path(colour="grey50")+
  scale_fill_gradientn(colours=brewer.pal(5,"OrRd"))+
  labs(x="",y="")+ theme_bw()+
  coord_fixed()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么??

maps r ggplot2

15
推荐指数
2
解决办法
4908
查看次数

使用 ggmap/ggplot2 在地图上按组绘制等高线

所以我认为我有一个非常简单的问题,但我无法在任何地方找到答案。

我有很多包含龙虾捕获量的数据。一切看起来都很像这样。

                        Trip.ID Latitude Longitude            DateTime               ML6      TotalNephropsLandings
16409 OTB_CRU_32-69_0_0DK102831   57.931     9.277 2012-10-04 19:02:00 OTB_CRU_32-69_0_0                 0.2188619
16410 OTB_CRU_32-69_0_0DK102831   57.959     9.375 2012-10-04 21:02:00 OTB_CRU_32-69_0_0             0.2188619
16411 OTB_CRU_32-69_0_0DK102831   58.201    10.232 2012-10-04 02:00:00 OTB_CRU_32-69_0_0              0.2188619
16412 OTB_CRU_32-69_0_0DK102831   58.208    10.260 2012-10-04 03:00:00 OTB_CRU_32-69_0_0             0.2188619
16413 OTB_CRU_32-69_0_0DK102831   58.169    10.078 2012-10-03 23:00:00 OTB_CRU_32-69_0_0               0.2188619
16414 OTB_CRU_32-69_0_0DK102831   57.919     9.227 2012-10-04 18:00:00 OTB_CRU_32-69_0_0             0.2188619
Run Code Online (Sandbox Code Playgroud)

我想做的只是根据“ML6”列制作一张包含区域周围轮廓的地图,这是用于钓鱼的不同工具。

我尝试使用 geom_密度2d,它看起来像这样: 然而我真的不想展示密度,只想展示它们存在的地方。因此,基本上一条线围绕一组坐标,这些坐标来自 ML6 中的同一级别。有人能帮我解决这个问题吗?

如果有替代方法将它们也填充为多边形,那就太好了。但也许使用“fill=”可以简单地实现这一点。

如果有人知道如何在没有 R 的情况下做到这一点,也欢迎您提供帮助,但那样我可能需要更深入的信息。

抱歉没有生成更多我的数据框......

当然,我应该生成我的情节代码,所以这里基本上是:

#Get map
 map <- get_map(location=c(left= 0, bottom=45, right=15 ,top=70), maptype = 'satellite') …
Run Code Online (Sandbox Code Playgroud)

gis r ggplot2 ggmap

2
推荐指数
1
解决办法
1816
查看次数

标签 统计

r ×3

ggplot2 ×2

ggmap ×1

gis ×1

maps ×1

polygon ×1

shapefile ×1