Quais classes de recursos são / são usadas pelo serviço?

8

Eu tenho várias classes de recursos e muitos serviços. Quando tento fazer a versão da minha classe de recurso, recebo a mensagem de que a classe de recurso está bloqueada, o que é óbvio. Mas não está me dizendo por qual serviço está bloqueado.

Existe a possibilidade de trabalhar com todas as classes de recursos com o ArcPy e descobrir em qual serviço é referenciado?

user32324
fonte

Respostas:

7

ArcGIS Server 10.1+:

Você pode fazer isso, no entanto, não há funcionalidade pronta para isso. As informações sobre quais classes de recursos são usadas (e de quais arquivos de banco de dados eles estão vindo) não são expostas pelo ArcGIS Server Manager / Diretório de Serviços / REST Admin.

No entanto, essas informações são armazenadas como metadados de serviço na C:\arcgisserver\directories\arcgissystem\arcgisinput\ServicePaths.MapServer\extractedpasta do manifest.xmlarquivo (existem .json e .xml). O arquivo .Xml contém informações mais detalhadas, eu recomendo analisar esse arquivo (mas você pode começar com .json primeiro para ter uma idéia).

Duas tags que você deve observar no arquivo .xml são <Name>ServicePaths</Name>- nome do serviço e várias <OnPremisePath>C:\GIS\Temp\test.gdb\StopsSandiego</OnPremisePath>tags que conterão os nomes das classes de recurso e seu caminho de catálogo / banco de dados geográfico.

Em termos de código, você pode usar o Python para analisar esse arquivo .xml, obter um dicionário com esta estrutura:

{str:(tuple)} #data type

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

Quando terminar, você pode escrever uma função que retornará a chave do dicionário (nome do serviço) com base no valor (nome do caminho da classe de recurso que você fornece). Isso permitirá que você saiba quais serviços você deve parar para liberar o bloqueio para a classe de recurso.

ATUALIZAÇÃO Abril de 2016: você pode fazer isso com o manifesto de serviço da API REST para o serviço, adicionado no ArcGIS Server 10.1 SP1:

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

onde %format%é um jsonouxml

Uma postagem com resposta completa está aqui: Script Python para imprimir as classes de recurso que fazem referência aos serviços de mapa AGS

ArcGIS Server 10.0:

Vá para C:\Program Files (x86)\ArcGIS\Server10.0\server\user\cfge abra o arquivo .cfg associado ao seu serviço. Procure a <FilePath>etiqueta. Agora você pode percorrer todos os arquivos .cfg nesta pasta com o Python e obter informações sobre quais arquivos .mxd são usados. Como você tem acesso ao .mxd, é possível obter o caminho da fonte de dados de cada camada e, assim, apresentar nomes de classes.

<ServerObjectConfiguration>

    <Description></Description>

    <Properties>
        <FilePath>D:\temp\TempService.mxd</FilePath>
Alex Tereshenkov
fonte
Alex, obrigado pela resposta. Entendo, mas parece-me que sua resposta está relacionada à versão 10.1. Eu estou trabalhando com 10,0 (;-() e não pode achar que estrutura de diretórios exatamente eo arquivo xml Alguma dica Thnxs !!.?
user32324
Ah entendo. Modifiquei minha resposta para atender às suas necessidades.
Alex Tereshenkov
Alex, obrigado novamente pela sua resposta. É claro para o meu agora e pode avançar com a minha "pesquisa".
user32324