2013-05-09 4 views
1

셰이프 파일에서 위도와 경도를 얻고 싶습니다. 지금까지는 셰이프 파일을 읽는 방법 만 알고 있습니다.공간 객체에서 위도와 경도 가져 오기 R

library(rgdal) 
centroids.mp <- readOGR(".","35DSE250GC_SIR") 

하지만 centroids.mp에서 위도와 경도를 어떻게 추출 할 수 있습니까?

+0

readShapePoints가 maptools (rgdal이 아닌)에 있기 때문에 coordinates() 솔루션이 경도/위도에 대해 작동하는지 실제로 알기 위해 summary (centroids.mp)와 같이 더 많이 볼 필요가 있습니다. – mdsumner

+0

네 말이 맞아. 이미 패키지 이름을 편집했습니다. 이렇게 돼서 미안하다. –

+0

** rgdal **에는'readShapePoints()'함수가 없으므로, 여러분이 한 것과 당신이 무엇을 요구하고 있는지 명확하지 않습니다. –

답변

8

이 질문에 대한 몇 가지 수준이있다.

경도와 위도를 묻지 만이 좌표계는이 개체에서 사용하지 않을 수 있습니다. 당신이이 SpatialPointsDataFrame, 모든 라인의 목록입니다 이것은 SpatialLinesDataFrame 경우 좌표, 그냥 무게 중심 경우 경우 "무게 중심"이 좌표의 모든 것이라고이

coordinates(centroids.mp) 

주와 같은 좌표를 얻을 수 있습니다 이것은 SpatialPolygonsDataFrame입니다.

좌표는 경도와 위도 일 수 있지만 개체는이를 알지 못할 수 있습니다. 사용

proj4string(centroids.mp) 

"NA"인 경우 개체는 (A)를 알지 못합니다. "+ proj = longlat"을 포함하면 객체는 알 수 있으며 경도/위도 (B)입니다. "+ proj ="와 다른 이름 ("longlat"이 아님)이 포함되어 있으면 객체가 알기 때문에 경도/위도 (C)가 아닙니다.

(A) 알아야 할 경우 또는 값에서 분명한 경우 일 수 있습니다.

(B) 완료 한 경우 (먼저 가정을 확인해야하지만,이 메타 데이터가 잘못 될 수 있음).

하는 경우 (C) 할 수 있습니다 (꽤 안정적으로 먼저 가정을 확인해야하지만) 이런 식으로 (데이텀 WGS84에) 경도 위도로 변환 :

그것은 당신의 질문은 전혀 "GDAL"를 포함 분명하지 않다
coordinates(spTransform(centroids.mp, CRS("+proj=longlat +datum=WGS84"))) 
+0

'pro4string' 또는'proj4string'입니까?(첫 번째 오류가 발생했습니다) –

+0

proj4string, 죄송합니다, 지금 고정 – mdsumner

+0

고마워, 지금은 잘 작동하고있어 :) –

4

사용과 같은 coordinates() :

library(maptools) 
xx <- readShapePoints(system.file("shapes/baltim.shp", package="maptools")[1]) 
coordinates(xx) 
#  coords.x1 coords.x2 
# 0  907.0  534.0 
# 1  922.0  574.0 
# 2  920.0  581.0 
# 3  923.0  578.0 
# 4  918.0  574.0 
#  [.......] 
+0

maptools로 도형 파일을 열려고 할 때 오류가 발생합니다. 이것은 오류입니다 : "getinfo.shape (filen)의 오류 : SHP 파일을 여는 중 오류가 발생했습니다". Rgdal을 사용하면 파일을 읽을 수 있습니다. 무슨 일이 일어나고 있는지 아십니까? –

+0

아니요. 일반적으로 ** rgdal **의'readOGR()'만 사용하여 벡터 레이어를 읽습니다. ** rgdal **이 작동하면 ** maptools **를 잊어 버리는 것이 어떻습니까? –

+0

위도/경도가 아닐 수 있으므로 좌표()의 사용에는 proj4string (xx)에 대한 안전 검사가 포함되어야하며 rgdal을 사용하는 경우 변형을 포함 할 수 있습니다 일반은 아마도 안전하지 않을 것입니다.) – mdsumner