답변:
shapefile을 직접 사용하십시오. rgdal
또는 sf
패키지를 사용 하여이 작업을 쉽게 수행 하고 개체의 모양을 읽을 수 있습니다 . 두 패키지 모두 dsn
에 대해-shapefile의 경우 디렉토리 인 데이터 소스 와 layer
-shapefile 이름에서 확장자를 뺀 데이터 소스 를 제공해야합니다 .
# Read SHAPEFILE.shp from the current working directory (".")
require(rgdal)
shape <- readOGR(dsn = ".", layer = "SHAPEFILE")
require(sf)
shape <- read_sf(dsn = ".", layer = "SHAPEFILE")
(rgdal를 들어, OSX 또는 Linux에서 데이터 소스 (같은 홈 디렉토리의 '~'속기를 사용할 수 없습니다 dsn
. 그렇지 않으면 당신은 메시지 "공개 데이터 소스 수 없다"는 인정을 얻을 것이다 -) 디렉토리를 sf
패키지하지 않습니다 다른 장점들 중에서도 이러한 제한이 있습니다.)
이렇게하면 Spatial * DataFrame (점, 선 또는 다각형) 인 객체가 제공됩니다. 속성 테이블의 필드는 일반 데이터 프레임과 같은 방식으로 (예 : shape$ID
ID 열) 액세스 할 수 있습니다 .
가져온 ASCII 파일을 사용하려면 텍스트 (문자) x 및 y 필드를 숫자로 변환해야합니다. 예 :
shape$x <- as.numeric(as.character(shape$x))
shape$y <- as.numeric(as.character(shape$y))
coordinates(shape) <- ~x + y
편집 2015-01-18 : rgdal은 주로 투영 정보를 자동으로 읽고 쓰는 점에서 maptools보다 조금 낫습니다.
노트:
as.numeric(as.character())
함수-ASCII 텍스트를 인자로 읽은 경우 인자 레벨 대신 숫자 값을 얻습니다.rgdal
및 sf
다른 파일 및 데이터베이스 유형에 액세스 혼란 방법이 (A GPX 파일을 예를 DSN을 파일 이름이며, 같은 중간 점, 트랙 포인트 등 같은 층 개별 구성 요소), 온라인 예를주의 깊게 읽기가 필요하다.as.character
문제를 해결하기 위해 중첩 으로 업데이트됩니다 .
dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
인수가 후행 슬래시를 포함 할 수 없습니다 --- 예를 들면 dsn = "C:/Users/Downloads/"
해야한다 dsn = "C:/Users/Downloads"
. 이것이 누군가의 좌절을 해결하기를 바랍니다 ...
나는 Simbamangu에 동의하고 shapefile을 유지한다는 측면에서 gissolved하지만 특히 rgdal 라이브러리에주의를 기울이고 싶습니다. NCEAS에 gissolved가 제안한 링크를 따르고 rgdal에 대한 지시 사항을 따르십시오. 일부 기계에는 설치하기가 어려울 수 있지만 투영에있어 결과를 크게 향상시킬 수 있습니다.
maptools 라이브러리는 훌륭하며 읽고있는 shapefile의 투영을 정의 할 수 있지만 proj4 형식으로 해당 투영을 지정하는 방법을 알아야합니다. 예를 들면 다음과 같습니다.
project2<-"+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80
+datum=NAD83 +units=m +no_defs" #USA Contiguous Equidistant Conic Projection
data.shape<-readShapePoly("./MyMap.shp",IDvar="FIPS",proj4string=CRS(project2))
plot(data.shape)
이 경로 를 사용하려면 proj4 형식의 투영 모양을 파악할 수있는 장소로 http://spatialreference.org 를 권장 합니다. rgdal은 ESRI shapefile의 .prj 파일 (shapefile에 대한 ESRI의 투영 정의를 포함하는 파일)을 읽어서 쉽게 만들 수 있습니다. 같은 파일에서 rgdal을 사용하려면 다음과 같이 작성하면됩니다.
library(rgdal)
data.shape<-readOGR(dsn="C:/Directory_Containing_Shapefile",layer="MyMap")
plot(data.shape)
단일 shapefile로 작업하는 경우이 작업을 수행하지 않고도 스케이트를 타는 것이 가능하지만 여러 데이터 소스를 보거나 Google Maps로 오버레이를 시작하자마자 투영을 좋은 형태로 유지하는 것이 필수적입니다.
포인트 패턴 가져 오기 및 작업에 관한 많은 자료를 포함하여 R의 공간 데이터에 대한 유용한 연습을 위해 https://csde.washington.edu/workshop/point-patterns-and-raster에 온라인으로 오래된 코스 자료가 있습니다. -surfaces / ( 여기 에서 더 많은 워크샵을 찾을 수 있습니다 )는 이러한 방법이 실제로 어떻게 비교되는지 확인할 수 있습니다.
모양 파일을 ASCII로 변환하지 말고 공간 확장 중 하나와 함께 모양 파일을 직접 사용하십시오. 여기서 셰이프 파일 http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles 를 읽고 쓰는 세 가지 방법을 찾을 수 있습니다 . R- 공간 프로젝트는 아마도 http://cran.r-project.org/web/packages/sp/index.html에 관심이있을 것입니다 .
sf
라이브러리를 사용 하여에서 Shapefile을 직접 열 수 있습니다 R
. rgdal
라이브러리 보다 빠릅니다. 여기 에서 R- 벤치 마크의 간단한 기능을 확인하십시오 . sf
패키지 에 대한 자세한 내용은 프로젝트 홈페이지 r-spatial을 확인하십시오 .
# Load library
library('sf')
# Load shapefile
shapename <- read_sf('~/path/to/file.shp')
2017의 쉬운 해결책 shapefile()
은 raster
라이브러리 의 기능입니다 .
#Load library
library(raster)
#Load shapefile
shp <- shapefile("myshapefile")
업데이트 : 이것은 2019 년에도 여전히 좋은 옵션입니다.
또 다른 대안은 다음을 제공 하는 fastshp 라이브러리 를 사용 하는 것입니다.
큰 ESRI shapefile (.shp) 처리를위한 루틴. 여기에는 점을 읽고, 얇게하고, 점을 포함하는 모양에 일치시키는 것이 포함됩니다. 이 패키지의 주요 목표는 큰 모양 파일 (수백만 포인트)을 지원하는 속도를 제공하는 것입니다. 다른 shapefile 패키지보다 몇 배나 더 빠른 속도입니다.
다음은 ggplot2와 함께 사용하는 방법에 대한 SE의 질문입니다.