Attributtabelle automatisch darstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
chulia
User
Beiträge: 29
Registriert: Mittwoch 17. August 2011, 10:26

Hallo,
ich bin absoluter Python - Anfänger und soll nun meine Attributtabelle aus ArcGis spaltenweise nacheinander darstellen und als tiff abspeichern.
Mal etwas genauer:

Ich habe eine Shapefile mit einer Attributtabelle mit ca. 60 Spalten und unendlich vielen Zeilen. In ArcGis kann ich jeweils immer nur eine Spalte darstellen und die Karte mir als Tiff abspeichern.
Da ich das alles aber 60x und später kanpp 900x machen muss, würde ich das gern automatisieren.
Ein Freund hat mir dafür schon ein Skript geschrieben, da ich wirklich 0 Plan von Python habe.
Das Skript funktioniert auch soweit, nur dass Python mir immer die nur die erste Spalte anzeigt und nicht, nachdem er die erste Spalte bearbeitet hat, zur nächsten Spalte weiterrutscht.
Anbei mal das Skript.

Vielleicht könnt ihr mir dabei weiterhelfen.
herzlichen Dank

chulia

Code: Alles auswählen

import arcpy, sys, numpy, os
sys.path.append('C:\Python26\Lib\site-packages')
import PIL
from PIL import Image

arcpy.gp.overwriteOutput = True
# Workspace
workspace = arcpy.env.workspace = 'F:\pommeren\Pflanzenbis56'
# Liste aller features aus den Karten auf, die generiert werden sollen, vorher workspace festlegen
featureClasses = arcpy.ListFeatureClasses()


# Das template
mxd = arcpy.mapping.MapDocument(r"F:\pommeren\Pflanzenbis56\Current56.mxd")
# listet alle DataFrames und Layers aus der Karte auf, daf?r ist ein Indexwert notwendig
df = arcpy.mapping.ListDataFrames(mxd)[0]
layer = arcpy.mapping.ListLayers(mxd)[0]

# Das einzuf?gende layer (ein Shapefile ohne weitere Bearbeitung im GIS)
i= 0

for item in featureClasses:

    fields=arcpy.ListFields(item)                                                                           # get all fields in table
    fieldNames = [f.name for f in fields]                                                                  # return field names
    geoFields = [u'FID', u'Shape', u'TK_NR', u'COUNT', u'AREA_KILOM', u'PERIMETER_', u'HECTARES', u'OID_']  # shape description fields


  #  tableView = arcpy.MakeTableView_management(item)

for i,f in enumerate(fieldNames):

       if f in geoFields:                                                               # Cycle loop if field already in geoFields
          continue

       fieldinfo = arcpy.FieldInfo()                                                  # FieldInfo stores field information

       print fieldinfo

       outFields = geoFields[:]                                                          # Geometry fields + one species field
       outFields.append(f)

       
       for fnot in fieldNames:                                                          # Store only the relavant fields in fieldinfo
        if fnot not in outFields:

         fieldinfo.addField(fnot,fnot, "VISIBLE","FALSE")

       print fieldinfo

       newLyr = 'map_'+f
       arcpy.MakeFeatureLayer_management(item,  newLyr, "", "", fieldinfo)   
# Create new feature with a redcued  field nr...not working yet!

       lyrFile = arcpy.mapping.Layer(newLyr)

       arcpy.mapping.AddLayer(df, lyrFile, "BOTTOM")
       layers = arcpy.mapping.ListLayers(mxd)
       updateLayer = layers[-1]
       sourceLayer = layers [1]
       arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)


        ##Zwischenspeicherung.
       temp = os.path.abspath(r'F:\pommeren\Pflanzenbis56\end\temp{0}.mxd'.format(i))
       mxd.saveACopy(temp)

       if i == 10:
            break


       break
Zuletzt geändert von Anonymous am Mittwoch 17. August 2011, 18:30, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hallo,

spontan sehe ich mehrere Punkte, die man überprüfen könnte. Aber eine Sache sieht sehr seltsam aus: Nämlich die beiden "break"-Statements am Ende. Da wird über alle "fieldNames" iteriert, aber direkt nach dem ersten abgebrochen (vielleicht aus Testzwecken eingefügt?). Und das

Code: Alles auswählen

       if i == 10:
            break
würde auch dazu führen, daß vor Bearbeitung aller "fieldNames" (wenn es mehr als 11 davon gibt) abgebrochen wird.

Also: Zum Testen, ob es auch bei mehr Deiner Spalten funktioniert: Lösche mal das letzte "break"-Statement. Wenn das Ergebnis Deinem Wunsch entspricht, aber nur wenige Bilder erzeugt werden, lösche das zweite "break"-Statement, inkl. Abfrage.

Ansonsten: Es gibt hier wenige ArcGis-Kenner (ich gehöre auch nicht dazu). Kannst Du uns verraten, was "Spalten", "Zeilen" und die Attributtabelle in Bezug auf den Code sind?

Gruß,
Christian
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Hi,

deine Erläuterungen sind leider etwas unklar:
Ich habe eine Shapefile mit einer Attributtabelle mit ca. 60 Spalten und unendlich vielen Zeilen. In ArcGis kann ich jeweils immer nur eine Spalte darstellen und die Karte mir als Tiff abspeichern.
Man kann natürlich in einem Shapefile nicht unendlich viele Zeilen haben. Tatsächlich ist die Anzahl der Zeilen begrenzt durch die maximale Dateigröße von entweder der Shapedatei (.shp) oder der Datenbank (.dbf), die 2 Gb nicht überschreiten kann. Und wieso kannst du nur eine Spalte darstellen? Als Label? Als Attributwert einer Klassifikation? Darstellbar ist im eigentlichen Sinne doch nur die Geometrie!? Kartographisch kann man doch mehr als nur ein Attribut visualisieren ...

Mir ist auch nicht ganz klar, was das Skript macht. Es scheint ja eine neue .mxd anzulegen, und wo der Export zum TIFF geschieht ist mir auch noch nicht ganz klar. Vielleicht beschreibst du noch einmal etwas besser, was du erreichen möchtest (Choroplethe, Labeling) mit dem Shapefile, dann kann man dir vielleicht etwas besser helfen :)
chulia
User
Beiträge: 29
Registriert: Mittwoch 17. August 2011, 10:26

Hallo,
danke erstmal für die schnellen Antworten,
ich versuchs mal ein bisschen besser zu erklären und hab mal paar screenshots genommen.
Bild

hier seht ihr die Attributtabelle im Vordergrund und im Hintergrund die Karte, die ArcGis darstellt.
Die Attributtabelle enthält alle Infos, die ArcGis braucht um eine Karte daraus zu fertigen.
Die Attributtabelle ist in einer shapefile enthalte - hier: map_current56.shp
und dargestellt ist die Spalte Weisse_Tanne (Wei_Tanne) aus der Attributtabelle.

wenn die ich die breaks entferne, dann erstellt er mir mehrere .mxds, aber immernoch nicht das, was ich haben will.

hier mal der zweite screenshot:

Bild

durch das Skript wird nur der Name der .shp Datei verändert --> siehe rote Ellipsen
aber er rutscht nicht in der Spalte weiter --> blaue Ellipsen

eigentlich müsste im blauen Feld die Bezeichnung DEGENS_Eis (siehe Bild 1 und 2) stehen und eine andere Karte müsste dargestellt werden


Es stimmt, dass erstmal nur eine neue mxd Datei erstellt werden soll. Den Befehl, dass Python daraus später eine Tiff machen soll, habe ich nicht mit eingefügt

ich kann das aber nochmal alles als python code posten, damit das übersichtlicher wird

Code: Alles auswählen

import arcpy, sys, numpy, os, 
sys.path.append('C:\Python26\Lib\site-packages')
import PIL
from PIL import Image

arcpy.gp.overwriteOutput = True
# Workspace
workspace = arcpy.env.workspace = 'F:\pommeren\Pflanzenbis56'
# Liste aller features aus den Karten auf, die generiert werden sollen, vorher workspace festlegen
featureClasses = arcpy.ListFeatureClasses()


# Das template
mxd = arcpy.mapping.MapDocument(r"F:\pommeren\Pflanzenbis56\Current56.mxd")
# listet alle DataFrames und Layers aus der Karte auf, daf?r ist ein Indexwert notwendig
df = arcpy.mapping.ListDataFrames(mxd)[0]
layer = arcpy.mapping.ListLayers(mxd)[0]

# Das einzuf?gende layer (ein Shapefile ohne weitere Bearbeitung im GIS)
i= 0

for item in featureClasses:

    fields=arcpy.ListFields(item)                                                                           # get all fields in table
    fieldNames = [f.name for f in fields]                                                                  # return field names
    geoFields = [u'FID', u'Shape', u'TK_NR', u'COUNT', u'AREA_KILOM', u'PERIMETER_', u'HECTARES', u'OID_']  # shape description fields

print fields, fieldNames, geoFields

  #  tableView = arcpy.MakeTableView_management(item)

for i,f in enumerate(fieldNames):

       if f in geoFields:                                                                                  # Cycle loop if field already in geoFields
          continue

       fieldinfo = arcpy.FieldInfo()                                                                       # FieldInfo stores field information

       print fieldinfo

       outFields = geoFields[:]                                                                             # Geometry fields + one species field
       outFields.append(f)

       print outFields

       for fnot in fieldNames:                                                                               # Store only the relavant fields in fieldinfo
        if fnot not in outFields:

         fieldinfo.addField(fnot,fnot, "VISIBLE","FALSE")

       print fieldinfo

       newLyr = 'map_'+f
       arcpy.MakeFeatureLayer_management(item,  newLyr, "", "", fieldinfo)                                  # Create new feature with a redcued  field nr...not working yet!

       lyrFile = arcpy.mapping.Layer(newLyr)

       arcpy.mapping.AddLayer(df, lyrFile, "BOTTOM")
       layers = arcpy.mapping.ListLayers(mxd)
       updateLayer = layers[-1]
       sourceLayer = layers [1]
       arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)

        #Zwischenspeicherung und tiff
       temp = os.path.abspath(r'F:\pommeren\Pflanzenbis56\end\temp{0}.mxd'.format(i))
       mxd.saveACopy(temp)
       arcpy.mapping.ExportToTIFF(mxd, r"F:\pommeren\temp{0}.tif".format(i),resolution=200)

frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Ich schau mal, ob ich meine antiquierte ArcGIS Version reaktiviert bekomme.
Generell erscheint mir der Ansatz des Skriptes aber nicht richtig. Man kann ein Shapefile ja auch mehrfach dem View hinzufügen und unterschiedlich visualisieren, das ist ja das, was du willst. Offensichtich muss man ja das Klassifikationsattribut für das Rendering ändern und nicht zig neue mxds erzeugen ...

Du willst pro Spalte einen Layer in deinem Dokument und pro Layer ein anderes Attribut für die Klassifikation angeben, richtig?
chulia
User
Beiträge: 29
Registriert: Mittwoch 17. August 2011, 10:26

genau
mein Ziel ist es sozusagen von jeder Spalte in meiner Atributtabelle eine tiff - Karte zu haben.
Dafür dachte ich, wäre es einfacherer für jede Spalte eine einzelne mxd zu machen um dann aus jeder mxd mir eine tiff karte ausgeben zu lassen. Die mxd sind nur ein Zwischenschritt und im nachhinein brauch ich die auch nichtmehr.

Aber im Grunde kann ich auch eine mxd mit vielen Layers haben, indem dann jede Spalte (also jede Pflanze) dargestellt wird.

gibts für dieses Problem denn eine Lösung? ;)
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Ich kann dir da leider nicht so helfen wie ich dachte. Meine ArcGIS Version (9.2) hat noch keinerlei Editierfunktionen für mxd Dokumente, nur Geoprocessing, deshalb kann ich leider nicht nachvollziehen, welche Schritte zur Lösung notwendig sind. Und weil unsere Nordamerikanischen Freunde auch nicht in der Lage sind, eine API Dokumentation online zu stellen kann ich nicht mal "trocken" sehen, was notwendig wäre, um zum Ziel zu kommen.

Ich befürchte, so geht das nicht, zumindest nicht ohne vertretbaren Aufwand, für den mir die Zeit fehlt. Und ohne eigene Python-/Programmierkenntnisse wird das schwierig zu lösen sein. Du könntest aber mal hier schauen, ob du da was findest. Zumindest beim Überfliegen hab ich da was von UniqueValueRenderer und so gelesen, da könnte also für dich was dabei sein. Ansonsten hilft nur die Hilfe von Arc zu durchforsten ... oder dein Umfeld zu belästigen.

Interessant wären die Methoden auf dem Objekt hier (dem mxd) zu erfahren, was ja deine "Karte" mit Layout und so repräsentiert:

Code: Alles auswählen

# Das template
mxd = arcpy.mapping.MapDocument(r"F:\pommeren\Pflanzenbis56\Current56.mxd")
# listet alle DataFrames und Layers aus der Karte auf, daf?r ist ein Indexwert notwendig
df = arcpy.mapping.ListDataFrames(mxd)[0]
layer = arcpy.mapping.ListLayers(mxd)[0]
Ich frage mich nur, warum die DataFrames, die ja eigentlich zum Dokument (mxd) gehören, nicht darüber auch abgefragt werden. Äquivalent zu den Layern, die ja eigentlich einem DataFrame zugeordnet sind :?: ... ESRI halt

Sorry, ich hätte dir da gerne weitergeholfen
chulia
User
Beiträge: 29
Registriert: Mittwoch 17. August 2011, 10:26

mmh trotzdem danke =)
vielleicht liest das hier durch Zufall noch jemand ...
ansonsten probier ich einfach mal aus, was mir so einfällt ;)
chulia
User
Beiträge: 29
Registriert: Mittwoch 17. August 2011, 10:26

hey =)
vielleicht liest einer noch ab und zu dieses Thema durch.
Ich bin bis jetzt immernoch nicht weiter gekommen, konnte aber ein bisschen herumexperimentieren. Aber mein Problem besteht nach wie vor. Ich hab aus dem Skript mal paar Zeilen herausgenommen und es funktioniert immernoch und stellt trotz der fehlenden Zeilen alles gleich da. Also geh ich davon aus, dass die überflüssig waren
Hier nun mal das veränderte Skript:

Code: Alles auswählen

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import arcpy, sys, numpy, os, csv
sys.path.append('C:\Python26\Lib\site-packages')
import PIL
from PIL import Image

arcpy.gp.overwriteOutput = True
            # Workspace
workspace = arcpy.env.workspace = 'F:\pommeren\Pflanzenbis56'
            # Liste aller features aus den Karten auf, die generiert werden sollen, vorher workspace festlegen
featureClasses = arcpy.ListFeatureClasses()


            # Das template
mxd = arcpy.mapping.MapDocument(r"F:\pommeren\Pflanzenbis56\Current56.mxd")
            # listet alle DataFrames und Layers aus der Karte auf, dafür ist ein Indexwert notwendig
df = arcpy.mapping.ListDataFrames(mxd)[0]
layer = arcpy.mapping.ListLayers(mxd)[0]

            # Das einzuf?gende layer (ein Shapefile ohne weitere Bearbeitung im GIS)
i= 0

for item in featureClasses:

    fields=arcpy.ListFields(item)                                                                           # get all fields in table
    fieldNames = [f.name for f in fields]                                                                  # return field names
    geoFields = [u'FID', u'Shape', u'TK_NR', u'COUNT', u'AREA_KILOM', u'PERIMETER_', u'HECTARES', u'OID_', u'TKNR']  # shape description fields
            #print fields, fieldNames, geoFields

               # Einladen der csv Datei mit den vollständigen Überschriften, um diese dann später in die mxd Datei zu integrieren
    headlines=open('F:\pommeren\Pflanzenbis56\deutscheNamen56.csv',"r")
            # Table = Liste []
    table=[]
    for row in headlines:
        print (row)
            # fügt Reihen an eine Liste an
        table.append(row)

    headlines.close()

    for i,f in enumerate(fieldNames):


       if f in geoFields:                                                                                  # Cycle loop if field already in geoFields
          continue

            # Bestandteil der ÜberschriftenListe, er soll jetzt den Table anzeigen mit Namen aus i (i= Position der Pflanzennamen)
            # da aber in fieldnames noch geofields enthalten sind, ziehen wir von i die Länge der fieldnames ab ... sodass er auch bei Position 1 anfängt
            # f= verkürzten Namen aus der fieldNames

       print table[i-len(geoFields)], f

       newLyr = 'map_'+f
       arcpy.MakeFeatureLayer_management(item,  newLyr)                                  # Create new feature with a redcued  field nr...not working yet!

       lyrFile = arcpy.mapping.Layer(newLyr)

       arcpy.mapping.AddLayer(df, lyrFile, "BOTTOM")
       layers = arcpy.mapping.ListLayers(mxd)
       updateLayer = layers[-1]
       sourceLayer = layers [1]
       arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)

            #Titel hinzufügen
       letitle = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")[0]
       letitle.text=table[i-len(geoFields)]

            #Zwischenspeicherung und tiff
       temp = os.path.abspath(r'F:\pommeren\Pflanzenbis56\end\temp{0}.mxd'.format(i-len(geoFields)))
       mxd.saveACopy(temp)
       arcpy.mapping.ExportToTIFF(mxd, r"F:\pommeren\temp{0}.tif".format(i-len(geoFields)),resolution=200)

       if i == 12:
        break


Vielleicht ist das ganze nun übersichtlicher und mir kann jemand helfen?!

vielen dank =)
bords0
User
Beiträge: 234
Registriert: Mittwoch 4. Juli 2007, 20:40

Die seltsame Einrückung - vor allem der Kommentare (deutsche wie englische) - macht es schwer lesbar.

Grausige Namen - nichtssagend, nicht PEP8-konform.

raw strings für Pfade vermeiden spätere Überraschungen

Für Kommentare gilt: "Don't explain the language". So etwas wie

Code: Alles auswählen

            # fügt Reihen an eine Liste an
        table.append(row)
sollte man nicht machen, es lenkt höchstens ab.

Code: Alles auswählen

            # Das einzuf?gende layer (ein Shapefile ohne weitere Bearbeitung im GIS)
i= 0
ist sinnlos, weil i später ohnehin überschrieben wird.

Code: Alles auswählen

layer = arcpy.mapping.ListLayers(mxd)[0]
ist ebenfalls sinnlos, da layer nicht mehr benutzt wird.


Statt

Code: Alles auswählen

    table=[]
    for row in headlines:
        print (row)
            # fügt Reihen an eine Liste an
        table.append(row)
würde kürzer table = list(headlines) gehen (als ziemlich "wörtliche" Übersetzung), wenn du auf das print verzichten kannst.

Außerdem steht dieses headlines-Zeugs mitten in der item-Schleife, wo sie nicht hingehört. Seltsam auch, dass es sich um eine csv-Datei handelt, die aber in jeder Zeile eine Überschrift enthält, wenn ich es richtig sehe.

Ich habe keine Ahnung von ArcGIS. Du beschreibst das Problem im Code so:

Code: Alles auswählen

       newLyr = 'map_'+f
       arcpy.MakeFeatureLayer_management(item,  newLyr)                                  # Create new feature with a redcued  field nr...not working yet!
Da stellt sich doch die Frage, was item ist; laut Kommentar etwas mit einer reduzierten field nr, also wohl mit reduzierter Feldanzahl. item ist jedoch ein Element von featureClasses, und wird nicht verändert (Seiteneffekte, die Kristallkugeln oder ArcGIS-Kenntnisse erfordern, mal ausgenommen).
Also: Für jede feature-Klasse (=item) wird so oft, wie es nicht-geo-Felder gibt, ein Layer mit dieser (selben) feature-Klasse eingefügt. Evtl. ists aber eher so, dass die Daten erst bei AddLayer dazukommen, und dort wird jeweils ein anderes layer file bentutzt? Dann passts eher.

Wenn man die i - len(geoFields)-Akrobatik entfernt, und einige andere Verschönerungen vornimmt (z.T. Geschmackssache, aber man könnte noch viel mehr machen), kommt man in etwa zu folgendem Code (natürlich völlig ungetest):

Code: Alles auswählen

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import arcpy, sys, numpy, os, csv
sys.path.append(r'C:\Python26\Lib\site-packages')
import PIL
from PIL import Image

arcpy.gp.overwriteOutput = True
workspace = arcpy.env.workspace = r'F:\pommeren\Pflanzenbis56'
featureClasses = arcpy.ListFeatureClasses()

            # Das template
mxd = arcpy.mapping.MapDocument(r'F:\pommeren\Pflanzenbis56\Current56.mxd')
            # listet alle DataFrames aus der Karte auf, den ersten brauchen wir später noch
data_frame = arcpy.mapping.ListDataFrames(mxd)[0]

geoFields = [u'FID', u'Shape', u'TK_NR', u'COUNT', u'AREA_KILOM', u'PERIMETER_', u'HECTARES', u'OID_', u'TKNR']  # shape description fields

               # vollständige Überschriften laden
with open(r'F:\pommeren\Pflanzenbis56\deutscheNamen56.csv',"r") as headline_file:
    headlines = list(headline_file)

for item in featureClasses:
    fields = arcpy.ListFields(item)                                      # get all fields in feature class
    field_names = [f.name for f in fields if f.name not in geoFields]    # (non-geo) field names

    for headline, field_name in zip(headlines, field_names):
       print headline, field_name

       new_layer_name = 'map_%s' % f
       arcpy.MakeFeatureLayer_management(item, new_layer_name)            # Create new feature layer for this field

       layer_file = arcpy.mapping.Layer(new_layer_name)
       arcpy.mapping.AddLayer(data_frame, layer_file, "BOTTOM")           # add a layer - same data frame, different layer file

       layers = arcpy.mapping.ListLayers(mxd)
       updateLayer = layers[-1]
       sourceLayer = layers[1]
       arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)

            #Titel hinzufügen
       letitle = arcpy.mapping.ListLayoutElements(mxd, 'TEXT_ELEMENT')[0]
       letitle.text = headline

            #Zwischenspeicherung und tiff
       temp = os.path.abspath(r'F:\pommeren\Pflanzenbis56\end\temp{0}.mxd'.format(field_name))
       mxd.saveACopy(temp)
       arcpy.mapping.ExportToTIFF(mxd, r"F:\pommeren\temp{0}.tif".format(field_name), resolution=200)

       if field_name == 'DEGENS_EIS': # oder sonstwo abbrechen
           break
Da kann ich einigermaßen die Programmlogik verstehen. Seltsam erscheint, dass stets der letzte Layer mit dem 2. Layer upgedatet wird - das erscheint mir völlig unlogisch, aber ich kenne ja wie gesagt ArcGIS nicht.

Vielleicht hilft es dir bei der Suche.
chulia
User
Beiträge: 29
Registriert: Mittwoch 17. August 2011, 10:26

aah cool, vielen herzlichen Dank.

Die Layer hab ich mal umgeändert in [0] und [-1] und es funktioniert trotzdem, bzw. ändert sich nichts an der tiff Datei am Ende.

Code: Alles auswählen

layers = arcpy.mapping.ListLayers(mxd)
       updateLayer = layers[0]
       sourceLayer = layers[-1]
       arcpy.mapping.UpdateLayer(data_frame, updateLayer, sourceLayer, True)
Mein Problem, dass mir Python am Ende immernoch das gleiche Bild ausspuckt, jedoch mit veränderten Überschriften aus der .csv Datei besteht immer noch.

Ich denke, dass das Problem wirklich bei dem item liegt.
Das item ist das input feature und ist hier in diesem Fall ein shapefile was aus der zu anfang eingeladenen .mxd Datei kommt.
Python soll in dieser shapefile (item), die nicht geoFelder überspringen und dann jede einzelne Spalte darstellen.

Der Befehl MakeFeatureLayer_management, wo das item gebraucht wird ist nur temporär, sodass das item wirklich erst bei AddLayer hinzukommen könnte... doch so genau weiß ich das leider auch nicht :(

ist diese item der Schlüssel zu meinem Problem?

Nochmal herzlichesten Dank für die Überarbeitung =)=)=)
bords0
User
Beiträge: 234
Registriert: Mittwoch 4. Juli 2007, 20:40

chulia hat geschrieben:Der Befehl MakeFeatureLayer_management, wo das item gebraucht wird ist nur temporär, sodass das item wirklich erst bei AddLayer hinzukommen könnte... doch so genau weiß ich das leider auch nicht :(

ist diese item der Schlüssel zu meinem Problem?
Keine Ahnung - wir wissen anscheinend beide nicht, was wir hier tun... keine besonders guten Voraussetzungen.

Brauchst du das update-Zeugs überhaupt?

Für jede feature class und jedes darin vorkommende field erstellst du ein tiff, das nur von mxd abhängt; und wie mxd jetzt mit den Layern, den Featuren, den fields, und den dazugehörigen Dateien zusammenhängt, das ist mir ein Rätsel; ohne das zu wissen, wirst du wohl nicht weiterkommen.
chulia
User
Beiträge: 29
Registriert: Mittwoch 17. August 2011, 10:26

in ArcGis kann ich shapefiles darstellen und wenn ich diese shapefiles in einem Projekt abspeichern will, dann wird daraus eine .mxd Datei.
Die .mxd Datei enthält also alle shapefiles die ich darstellen will. Eine shapefile steht für eine Karte, zum Beispiel. Und wenn ich verscheidene Karten darstellen will, dann nutze ich dafür verschiedene Data-Frames (und mein erster Dataframe wird in ArcGis auch als Layer bezeichnet). In diesem Layer ist dann mein feature enthalten, was meine shapefile ist. Und jede Shapefile enthält eine Attributtabelle, die mir alle Informationen anzeigt und woraus ich die Daten nehme, die ich als Karte darstellen will ... (siehe Screenshots) ... diese Attributtabelle ist eine .dbf Datei und besteht aus verschiedenen Spalten (fields).
Nun soll Python also einen neuen Layer erstellen, mit der gleichen Shapefile, mir aber nicht die Spalte Weiße Tanne aus der Attributtabelle anzeigen, sondern eben ein Feld weiterrutschen und mir die Spalte Degens_Eis anzeigen. Und damit das Layou gleich ist, soll er für den 2. Layer mit dem ersten layer updaten.

Das soll dann als tiff dargestellt werden
Antworten