Чтение файловой базы геоданных с использованием R?

12

Файловая база геоданных (fgdb) включает в себя множество таблиц файловой базы геоданных. Насколько я знаю, они существуют в виде dbfфайлов, но находятся внутри Database.gdb.

В ArcCatalog путь к файлу похож на C:\Users\...\Database.gdb\Stats_AA.

Как прочитать все эти dbfфайлы в R(статистическое программное обеспечение)? Каков правильный путь поставки? Используемая функция read.dbf(в стороннем пакете).

Варианты

test<-read.dbf(file="C:/Users..Database.gdb/Stats_AA.dbf") 

и

test<-read.dbf(file="C:/Users..Database/Stats_AA.dbf") 

не работает Какую правильную «форму» имени файла использовать, или мне нужно экспортировать все таблицы файловой базы геоданных в какую-либо другую форму или местоположение?

бабушка
источник
1
Базы геоданных хранят геометрию в полях BLOB-объектов, а не в dbf (но в шейп-файле).
Mapperz
1
Я собирался предложить использовать oledb-провайдер Esri для файловых баз геоданных , однако похоже, что R не может прочитать oledb . Возможно, стоит поднять этот вопрос, а также этот .
Кирк Кайкендалл

Ответы:

4

Простое решение - использовать Table to dBase (множественный) для экспорта ваших таблиц (Щелкните правой кнопкой мыши FGDB> Export> To dBase (множественный). Вы также можете использовать этот инструмент для экспорта таблиц атрибутов, содержащихся в классах пространственных объектов FGDB. Просто перетащите таблицы и или классы пространственных объектов в инструмент и укажите выходную папку. Конечно, затем вы можете перебрать папку, содержащую новые файлы dBase, используя R.

введите описание изображения здесь

введите описание изображения здесь

Аарон
источник
Это работает - мое выпадающее меню не выглядит одинаково (извините, я не до конца понимаю файловые системы ArcMap), но я обнаружил, что могу экспортировать таблицы, щелкнув правой кнопкой мыши на самой записи таблицы в таблице содержания, и создать читаемый файл .dbf. Благодарность!
Nan
9

Файловые базы геоданных не хранят свои данные как dbf, шейп-файлы. FGDB используют свой собственный метод внутреннего хранения.

ESRI опубликовал API , если вы используете его для компиляции GDAL с поддержкой файловой базы геоданных, вы можете использовать плагины R's gdal для получения доступа к вашим данным таким образом. Однако, самое простое решение - это, вероятно, преобразование ваших данных в шейп-файл, тогда вы можете использовать инструменты R's dbf.

HeyOverThere
источник
Или просто экспортируйте таблицу атрибутов как dbf, а не конвертируйте весь класс пространственных объектов.
Балток
1
О, это правда! Вы также можете использовать панель инструментов Xtools для экспорта таблицы атрибутов непосредственно в Excel. Бесплатная версия панели инструментов включает в себя возможность экспорта в Excel. xtoolspro.com
HeyOverThere
@ HeyOverThere - спасибо за указание, что вы правы - эти таблицы являются "таблицами файловой базы геоданных", что объясняет, почему я не могу найти их в виде файлов .dbf. Я использую подход Аарона к экспорту, однако преобразование всех моих данных в шейп-файлы заняло бы больше времени.
Nan
Ссылка API кажется мертвой. Не могли бы вы обновить его?
Аарон
Похоже, ESRI провела уборку дома. Ссылка обновлена, чтобы указать на новое местоположение
HeyOverThere
4

Я столкнулся с той же проблемой. На мой взгляд, использовать ArcMap неудобно. Вместо этого я вызвал Python из R, используя следующий код. К сожалению, вам нужен Arcpy.

Скрипт Python:

import os,sys
import arcpy
from arcpy import env
from sys import argv ### This is needed to import variables

script, featureClass, inFeatures, outLocation, outFeatureClass = argv
env.workspace = featureClass ### set working directory
arcpy.FeatureClassToFeatureClass_conversion(inFeatures, outLocation,outFeatureClass)

Код R:

script = "./Path To Python Script/Example.py"
featureClass = './Path To Geodatabase/Example.gdb'
inFeatures = "featureClass"
outLocation = "./Path To Outfile Location"
outFeatureClass = "test.shp"
system2('python', args = c(shQuote(script),shQuote(featureClass),shQuote(inFeatures),shQuote(outLocation),shQuote(outFeatureClass))) 

Выше будет выводить шейп-файл из базы геоданных, затем вам придется импортировать в R.

user44796
источник