2014-02-15 2 views
-2

모양 파일을 압축했습니다. xlables 및 ylables을 Eastings 및 Northings이 아닌 동등한 경도 및 위도 값으로 변경하고 싶습니다. 제발 어떻게 북위 및 eastings.It 대신 위도 및 경도 표시 할 수 있습니다 WGS1984 shapefile 투영을 변경할 때 작동하지만 영역을 왜곡하고 그렇게 싶지 않아요. 내 코드는 모양 파일을 업데이트ggplot2의 동쪽 및 북쪽 위치에 Long Lat 표시

library(raster) 
library(RColorBrewer) 
library(ggplot2) 
library(ncdf) 
poly<-shapefile("Test_poly.shp", stringsAsFactors=FALSE, verbose=FALSE) 
ggplot(poly) + 
    aes(long,lat,group=group, fill = id) + 
    geom_polygon() + 
    geom_path(color="white") + 
    coord_equal() + 
    scale_fill_brewer("Bydeler") 
+1

당신의 링크는'Test_poly.shp'이지만 셰이프 파일은 * 파일 세트 *이므로'Test_poly.dbf','Test_poly.prg','test_poly.shp' 그리고 몇 가지 다른 것들이 있습니다. *이 모든 것을 제공해야합니다. 그렇지 않으면 코드가 실행되지 않습니다. – jlhoward

+0

또한 축의 레이블을 변경하기 위해 'scale_x_continuous'를 살펴보십시오. –

답변

1

(감사한다. 그러나 나는 또한 내 시스템 및 언급. 아마 가치가 설치된 rgdal R 패키지에 PROJ을 위해 필요한 것을 발견? 아니면이 그냥 그 사실을 반영한다 R에서 많은 공간 작업을하지 않습니다.)

궁극적으로 ggplot2에는 축에서 다른 매핑 단위를 사용하는 시스템이 내장되어 있다고 생각하지 않습니다. 여기에 제시된 해결 방법이 다소 엉망이지만 작동해야합니다.

위도와 경도를 얻으려면 셰이프 파일을 위도와 경도로 직접 변환해야합니다. 예 :

poly <- shapefile("Test_poly.shp", stringsAsFactors=FALSE, verbose=FALSE) 
poly <- spTransform(poly, CRS("+proj=longlat +ellps=GRS80")) 

ggplot(poly2) + 
    aes(long,lat,group=group, fill = id) + 
    ylim(c())+ 
    xlim(c(1324794,1341700)) + 
    geom_polygon() + 
    geom_path(color="white") + 
    coord_equal() + 
    scale_fill_brewer("Bydeler") 

지적했듯이지도가 왜곡됩니다. 이것은 위도의 한 단위 간의 차이가 하나의 단위 인 것과 같지 않기 때문에 같다고 생각합니다. 그러나 ggplot에 동일한 좌표를 사용하도록 말했기 때문입니다.

내가 볼 수있는 최선의 방법은이 경우 lat와 lon 사이의 비율을 알아 내고 coord_equal() 대신 coord_fixed(ratio = X) (여기서 X는 비율 임)으로 지정하는 것입니다.

당신은 poly 객체를 인쇄하고 변환되지 않은 및 변형 형상 객체 사이의 '범위'를 비교하여이 비율을 알아낼 수있을 것입니다 :

> poly 
    class  : SpatialPolygonsDataFrame 
    features : 7 
    extent  : 1211747, 1466285, 728771.9, 999422.3 (xmin, xmax, ymin, ymax) 
    coord. ref. : +proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x_0=1000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs +towgs84=0,0,0 
    variables : 1 
    names  : Id 
    min values : 0 
    max values : 0 

또는 원래 Shape 파일을 사용할 수있는 다음 매뉴얼을 사용 예를 들어, scale_y_continuous(breaks = c(700000, 800000, 900000,1000000), labels = c(51,52,53,54))

이러한 것들은 세련된 해결책은 아니지만 표현이나 출판을위한 그림을 만들기에 충분할만큼 잘 작동해야합니다.