Lendo geodatabase de arquivo usando R?

12

O geodatabase de arquivo (fgdb) inclui várias tabelas de geodatabase de arquivo. Tanto quanto eu sei, eles existem como dbfarquivos, mas estão dentro de um arquivo Database.gdb.

No ArcCatalog, o caminho do arquivo é semelhante C:\Users\...\Database.gdb\Stats_AA.

Como ler todos esses dbfarquivos em R(um software estatístico)? Qual é o caminho correto a fornecer? A função usada é read.dbf(no pacote externo).

Variantes de

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

e

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

não trabalha Qual é o "formulário" correto do nome do arquivo a ser usado ou preciso exportar todas as tabelas de geodatabase do arquivo para outro formulário ou local?

Nan
fonte
1
os bancos de dados geográficos armazenam a geometria nos campos de blob, não no dbf (mas o shapefile faz).
Mapperz
1
Eu sugeriria o uso do provedor oledb da Esri para geodatabases , mas parece que R não pode ler o oledb . Pode querer aprovar essa pergunta, e também esta .
22413 Kirk Kuykendall

Respostas:

4

Uma solução simples é usar Table to dBase (multiple) para exportar suas tabelas (clique com o botão direito do mouse em FGDB> Exportar> To dBase (multiple). Você também pode usar esta ferramenta para exportar tabelas de atributos contidas nas classes de recursos do FGDB. Basta arrastar e soltar tabelas e / ou feature classes na ferramenta e especifique uma pasta de saída.Claro, você pode percorrer a pasta que contém os novos arquivos do dBase usando R.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Aaron
fonte
Isso funciona - meu menu suspenso não parece o mesmo (desculpe, não entendo completamente os sistemas de arquivos ArcMap), mas descobri que posso exportar tabelas clicando com o botão direito do mouse na entrada da tabela no Índice e gere um arquivo .dbf legível. Obrigado!
Nan
9

Os bancos de dados geográficos de arquivos não armazenam seus dados como um dbf, os shapefiles. Os FGDBs usam seu próprio método de armazenamento interno.

A ESRI publicou uma API . Se for usada para compilar o GDAL com suporte ao banco de dados de arquivos geográficos, você poderá usar os plugins gdal do R para obter acesso aos seus dados dessa maneira. No entanto, a solução mais fácil é provavelmente converter seus dados em shapefile, para que você possa usar as ferramentas dbf de R.

HeyOverThere
fonte
Ou apenas exporte a tabela de atributos como um dbf em vez de converter a classe de recurso inteira.
Baltok
1
Oh isso é verdade! Você também pode usar a barra de ferramentas Xtools para exportar a tabela de atributos diretamente para o Excel. A versão gratuita da barra de ferramentas inclui a capacidade de exportação do Excel. xtoolspro.com
HeyOverThere
@ HeyOverThere- obrigado por apontar isso, você está correto - essas tabelas são "Tabelas de banco de dados geográficos", o que explica por que não as encontrei como arquivos .dbf. Estou seguindo a abordagem de exportação de Aaron, no entanto, converter todos os meus dados em shapefiles seria mais demorado.
Nan
O link da API parece estar morto. Você poderia atualizá-lo?
Aaron
Parece que a ESRI fez uma limpeza doméstica. O link foi atualizado para apontar para o novo local
HeyOverThere
4

Eu tive o mesmo problema. É inconveniente usar o ArcMap, na minha opinião. Em vez disso, invoquei o python do R usando o código a seguir. Requer que você tenha o Arcpy, infelizmente.

Script 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)

Código 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))) 

O exemplo acima produzirá um shapefile a partir de um geodatabase, e você precisará importar para o R.

user44796
fonte