Attributtabelle automatisch darstellen
Verfasst: Mittwoch 17. August 2011, 10:49
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
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

