Comment puis-je convertir un fichier Excel avec des colonnes x, y en un fichier de formes ponctuelles?
Il existe des exigences quelque peu facultatives en plus de la création correcte d'un fichier de formes:
- Les types de colonnes (selon les spécificateurs de format d'Excel) doivent être conservés (en particulier les types de date)
- Les noms des colonnes doivent être extraits de l'en-tête
- Je tiens à le faire depuis la ligne de commande
- Si je peux inclure des références spatiales hétérogènes pour les points dans une troisième colonne, je serais très heureux :)
Réponses:
Je recommanderais d'utiliser OGR / GDAL , qui fait partie de la bibliothèque GDAL . OGR prend en charge un format virtuel qui permet la spécification via un fichier XML. Si vous convertissez votre feuille de calcul Excel en CSV, vous pouvez générer un VRT pour accéder aux données.
En supposant que vous ayez quelque chose comme ceci
example.csv
:Vous pouvez créer un VRT
example.vrt
comme suit:À partir de GDAL 1.7, vous pouvez en outre spécifier les types de données des champs d'attribut en utilisant l'
<Field>
élément à l'intérieur de<OGRVRTLayer>
, comme ceci:Gardez à l'esprit que les fichiers de formes stockent les attributs au format DBASE IV , qui offre moins de flexibilité dans les types de données qu'Excel. Une fois que vous avez spécifié votre fichier VRT, vous pouvez utiliser la chaîne d'outils OGR normale pour convertir les données en Shapefile:
Malheureusement, # 4 n'est pas possible - la spécification du fichier de formes permet une seule projection (visible ici
example.prj
après la dernière étape).la source
<Field>
balise. Je suppose que je trouverai celui-là par moi-même :)Vous pouvez utiliser le plugin Texte délimité fourni avec QGIS (http://qgis.org ) pour charger le fichier texte, puis l'enregistrer en tant que fichier de formes.
la source
Bien que cela ne provienne pas de la ligne de commande, vous pouvez le faire dans ArcGIS App. Depuis 9.3.1, il suffit d'ajouter le XLS directement dans ArcMap. Créez une couche d'événements XY à partir de XLS (c.-à-d. Choisissez les colonnes X, Y et définissez votre référence spatiale). Ensuite, exportez cette couche d'événements XY vers un nouveau fichier .shp Cela pourrait facilement être automatisé avec un simple script python / VBA ou un modèle dans modelbuilder . Heureux de vous aider sur ce flux de travail de base si vous avez besoin de plus d'informations.
la source
J'ai cherché mais je n'ai pas trouvé de page d'aide sur Afficher les données XY dans l'aide Web, mais le processus est simple.
Pour ce faire, vous n'avez besoin que du niveau de licence ArcView (de base) d'ArcGIS (for) Desktop.
la source
Il y a toujours l'option aventureuse. Vous pouvez écrire le fichier de forme vous-même. ESRI publie la spécification des fichiers de formes, que vous pouvez lire ici:
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
Vous devrez probablement également écrire un fichier DBF. Vous pouvez lire sur le format ici:
http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT
C'est sans aucun doute exagéré, mais cela vous donnerait l'avantage d'avoir le contrôle sur l'ensemble du processus.
la source
Personnellement, je préfère utiliser FME de Safe Software (http://www.safe.com), qui non seulement me permet de tracer des points à partir des valeurs XY, mais me donne la possibilité de transformer les coordonnées d'une projection à une autre avant de tracer, spécifiez le type de délimiteur, la ligne de départ (dans le cas où le fichier texte contient des informations d'en-tête), attachez des attributs dans le cas où le fichier texte contient X, Y, des informations d'attribut pour les données de point. Si vous souhaitez visualiser ces données dans Google Earth, vous pouvez les écrire au format KML tout en spécifiant le style de point KML. ~ SRG
la source
Si vous souhaitez effectuer un autre traitement sur les données x, y, vous pouvez charger les données dans postgres, utiliser geomfromtext avec concaténation pour créer un type de données de géométrie, puis utiliser pgsql2shp pour exporter vers la forme. Cette approche vous permettra également de conserver les données du système de référence spatiale hétérogène dans une autre colonne, que vous pourrez ensuite utiliser pour convertir tous vos points en un système de référence commun dans la base de données avant d'exporter en forme. Je me rends compte que cela implique plus d'étapes que l'ogr / gdal mais cela vous donnera beaucoup plus de flexibilité.
la source
Qu'en est-il du chargement de vos fichiers CSV dans spatiallite, puis de l'utilisation d'OGR ou de QGIS pour exporter vers un fichier de formes.
http://www.gaia-gis.it/spatialite-2.2/index.html
Vous pouvez même exporter directement de spatialite dans un fichier de formes.
http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1
la source
Pour une transformation plus basique, vous pouvez utiliser le transformateur 2Dpointreplacer dans FME 2013. Vous devez indiquer dans quelles colonnes se trouvent les valeurs X et Y, puis FME transformera ces valeurs en par exemple un fichier de forme avec des points.
Les noms et types de colonnes peuvent être définis selon les besoins
la source