使用ggplot在R中绘制组合shapefile的问题,没有给出定义的错误
Issues plotting a combined shapefile in R using ggplot, no defined error given
使用的库:
library(sp)
library(sf)
library(ggplot2)
library(ggmap)
创建了一个名为“coordinate.data”的数据框,其中经度和纬度作为列名,气象站位置作为行名。
longitude <- c(-73.964482,-73.953678,-73.893522,-73.815856,-74.148499)
latitude <- c(40.767544,40.631762,40.872481,40.734335,40.604014)
coordinate.data <- data.frame(longitude,latitude)
rownames(coordinate.data) <- c("MANH","BKLN","BRON","QUEE","STAT")
然后我检索了 NJ 县和纽约市行政区的 shapefile 数据,并删除了所有不必要的列,因此两个 shapefile 中只剩下几何字段。纽约市自治市镇 shapefile 数据是从 NYC Open Data, & the NJ county boundaries was downloaded from NJGIN Open Data.
下载的
nj.shp <- st_read("~/Downloads/NJ/NJ_Counties.shp")
nj <- nj.shp[,-(1:21)]
nyc.shp <- st_read("~/Downloads/NY/NYC_Boroughs.shp")
nyc <- nyc.shp[,-(1:4)]
我将两个 shapefile 格式化为具有相同的投影(ESPG 代码 3857),并将它们组合成一个 shapefile 数据框,在一个变量(几何)中包含 26 个观察值(counties/boroughs)。
same.projection <- CRS("+init=EPSG:3857")
nj.data <- st_transform(nj,same.projection)
new.projection <- CRS("+init=EPSG:3857")
nyc.data <- st_transform(nyc,new.projection)
combined.data <- rbind(nj.data,nyc.data)
除了气象站位置(“coordinate.data”)之外,我现在正尝试在地图上绘制组合的 shapefile(“combined.data”)。 当我尝试这样做时,它不可避免地运行并且 R 关闭。如果我删除 geom_sf(...),它会正确绘制站和格式,所以我认为问题出在这行代码上。
mesonet.map <-ggplot() +
ggtitle("NY Mesonet Site Locations") +
xlab("Longitude") +
ylab("Latitude") +
geom_point(data=coordinate.data,aes(x=longitude,y=latitude))+
geom_text(aes(x=longitude,y=latitude,label=rownames(coordinate.data)),size=3.25,nudge_y=0.02)+
geom_sf(data=combined.data,fill='darkgreen') +
mesonet.map + theme(
panel.background=element_rect(fill="lightblue",color="lightblue",size=0.5,linetype="solid"),
panel.grid.major=element_line(size=0.5,linetype='solid',color="white"),
panel.grid.minor=element_line(size=0.25,linetype='solid',color="white")
)
我不太确定您从那些形状文件中删除了什么。我没有删除任何东西。我也没有结合任何东西。在我的输出中投影了四个单独的图层:底图、NY 形状文件、NJ 形状文件,以及创建和描述如下的名为 sites 的形状文件。
此地图是使用 3 个现有形状文件创建的,以及在以下步骤中创建的站点形状文件。从每个步骤创建的变量都会打印出来,并显示每个步骤的说明。
首先,创建空间几何变量:
MULTIPOINT ((-73.96448 40.76754), (-73.95368 40.63176), (-73.89352
40.87248), (-73.81586 40.73434), (-74.1485 40.60401))
然后,创建几何列(结合多点变量和crs)
MULTIPOINT ((-73.96448 40.76754), (-73.95368 40...
Geometry set for 1 feature
geometry type: MULTIPOINT
dimension: XY
bbox: xmin: -74.1485 ymin: 40.60401 xmax: -73.81586 ymax: 40.87248
projected CRS: WGS 84 / Pseudo-Mercator
然后创建一个常规 df,其中包含一列站点名称。
然后创建了简单的特征对象-(将几何列与 df 结合起来)。输出显示:
A sf: 5 × 2
site pts.sfc
<fct> <MULTIPOINT [m]>
MANH MULTIPOINT ((-73.96448 40.7...
BKLN MULTIPOINT ((-73.96448 40.7...
BRON MULTIPOINT ((-73.96448 40.7...
QUEE MULTIPOINT ((-73.96448 40.7...
STAT MULTIPOINT ((-73.96448 40.7...
然后这个sf对象被写入shape文件夹:
Writing layer `Weather_sites' to data source `C:/pathR' using driver `ESRI Shapefile'
Writing 5 features with 1 fields and geometry type Multi Point.
输出显示 NY 的 5 个站点以及 NJ 和 NY 的状态。 NY 形状文件的包容性似乎较低,仅包含一些有限的 NY 数据。
正确绘制整个地图涉及按顺序执行四个步骤。几何、几何列、sf 对象、写入形状文件夹。
The map exported to .png
使用的库:
library(sp)
library(sf)
library(ggplot2)
library(ggmap)
创建了一个名为“coordinate.data”的数据框,其中经度和纬度作为列名,气象站位置作为行名。
longitude <- c(-73.964482,-73.953678,-73.893522,-73.815856,-74.148499)
latitude <- c(40.767544,40.631762,40.872481,40.734335,40.604014)
coordinate.data <- data.frame(longitude,latitude)
rownames(coordinate.data) <- c("MANH","BKLN","BRON","QUEE","STAT")
然后我检索了 NJ 县和纽约市行政区的 shapefile 数据,并删除了所有不必要的列,因此两个 shapefile 中只剩下几何字段。纽约市自治市镇 shapefile 数据是从 NYC Open Data, & the NJ county boundaries was downloaded from NJGIN Open Data.
下载的nj.shp <- st_read("~/Downloads/NJ/NJ_Counties.shp")
nj <- nj.shp[,-(1:21)]
nyc.shp <- st_read("~/Downloads/NY/NYC_Boroughs.shp")
nyc <- nyc.shp[,-(1:4)]
我将两个 shapefile 格式化为具有相同的投影(ESPG 代码 3857),并将它们组合成一个 shapefile 数据框,在一个变量(几何)中包含 26 个观察值(counties/boroughs)。
same.projection <- CRS("+init=EPSG:3857")
nj.data <- st_transform(nj,same.projection)
new.projection <- CRS("+init=EPSG:3857")
nyc.data <- st_transform(nyc,new.projection)
combined.data <- rbind(nj.data,nyc.data)
除了气象站位置(“coordinate.data”)之外,我现在正尝试在地图上绘制组合的 shapefile(“combined.data”)。 当我尝试这样做时,它不可避免地运行并且 R 关闭。如果我删除 geom_sf(...),它会正确绘制站和格式,所以我认为问题出在这行代码上。
mesonet.map <-ggplot() +
ggtitle("NY Mesonet Site Locations") +
xlab("Longitude") +
ylab("Latitude") +
geom_point(data=coordinate.data,aes(x=longitude,y=latitude))+
geom_text(aes(x=longitude,y=latitude,label=rownames(coordinate.data)),size=3.25,nudge_y=0.02)+
geom_sf(data=combined.data,fill='darkgreen') +
mesonet.map + theme(
panel.background=element_rect(fill="lightblue",color="lightblue",size=0.5,linetype="solid"),
panel.grid.major=element_line(size=0.5,linetype='solid',color="white"),
panel.grid.minor=element_line(size=0.25,linetype='solid',color="white")
)
我不太确定您从那些形状文件中删除了什么。我没有删除任何东西。我也没有结合任何东西。在我的输出中投影了四个单独的图层:底图、NY 形状文件、NJ 形状文件,以及创建和描述如下的名为 sites 的形状文件。
此地图是使用 3 个现有形状文件创建的,以及在以下步骤中创建的站点形状文件。从每个步骤创建的变量都会打印出来,并显示每个步骤的说明。
首先,创建空间几何变量:
MULTIPOINT ((-73.96448 40.76754), (-73.95368 40.63176), (-73.89352
40.87248), (-73.81586 40.73434), (-74.1485 40.60401))
然后,创建几何列(结合多点变量和crs)
MULTIPOINT ((-73.96448 40.76754), (-73.95368 40...
Geometry set for 1 feature
geometry type: MULTIPOINT
dimension: XY
bbox: xmin: -74.1485 ymin: 40.60401 xmax: -73.81586 ymax: 40.87248
projected CRS: WGS 84 / Pseudo-Mercator
然后创建一个常规 df,其中包含一列站点名称。
然后创建了简单的特征对象-(将几何列与 df 结合起来)。输出显示:
A sf: 5 × 2
site pts.sfc
<fct> <MULTIPOINT [m]>
MANH MULTIPOINT ((-73.96448 40.7...
BKLN MULTIPOINT ((-73.96448 40.7...
BRON MULTIPOINT ((-73.96448 40.7...
QUEE MULTIPOINT ((-73.96448 40.7...
STAT MULTIPOINT ((-73.96448 40.7...
然后这个sf对象被写入shape文件夹:
Writing layer `Weather_sites' to data source `C:/pathR' using driver `ESRI Shapefile'
Writing 5 features with 1 fields and geometry type Multi Point.
输出显示 NY 的 5 个站点以及 NJ 和 NY 的状态。 NY 形状文件的包容性似乎较低,仅包含一些有限的 NY 数据。
正确绘制整个地图涉及按顺序执行四个步骤。几何、几何列、sf 对象、写入形状文件夹。
The map exported to .png