Suite

Fusionner les XYZ dans ArcGIS Desktop ?

Fusionner les XYZ dans ArcGIS Desktop ?


J'ai comme 6 fichiers .xyz qui doivent être inclus dans une seule carte (ils se chevauchent en quelque sorte). Cependant, j'aimerais gagner du temps et les fusionner automatiquement via du code python en un seul .XYZ avant de les traiter via mon script.

Existe-t-il un moyen transparent de le faire dans ArcGIS Desktop ?

LIGNE INFÉRIEURE : FUSIONNER les XYZ en un seul fichier XYZ. Des suggestions ou des alternatives à cela?


Je vais supposer que ces fichiers xyz ont les mêmes en-têtes que la première ligne. S'il n'y a pas d'en-tête dans vos fichiers xyz, supprimez les lignes indiquées par#supprimez-moi si pas d'en-têtedans le code ci-dessous. Placez vos fichiers xyz dans le même répertoire. Ensuite, vous pouvez parcourir les fichiers avecos.listdir. À partir de là, utilisezouvertpour ouvrir chaque fichier et écrire chaque ligne dans un nouveau fichier. Dans le script ci-dessous, la première ligne de chaque xyz est ignorée s'il ne s'agit pas du premier fichier.

dansDossierest le dossier contenant vos fichiers .xyz.

outXyzest le fichier de sortie. si ce fichier existe déjà, il sera écrasé.

# ---------- Locals #input folder inFolder = r"C:Userse1b8DesktopE1B8GIS_Stackexchange" #output file #si le fichier existe, le fichier sera écrit sur outXyz = r"C :Userse1b8DesktopE1B8GIS_Stackexchangemerge.xyz" # ---------- End locaux #import modules import os #open out file for writing outFile = open (outXyz, "w") #Créer une liste de fichiers xyz dans le dossier xyzs = [xyz pour xyz dans os.listdir (inFolder) if xyz.lower().endswith (".xyz")] #première variable pour la première ligne (en-tête) firstFile = True #iterate fichiers xyz pour xyz dans xyzs : #xyz chemin complet du fichier xyzPath = os.path.join (inFolder, xyz) #open xyz file xyzFile = open (xyzPath, "r") #seconde variable pour la première ligne (en-tête) firstLine = True #itérer les lignes dans le fichier pour la ligne dans xyzFile : #Skip header if first line of not-the-first file if firstFile == False and firstLine == True : #remove me if no header #switch variable to false - first line firstLine = False #supprimez-moi si pas d'en-tête continue #supprimez-moi si pas d'en-tête #Écrivez la ligne dans le fichier outFile. écrire (ligne) #switch variable à false - pas le premier fichier firstFile = False #close xyz file xyzFile.close () #close out file outFile.close ()

Si les fichiers XYZ ne sont que des fichiers texte délimités, vous pouvez simplement copier/coller dans le bloc-notes ou dans un éditeur de ce type. Six fichiers ne semblent pas être beaucoup. Parfois, vous n'avez pas besoin d'automatiser…

Cependant, je pense qu'il existe quelques options qui ne nécessiteront pas ArcPy.

Les choses qui me viennent à l'esprit :

  1. Charger les données dans une nouvelle classe d'entités ou une nouvelle table.

  2. Essaie le outil d'ajout.

  3. Essaie le outil de fusion.

  4. Essaie le outil syndical.


Une solution batch très simple que j'utilise souvent (mais ce n'est pas en Python) : https://stackoverflow.com/questions/3418549/need-to-combine-lots-of-files-in-a-directory

En supposant qu'il s'agisse de fichiers texte et que vous êtes sous Windows, vous pouvez créer un simple script batch pour les concaténer.

Par exemple, dans le répertoire contenant tous les fichiers texte, exécutez la commande suivante :

pour %f dans (*.txt) tapez "%f" >> combine.txt

Cela fusionnera tous les fichiers correspondant à *.txt en un seul fichier appelé Combine.txt.

Pour plus d'informations : http://www.howtogeek.com/howto/keyboard-ninja/keyboard-ninja-concatenate-multiple-text-files-in-windows/


Voir la vidéo: Tutorial N9: Fusionner polygones ArcGis. How to Merge different Shapefiles