r - 匹配空间对象和叠加图的空间投影
r - match spatial projections of spatial objects and overlay plots
我正在尝试使用 plot() 函数叠加 2 个空间对象。我知道 2 个对象(class SpatialLinesDataFrame 和 SpatialPolygonsDataFrame)的投影需要相同才能在同一图中显示它们。我发现了类似的问题 and here,但其中 none 可以帮助我实现我想要实现的目标。
这是 SpatialPolygonsDataFrame 的编码。 (v.map 是 .kml 文件的列表,loccoor 是存储位置和相应的 x 和 y 坐标的对象):
map.l<-list()
for (i in 1:length(v.map)){
ll<-ogrListLayers(paste(loccoor,"/",v.map[i],".kml",sep=""))
shp<-readOGR(paste(loccoor,"/",v.map[i],".kml",sep=""),layer=ll)
map<-spTransform(shp, CRS("+proj=longlat +datum=WGS84"))
map.l[[i]]<-map
}
plot(map.l[[1]],xlim=c(min(coor[,3]),max(coor[,3])),
ylim=c(min(coor[,2]),max(coor[,2])))
for (i in 2:length(v.map)){
plot(map.l[[i]],xlim=c(min(coor[,3]),max(coor[,3])),
ylim=c(min(coor[,2]),max(coor[,2])),add=T)
}
投影空间多边形数据帧"map":"+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
投影 SpatialLinesDataFrame "contours":"+proj=aeqd +ellps=WGS84 +lon_0=-XX.XXXXX +lat_0=XX.XXXXX"
。
我想变换 "map" 对象的投影以匹配 "contours" 的投影。简单地用 "contours" 对象的投影替换 "map" 对象的 "CRS("+proj=longlat +datum=WGS84")"
似乎不起作用,因为这样就不再绘制多边形(可见)。
如有任何想法,我们将不胜感激!
这里有一个不太好的比喻:坐标就像方向,crs 告诉我们方向使用的是什么语言。因此,如果您更改 crs,但保持坐标不变,那么它会就像试图用西班牙语词典阅读德语方向一样。
我们可以使用 sp::spTransform()
将方向从一个 crs 转换为另一个 crs。
该函数有两个参数:空间对象和 crs。
我们可以使用raster::crs()
从另一个空间对象获取crs。因此,要将地图的坐标(和 crs)转换为等高线的 crs:
map <- spTransform(map, crs(contours))
我正在尝试使用 plot() 函数叠加 2 个空间对象。我知道 2 个对象(class SpatialLinesDataFrame 和 SpatialPolygonsDataFrame)的投影需要相同才能在同一图中显示它们。我发现了类似的问题
这是 SpatialPolygonsDataFrame 的编码。 (v.map 是 .kml 文件的列表,loccoor 是存储位置和相应的 x 和 y 坐标的对象):
map.l<-list()
for (i in 1:length(v.map)){
ll<-ogrListLayers(paste(loccoor,"/",v.map[i],".kml",sep=""))
shp<-readOGR(paste(loccoor,"/",v.map[i],".kml",sep=""),layer=ll)
map<-spTransform(shp, CRS("+proj=longlat +datum=WGS84"))
map.l[[i]]<-map
}
plot(map.l[[1]],xlim=c(min(coor[,3]),max(coor[,3])),
ylim=c(min(coor[,2]),max(coor[,2])))
for (i in 2:length(v.map)){
plot(map.l[[i]],xlim=c(min(coor[,3]),max(coor[,3])),
ylim=c(min(coor[,2]),max(coor[,2])),add=T)
}
投影空间多边形数据帧"map":"+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
投影 SpatialLinesDataFrame "contours":"+proj=aeqd +ellps=WGS84 +lon_0=-XX.XXXXX +lat_0=XX.XXXXX"
。
我想变换 "map" 对象的投影以匹配 "contours" 的投影。简单地用 "contours" 对象的投影替换 "map" 对象的 "CRS("+proj=longlat +datum=WGS84")"
似乎不起作用,因为这样就不再绘制多边形(可见)。
如有任何想法,我们将不胜感激!
这里有一个不太好的比喻:坐标就像方向,crs 告诉我们方向使用的是什么语言。因此,如果您更改 crs,但保持坐标不变,那么它会就像试图用西班牙语词典阅读德语方向一样。
我们可以使用 sp::spTransform()
将方向从一个 crs 转换为另一个 crs。
该函数有两个参数:空间对象和 crs。
我们可以使用raster::crs()
从另一个空间对象获取crs。因此,要将地图的坐标(和 crs)转换为等高线的 crs:
map <- spTransform(map, crs(contours))