Seite 1 von 1

arcpy/python:liste von Karten zusammenführen (Tool: Merge)

Verfasst: Mittwoch 3. Dezember 2014, 14:42
von MarcNAV
Habe diesen Code geschrieben und folgendes Problem. Ich möchte eien Liste von .shp Dateien (14 Stk.) zu einer .shp zusammenfügen (mergen). Leider überschreibt er für jede .shp die 'ca' enthält die Output File. Hat einer eine Ahnung wie ich es schaffe, dass er mir nur einmal die Liste einliest und daraus eine .shp erzeugt? Da es viele Daten sind habe ich keine Lust das von Hand zu machen. Danke schon mal

Code: Alles auswählen

import arcpy, os, glob
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension("spatial")


def main():


    arcpy.env.workspace = 'S:/Test/shapefiles'
    workspace = arcpy.env.workspace
    destination = 'S:/Test/merged'
    shplist = glob.glob(workspace + '/*.shp')
    for shp in shplist:
        
        shpname = os.path.basename(shp[:-len('.shp')])
        if '_s_' not in shpname:

            if 'ca' in shpname:

                shapelist = []
                shapelist.append(shp)

                output = destination + '/calcium.shp'
            	arcpy.Merge_management(shapelist, output)

if __name__ == '__main__':
    main()


Re: arcpy/python:liste von Karten zusammenführen (Tool: Merg

Verfasst: Mittwoch 3. Dezember 2014, 15:24
von BlackJack
@MarcNAV: Du möchtest nicht das ``arcpy.Merge_management(shapelist, output)`` in jedem Schleifendurchlauf wenn die ``if``-Bedingung erfüllt ist ausgeführt wird, dann schreib das halt nicht in der Schleife und in den ``if``-Zweig. Vielleicht würde es ja mehr Sinn machen die Leere Liste vor der Schleife zu erstellen, die in der Schleife dann mit Werten zu füllen, und dann nach der Schleife das Mergen zu machen. Das ist irgendwie ganz ganz ganz grundlegende Logik.

Re: arcpy/python:liste von Karten zusammenführen (Tool: Merg

Verfasst: Donnerstag 4. Dezember 2014, 14:43
von MarcNAV
Danke BlackJack. Läuft jetzt;) mußte auch noch nach der Schleife delete.shapelist[:] einfügen da ich danach noch nach anderen strings gesucht habe.

Re: arcpy/python:liste von Karten zusammenführen (Tool: Merg

Verfasst: Donnerstag 4. Dezember 2014, 14:48
von BlackJack
@MarcNAV: Das würde ich nicht machen. Statt den Inhalt der Liste zu löschen würde ich einfach eine neue erstellen. Und zwar kurz bevor man die benötigt, dann muss man da nur an *einer* Stelle im Programm etwas machen und man muss sich keine Gedanken mehr machen ob anderer Code die Liste übergeben bekommt und da irgendwo noch eine Referenz existiert und man durch das leeren dieser Liste an anderer Stelle Probleme verursacht.