2011-12-20 3 views
1

저는 50 개 이상의 다른 다각형 (50 개 이상의 다른 영역을 나타냅니다)과 10,000 개 이상의 데이터 포인트가있는 셰이프 파일을 하나의 영역에 포함하고 있습니다. 문제는 이미 10,000 개 이상의 포인트가 이미 있어야하는 지역으로 코딩 되었기 때문에 지리적 공간 거리에서이 코딩 된 지역에서 얼마나 멀리 떨어져 있는지 파악하고 싶습니다.다각형에서 지리적 거리를 계산하는 방법은 무엇입니까?

셰이프 파일을 라이브러리의 owin 개체로 변환하고 distfun을 사용하는 나의 현재 접근법 (아래 코드)은 위도가 긴 유클리드 공간에서 거리를 가져옵니다. 그러나 나는 지리적 - 공간적 거리 (결국 km로 변환)를 얻고 싶습니다. 나는 어디로 가야합니까?

#basically cribbed from http://cran.r-project.org/web/packages/spatstat/vignettes/shapefiles.pdf (page 9) 
shp <- readShapeSpatial("myShapeFile.shp", proj4string=CRS("+proj=longlat +datum=WGS84")) 
regions <- lapply(slot(shp, "polygons"), function(x) SpatialPolygons(list(x))) 
windows <- lapply(regions, as.owin) 

# need to convert this to geo distance 
distance_from_region <- function(regionData, regionName) { 
    w <- windows[[regionName]] 
    regionData$dists <- distfun(w)(regionData$lat, regionData$long) 
    regionData 
} 
+0

sp에서 sp1을 시도하고 longlat = TRUE로 설정하십시오. – mdsumner

+0

@mdsummer : spDistsN1은 두 점 사이의 거리를 계산합니다. 나는 다각형에서 점으로의 거리가 필요하다. 변환하는 방법은 나에게 즉시 명백하지 않다. – prabhasp

+0

다각형의 좌표는? 중심 또는 일부 선택된 경계 지점 (가장 가까운 지점?) 또는 모든 경계 지점? 귀하의 질문은 이것에 대해 명확하지 않습니다. spDists/spDistsN1은지도 투영을 선택하지 않고 점 집합 사이에 필요한 큰 원 거리를 제공하므로 궁극적으로 올바른 좌표 또는 요약이 추출되면 사용하게됩니다.이 문제에 대한 질문을 명확히 할 수 있습니까? ? – mdsumner

답변

3

나는 유클리드에 데이터를 프로젝트 것 (또는 유클리드 근처) 좌표계 - 당신은 세계의 큰 덩어리에 걸친하지 않는 한 다음이 가능하다. maptools 또는 sp 또는 rgdal에서 spTransform을 사용하고 (나는 잊어 버립니다) 데이터 근처의 UTM 영역으로 변환하십시오.

당신도 패키지 rgeos과 gDistance 기능을 더 잘 할 수 있습니다

gDistance by default returns the cartesian minimum distance 
between the two geometries in the units of the current projection. 

데이터가 ... 다음 세계의 큰 덩어리를 통해 까다로운 경우 ... 42 ...

배리

관련 문제