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?

user32324
quelle

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 Tereshenkov
quelle
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