FDGB를 지원하고 타사에 FGDB 드라이버 가 없는 상태로 "배송 된"GDAL 2.0.2를 사용 하여 해당 내용을 조사합니다. 테스트 환경은 Debian Jessie 64 비트입니다.
요컨대, "계층" Zone9_2014_01_Vessel
은 순수한 속성 데이터를 Zone9_2014_01_Broadcast
포함 하고 계층 은 위치 데이터를 포함 하는 것으로 보인다 . 시스템 호출과 GDB와 쉐이프 파일 컨테이너 (대응 끝에 마지막 스크립트)와의 대화를 통해 R 내에서 해결 방법을 사용할 수 있습니다.
조사 단계는 다음과 같습니다.
$ mkdir ~/dev.d/gis-se.d/gdb
$ cd ~/dev.d/gis-se.d/gdb
$ wget https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2014/01/Zone9_2014_01.zip
$ unzip Zone9_2014_01.zip
$ ogrinfo Zone9_2014_01.gdb Zone9_2014_01_Vessel | head -20
Had to open data source read-only.
INFO: Open of `Zone9_2014_01.gdb'
using driver `OpenFileGDB' successful.
Layer name: Zone9_2014_01_Vessel
Geometry: None <---------------------------- HERE
Feature Count: 1282
Layer SRS WKT:
(unknown)
FID Column = OID
MMSI: Integer (0.0)
IMO: Integer (0.0)
CallSign: String (255.0)
Name: String (255.0)
VesselType: Integer (0.0)
Length: Integer (0.0)
Width: Integer (0.0)
DimensionComponents: String (255.0)
OGRFeature(Zone9_2014_01_Vessel):1
MMSI (Integer) = 367603345
보시다시피 필드 Geometry
는로 설정되어 None
있습니다. ogr2ogr
dbase 속성 파일 만 사용하여 데이터를 모양 파일로 변환 할 수 있습니다 .
$ ogr2ogr -f 'ESRI SHAPEFILE' test Zone9_2014_01.gdb Zone9_2014_01_Vessel
$ ls test
Zone9_2014_01_Vessel.dbf
지오메트리 (위치)는 레이어에서 찾을 수 있습니다 Zone9_2014_01_Broadcast
.
$ ogr2ogr -f 'ESRI SHAPEFILE' test Zone9_2014_01.gdb
$ ls test
Zone9_2014_01_Broadcast.dbf
Zone9_2014_01_Broadcast.shp
Zone9_2014_01_Broadcast.prj
Zone9_2014_01_Broadcast.shx
Zone9_2014_01_Vessel.dbf
Zone9_2014_01_Voyage.dbf
AIS 메시지 프로토콜 에 따라 위치 데이터가없는 선박 및 항해 .
다음은 GDB가 파일 대화를 쉐이핑하고 패키지 foreign
가 dbf를 읽는 시스템 호출을 사용하는 R의 완전한 해결 방법입니다 .
# Load module to get readOGR
require('rgdal');
# Load module to get read.dbf
require('foreign');
# goto the directory with the GDB stuff
setwd('~/dev.d/gis-se.d/gdb')
# Conversation to a shapefile container
system("ogr2ogr -f 'ESRI SHAPEFILE' test Zone9_2014_01.gdb")
# read the vessels
vessel <- read.dbf('test/Zone9_2014_01_Vessel.dbf');
# read hte voyage data
voyage <- read.dbf('test/Zone9_2014_01_Voyage.dbf');
# read the geometries in broad cast
broadcast <- readOGR('test/Zone9_2014_01_Broadcast.shp','Zone9_2014_01_Broadcast')
OGR data source with driver: ESRI Shapefile
Source: "test/Zone9_2014_01_Broadcast.shp", layer: "Zone9_2014_01_Broadcast"
with 1639274 features
It has 10 fields
# is vessel OK?
head(vessel)
MMSI IMO CallSign Name VesselType Length Width DimensionC
1 367603345 NA <NA> <NA> 50 20 6 7,13,3,3
2 563000574 NA <NA> <NA> 70 276 40 188,88,20,20
3 367449580 NA <NA> <NA> 31 28 10 9,19,5,5
4 367302503 NA <NA> <NA> 31 20 8 8,12,4,4
5 304003909 NA <NA> <NA> 71 222 32 174,48,21,11
6 210080027 NA <NA> <NA> 71 294 32 222,72,22,10
# is voyage OK?
head(voyage)
VoyageID Destinatio Cargo Draught ETA StartTime EndTime MMSI
1 12 KAKE 50 20 <NA> 2014-01-01 <NA> 367603345
2 23 YOKOHAMA 70 125 2014-01-11 2014-01-01 2014-01-30 563000574
3 38 KETCHIKAN AK 31 40 2014-11-12 2014-01-01 <NA> 367449580
4 52 CLARENCE STRAIT LOGS 31 30 2014-09-12 2014-01-01 <NA> 367302503
5 62 JP TYO 71 90 2014-01-13 2014-01-01 2014-01-31 304003909
6 47 VOSTOCHNYY 71 106 2014-01-13 2014-01-01 <NA> 210080027