Mehr

Abrufen von Layern aus .msd mit ArcPy?

Abrufen von Layern aus .msd mit ArcPy?


Ich benötige den Namen jedes Layers in einer .msd-Datei, konnte jedoch keine Unterstützung für arcpy (ArcGIS 10.0) finden. Gibt es eine Methode, die ich übersehen habe?

Im aktuellen Workflow verwende ich, da ich das Dokument veröffentliche, den REST-Dienst:

descriptionUrl = url + "/ArcGIS/rest/services/" + mapServer + "/MapServer?f=json" restResponseFp = urllib.urlopen(descriptionUrl) mapDescription =json.load(restResponseFp) layerNames = [str(layer["name" ]) für Layer in mapDescription["layers"]]

zipfile aus xml.etree.cElementTree importieren iterparse importieren zz = zipfile.ZipFile('C:TempUntitled.msd') serviceNames = [] for name in zz.namelist(): if name == "DocumentInfo.xml " or name == "layers/layers.xml": pass else: for _event, elem in iterparse(zz.open(name)): if elem.tag == "Name": serviceNames.append(elem.text) break zz.schließen()

Dateien, die mit Ebenen verknüpft sind, werden wie folgt benannt: layer/featureclassname.xml

Lange Dienstnamen werden abgeschnitten, um den Dateinamen zu bilden, daher müssen wir den Dateiinhalt analysieren, um alle Fälle zu behandeln.