Saya mencoba membaca tabel langsung dari file ESRI geodatabase ke dalam R. Contoh file data dapat diunduh di sini . Basis data berisi kelas fitur titik (Zone9_2014_01_Broadcast) dan dua tabel tertaut (Zone9_2014_01_Vessel dan Zone9_2014_01_Voyage). Anda dapat membaca shapefile di R menggunakan readOGR
dari rgeos
paket:
library(rgeos)
library(downloader)
download("https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2014/01/Zone9_2014_01.zip", dest="Zone9_2014_01.zip", mode="wb")
unzip("Zone9_2014_01.zip", exdir = ".")
# Not Run (loads large point file)
# broadcast <- readOGR(dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Broadcast")
Dua tabel tertaut juga menunjukkan kapan Anda menggunakan ogrListLayers
atau ogrInfo
. Namun, ogrInfo
beri peringatan:
Pesan peringatan: Di ogrInfo ("Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel"): ogrInfo: semua fitur NULL
Dan jika Anda mencoba menggunakan readOGR
tabel Anda mendapatkan kesalahan:
vessel <- readOGR(dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel")
Kesalahan pada readOGR (dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel"): tidak ada fitur yang ditemukan Selain itu: Pesan peringatan: Di ogrInfo (dsn = dsn, layer = layer, pengkodean = penyandian, use_iconv = use_iconv,: ogrInfo:: semua fitur NULL
Dengan demikian, tampaknya hanya fitur geografis yang dapat dibaca oleh readOGR. Apakah ada cara untuk mengimpor tabel secara langsung ke R atau merupakan satu-satunya solusi untuk mengekspornya dari ArcGIS sebagai file * .dbf (atau * .txt) seperti dalam jawaban ini ?
Sebagai tambahan, jika ada yang dapat memberikan panggilan dari R ke skrip python yang mengotomatiskan ekspor file * csv (lebih disukai) atau * .dbf, itu akan menjadi solusi yang dapat diterima. Solusinya hanya perlu scalable dan otomatis.
sumber
arcgisbbinding
di R. Fungsi iniarc.open()
akan membuka tabel sebagaiarc.dataset-class object
. Untuk membuka langsung sebagaidata.table
, gunakan fungsiarc.select
.Jawaban:
Saya sedikit terlambat ke pesta, tetapi ini sekarang dapat dibaca
sf
, denganIni mengembalikan peringatan (tidak ada fitur geometri hadir) tetapi juga data.frame dengan tabel. Lihat utas yang dimulai di sini: https://stat.ethz.ch/pipermail/r-sig-geo/2018-February/026344.html
sumber
sf
solusi dan Google dengan senang hati membawa saya kembali ke pesta yang sama ini dengan solusi yang sangat membantu (jadi saya dengan senang hati menambahkan upvote saya ke pertanyaan ini).Saya menggunakan GDAL 2.0.2 yang "dikirim" dengan dukungan FDGB dan tanpa pihak ketiga driver FGDB untuk menyelidiki hal-hal itu. Lingkungan pengujian adalah Debian Jessie 64-bit.
Singkatnya, tampaknya, bahwa "lapisan"
Zone9_2014_01_Vessel
berisi data atribut murni dan lapisan ituZone9_2014_01_Broadcast
berisi data posisi. Anda dapat menggunakan solusi dalam R melalui panggilan sistem dan percakapan GDB ke wadah shapefile (skrip terakhir di akhir jawaban).Berikut langkah-langkah investigasinya:
Ketika Anda melihat bidang
Geometry
diatur keNone
. Anda dapat mengonversi data ke file bentuk menggunakanogr2ogr
dan juga mendapatkan hanya file atribut dbase:Geometri (posisi) dapat ditemukan di lapisan
Zone9_2014_01_Broadcast
.Kapal dan Voyage tidak mengandung data posisi sesuai dengan protokol pesan AIS .
Di sini solusi lengkap dalam R menggunakan panggilan sistem untuk GDB untuk membentuk percakapan dan paket
foreign
untuk membaca dbf:sumber
Tidak yakin apakah Anda dapat melakukan ini dengan readOGR tetapi cobalah
Jika itu tidak berhasil coba
ogr2ogr
secara langsung, yang dapat mengekspor non-geometri ke tabel. (Mungkin coba paket RgdalUtils
untuk menjalankannya, setelah proses Anda selesai.)sumber
readOGR
tidak memiliki kemampuan untuk membaca tabel gdb.Ada integrasi yang baru-baru ini dirilis antara R dan ArcGIS dari Esri, yang disebut R ArcGIS Tools . Ini memberikan integrasi antara R dan ArcGIS yang memungkinkan untuk mengakses alat R dan sumber daya ArcGIS secara bergantian. Anda harus dapat mengakses kelas / tabel fitur geodatabase dengan integrasi ini.
Alat sampel R tersedia di sini dan alat sampel yang menggambarkan penggunaan R dalam skrip geoproses ada di sini .
sumber
Fungsi kustom ini pada dasarnya mengikuti jalur yang diuraikan oleh @huckfinn tetapi menggunakan
gdalUtils
pustaka yang disarankan oleh @mdsumner.Jalankan seperti ini:
Jika Anda belum
gdal
menginstal, Anda harus menginstalnya untuk memberikan aksesgdalUtils
. Anda dapat menemukan binari dan instruksi untuk pemasangan 'gdal' di sini .sumber