R-경계 상자를 만들고 다각형 클래스 및 플롯으로 변환


11

나는이 NE lat lngSW lat lng. 내 목표는 간단합니다 .RStudio를 사용하고 위의 두 위도 및 경도에서 경계 상자를 만들고 다각형을 생성하고 사각형 다각형에 임의의 점을 추가하고 싶습니다. data.frame으로 가져올 수있는 CSV 파일에 NELat / Lng 및 SW-Lat / Lng이 있습니다.

나는 시작하기 위해 약간의 지침이 필요합니다 .R 언어에 매우 익숙합니다. 내가 익숙한 것과는 다릅니다.

지금까지 나는 이것을 가지고있다 :

coords = cbind(78.46801, 19.53407)
coordsmax = cbind(78.83157, 19.74557 )
sp = SpatialPoints(coordsmax)
sp2 = SpatialPoints(coords)

r1 = rbind(coords, coordsmax[1, ])  # join
P1 = Polygon(r1)
Ps1 = Polygons(list(P1), ID = "a")
plot(Ps1)

방금 다른 예제를 보았지만 4 모서리의 다각형을 그릴 수는 없습니다.


r1에 하나의 복제 된 좌표 만 있습니다 .'r1 = rbind (coords, coordsmax)`입니까?
mdsumner

예, 수정했습니다. 그래도 작동하지 않습니다
user134611

한 번에 하나씩 문제를 해결하는 것이 해결책을 얻는 좋은 방법입니다. Polygon ()이 두 개 또는 하나의 좌표 만 제공하면 오류가 발생하지 않는 버그라고 생각합니다 .sp 문제에서 이것을 지적했습니다. 당신을 위해, library (raster); SPs1 <-as (extent (r1), "SpatialPolygons"); plot (SPs1)
mdsumner

stackexchange의 응답 기능을 사용해야하지만 죄송합니다. @ dof1985에서는 (x_min, y_min), (x_max, y_min), (x_max, y_max), (x_max, y_min), (x_min, y_min)을 좌표로 사용하여 다각형을 만듭니다. 나는 같은 것을 시도했지만 실패했다. 그런 다음 예제를 자세히 살펴보고 (x_min, y_min), (x_max, y_min) 대신에 (x_min, y_min), (x_min, y_max) 대신 사용하는지 검사했습니다. 내 오류의 이유는 무엇입니까? 예를 수정하십시오 :)
ExploreR

답변:


7

코드가 약간 변경되었습니다.

먼저 포인트 생성을 중단했습니다. 을 사용하지 않고 다각형을 형성 할 수 있습니다 SpatialPoints. 많은 점이 관련된 경우 점에서 다각형을 만드는 것이 좋습니다.

둘째, 아래 매트릭스에 5 개의 좌표를 썼습니다. 각 좌표 부부는 경계 상자의 한 구석을 가리키고 다섯 번째는 첫 번째 점을 반복합니다. 즉, 매트릭스는 [ (x_min, y_min) , (x_max, y_min), (x_max, y_max), (x_max, y_min), (x_min, y_min) ]을 포함한다

마지막으로, 나는 지리적 맥락에서 플롯 가능한 객체를 형성하는 데 사용 SpatialPolygons했습니다 espg:4326.

library(sp)

coords = matrix(c(78.46801, 19.53407,
               78.46801, 19.74557,
               78.83157, 19.74557,
               78.83157, 19.53407,
               78.46801, 19.53407), 
             ncol = 2, byrow = TRUE)


P1 = Polygon(coords)
Ps1 = SpatialPolygons(list(Polygons(list(P1), ID = "a")), proj4string=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))
plot(Ps1, axes = TRUE)

코드를 플롯하면 이런 일이 발생합니다.

선처럼 보이는 다각형

그리고 이것은 여기에 제시된 코드 수정 후입니다 :

본딩 박스


그게 다야! 당신은 조금 언급 할 수 proj4String있습니까? 위도 및 경도의 특성을 정의하고 있습니까?
user134611

도움말 ?is.projected을 보려면 R-console을 누르십시오 proj4string. 예, CRS 클래스를 공간 객체에 정의하는 데 사용됩니다
dof1985

21

extent래스터 라이브러리에서 함수 를 중첩하여 asSpatialPolygons 객체를 만들 수 있습니다.

library(sp)
e <- as(raster::extent(78.46801, 78.83157, 19.53407, 19.74557), "SpatialPolygons")
proj4string(e) <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
plot(e)

2
이것은 내 대답보다 더 나은 방법처럼 보입니다.
dof1985
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.