2017-02-17 1 views
1

래스터를 다각형으로 변환 중입니다. 내 초기 래스터에서 셀은 다른 영역을 가지고 있지만, rasterToPolygons을 사용하여 폴리곤으로 변환하고 그것을 플롯하면 초기 셀에 다른 영역이 있더라도 동일한 거리의 격자가 나타납니다.래스터에서 다각형으로 래스터가 다른 영역을 가지고 있더라도 정규 격자를 보여 줍니까?

내 R 코드와 관련된 문제입니까, 아니면 예측에 대한 잘못된 이해가있는 문제입니까? 셀 영역에 비례하는 면적으로 폴리곤을 표현하려면 어떻게해야합니까?

library(raster) 
r <- raster(nrow=18, ncol=36) 
r$value <- 1:ncell(r) 
r$area <- as.data.frame(area(r))$layer 

head(as.data.frame(r)) 

ras_to_pol <- rasterToPolygons(r) 
spplot(ras_to_pol, "area", main="Area of initial cells converted to polygons") 

enter image description here

감사합니다!

답변

1

코드에서 셀의 해상도와 래스터 또는 투영 범위를 지정하지 않았습니다.

extent  : -180, 180, -90, 90 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

당신은 당신이 위도와 경도에 10도 양의 세포를 얻을 것이다, 따라서 "광장"세포 당신은 비행기의 "직교 좌표"그들을 플롯 할 때 nrow=18, ncol=36을 사용하고 있기 때문에 : 따라서 raster 기본값 .

그러나, 지리적 좌표에 영역 "구형"는 10 × 10도 셀 실제 위도 변화에 대응하는 표면의는 "컬러"로 나타내는 바와 같이, (여기 여기 https://badc.nerc.ac.uk/help/coordinates/cell-surf-area.html 대한 설명 https://gis.stackexchange.com/a/29743 및보기) 네 음모에.

"area"변수가있는 다각형을 갖고 싶다면 동등 영역 투영으로 다시 투영해야합니다. 많은이 있습니다 여기에 내가 예로서 원추형 평등 영역을 사용하고 있습니다 : 다각형의 면적은 위도에 따라 감소하는 방법

ras_to_pol_new <- spTransform(ras_to_pol, CRS("+init=epsg:3410")) 
spplot(ras_to_pol_new, "area", main="Area of initial cells converted to polygons") 

enter image description here

당신은 볼 수 있습니다. (투영법에 대한 아주 좋은 입문서는 예 : https://kartoweb.itc.nl/geometrics/Map%20projections/mappro.html)

+0

설명해 주셔서 감사합니다. 그래서 문제는 제가 데카르트 좌표계에 그려지고 있다는 것입니다. 면적에 비례하여 "모양"이있는 셀을 사용하려면 어떤 좌표계/투영법을 사용해야합니까? – Matifou

+0

음, 실제로 "직교 좌표"를 사용하고있는 것은 아닙니다. 지리적 인 투영은 동등한 영역이 될 수 없다는 사실에서 더 많이 알 수 있습니다. "가변 영역"을 보려면 동등한 면적 투영으로 재 투척해야합니다 (편집 된 답변 참조). – lbusett

+0

끝내,이 질문에 완벽하게 대답, 감사합니다. – Matifou

관련 문제