ERROR
Es ist möglich, mit der Methode overwrite() in ArcGIS API for Python einen vorhandenen gehosteten Feature-Layer zu überschreiben, wie im folgenden Beispiel dargestellt:
from arcgis.gis import GIS from IPython.display import display gis = GIS("https://python.playground.esri.com/portal", "username", "password", verify_cert=False) item = gis.content.search("feature_name", "Feature Layer") service_flayer_collection = FeatureLayerCollection.fromitem(item) service_flayer_collection.manager.overwrite(r'[folder_location]/TEST.zip')
In einigen Fällen wird jedoch die folgende Fehlermeldung zurückgegeben:
Error: Laufzeitfehler: Das Element <Elementname> ist bereits vorhanden.
Dieser Fehler kann auftreten, wenn dem veröffentlichten Layer ein Ansichts-Layer zugeordnet ist. Weitere Informationen finden Sie unter Portal for ArcGIS: Erstellen von Sichten gehosteter Feature-Layer.Wenn mit der Funktion gis.content.search() nach dem Feature-Layer-Namen gesucht wird, wird mehr als ein Ergebnis zurückgegeben: Der Feature-Layer und der Ansichts-Layer. Um auf vorhandene zugehörige Ansichts-Layer zu prüfen, können die Parameter für die Funktion gis.content.search() im Skript aufgerufen werden, wie im folgenden Beispiel dargestellt:
item = gis.content.search("featurename", "Feature Layer") item
Dieser Code gibt alle verfügbaren Elemente mit dem angegebenen Namen zurück. Das folgende Skript zeigt ein Beispiel für das Ergebnis:
[<Item title:"featurename_1" type:Feature Layer Collection owner:User_1>, <Item title:"featurename" type:Feature Layer Collection owner:User_1>]
Um dem Problem der Funktion gis.content.search() zu begegnen, kann der Funktion ein Index oder Array hinzugefügt werden. Da im Suchergebnis zuerst Ansichts-Layer aufgelistet sind, muss für die Suche der Index "1" eingefügt werden, damit der richtige gehostete Feature-Layer, der überschrieben werden soll, ausgewählt wird. Im folgenden Codebeispiel wird dies veranschaulicht:
from arcgis.gis import GIS from IPython.display import display gis = GIS("https://python.playground.esri.com/portal", "username", "password", verify_cert=False) #For using index array method item = gis.content.search("feature_name", "Feature Layer")[1] //Setting the index for the search function service_flayer_collection = FeatureLayerCollection.fromitem(item) service_flayer_collection.manager.overwrite(r'[folder_location]/TEST.zip')
Eine andere Alternative besteht darin, die Methode gis.content.search() zum Suchen nach der Element-ID des gewünschten Features zu verwenden. Die Element-ID eines Features befindet sich in der Adressleiste eines Browsers, wenn das Feature in ArcGIS Online geöffnet wird, wie in der folgenden Abbildung dargestellt:
Ändern Sie dazu das Skript wie folgt:
#For searching using item ID item = gis.content.search("item_id")
Unterstützung durch ArcGIS-Experten anfordern
Esri Support App herunterladen