标签: r-maptools

使用ggplot绘制SpatialPolygonDataFrame

我正在为大伦敦地区提供一个形状文件.我使用包中的readShapePoly函数将maptools其作为一个加载到R中SpatialPolygonDataFrame.

我想绘制那些多边形..我已经通过使用plotR中的函数基本已经完成了.输出看起来如下图所示:

在此输入图像描述

现在,我正在尝试绘制相同的形状文件,ggplot2但它不适用于我.我在图中看到一些奇怪的线,如图所示: 在此输入图像描述

我使用的代码是:

london.wards <- readShapePoly("~/TD/london_wards2013/london_wards2013.shp"
                          , proj4string=CRS(projString))
wards.count <- nrow(london.wards@data)
# assign id for each lsoa

london.wards@data$id <- 1:wards.count
wards.fort <- fortify(london.wards, region='id')
ggplot(wards.fort, aes(long, lat)) + geom_polygon(colour='black', fill='white')
Run Code Online (Sandbox Code Playgroud)

其中projString是描述用于输入形状文件的投影的投影字符串.

gis r shapefile ggplot2 r-maptools

3
推荐指数
2
解决办法
3129
查看次数

图例问题以及图例范围和颜色分布

我在情节和图例上的正确颜色范围有问题。

这是我使用的代码:

data.ch4 <- read.csv2("v42_CH4_1970_TOT.txt",skip = 3,stringsAsFactors = FALSE, header = F)
num_data <- data.frame(data.matrix(data.ch4))

library(maptools)
library(lattice)
library(png)

#map loading
map1 <- readShapePoly("CNTR_2014_03M_SH/Data/CNTR_RG_03M_2014.shp")
coordinates(num_data) <- ~V2+V1  
gridded(num_data) <- TRUE

#plotting
png(file="Map2.png",width=35,height=30,unit="cm", res=200, type = "cairo")

spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
             sp.layout = list("sp.polygons",map1),contour=F)
dev.off()
Run Code Online (Sandbox Code Playgroud)

这是带有数据的文件:https : //www.sendspace.com/file/hjtatp (压缩后通常重量为57 mb)

此处开始的地图(但地图具有第二优先级,可以跳过)

无需修改任何比例,外观如下: 在此处输入图片说明

所以一切都是蓝色的。显然,从最小到最大值都有很大的距离。我想固定比例,例如最后一个值应为“高于x”。我试图这样做:

在此处输入图片说明

所以现在看起来好多了。这是我的方法:

#Fixed breakpoints (?)
at <- c(0e+0, 1.5e-5, 1.0e-4, 1.0e-3, 1.0e-2, 1.0e-1, 1.0e+0, 2.0e+0, 1.0e+1, 1.0e+2, 2.0e+2,5.0e+2)

spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
             sp.layout = list("sp.polygons",map1),
             contour=F,
             at=at) #right there …
Run Code Online (Sandbox Code Playgroud)

r spatial shapefile r-maptools r-sp

3
推荐指数
1
解决办法
3762
查看次数

从R中的美国县级地图中删除五大湖

我正在使用R在县级绘制美国地图。我从GADM下载了美国的shapefile 。县级形状文件是“ gadm36_USA_2.shp”。然后,我使用下面的代码绘制地图:

library(sf)
library(tidyverse)

us2 <- st_read("<Path>\\gadm36_USA_2.shp")

mainland2 <- ggplot(data = us2) +
geom_sf(aes(fill = NAME_2), size = 0.4, color = "black") +
coord_sf(crs = st_crs(2163), 
         xlim = c(-2500000, 2500000), 
         ylim = c(-2300000, 730000)) + guides(fill = F)
Run Code Online (Sandbox Code Playgroud)

大湖区(用红色箭头显示)被绘制而不是空白: 在此处输入图片说明

我想要的是下图,大湖区留为空白: 在此处输入图片说明

如何从“ gadm36_USA_2.shp”中识别出与大湖区相对应的行,以便删除它们?

我了解,除了GADM之外,还有其他获取shapefile的方法。我相信GADM是在全球范围内提供驻地的绝佳来源。我希望借此机会更好地了解从GADM下载的数据。

当然,欢迎使用其他方法来获取美国县级边界数据。我注意到该USAboundaries软件包还提供了国家,州和县级别的公文,但是我在安装关联的USAboundariesData软件包时遇到了困难。除了GADM的shapefile以外,任何以美国方式吸引美国各州的想法都值得欢迎。谢谢。

maps r ggplot2 r-maptools r-sf

3
推荐指数
1
解决办法
57
查看次数

用maptools绘制国家边界 - R.

在Joe Wheatley的优秀帖子(http://joewheatley.net/ncep-global-forecast-system/)之后,我设法制作了温度全球地图.但是,我不是只绘制海岸线,而是尝试使用maptools包绘制国家边界.只有东半球国家边界被绘制出来才会出现问题.我应该遗漏一些我无法弄清楚的东西,仍在寻找stackoverflow和谷歌.希望你能帮忙.

这是我正在使用的代码(大部分来自Joe的帖子)

loc=file.path("ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.2013052100/gfs.t00z.sfluxgrbf03.grib2")
download.file(loc,"temp.grb",mode="wb")

system("wgrib2 -s temp.grb | grep :TMP: | wgrib2 -i temp.grb -netcdf TMP.nc",intern=T)
system("wgrib2 -s temp.grb | grep :LAND: | wgrib2 -i temp.grb -netcdf temp.nc",intern=T)

library(ncdf)
landFrac <-open.ncdf("LAND.nc")
lon <- get.var.ncdf(landFrac,"longitude")
lat <- get.var.ncdf(landFrac,"latitude")

temp=open.ncdf("TMP.nc")
t2m.mean <- get.var.ncdf(temp,"TMP_2maboveground")


library("fields")
library("sp", lib.loc="/usr/lib/R/site-library")
library("maptools", lib.loc="/usr/lib/R/site-library")

day="DIA"

png(filename="gfs.png",width=1215,height=607,bg="white")

rgb.palette <- colorRampPalette(c("snow1","snow2","snow3","seagreen","orange","firebrick"), space = "rgb")#colors
image.plot(lon,lat,t2m.mean,col=rgb.palette(200),main=as.expression(paste("GFS 24hr Average 2M Temperature",day,"00 UTC",sep="")),axes=T,legend.lab="o C")
data(wrld_simpl)
plot(wrld_simpl, add = TRUE)

dev.off()
Run Code Online (Sandbox Code Playgroud)

这是产生的图像

在此输入图像描述

这是一张全球地图,我应该在image.plot中使用xlim和ylim来提取一个区域(即欧洲)

编辑:为temp.nc文件添加了网址

http://ubuntuone.com/29DKAeRjUCiCzLblgfSLc9

任何帮助将不胜感激,谢谢

r netcdf grib r-maptools

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

面具海洋 - wrld_simpl

我一直试图在下面的代码中将海洋涂成白色或透明,但到目前为止都没有成功。我在 Stack 上看到了其他帖子,但无法将它们应用到我的示例中(例如,我如何在美国地图中为海洋着色?)。我欢迎建议。非常感谢!

library(raster)
library(ggplot2)
library(maptools)
data("wrld_simpl")

#sample raster
r <- raster(ncol=10, nrow=20)
r[] <- 1:ncell(r)
extent(r) <- extent(c(-20, 20, -20, 20))

#plotting
var_df <- as.data.frame(rasterToPoints(r))
p <- ggplot() +
  geom_polygon(data = wrld_simpl[wrld_simpl@data$UN!="10",], 
               aes(x = long, y = lat, group = group),
               colour = "black", fill = "grey") # does the fortification automatically
p <- p + geom_raster(data = var_df, aes(x = x, y = y, fill = layer))
p <- p + coord_equal() +  theme_bw()  +labs(x="", y="") …
Run Code Online (Sandbox Code Playgroud)

r raster ggplot2 r-maptools

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

使用 GADM shapefile 为美国地图绘制较粗的州边界和较细的县边界

我之前有一篇文章是关于使用GADM中的形状文件绘制美国地图,同时删除五大湖地区的颜色映射。根据@Majid 的建议解决了该问题。

现在,我进一步想要更厚的州边界和更薄的县边界。我首先绘制县级分区统计图,然后添加额外的未填充的州/国家级边界:

library(sf)
library(tidyverse)
library(RColorBrewer) #for some nice color palettes

# US map downloaded from https://gadm.org/download_country_v3.html

# National border
us0 <- st_read("<Path>\\gadm36_USA_0.shp")
# State border
us1 <- st_read("<Path>\\gadm36_USA_1.shp")
# County border
us2 <- st_read("<Path>\\gadm36_USA_2.shp")

# Remove the Great Lakes
# retrieving the name of lakes and excluding them from the sf 
all.names = us2$NAME_2
patterns = c("Lake", "lake")

lakes.name <- unique(grep(paste(patterns, collapse="|"), 
                     all.names, 
                     value=TRUE, ignore.case = TRUE))

# Pick the Great Lakes
lakes.name <- lakes.name[c(4, 5, …
Run Code Online (Sandbox Code Playgroud)

maps r ggplot2 r-maptools r-sf

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

使用 R 计算光栅图像中离散区域的面积

我有一个光栅图像(20231031_110019.png,尽管它可以是任何格式,jpg,png,bmp)并且想单独在此输入图像描述计算该栅格中离散区域的面积(我将它们称为“岛屿”,尽管它们实际上是培养皿上的真菌生长区域)。

我正在尝试使用 R 中的 spatstat 包来执行此操作。我发现一篇文章指出以下代码可以做到这一点:

library(spatstat)
## create example data
dd <- dilation(redwood, 0.5, polygonal=FALSE)
## find connected components
P <- connected(dd)
## convert to a tessellation
B <- tess(image=P)
## compute area of each tile
answer <- tile.areas(B)
Run Code Online (Sandbox Code Playgroud)

执行膨胀命令需要一个 owin 对象(上述实例中的 redwood),但我无法找到一种方法将栅格转换为 owin 对象,而无需使用 maptools 包,而该包在 CRAN 上已不再可用。我也无法使用 devtools 安装存档版本的 maptools。

解决这个问题的方法是什么?

还有另一种方法可以将栅格转换为可用的对象吗?

是否有同样简单的方法来计算光栅图像中真菌“岛”的面积?

非常感谢!

艾米丽

r spatstat r-maptools r-ppp

0
推荐指数
1
解决办法
104
查看次数

标签 统计

r ×7

r-maptools ×7

ggplot2 ×4

maps ×2

r-sf ×2

shapefile ×2

gis ×1

grib ×1

netcdf ×1

r-ppp ×1

r-sp ×1

raster ×1

spatial ×1

spatstat ×1