Más

¿Fusionando XYZ en ArcGIS Desktop?

¿Fusionando XYZ en ArcGIS Desktop?


Tengo como 6 archivos .xyz que se incluirán en un solo mapa (se superponen). Sin embargo, me gustaría ahorrar tiempo y fusionarlos automáticamente a través del código Python en un .XYZ antes de procesarlos a través de mi script.

¿Existe una forma perfecta de hacer esto en ArcGIS Desktop?

LÍNEA DE FONDO: FUSIONAR XYZ en un archivo XYZ. ¿Alguna sugerencia o alternativa a esto?


Asumiré que estos archivos xyz tienen los mismos encabezados que la primera línea. Si no hay un encabezado en sus archivos xyz, elimine las líneas indicadas con#remove me if no headeren el código siguiente. Coloque sus archivos xyz en el mismo directorio. Luego puede iterar a través de los archivos conos.listdir. A partir de ahí usoabiertopara abrir cada archivo y escribir cada línea en un nuevo archivo. En el siguiente script, se omite la primera línea de cada xyz si no es el primer archivo.

inFolderes la carpeta con sus archivos .xyz.

outXyzes el archivo de salida. si este archivo ya existe, se sobrescribirá.

# ---------- Locals # carpeta de entrada inFolder = r "C:  Users  e1b8  Desktop  E1B8  GIS_Stackexchange" # archivo de salida # si el archivo existe, se escribirá sobre outXyz = r "C :  Users  e1b8  Desktop  E1B8  GIS_Stackexchange  merge.xyz "# ---------- Finalizar locals #import modules import os #open out file for write outFile = open (outXyz," w ") #Crear una lista de archivos xyz en la carpeta xyzs = [xyz para xyz en os.listdir (inFolder) if xyz.lower (). Endswith (".xyz")] #first variable for first line (header) firstFile = True #iterate archivos xyz para xyz en xyzs: #xyz ruta completa del archivo xyzPath = os.path.join (inFolder, xyz) #open xyz file xyzFile = open (xyzPath, "r") #second variable for first line (header) firstLine = True #Líneas de alfabetización en archivo por línea en xyzFile: #Omitir encabezado si la primera línea del archivo no es la primera si firstFile == False y firstLine == True: #remove me if no header #cambiar variable a false - primera línea firstLine = Falso. write (línea) #cambiar variable a falso - no el primer archivo firstFile = False #close xyz file xyzFile.close () #close out file outFile.close ()

Si los archivos XYZ son solo archivos de texto delineados, puede copiar / pegar en el bloc de notas o en algún editor similar. Seis archivos no parecen muchos. A veces no es necesario automatizar ...

Sin embargo, creo que hay algunas opciones que no requieren ArcPy.

Cosas que me vienen a la mente:

  1. Cargar los datos en una nueva tabla o clase de entidad.

  2. Prueba el agregar herramienta.

  3. Prueba el fusionar herramienta.

  4. Prueba el herramienta de unión.


Una solución por lotes muy simple que uso a menudo (pero no está en Python): https://stackoverflow.com/questions/3418549/need-to-combine-lots-of-files-in-a-directory

Suponiendo que se trata de archivos de texto y que está en Windows, podría crear un script por lotes simple para concatenarlos.

Por ejemplo, en el directorio con todos los archivos de texto, ejecute lo siguiente:

para% f en (* .txt) escriba "% f" >> combinado.txt

Esto fusionará todos los archivos que coincidan con * .txt en un archivo llamado combinado.txt.

Para obtener más información: http://www.howtogeek.com/howto/keyboard-ninja/keyboard-ninja-concatenate-multiple-text-files-in-windows/


Ver el vídeo: How to Merge different Shapefiles in GIS Very Easy Method