Mais

Existe um script Python para identificar quais recursos de banco de dados estão em Map / Feature Services?


Eu gostaria de identificar classes de recursos que estão presentes em meus serviços de mapa. Existe uma maneira de automatizar isso com python?


Sim, você deve conseguir fazer isso descompactando o arquivo de definição de serviço (.sd). No conteúdo, há um documento xml chamado "manifest.xml". Você pode usar o módulo python xml.tree para ler o nome de cada camada (tag Name) e sua fonte de dados (tag OnPremisePath).

Esta é a aparência do manifest.xml:

você pode descompactar arquivos com esta função:

import os import zipfile def unzip (z, new): zfile = zipfile.ZipFile (z) para nome em zfile.namelist (): (dirname, filename) = os.path.split (name) se não os.path.exists (novo): os.makedirs (novo) zfile.extract (nome, novo)

Você pode usar o ponto de extremidade REST do serviço de mapas:

import urllib2 import json content = urllib2.urlopen ("http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/layers?f=pjson") .read () service = json.loads (content) para camada em serviço ['camadas']: camada de impressão ['nome'], ":", camada ['tipo']

Ou use ConvertWebMapToMapDocument (arcpy.mapping) para obter um MXD e Camadas de Lista de uma maneira mais familiar.