R을 사용하여 히스토그램 분석을 위해 점 데이터를 그리드 데이터 프레임으로 변환?


14

나는 GIS 데이터를 처음 사용하고 R에 대해 약간만 경험했습니다 .patial-analyst.net PDF 책을 사용하여 공간 데이터를 분석하는 방법에 대해 읽었으므로 완전히 잃지는 않았지만 설명 할 수 있다고 생각했습니다. 내 문제와 사람들은 아이디어를 제안 할 수 있습니다.

다른 위도 / 경도 좌표에서 약 2000 개의 측정 값을 가진 데이터 세트가 있지만 데이터가 3 년 동안 수집되고 시간이 지남에 따라 조건이 변경됨에 따라이 데이터 세트를 세분화 할 것입니다. 측정되는 변수를 "IP"라고합시다.

샘플 데이터에 Kriging 또는 다른 보간법을 사용하여 문제의 전체 영역에 IP 맵을 만들고 싶습니다. 그런 다음 다양한 IP 버킷의 토지 양을 측정하는 히스토그램을 만들고 싶습니다. 또한 각 버킷의 샘플 수를 표시하는 히스토그램을 만들어야합니다 (샘플링이 kriging이 예측 한 것보다 실제 IP가 높거나 낮을 수 있음에 유의하십시오).

SpatialPointsDataFrame에 데이터를로드하고 크릭 팅 분석을 실행하는 방법에 따라 히스토그램 분석을 수행 할 수 있도록 데이터를 그리드 데이터 프레임으로 변환하는 방법에 문제가 있습니다.

포인트를 그리드로 변환하기위한 제안 사항이 있습니까?

답변:


12

당신 말이 맞아요. 아주 쉽습니다! "래스터"패키지에는 래스터 생성 및 조작을 처리하는 매우 간단한 방법이 있습니다.

library(maptools)
library(raster)

# Load your point shapefile (with IP values in an IP field):
pts <- readShapePoints("pts.shp")

# Create a raster, give it the same extent as the points
# and define rows and columns:

rast <- raster()
extent(rast) <- extent(pts) # this might be unnecessary
ncol(rast) <- 20 # this is one way of assigning cell size / resolution
nrow(rast) <- 20

# And then ... rasterize it! This creates a grid version 
# of your points using the cells of rast, values from the IP field:
rast2 <- rasterize(pts, rast, pts$IP, fun=mean) 

여러 가지 방법으로 그리드 크기와 해상도를 지정할 수 있습니다. 래스터 패키지 설명서를 잘 살펴보십시오.

래스터 화에서 래스터 셀의 값은 위의 예에서 함수 '평균'을 사용하여 계산할 수 있습니다. 당신이 이것을 넣었는지 확인하십시오. 그렇지 않으면 마지막 으로 나온 지점 의 IP 값만 사용합니다 !


CSV에서 :

pts <- read.csv("IP.csv")
coordinates(pts) <- ~lon+lat
rast <- raster(ncol = 10, nrow = 10)
extent(rast) <- extent(pts)
rasterize(pts, rast, pts$IP, fun = mean)

이 기능은 매우 유용하지만 shapefile이 아닌 위도 / 경도의 간단한 CSV로 포인트를 시작하면 코드가 어떻게 표시됩니까? CSV의 열은 IP, Lat, Long 등입니다.
user1080253

이미 데이터를 SpatialPointsDataFrame에로드했음을 표시했습니다 pts. 위의 예 와 정확히 같습니다 . SpatialPointsDataFrame 객체에서 코드를 실행하십시오!
Simbamangu

4
이 답변은 훌륭하지만 필요한 것을 다루지 않는 것 같습니다. 대신 gis.stackexchange.com/questions/20018에 대한 솔루션을 제공하는 것으로 보입니다 . 문제는 래스터 셀에 값을 할당하는 것이 아니라 2000 정도의 포인트 를 보간 하는 것입니다 . OP가 이미 "크리깅 분석을 실행했다"고 주장하는 것을 감안할 때,이 질문은 유사 절차 에서 사용하기위한 래스터 (예 :)의 값 을 추출 하는 것 입니다. rhisthist(getValues(r))
whuber

@whuber-OP가 묻는데 "문제가있는 곳은 데이터를 그리드 데이터 프레임으로 변환하는 방법이므로 히스토그램 분석을 수행 할 수 있습니다 ... 점을 그리드로 변환하기위한 제안"을 실제 질문으로 알고 어떻게 SpatialPointsDataFrame을 만들고 크릭을 실행합니다. 그러나 맞습니다. 20018의 복제본 인 것 같습니다 (그리드 입력 제외).
Simbamangu

사과, @ user1080253 ... 나는 '그리드'를 '래스터'라고 읽지 않습니다. 일반 그리드를 만들고 해당 그리드에 데이터 보간하는 방법에 대한 자세한 내용은 여기 를 참조 하십시오 .
Simbamangu

3

plotKML 패키지에는라는 함수가 vect2rast있습니다. 이 기능은 기본적으로 rasterize래스터 패키지에서 사용 가능한 기능을 확장합니다 . 장점 vect2rast; 그러나, 그것은 사용자 측으로부터 입력을 필요로하지 않는다는 것이다. 즉, 입력 데이터 세트의 속성에 기초하여 그리드 셀 크기 및 바운딩 박스를 자동으로 결정한다. 그리드 셀 크기는 맵의 기능 밀도 / 크기 ( nndistspatstat 패키지 의 기능)를 기반으로 추정됩니다 .

library(plotKML)
Rast2 <- vect2rast(pts)

# for large data sets use SAGA GIS:
Rast2 <- vect2rast(pts, method = "SAGA")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.