Welche Feature-Class (s) werden vom Service verwendet?


8

Ich habe mehrere Feature-Classes und viele Services. Wenn ich versuche, meine Feature-Class versioniert zu machen, wird die Meldung angezeigt, dass die Feature-Class gesperrt ist, was offensichtlich ist. Aber es sagt mir nicht, durch welchen Dienst es gesperrt ist.

Gibt es eine Möglichkeit, alle Feature-Classes mit ArcPy zu bearbeiten und herauszufinden, auf welchen Service verwiesen wird?

Antworten:


7

ArcGIS Server 10.1+:

Sie können dies tun, es gibt jedoch keine sofort einsatzbereite Funktionalität. Die Informationen darüber, welche Feature-Classes verwendet werden (und aus welchen Datenbankdateien sie stammen), werden nicht über ArcGIS Server Manager / Services Directory / REST Admin verfügbar gemacht.

Diese Informationen werden jedoch als Dienstmetadaten in einem C:\arcgisserver\directories\arcgissystem\arcgisinput\ServicePaths.MapServer\extractedOrdner in der manifest.xmlDatei gespeichert (es gibt sowohl .json als auch .xml). Die XML-Datei enthält detailliertere Informationen. Ich empfehle, diese Datei zu analysieren (Sie können jedoch zuerst mit .json beginnen, um die Idee zu erhalten).

Zwei Tags, die Sie in der XML-Datei betrachten sollten, sind <Name>ServicePaths</Name>: Dienstname und mehrere <OnPremisePath>C:\GIS\Temp\test.gdb\StopsSandiego</OnPremisePath>Tags, die Feature-Class-Namen und ihren Katalog- / Geodatabase-Pfad enthalten.

Code weise könnten Sie Python verwenden, um diese .xml-Datei zu analysieren und ein Wörterbuch mit dieser Struktur zu erhalten:

{str:(tuple)} #data type

{servicename:(featureclasspath)} #pseudocode
{servicename:(fc1,fc2,fc3); servicename1:(fc1,fc2); servicename2:(fc5);...} #pseudocode

Wenn Sie damit fertig sind, können Sie eine Funktion schreiben, die den Schlüssel des Wörterbuchs (Servicename) basierend auf dem von Ihnen angegebenen Wert (Pfadname des Feature-Class-Pfads) zurückgibt. Auf diese Weise erfahren Sie, welche Dienste Sie beenden sollten, um die Sperre für die Feature-Class aufzuheben.

UPDATE April 2016: Sie können dies mit dem REST-API- Service-Manifest für den Service tun , das in ArcGIS Server 10.1 SP1 hinzugefügt wurde:

http://localhost:6080/arcgis/admin/services/Parks/Landmarks.MapServer/iteminfo/manifest/manifest.%format% 

wo %format%ist entweder jsonoderxml

Ein Beitrag mit vollständiger Antwort ist hier: Python-Skript zum Drucken der Feature-Classes, die auf AGS-Kartendienste verweisen

ArcGIS Server 10.0:

Gehen Sie zu C:\Program Files (x86)\ArcGIS\Server10.0\server\user\cfgund öffnen Sie die .cfg-Datei, die Ihrem Dienst zugeordnet ist. Suchen Sie nach dem <FilePath>Tag. Jetzt können Sie mit Python alle .cfg-Dateien in diesem Ordner durchlaufen und Informationen darüber erhalten, welche .mxd-Dateien verwendet werden. Da Sie Zugriff auf die .mxd-Dateien haben, können Sie jeden Layer-Datenquellenpfad und damit Feature-Class-Namen abrufen .

<ServerObjectConfiguration>

    <Description></Description>

    <Properties>
        <FilePath>D:\temp\TempService.mxd</FilePath>

Alex, danke für die Antwort. Ich verstehe es, aber es scheint mir, dass Ihre Antwort mit Version 10.1 zusammenhängt. Ich arbeite mit 10.0 (;-() und kann diese Verzeichnisstruktur und die XML-Datei nicht genau finden. Irgendwelche Hinweise? Danke !!
— user32324

Ah ich sehe. Ich habe meine Antwort an Ihre Bedürfnisse angepasst.
— Alex Tereshenkov

Alex, nochmals vielen Dank für deine Antwort. Es ist mir jetzt klar und ich kann mit meiner "Suche" weitermachen.
— user32324
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.