J'essaie de lire une table directement d'une géodatabase fichier ESRI dans R. Un exemple de fichier de données peut être téléchargé ici . La base de données contient une classe d'entités ponctuelles (Zone9_2014_01_Broadcast) et deux tables liées (Zone9_2014_01_Vessel et Zone9_2014_01_Voyage). Vous pouvez lire le fichier de formes dans R à l'aide readOGR
du rgeos
package:
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")
Les deux tableaux liés indiquent également quand vous utilisez ogrListLayers
ou ogrInfo
. Cependant, ogrInfo
donne un avertissement:
Message d'avertissement: Dans ogrInfo ("Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel"): ogrInfo: toutes les fonctionnalités NULL
Et si vous essayez d'utiliser readOGR
sur les tables, vous obtenez une erreur:
vessel <- readOGR(dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel")
Erreur dans readOGR (dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel"): aucune fonctionnalité trouvée En outre: Message d'avertissement: dans ogrInfo (dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,: ogrInfo: toutes les fonctionnalités NULL
Ainsi, il apparaît que seules les caractéristiques géographiques peuvent être lues par readOGR. Existe-t-il un moyen d'importer les tables directement dans R ou est-ce la seule solution pour les exporter d'abord depuis ArcGIS en tant que fichiers * .dbf (ou * .txt) comme dans cette réponse?
En outre, si quelqu'un peut fournir des appels de R à un script python qui automatise l'exportation de fichiers * csv (de préférence) ou * .dbf, ce serait une solution de contournement acceptable. La solution doit simplement être évolutive et automatisée.
la source
arcgisbbinding
en R. La fonctionarc.open()
ouvrira la table en tant quearc.dataset-class object
. Pour ouvrir directement en tant quedata.table
, utilisez la fonctionarc.select
.Réponses:
Je suis un peu en retard à la fête, mais ça peut maintenant être lu par
sf
, avecIl renvoie un avertissement (pas de géométrie d'entité présente) mais aussi un data.frame avec la table. Voir le fil de discussion qui a commencé ici: https://stat.ethz.ch/pipermail/r-sig-geo/2018-F February / 026344.html
la source
sf
solution et Google m'a ramené avec joie à cette même soirée avec une solution super utile (j'ai donc ajouté mon vote positif à cette question).J'utilise GDAL 2.0.2 qui est "livré" avec le support FDGB et sans tiers un pilote FGDB pour enquêter sur ce genre de choses. L'environnement de test est Debian Jessie 64 bits.
En bref, il semble que la "couche"
Zone9_2014_01_Vessel
contient des données d'attribut pures et la coucheZone9_2014_01_Broadcast
contient des données de position. Vous pouvez utiliser une solution de contournement dans R via un appel système et la conversation de la GDB vers un conteneur de fichiers de formes (dernier script à la fin de la réponse).Voici les étapes de l'enquête:
Comme vous le voyez, le champ
Geometry
est défini surNone
. Vous pouvez convertir les données dans un fichier de forme en utilisantogr2ogr
et obtenir uniquement un fichier d'attribut dbase:Des géométries (positions) se trouvent dans la couche
Zone9_2014_01_Broadcast
.Navire et voyage ne contenant aucune donnée de position selon le protocole des messages AIS .
Voici la solution de contournement complète dans R en utilisant un appel système pour que la GDB forme la conversation et le package
foreign
pour lire les dbf:la source
Je ne sais pas si vous pouvez le faire avec readOGR mais essayez
Si cela ne fonctionne pas, essayez
ogr2ogr
directement, ce qui peut exporter des non-géométries vers la table. (Peut-être essayez le package RgdalUtils
pour l'exécuter, une fois que vous avez terminé votre processus.)la source
readOGR
n'a pas la capacité de lire les tables gdb.Il existe une intégration récemment publiée entre le R et ArcGIS d'Esri, appelée R ArcGIS Tools . Il fournit une intégration entre R et ArcGIS permettant d'accéder de manière interchangeable aux outils R et aux ressources ArcGIS. Vous devriez pouvoir accéder aux classes / tables d'entités de géodatabase avec cette intégration.
Des exemples d'outils R sont disponibles ici et des exemples d'outils illustrant l'utilisation de R dans les scripts de géotraitement sont ici .
la source
Cette fonction personnalisée suit essentiellement le chemin tracé par @huckfinn mais utilise la
gdalUtils
bibliothèque suggérée par @mdsumner.Exécutez-le comme ceci:
Si vous ne l'avez pas déjà
gdal
installé, vous devrez l'installer pour y accédergdalUtils
. Vous pouvez trouver des binaires et des instructions pour l'installation de 'gdal' ici .la source