2012-02-09 79 views
1

我有Global Administrative Areas Database的行政边界数据。用这些数据绘制细分是非常容易的。例如,如果我想overplot包含在文件mydata在佛罗里达县地理编码数据,我下载了美国的“2级”,然后使用此代码:R/GIS:使用其他来源的数据覆盖GADM数据?

load("/home/anindya/Desktop/DELETE/USA_adm2.RData") 
temp = as.data.frame(gadm) *Code for eyeballing structure of data 
florida = gadm[344:410,] 
plot(florida); points(mydata$longitude, mydata$latitude) 

但你如何覆盖其他这方面的信息,比如说地形和水路?我对Natural EarthGlobal Lakes and Wetlands Database的数据特别感兴趣。

后续编辑:非常感谢保罗解决问题。我已经在here at gis.stackexchange上转换了这个问题的一个变体,其中R.K.给出了很好的答案。请仔细阅读。

+1

看看在http:// gis.stackexchange.com/ – 2012-02-09 12:33:48

+0

对不起,我找不到直接相关的东西。当然,应该有一个简单的功能,用于在同一地理区域上覆盖具有不同细节的两个地块?! – user702432 2012-02-10 04:32:14

回答

3

如果我正确理解了你,你会问如何叠加不同的地理层,就像使用GUI GIS一样。

这是直截了当的,如果数据是在一个Spatial*对象(例如SpatialPoints, SpatialLines, SpatialPolygons等从sp封装)或作为来自raster封装的Raster*对象。如果给出参数add=TRUE,则这两个包中的plot()方法都可以处理此叠加。

要将基于矢量的地理数据导入Spatial*对象,可以使用maptools包中的函数(例如readShapePoly()读取ESRI多边形shape文件)。可以使用raster()加载各种文件规格的光栅,如果安装了rgdal软件包,则可以使用其他格式。

以下是使用拼凑的地理数据叠加地理数据类型的示例。首先创建一个UTM网格一些示例数据:

library(sp) 
library(raster) 

## Create a RasterLayer object and fill with random values 
baseRaster <- raster(nrow=100, ncol=100, 
    xmn=0, xmx=100, ymn=0, ymx=100, 
    crs= "+proj=utm") 
baseRaster[] <- runif(ncell(baseRaster)) 

## Create a second raster to superimpose 
## It should contain NA values where it is transparent 
supRaster <- baseRaster 
supRaster[] <- NA 
supRaster[cellFromCol(supRaster, 48:52)] <- 1 


## Create SpatialPoints object to superimpose on these 
loc <- SpatialPoints(cbind(seq(10, 90, by=10), seq(10, 90, by=10))) 

现在做图:

## Plot base raster 
plot(baseRaster) 

## Superimpose second raster in a different colour 
## Turn off legend 
plot(supRaster, add=TRUE, col="blue", legend=FALSE) 

## Superimpose points and make them big and colourful 
plot(loc, add=TRUE, pch=20, cex=3, col="red") 

下面是结果:

enter image description here

+2

请注意,只有数据集具有相同的坐标参考系统时,这样的叠加才有效。 R不会进行坐标转换,所以如果你在lat-long坐标系中有一组数据,而在某些UTM度量网格中有一组数据,则必须使用rgdal中的spTransform。 – Spacedman 2012-02-10 08:39:24

+0

@Spacedman - 转换到一个通用的CRS通常是必不可少的,但在R中执行它对我来说仍然有点神秘。我已经问过这个后续问题:http://stackoverflow.com/questions/9230318/ – digitalmaps 2012-02-10 15:43:42