Mehr

ArcGIS konvertiert die Liste der Aufzählung in einem einzelnen Feld von S-57-Daten?

ArcGIS konvertiert die Liste der Aufzählung in einem einzelnen Feld von S-57-Daten?


Ich speichere s-57-Daten in einer MDB, die über einen Layer symolisiert wird. Einige Attribute in s-57-Daten können eine Liste von Aufzählungen sein, und ich möchte einen Weg finden, die tatsächlichen Werte anzuzeigen, die die Aufzählung darstellt, siehe Beispiel unten.

Mein Feature hat eine Spalte namens Farbe, die als einzelne Zahl dargestellt werden kann (z. B. 1 = weiß) oder durch eine Liste (z. B. 2,3,2 = schwarz, rot, schwarz) dargestellt werden kann.

Ich habe die Aufzählungstabelle in die MDB aufgenommen, die ähnliche Werte wie die unten gezeigten hat.

WERTFARBE

1 weiß

2 schwarz

3 rot

Wenn eine einzelne Farbe im Feld aufgeführt ist, funktioniert eine einfache Verknüpfung mit der Aufzählungstabelle gut und ich kann sie so einrichten, dass die Benutzer die vollständigen Attributwerte anstelle der Aufzählung sehen Attributwerte, ist das möglich?

Zusammenfassend, wenn ich ein Farbfeld habe, das '2,3,2' mit der obigen Aufzählungstabelle enthält, möchte ich, dass die Ebene schwarz, rot, schwarz anstelle von 2,3,2 im Attribut anzeigt Tabelle, ist das möglich?


Im Feldrechner können Sie diesen Python-Code ausprobieren:

",".join({"1":"Weiss","2":"Schwarz","3":"Rot"}[val.strip()] für Wert in !INPUT_FIELD_NAME!.split("," ))

Sie müssen lediglich Ihr Aufzählungsfeld für !INPUT_FIELD_NAME! und stellen Sie sicher, dass Sie Python Parser verwenden!

AKTUALISIEREN


OK, unten ist eine weitere Lösung durch Erstellen einer Nachschlagetabelle (in diesem Fall dbf-Tabelle) um Ihre Originaldaten in ArcMap zu verbinden. Ich habe es nicht getestet, sollte aber im integrierten Python-Interpreter funktionieren.

Erstellen Sie eine dbf-Datei an einem temporären Speicherort und fügen Sie zwei Felder zum Nachschlagen hinzu.

look_up_table=arcpy.CreateTable_management(r"C:Temp","s_57_LookUp.dbf")[0] look_up_fields=["Color_Coded","Color_Expanded"] für Feld in look_up_fields: arcpy.AddField_management(look_up_table,field,"TEXT" ,Feldlänge=255)

Sammeln Sie eindeutige Farbeinträge und fügen Sie sie in die Nachschlagetabelle ein.

source_s_57_file=r'C:TempScratch.mdbMy_s57_file' #IHRE TABELLE look_up_values=[] ins_cursor=arcpy.InsertCursor(look_up_table) mit arcpy.da.SearchCursor(source_s_57_file,"Color") als Cursor WH: #THE FARBINFO WIRD FÜR Zeile im Cursor KODIERT: wenn Zeile[0] nicht in look_up_values: look_up_values.append(row[0]) ins_row=ins_cursor.newRow() [ins_row.setValue(field,val) for field,val in zip (look_up_fields,[row[0],",".join({"1":"White","2":"Black","3":"Rot"}[val.strip()] für val in row[0].split(","))])] ins_row.insertRow(ins_row) del ins_cursor

Ich hoffe, Sie werden nicht auf ein 64-Bit-Geoverarbeitungsproblem stoßen, wie hier beschrieben.


Schau das Video: ESRI ArcGIS ArcMap Add Basemap is grayed out, FIXED RESOLVED