2017-05-08 12 views
0

두 개의 공간 객체가 있습니다. 하나는 공간 다각형 객체이고 다른 하나는 공간 점 객체로 바뀐 .csv 파일입니다. 첫 번째 것은 코뮌 정부 중 하나 인 칠레 정부의 공식 모양 파일이며, 다른 하나는 HERE API를 사용하여 지오 코딩 (geocoding)으로 작성되었으며, 같은 코뮌의 거리 주소입니다. CRS가 동일한 두 개의 공간 객체를 R에 그릴 수 없습니다

quilpue <- readOGR(dsn= getwd() , layer="quilpue-rgdal", 
       encoding = "UTF-8") 

그럼 I는 R로 .csv 파일을로드하고 sp 패키지에서 coordinates() 기능 오브젝트 공간 포인트로 변환 :

먼저 난으로부터 readOGR와 공간 다각형 객체를 로딩.

pointsCoords<- read.csv("../quilpueR/quilpueLayer.csv", header = TRUE) 
coordinates(pointsCoords) <- ~Longitude+Latitude 

그런 다음 각 개체의 투영을 검사했습니다. 각각

proj4string(quilpue) 
proj4string(pointsCoords) 

"+proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0"NA.

pointsCoords에서 유일한 영사는 CRS("+init=epsg:3857")입니다. 그러므로 나는 raster() 패키지 extent()와 두 개체의 확장을 확인할 때,이 중첩되지 않는, 그럼에도 quilpue

proj4string(pointsCoords) <- CRS("+init=epsg:3857") 
quilpue_prj <- spTransform(quilpue, CRSobj = CRS(proj4string(pointsCoords))) 

해당 돌출부를 할당.

extent(quilpue_prj) 
class  : Extent 
xmin  : -7957703 
xmax  : -7946463 
ymin  : -3907594 
ymax  : -3898059 

extent(pointsCoords) 
class  : Extent 
xmin  : -71498550 
xmax  : -71334950 
ymin  : -33133030 
ymax  : -32769810 

따라서 함께 정리하려고하면 겹치지 않습니다. 나는 음모를 꾸미기로 선택한 첫 번째 물체의 음모만을 얻습니다. Shape 파일에 문제가 발생했을 경우

plot(quilpue_prj) 
plot(pointsCoords, add = TRUE) 

확인하기 위해, 또는 .csv 파일, 나는 Maptitude 다른 GIS 소프트웨어를 모두 열어, 그것은 자동으로 오버레이 관리 할 수 ​​있습니다. R에서 동일한 작업을 수행 할 수 있기를 원합니다.

답변

0

문제를 해결할 수는 있지만 실제로 작동하는 이유는 알 수 없습니다. .csv 파일을로드하고 점이 오브젝트 공간을 만들

coordinates(pointsCoords) <- ~Longitude+Latitude 

사용 후, I는 그것을 투영 할당 raster 패키지에서 projection() 함수를 사용 : 다음

projection(pointsCoords) = "+init=epsg:4326" 

를, I는 투영 변형 "+init=epsg:4326""+init=epsg:3857"에 다음에 제 1 및 공간적 다각형 객체 quilpue :

quilpue <- spTransform(quilpue, 
      CRSobj = CRS("+init=epsg:3857")) 

quilpue <- spTransform(quilpue, 
         CRSobj = CRS("+init=epsg:4326")) 

bbox()와 I는 각각의 공간 객체의 범위 확인 :

bbox(pointsCoords) 

      min  max 
Longitude -71498550 -71334950 
Latitude -33133030 -32769810 

bbox(quilpue) 

    min  max 
x -71.48526 -71.38429 
y -33.09254 -33.02075 

하고 그들은 매우 유사 하였다 통지하고 pointsCoordsquilpue 것을 포함 하였다.유일한주의 사항은 quilpuecoords은 처음 두 자리 뒤에 "."이 있었으므로 gsub을 사용하여 에 에 "."을 추가했습니다.

dfcoords <- as.data.frame([email protected]) 
dfcoords$Longitude <- as.numeric(gsub("([[:digit:]]{6,6})$", ".\\1", 
         dfcoords$Longitude)) 
dfcoords$Latitude <- as.numeric(gsub("([[:digit:]]{6,6})$", ".\\1", 
         dfcoords$Latitude)) 
coordinates(dfcoords) <- ~Longitude+Latitude 

그리고 수정 된 coords을 원래 것부터 할당하십시오.

[email protected] <- [email protected] 

그런 다음 over()을 사용하고 공간 객체를 플로트 할 수있었습니다.

df_over <- over(quilpue_prj, pointsCoords) 
plot(quilpue) 
plot(pointsCoords, add = TRUE) 

enter image description here