¿Qué clase de entidad utiliza el servicio?

8

Tengo varias clases de características y muchos servicios. Cuando trato de versionar mi clase de entidad, recibo el mensaje de que la clase de entidad está bloqueada, lo cual es obvio. Pero no me dice por qué servicio está bloqueado.

¿Existe la posibilidad de trabajar en todas las clases de entidad con ArcPy y averiguar en qué servicio se hace referencia?

usuario32324
fuente

Respuestas:

7

ArcGIS Server 10.1+:

Puede hacer esto, sin embargo, no hay una funcionalidad lista para usar para esto. La información sobre qué clases de entidad se utilizan (y de qué archivos de base de datos provienen) no se expone a través de ArcGIS Server Manager / Services Directory / REST Admin.

Sin embargo, esta información se almacena como metadatos de servicio dentro de la C:\arcgisserver\directories\arcgissystem\arcgisinput\ServicePaths.MapServer\extractedcarpeta en el manifest.xmlarchivo (hay .json y .xml). El archivo .Xml contiene información más detallada, recomiendo analizar este archivo (pero puede comenzar con .json primero para tener una idea).

Dos etiquetas que debe mirar en el archivo .xml son <Name>ServicePaths</Name>: nombre del servicio y varias <OnPremisePath>C:\GIS\Temp\test.gdb\StopsSandiego</OnPremisePath>etiquetas que contendrán nombres de clases de entidad y su ruta de catálogo / geodatabase.

En cuanto al código, puede usar Python para analizar este archivo .xml, obtener un diccionario con esta estructura:

{str:(tuple)} #data type

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

Cuando haya terminado con eso, puede escribir una función que devolverá la clave del diccionario (servicename) en función del valor (nombre de ruta de clase de entidad que proporcione). Esto le permitirá saber qué servicios debe detener para liberar el bloqueo a la clase de entidad.

ACTUALIZACIÓN Abril de 2016: puede hacer esto con el manifiesto del servicio REST API para el servicio, agregado en ArcGIS Server 10.1 SP1:

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

donde %format%es jsonoxml

Aquí hay una publicación con respuesta completa: script de Python para imprimir las clases de entidad que hacen referencia a los servicios de mapas de AGS

ArcGIS Server 10.0:

Vaya C:\Program Files (x86)\ArcGIS\Server10.0\server\user\cfgy abra el archivo .cfg asociado con su servicio. Busca la <FilePath>etiqueta. Ahora puede iterar a través de todos los archivos .cfg en esta carpeta con Python y obtener información sobre qué archivos .mxd se usan y, dado que tiene acceso al .mxd, puede obtener la ruta de origen de datos de cada capa y, por lo tanto, los nombres de las clases de entidades.

<ServerObjectConfiguration>

    <Description></Description>

    <Properties>
        <FilePath>D:\temp\TempService.mxd</FilePath>
Alex Tereshenkov
fuente
Alex, gracias por la respuesta. Lo entiendo, pero me parece que su respuesta está relacionada con la versión 10.1. Estoy trabajando con 10,0 (;-() y no puedo encontrar que la estructura de directorios con exactitud y el archivo XML Alguna pista Thnxs !!.?
user32324
Ah, ya veo. Modifiqué mi respuesta para satisfacer tus necesidades.
Alex Tereshenkov
Alex, gracias de nuevo por tu respuesta. Está claro para mi ahora y puede avanzar con mi "búsqueda".
user32324