2013-08-06 1 views
4

노스 캐롤라이나주의 ggmap 플롯에 ESRI shapefile (.shp)을 추가하려고합니다. 다음 코드가 있습니다.서로 다른 지리적 단위로 인해 ggmap에 shapefile을 추가하는 데 문제가 있습니다.

x <- get_map(location="North Carolina", zoom=6, maptype="terrain")

ggmap(x) + geom_polygon(data=citylim83.df, aes(x=long, y=lat), fill="red", alpha=0.2)

내가로드 citylim83.dfdoes not show up로 강화했습니다 Shape 파일 .

epsgs <- make_EPSG() 
    citylim <- readOGR(dsn=".", layer="MunicipalBoundaries_polys")` 

MunicipalBoundaries의 돌기의 단위, EPSG에서 검색을 수행 한 후, 주 평면 시스템 FT-US있다 : 여기 는 ggplot으로 Shape 파일을로드하는 데 사용하는 코드이다. 이 .shp 인이 NAD83의 지리적 좌표 시스템을 가지고 있지만, 나는 (NAD83 (UTM-17N)에 대한 EPSG 코드는 26917입니다) 상태면 시스템 없애도 NAD83에 투사 할 :

citylim83 <- spTransform(citylim, CRS("+init=epsg:26917")) 
    summary(citylim83) 

    Object of class SpatialPolygonsDataFrame 
    Is projected: TRUE 
    [+init=epsg:26917 +proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m 

    citylim83.df <- fortify(citylim83) 

이 데이터 프레임은 위에 표시된 ggmap 코드에서 사용되었습니다.

NAD83에 확실히 투영 되더라도 여전히 기본 ggmap에는 표시되지 않습니다. 가져온 get_map 객체의 기본 투영은 무엇입니까? 이것을 찾아내는 명령이있어서지도 위에 표시된 모양 파일과 내지도를 일치시킬 수 있습니까? 내 citylim 개체를 "unproject"해야합니까? 참고로 셰이프 파일은 명확하지 않은 경우 노스 캐롤라이나의 각 시정촌의 도시 경계 경계입니다. ggplot2/ggmap 커뮤니티가 처음이므로 도움이 될 것입니다. 여기

답변

7

당신은 대답이 :

library(ggmap) 
library(maptools) 
shapefile <- readShapeSpatial('MunicipalBoundaries_polys.shp', proj4string = CRS("+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2199999997 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs")) 
shp <- spTransform(shapefile, CRS("+proj=longlat +datum=WGS84")) 
data <- fortify(shp) 

nc <- get_map("North Carolina", zoom = 6, maptype = 'terrain') 
ncmap <- ggmap(nc, extent = "device") 
ncmap + 
    geom_polygon(aes(x = long, y = lat, group = group), data = data, 
       colour = 'grey', fill = 'black', alpha = .4, size = .1) 

좌표가 투영 longlat 변환을 할 필요를하며 일하고있어.

+0

감사합니다. 완벽하게 작동했습니다. 하나의 질문 :'proj4string' 옵션을 어떻게 지정해야하는지 어떻게 알았습니까? – doorguote

+0

QGIS를 사용했습니다. –

+0

http://proj.maptools.org/faq.html – geotheory

관련 문제