无法正确限制绘制的shapefile的边界

时间:2018-02-05 19:01:52

标签: r plot raster shapefile sp

我无法真正设置绘制的shapefile的边界。我首先绘制shapefile以获得以度为单位的漂亮的x和y-标签,然后绘制数据。最后,我再次在数据上绘制shapefile。 ylim是可更改的,但xlim似乎完全取决于ylim更改,因为我无法改变xlim本身。只有当我更改ylim而不更改xlim时,它才会有所不同,就像它是宽高比问题一样。

我想将x轴限制在8.5到11.5度之间。

指向shapefile和栅格的链接:https://www.dropbox.com/sh/l42mty01mwtm8qc/AADqjNbGkmNwx3o9aFceGrkya?dl=0

我的代码:

library(rgeos)
library(rgdal)
library(raster)

Sys.setlocale(category = "LC_ALL", locale = "C") # In the case German Umlauts are a problem while reading the shapefile
map <- readOGR("C:\\Path\\NATRAUM_MR_utm32.shp")

# Exclude unnecessary regions
map <- subset(map, NATREGNR != 3) 
map <- subset(map, NATREGNR != 4)
map <- subset(map, NATREGNR != 9)
map_wgs84 <- spTransform(map, crs(raster.percent.change.rcp85.1971_2005.2071_2100))

# Pixelplot
par(mar = c(3, 3, 2, 1))  # For saving pictures through a device like pdf

m <- plot(map_wgs84, axes=TRUE, xlim = c(8.5, 11.5), ylim=c(51.35, 53.15), cex = .5,
      bty = "n")

# Colortable for legend
colTab <- c("#0033CC", "#3366FF", "#6699FF","#99FFFF", "#FFCC99","#FF9933", "#FF4D00","#660000")

N <- length(colTab)
breaks <- seq(-2, 2,  length.out= N+1 )

plot(raster.percent.change.rcp85.1971_2005.2071_2100, col = colTab, breaks = breaks,
       axis.args = list(cex.axis = 1, at = breaks, labels = breaks, mgp = c(1, 0, 0), tck = 0.1),
       legend.args = list(text='Change [%]', side=4, font=2, line=1.75, cex=0.7),
        add = TRUE

plot(map_wgs84, add = TRUE)  # Plotting shapefile over data

Change

1 个答案:

答案 0 :(得分:0)

您需要调整绘图窗口的大小。您可以使用par(fin=c(x,y))png()设置有效的比率,并在代码中修复该比率。

这是因为对于地图,强制执行正确的方面(垂直和水平范围的比率)。对于平面数据,方面是1.对于角度数据(经度/纬度),它随纬度而变化。

有些数据(请不要使用我们需要下载的文件)。

library(raster)
p <- shapefile(system.file("external/lux.shp", package="raster"))

比较

par(fin=c(6,6))
plot(p, axes=T, xlim=c(6,6.2), ylim=c(49.6, 49.8))

par(fin=c(4, 6))
plot(p, axes=T, xlim=c(6,6.2), ylim=c(49.6, 49.8))