2013-11-20 13 views
4

에서 읽을 수있는 방법 프랑스 국립 연구소 (Insee)는 MapInfo 형식 (.mid 및 .mif 파일 두 개와 dbf 파일 한 개)으로 지리적 데이터를 제공합니다. R에서이 파일들을 어떻게 읽을 수 있습니까?Mapinfo 파일을 R

여기에 하나의 example입니다.

답변

7

그러나

R> ogrListLayers("R02_rfl09_UTM20N1000.mid") 
[1] "R02_rfl09_UTM20N1000" 

R> readOGR("R02_rfl09_UTM20N1000.mid", layer="R02_rfl09_UTM20N1000") 
OGR data source with driver: MapInfo File 
Source: "R02_rfl09_UTM20N1000.mid", layer: "R02_rfl09_UTM20N1000" 
with 967 features and 4 fields 
Feature type: wkbPolygon with 2 dimensions 
Error in stopifnot(is.list(srl)) : ring not closed 

:

R> library("rgdal") 
R> ogrDrivers()[28, ] 
      name write 
28 MapInfo File TRUE 

그러나 파일/구조에 문제가있는가, readOGR 오류 메시지를 제공합니다 , GRASS GIS으로 파일을 읽을 수있었습니다.이 파일은 R (패키지 spgrass6)에서 스크립팅 할 수 있습니다 :

v.in.ogr dsn=R02_rfl09_UTM20N1000.mid output=R02_rfl09_UTM20N1000 snap=1e-08 

GRASS screenshot

+0

나는 다음과 같은 오류가 발생했습니다 :'stopifnot의 오류 (is.list (srl))''readOGR로로드 한 데이터를 사용할 수 없습니다. 당신의 솔루션에 대한 감사합니다. – PAC

5

pdf는 .mid 구조 만 정의하기 때문에 말하기는 다소 어렵습니다.

날짜와 관련하여 원하는 작업에 따라 다르지만 .mid 파일에는 각 영역의 SW 좌표가 있으며 .mif 파일을 검사 할 때 각 영역은 1000m2이므로 오히려 그들을로드보다 (이 데이터 샘플) 영역을 calcuate.

것은 그래서 여기에로드 방법 중 하나입니다,하지만 당신이

먼저 사본 데이터에 대해 수행 할 작업에 따라 달라집니다. csv 파일을 작업 디렉토리에 넣은 다음

coords<-read.csv(file="R02_rfl09_UTM20N1000.mid", header=FALSE) 
colnames(coords)<-c("SW.E","SW.N","ind","indXYNE1") 
# add the co-ords for the area 
coords$SE.N=coords$SW.N 
coords$SE.E=coords$SW.E+1000 
coords$NW.N=coords$SW.N+1000 
coords$NW.E=coords$SW.E 
coords$NE.N=coords$SW.N+1000 
coords$NE.E=coords$SW.E+1000 

head(coords) 

이렇게하면 당신 :

난 당신이 찾고있는 것을 추측 각 영역의 네 경계 지점, 플러스 공업 및 indXYNE1입니다
SW.E SW.N ind indXYNE1 SE.N SE.E NW.N NW.E NE.N NE.E 
1 690000 1636000 241  6 1636000 691000 1637000 690000 1637000 691000 
2 690000 1637000 414  3 1637000 691000 1638000 690000 1638000 691000 
3 690000 1638000 240  6 1638000 691000 1639000 690000 1639000 691000 
4 690000 1640000 8  0 1640000 691000 1641000 690000 1641000 691000 
5 691000 1634000 142  0 1634000 692000 1635000 691000 1635000 692000 
6 691000 1635000 216  5 1635000 692000 1636000 691000 1636000 692000 
.... 

? 그런 다음 SW 포인트 (또는 새 파생 키)를 사용하여 각 영역에 대한 참조로 데이터를 변형 할 수 있습니다.

희망 하시겠습니까? 데이터로 수행하려는 작업에 약간의 차이가 있습니다. 맵 인포 파일 (패키지 rgdal)에 대한 OGR-드라이버가

+0

그래요. 모든 베이비 스텝을 포함하여 멋진 코드를 포함하여 그 요령을 보여주는 약간의 요령이 있습니다 : https://gist.github.com/Robinlovelace/29d387f6b48fd9bf9d2d – RobinLovelace