Lecture de la géodatabase fichier à l'aide de R?

12

La géodatabase fichier (fgdb) comprend de nombreuses tables de géodatabase fichier. Autant que je sache, ils existent sous forme de dbffichiers, mais se trouvent dans un fichier Database.gdb.

Dans ArcCatalog, le chemin du fichier ressemble C:\Users\...\Database.gdb\Stats_AA.

Comment lire tous ces dbffichiers dans R(un logiciel statistique)? Quelle est la bonne voie d'approvisionnement? La fonction utilisée est read.dbf(dans le package étranger).

Variantes de

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

et

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

ne marche pas. Quelle est la «forme» correcte du nom de fichier à utiliser ou dois-je exporter toutes les tables de géodatabase fichier dans un autre formulaire ou emplacement?

Nan
la source
1
les géodatabases stockent la géométrie dans les champs d'objets blob et non dans dbf (contrairement au fichier de formes).
Mapperz
1
J'allais suggérer d'utiliser le fournisseur oledb d'Esri pour les géodatabases fichier , mais il semble que R ne puisse pas lire oledb . Pourrait vouloir voter contre cette question, et aussi celle-ci .
Kirk Kuykendall

Réponses:

4

Une solution simple consiste à utiliser Table vers dBase (multiple) pour exporter vos tables (Clic droit FGDB> Exporter> Vers dBase (multiple). Vous pouvez également utiliser cet outil pour exporter les tables d'attributs contenues dans les classes d'entités FGDB. Il vous suffit de glisser-déposer les tables et ou des classes d'entités dans l'outil et spécifiez un dossier de sortie. Bien sûr, vous pouvez ensuite parcourir le dossier contenant les nouveaux fichiers dBase à l'aide de R.

entrez la description de l'image ici

entrez la description de l'image ici

Aaron
la source
Cela fonctionne - mon menu déroulant n'a pas la même apparence (je suis désolé, je ne comprends pas complètement les systèmes de fichiers ArcMap) mais j'ai trouvé que je peux exporter des tables en cliquant avec le bouton droit sur l'entrée de la table elle-même dans la table des matières, et générer un fichier .dbf lisible. Merci!
Nan
9

Les géodatabases fichier ne stockent pas leurs données comme un dbf, les fichiers de formes le font. Les FGDB utilisent leur propre méthode de stockage interne.

ESRI a publié une API , si vous l'utilisez pour compiler GDAL avec la prise en charge de la géodatabase fichier, vous pourrez peut-être utiliser les plugins gdal de R pour accéder à vos données de cette façon. Cependant, la solution la plus simple consiste probablement à convertir vos données en fichier de formes, alors vous pouvez utiliser les outils dbf de R.

HeyOverThere
la source
Ou exportez simplement la table attributaire en tant que dbf plutôt que de convertir la classe d'entités entière.
Baltok
1
Oh c'est vrai! Vous pouvez également utiliser la barre d'outils Xtools pour exporter la table attributaire directement vers Excel. La version gratuite de la barre d'outils inclut la capacité d'exportation Excel. xtoolspro.com
HeyOverThere
@ HeyOverThere - merci de l'avoir signalé, vous avez raison - ces tables sont des «tables de géodatabase fichier», ce qui explique pourquoi je ne les ai pas trouvées en tant que fichiers .dbf. Je vais avec l'approche d'exportation d'Aaron, cependant, convertir toutes mes données en fichiers de formes prendrait plus de temps.
Nan
Le lien API semble être mort. Pourriez-vous s'il vous plaît le mettre à jour?
Aaron
On dirait qu'ESRI a fait du ménage. Le lien est mis à jour pour pointer vers le nouvel emplacement
HeyOverThere
4

J'ai rencontré le même problème. À mon avis, il n'est pas pratique d'utiliser ArcMap. Au lieu de cela, j'ai appelé python à partir de R en utilisant le code suivant. Il vous faut malheureusement avoir Arcpy.

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)

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

Ce qui précède produira un fichier de formes à partir d'une géodatabase, puis vous devrez l'importer dans R.

user44796
la source