如何让我的 SpatialPolygonsDataFrame 在我的 RasterLayer 上正确绘制
How can I get my SpatialPolygonsDataFrame to plot correctly over my RasterLayer
当我尝试绘制以下内容时遇到问题。
我已经用栅格像元 ID 创建了我的研究区域的遮罩和一个带有我研究区域的国家/地区轮廓的 shapefile。
shapefile 是通过合并国家/地区的 shapefile,然后将其裁剪到研究区域而创建的。 (这是必需的,因为世界国家 shapefile 不够详细)
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
library(raster)
library(maptools)
library(rgdal)
#load Mask
sa.ID <- raster("Masks/sa.ID.asc")
proj4string(sa.ID) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
sa.ID
class : RasterLayer
dimensions : 177, 266, 47082 (nrow, ncol, ncell)
resolution : 0.08333333, 0.08333333 (x, y)
extent : 118.8333, 141, -9.166667, 5.583333 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : ....\Masks\sa.ID.asc
names : sa.ID
#load countries shapefile
countries.ra <- readOGR(dsn="diva-gis/Adm areas", layer="countries.ra")
countries.ra
class : SpatialPolygonsDataFrame
features : 4
extent : 118.8, 141, -9.2, 5.6 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
variables : 70
names : GADMID, ISO, NAME_ENGLI, NAME_ISO, NAME_FAO, NAME_LOCAL, NAME_OBSOL, NAME_VARIA, NAME_NONLA, NAME_FRENC, NAME_SPANI, NAME_RUSSI, NAME_ARABI, NAME_CHINE, WASPARTOF, ...
min values : 103, IDN, East Timor, INDONESIA, Indonesia, Indonesia, British New Guinea|German New Guinea|New Britain|New Guinea, East Timor|Portuguese Timor, NA, Indonésie, Filipinas, ????? — ????? ??????, ????? ????? ???????, ???, NA, ...
max values : 222, TLS, Philippines, TIMOR-LESTE, Timor-Leste, Timor-Leste, Dutch Borneo|Dutch East Indies|Dutch New Guinea|East Indies|Netherlands Indies|West New Guinea|Nederlands Indië, Philippines, NA, Timor-Leste (Timor Oriental), Timor Oriental, ????????? ?????, ?????????, ???????, NA, ...
现在我尝试在顶部绘制国家图层的蒙版
plot(sa.ID, xlim=c(118.8,141), ylim=c(-9.2,5.6), axes=TRUE)
plot(countries.ra, add=T)
最初,我得到的图看起来不错,但是当图 window 的范围发生变化时,或者当我尝试保存它时,国家/地区的形状会随之改变,而不是停留在应有的位置(见 sa.ID )
但不知何故,当我改变它并绘制
plot(sa.ID, xlim=c(118.8,141), ylim=c(-9.2,5.6), axes=TRUE)
plot(countries.ra, add=T)
国家/地区形状保持不变(参见 sa.ID.inverse)。
但是,由于我需要顶部的清晰线条,所以我真的需要第一个才能工作。
有人可以帮助我吗?因为我真的看不出我可能做错了什么...
eta:我的范围掩码(每个栅格单元都有值)和世界国家 shapefile
有同样的问题
根据@Bastien 的评论,我认为您可以尝试使用:
plot.window(xlim, ylim, log = "", asp = NA, ...)
指定地块的尺寸window。我不确定你希望你的情节如何出现,但效果如下:
plot.window(xlim=c(118.8333, 141), ylim=( -9.166667, 5.583333))
如果您指定这些值,它应该强制 R 每次都正确地重新绘制绘图window。
当我尝试绘制以下内容时遇到问题。
我已经用栅格像元 ID 创建了我的研究区域的遮罩和一个带有我研究区域的国家/地区轮廓的 shapefile。 shapefile 是通过合并国家/地区的 shapefile,然后将其裁剪到研究区域而创建的。 (这是必需的,因为世界国家 shapefile 不够详细)
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
library(raster)
library(maptools)
library(rgdal)
#load Mask
sa.ID <- raster("Masks/sa.ID.asc")
proj4string(sa.ID) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
sa.ID
class : RasterLayer
dimensions : 177, 266, 47082 (nrow, ncol, ncell)
resolution : 0.08333333, 0.08333333 (x, y)
extent : 118.8333, 141, -9.166667, 5.583333 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : ....\Masks\sa.ID.asc
names : sa.ID
#load countries shapefile
countries.ra <- readOGR(dsn="diva-gis/Adm areas", layer="countries.ra")
countries.ra
class : SpatialPolygonsDataFrame
features : 4
extent : 118.8, 141, -9.2, 5.6 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
variables : 70
names : GADMID, ISO, NAME_ENGLI, NAME_ISO, NAME_FAO, NAME_LOCAL, NAME_OBSOL, NAME_VARIA, NAME_NONLA, NAME_FRENC, NAME_SPANI, NAME_RUSSI, NAME_ARABI, NAME_CHINE, WASPARTOF, ...
min values : 103, IDN, East Timor, INDONESIA, Indonesia, Indonesia, British New Guinea|German New Guinea|New Britain|New Guinea, East Timor|Portuguese Timor, NA, Indonésie, Filipinas, ????? — ????? ??????, ????? ????? ???????, ???, NA, ...
max values : 222, TLS, Philippines, TIMOR-LESTE, Timor-Leste, Timor-Leste, Dutch Borneo|Dutch East Indies|Dutch New Guinea|East Indies|Netherlands Indies|West New Guinea|Nederlands Indië, Philippines, NA, Timor-Leste (Timor Oriental), Timor Oriental, ????????? ?????, ?????????, ???????, NA, ...
现在我尝试在顶部绘制国家图层的蒙版
plot(sa.ID, xlim=c(118.8,141), ylim=c(-9.2,5.6), axes=TRUE)
plot(countries.ra, add=T)
最初,我得到的图看起来不错,但是当图 window 的范围发生变化时,或者当我尝试保存它时,国家/地区的形状会随之改变,而不是停留在应有的位置(见 sa.ID )
但不知何故,当我改变它并绘制
plot(sa.ID, xlim=c(118.8,141), ylim=c(-9.2,5.6), axes=TRUE)
plot(countries.ra, add=T)
国家/地区形状保持不变(参见 sa.ID.inverse)。 但是,由于我需要顶部的清晰线条,所以我真的需要第一个才能工作。
有人可以帮助我吗?因为我真的看不出我可能做错了什么...
eta:我的范围掩码(每个栅格单元都有值)和世界国家 shapefile
有同样的问题根据@Bastien 的评论,我认为您可以尝试使用:
plot.window(xlim, ylim, log = "", asp = NA, ...)
指定地块的尺寸window。我不确定你希望你的情节如何出现,但效果如下:
plot.window(xlim=c(118.8333, 141), ylim=( -9.166667, 5.583333))
如果您指定这些值,它应该强制 R 每次都正确地重新绘制绘图window。