我正在为大伦敦地区提供一个形状文件.我使用包中的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是描述用于输入形状文件的投影的投影字符串.
我在情节和图例上的正确颜色范围有问题。
这是我使用的代码:
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在县级绘制美国地图。我从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以外,任何以美国方式吸引美国各州的想法都值得欢迎。谢谢。
在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
任何帮助将不胜感激,谢谢
我一直试图在下面的代码中将海洋涂成白色或透明,但到目前为止都没有成功。我在 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) 我之前有一篇文章是关于使用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) 我有一个光栅图像(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。
解决这个问题的方法是什么?
还有另一种方法可以将栅格转换为可用的对象吗?
是否有同样简单的方法来计算光栅图像中真菌“岛”的面积?
非常感谢!
艾米丽