anbei eine Möglichkeit, wie man das implementieren könnte:
(ungetestet)
Code: Alles auswählen
import arcpy
from pathlib import Path
FILENAMES = Path(r'C:\Test').rglob('*.shp')
def set_coordinate_status(message, *args):
try:
for status in args:
arcpy.SetParameterAsText(status[0], status[1])
arcpy.AddMessage(message)
except SinnvolleArcpyException:
arcpy.AddPrintMessage("Irgendwas sinnvolles")
def resolve_shape(path):
try:
dsc = arcpy.Describe(path)
sr = dsc.spatialReference
return sr.name.lower()
except SinnvolleArcpyException:
arcpy.AddPrintMessage("Irgendwas sinnvolles")
def main():
for shape in FILENAMES:
prj = resolve_shape(shape)
if prj.find("_stateplane_") > -1:
message = "Coordinate system is StatePlane"
set_coordinate_status(
message, ((1, 'false'), (2, 'true'))
)
elif prj == "unknown":
message = "To continue, first define a coordinate system!"
set_coordinate_status(
message, ((1, 'true'), (2, 'false'))
)
else:
message = "Coordinate system is not StatePlane or Unknown"
set_coordinate_status(
message, ((1, 'false', 2, 'false'))
)
if __name__ == '__main__':
main()
So kannst du beliebig viele Shapes ohne großes Zutun verarbeiten und reichst basierend auf den Ergebnissen was auch immer in `prj` so *drin* ist die notwendigen Parameter an eine Funktion die dann die Status setzt.
EDIT: noch als Ergänzung zu dem Beispiel in der Doku. Das Beispiel ist nicht gut, da es massiv gegen DRY verstößt (Don't repeat yourself), vorallem weil hier halt nichts generisch aufgebaut ist. Die Wartung von solchem Code wird zur Hölle.