2013-06-01 3 views
3

안녕하세요 stackoverflow 커뮤니티!변환 모양 좌표계가 R

내가 직면 한 R GIS 문제를 친절하게 도와 줄 수 있습니까? 지오 코딩 된 주소 목록에 식별 가능한 변수를 지정하려고합니다. 지오 코드는 Google Maps API에서 가져온 것이므로 위도와 경도 정보가 있습니다 (즉, -155.6019 18.99883). 이 정보를 특정 모양 파일과 함께 사용하고 싶습니다. 내 딜레마는 내가 가지고있는 모양 파일이 같은 위도와 경도 시스템을 사용하고 있지 않다는 것입니다. 모양 파일에서 어떤 좌표계가 사용되는지 확인할 수 있도록 코드를 첨부했습니다 (예 : 843662.6 2132942).

내 주소 목록과이 셰이프 파일 간의 좌표를 일치시켜 두 개의 주소를 일치시키는 "오버레이"기능을 사용할 수있는 방법을 알려주십시오.

감사합니다. 즉, 투영 정보를 보존로

#function to download shapefile from web 
dlshapefile <- function(shploc,shpfile) { 
temp <- tempfile() 
download.file(shploc, temp) 
unzip(temp) 
} 

temp <- tempfile() 

require(maptools) 
dlshapefile(shploc="http://files.hawaii.gov/dbedt/op/gis/data/highdist_n83.shp.zip", temp) 
P4S.latlon <- CRS("+proj=longlat +datum=WGS84") 
shapeFile <- readShapePoly("highdist_n83.shp", verbose=TRUE, proj4string=P4S.latlon) 

답변

5

나는 rgdal 패키지 readOGR를 사용합니다.

require(rgdal) 

in.dir <- "your_directory_name" 

sh <- readOGR(in.dir, layer = "highdist_n83") 
[email protected] # note projection details 
sh2 <- spTransform(sh, CRS("+proj=longlat +datum=WGS84")) 
[email protected] # and after transforming 
plot(sh2) 

이 날을 제공합니다

> [email protected] # note projection details 
CRS arguments: 
+proj=utm +zone=4 +datum=NAD83 +units=m +no_defs +ellps=GRS80 
+towgs84=0,0,0 

과 : 그건 당신이 추가 할 주소 데이터와 함께 당신을 위해 작동하는 경우

> [email protected] # and after transforming 
CRS arguments: 
+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

을 참조하십시오. 당신이 ggplot2 경로를 아래로 이동하려면 편집은 당신이 뭔가를 할 수 있습니다 :

# Plotting with ggplot - first transform shapefile to data frame 
sh2.df <- fortify(sh2) 

# Fake address data taken from Google maps 
add <- data.frame(name = c("University of Hawaii", "Mokuleia Beach Park"), 
         lat = c(21.298971, 21.580508), 
         long = c(-157.817722, -158.191017)) 

# And plot 
ggplot(data = sh2.df, aes(x = long, y = lat, group = group)) + 
    geom_polygon(colour = "grey20", fill = "white", size = 0.8) + 
    geom_point(data = add, size = 3, aes(x = long, y = lat, group = NULL), pch = 21, fill = "red") + 
    coord_equal() + 
    theme() 

이 제공 :

screenshot

+0

고마워 SlowLearner합니다. 귀하의 솔루션은 분명하고 따를 수있었습니다. 나는 그것으로 많은 것을 배웠다. 고맙습니다! – user2300643