簡體   English   中英

在 ggmap 上繪制 Shapefile

[英]Plotting Shapefile on ggmap

我試圖在通過 ggmap 生成的地圖上繪制幾個 shapefile。 這運行良好,但是我想將視圖區域限制為 shapefile(而不依賴於ggmapszoom參數)。 我通過獲取邊界框並將其作為參數傳遞給ggplotcoord_cartesiancoord_cartesian雖然這有效,但我在地圖邊緣遇到了一些撕裂問題 - 尤其是在西部部分。 我試過手動調整 xy 坐標,但它似乎只會嚴重扭曲圖片。

底特律 Shapefile 地圖

我的想法是稍微縮小以允許在該區域中繪制整個 shapefile,但我似乎無法弄清楚。 我也有可能完全以錯誤的方式來處理這個問題。

這是我用來生成地圖的代碼。 形狀文件可以在這里下載

library(dplyr)
library(ggmap)
library(rgdal)
library(broom)

# Read in shapefile, project into long-lat
# Create 'tbox' which is a minimum bounding box around the shapefile

tracts <- readOGR(dsn = ".", layer = "CensusTracts2010") %>%
  spTransform("+proj=longlat +ellps=WGS84")
tbox <- bbox(tracts)

# Plot data
tract_plot <- tidy(tracts)

DetroitMap <- qmap("Detroit", zoom = 11)

DetroitMap + geom_polygon(data = tract_plot, aes(x = long, y = lat, group = id), color = "black", fill = NA) +
  coord_cartesian(xlim = c(tbox[1,1], tbox[1,2]),
                  ylim = c(tbox[2,1], tbox[2,2]))

我遵循了您的工作流程,這導致了與您上面提到的相同的問題。 然后我將qmap選項的縮放qmap從 11 更改為 10,它產生了更好的圖片,雖然您確實丟失了一些地名,但您可以使用annotate手動添加它們:

DetroitMap <- qmap("Detroit", zoom = 10)

DetroitMap + geom_polygon(data = tract_plot, aes(x = long, y = lat, group = id), color = "black", fill = NA) +
    coord_cartesian(xlim = c(tbox[1,1], tbox[1,2]),
                    ylim = c(tbox[2,1], tbox[2,2]))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM