Je dois ouvrir un fichier de formes à partir d'ArcMap in R pour l'utiliser à des fins d'analyse géostatistique. Je l'ai converti en fichier texte ASCII, mais il est reconnu en tant que data.frame. La fonction de coordonnées ne fonctionne pas dès que x et y sont reconnus comme non numériques.
Pourriez-vous aider à y faire face?
Réponses:
Utilisez le fichier de forme directement. Vous pouvez le faire facilement avec les packages
rgdal
ousf
, et lire la forme dans un objet. Pour les deux packages, vous devez fournirdsn
- la source de données, qui dans le cas d'un fichier de formes est le répertoire , etlayer
- qui est le nom du fichier de formes, extension moins:(Pour rgdal, dans OSX ou Linux vous ne pouvez pas utiliser le « ~ » un raccourci pour le répertoire comme source de données (
dsn
) annuaire - un message , sinon vous aurez une inutile « peut - source non de données ouvertes » Le.sf
Package ne fonctionne pas avoir cette limitation, entre autres avantages.)Cela vous donnera un objet qui est un Spatial * DataFrame (points, lignes ou polygones) - les champs de la table attributaire vous sont alors accessibles de la même manière qu’un dataframe ordinaire, c’est-
shape$ID
à- dire pour la colonne ID.Si vous souhaitez utiliser le fichier ASCII que vous avez importé, vous devez simplement convertir les champs de texte (caractères) x et y en nombres, par exemple:
Edit 2015-01-18 : notez que rgdal est un peu meilleur que maptools (ce que j'avais initialement suggéré ici), principalement parce qu'il lit et écrit automatiquement les informations de projection.
Remarques:
as.numeric(as.character())
fonctions imbriquées - si votre texte ASCII a été lu comme un facteur (probable), cela garantit que vous obtenez les valeurs numériques au lieu des niveaux de facteur.rgdal
etsf
ont des moyens déroutants d’accéder à différents types de fichiers et de bases de données (par exemple, pour un fichier GPX, DSN est le nom du fichier, et couche les composants individuels tels que les points de cheminement, les points de suivi, etc.), et une lecture attentive des exemples en ligne est nécessaire.la source
as.character
pour contourner le problème.dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
argument ne devrait pas contenir de barres obliques finales - par exemple,dsn = "C:/Users/Downloads/"
devrait l'êtredsn = "C:/Users/Downloads"
. J'espère que ça résoudra la frustration de quelqu'un ...Je suis d’accord avec Simbamangu et j’ai décidé de conserver le fichier de formes, mais j’aimerais attirer votre attention sur la bibliothèque rgdal. Suivez le lien suggéré par gissolved pour le NCEAS et suivez les instructions pour rgdal. L'installation sur certaines machines peut être difficile, mais elle peut considérablement améliorer les résultats en termes de projections.
La bibliothèque maptools est excellente et vous permet de définir la projection pour le fichier de formes que vous lisez, mais vous devez pour ce faire savoir comment spécifier cette projection au format proj4. un exemple pourrait ressembler à quelque chose comme:
Si vous souhaitez emprunter cette voie, je vous recommande alors http://spatialreference.org comme endroit pour déterminer à quoi ressemble votre projection dans le format proj4. Si cela vous semble compliqué, rgdal vous facilitera la tâche en lisant le fichier .prj du fichier de formes ESRI (le fichier qui contient la définition de projection ESRI pour le fichier de formes. Pour utiliser rgdal sur le même fichier, écrivez simplement:
Vous pouvez probablement skater sans utiliser ceci si vous ne travaillez qu'avec un seul fichier de formes, mais dès que vous commencez à examiner plusieurs sources de données ou à superposer avec Google Maps, il est essentiel de conserver vos projections en bon état.
Pour quelques astuces utiles sur les données spatiales dans R, y compris un tas de choses sur l'importation et l'utilisation de modèles de points, j'ai d'anciens supports de cours en ligne à l' adresse https://csde.washington.edu/workshop/point-patterns-and-raster. -surfaces / (plusieurs ateliers peuvent être trouvés ici ) qui pourraient vous aider à voir comment ces méthodes se comparent dans la pratique.
la source
Je pense que vous ne devriez pas convertir le fichier de forme en fichier ASCII, mais plutôt utiliser le fichier de forme directement avec l'une des extensions spatiales. Ici vous pouvez trouver trois façons de lire (et écrire) un fichier de formes http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles . Le projet R-spatial vous intéressera probablement aussi http://cran.r-project.org/web/packages/sp/index.html .
la source
Vous pouvez utiliser
sf
library pour ouvrir les Shapefiles directement dansR
. C’est plus rapide que largdal
bibliothèque, cochez cette case: Fonctionnalités simples pour R - Repères . Pour plus d'informations sur lesf
package, consultez la page d'accueil du projet r-spatial .la source
Une solution simple en 2017 est la
shapefile()
fonction de laraster
bibliothèque.MISE À JOUR: Ceci est toujours une bonne option en 2019.
la source
Une autre alternative consiste à utiliser la bibliothèque fastshp qui offre:
Voici ma question sur SE sur la façon de l'utiliser avec ggplot2:
Comment tracer un fichier de formes chargé via Fastshp dans ggplot2?
la source