Ausdruck für "noData" anstelle von <null>

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
smea
User
Beiträge: 3
Registriert: Mittwoch 4. August 2021, 11:38

Hallo zusammen,

ich brauche mal Eure Hilfe bei meinem kleinen Problem:
Ich habe einer bestehenden Tabelle ein Feld namens "fieldLength" hinzugefügt. Es hat den Felddatentyp "LONG" (wurde so vorgegeben).
Jetzt möchte ich anstelle des Eintrags "<Null>" in der Tabelle "noData" haben, es sei den der Nutzer trägt einen Wert ein.

Bisher bin ich bis hierhin gekommen (Stelle mit den ????????? im Script). Ich verstehe einfach nicht wie hier der Ausdruck lauten muss.
Die Aufgabe beinhaltet natürlich noch weitere Punkte, aber die hab ich hoffentlich soweit mit meinem Script gelöst.
....
....
....
for fieldName in fieldList:
arcpy.ValidateFieldName(fieldName, inputFC)
if len(fieldList) == 0:
arcpy.AddField_management(inputFC , fieldName, fieldType, "", "", fieldLength)
arcpy.AddMessage("Feld erstellt: " + fieldName)
for fieldLength in fieldList:
arcpy.management.CalculateField("alpenv_huetten", "Laenge", ?????????????, "PYTHON3", '', "TEXT")
else:
arcpy.AddMessage("Feld bereits vorhanden: " + fieldName)
...
...
...

Ich hoffe mir kann jemand helfen.
LG Smea
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich verstehe die Frage nicht. Du scheinst zu glauben wir alle kennen ArcGIS. Dem ist nicht so. Das ist eher speziell. Da musst du schon ein bisschen weiter ausholen. Geht es dir nur um die Darstellung? Dann reicht es doch, eine Variable in Abhängigkeit des Spaltenwertes zu belegen mit dem Wert, oder dem Platzhalter.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Wenn ich das richtig verstehe, kann man da einen Python-Ausdruck angeben.
https://pro.arcgis.com/de/pro-app/lates ... -field.htm

also etwas in der Art:

Code: Alles auswählen

arcpy.management.CalculateField("alpenv_huetten", "Laenge",  '"noData" if not fieldLength else fieldLength', "PYTHON3", '', "TEXT")
Total geraten, ... kann auch falsch sein...

Außerdem sagst du ja, dass das eher ein numerischer Typ LONG sein soll. Daher frage ich mich wieviel Sinn es macht einen String / TEXT da einzusetzen.
smea
User
Beiträge: 3
Registriert: Mittwoch 4. August 2021, 11:38

oh sorry,

Ich dachte, da ich "nur" ein python-script abgeben soll, wäre die ArcGIS zu erwähnen nicht nötig. Sorry mein Fehler!

Ich versuche mal zu erklären, wo es bei mir nicht weitergeht. Nachdem ich mein Script geschrieben habe und es in ArcGIS ausgeführt habe.
Sind wie gewollt, zu meiner Attribut-Tabelle, neue Spalten z.B. "Feld1" und "Feld2" hinzugefügt worden. In den beiden Spalten stehen natürlich noch keine Werte, sondern <Null> in jedem Feld. Ich möchte anstelle des <Null> ein "noData" in den Feldern haben.

Man kann wohl mittels einem Ausdruck im Script festlegen, dass "noData" erscheint. Zumindest so lange, bis ein Benutzer etwas anderes als Wert einträgt.

Ich hoffe, ich konnte es besser erklären.
smea
User
Beiträge: 3
Registriert: Mittwoch 4. August 2021, 11:38

..... Außerdem sagst du ja, dass das eher ein numerischer Typ LONG sein soll. Daher frage ich mich wieviel Sinn es macht einen String / TEXT da einzusetzen.


Das mit dem "TEXT" kam von mir. Also ist wahrscheinlich falsch gewesen. Mir geht es um diesen Ausdruck.
Müsste es nicht so schon funktionieren?
arcpy.management.CalculateField("alpenv_huetten", "Laenge", '"noData" if not fieldLength else fieldLength', "PYTHON3")
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@smea,
Müsste es nicht so schon funktionieren?
arcpy.management.CalculateField("alpenv_huetten", "Laenge", '"noData" if not fieldLength else fieldLength', "PYTHON3")
Also ich würd's mal ausprobieren... mehr kann ich leider auch nicht sagen.


arcpy ist eines von Hunderttausenden Python-Zusatzpaketen. Die wenigsten werden das installiert, bzw. Erfahrung damit haben.
Antworten