Cómo publicar muchos mxd archivos en el Servidor de ArcGIS 10.1 automáticamente?
Tengo alrededor de 60 archivos mxd y quiero publicar de forma automática. Hay alguna forma de hacer esto?
Cómo publicar muchos mxd archivos en el Servidor de ArcGIS 10.1 automáticamente?
Tengo alrededor de 60 archivos mxd y quiero publicar de forma automática. Hay alguna forma de hacer esto?
usted puede utilizar arcpy para la publicación de sus archivos mxd.
para la inclusión de su mxd uso de los archivos de sistema operativo.a pie :
import os
import arcpy
path= r"c:\path"
for (path, dirs, files) in os.walk(path):
for fl in files:
if fl.lower().endswith(".mxd"):
mxd = arcpy.mapping.MapDocument(os.path.join(path, fl))
print mxd.filePath
y, a continuación, ir de esta manera:
1. AnalyzeForMSD() función (info): Analiza los documentos de mapa (.mxd) para determinar las fuentes potenciales de idoneidad y de los problemas de rendimiento cuando la conversión de un mapa en un mapa de la definición de servicio (MSD) de archivo.
Ejemplo:
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ReadyForMSD.mxd")
analysis = arcpy.mapping.AnalyzeForMSD(mxd)
2. ConvertToMSD() función (info) : Convierte un mapa un mapa de la definición de servicio (MSD) de archivo.
Ejemplo:
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ReadyForMSD.mxd")
msd = r"C:\Project\Output\Project.msd"
df = arcpy.mapping.ListDataFrames(mxd, "County Maps")[0]
arcpy.mapping.ConvertToMSD(mxd, msd, df, "NORMAL", "NORMAL")
del mxd, msd
3. PublishMSDToServer() función (info) : Publica un mapa existente de la definición de servicio (MSD) archivo a un designado de ArcGIS Server.
Ejemplo:
import arcpy
msd = r"C:\Project\Project.msd"
arcpy.mapping.PublishMSDToServer (msd, "http://<MyServer>/arcgis/services",
"<MyServer>", "MyMapService", "MyMapServiceFolder", ["WMS", "KML"])
la última cosa que usted debe hacer que la combinación de todos los funcitons para sus necesidades. en realidad, hay un tutorial que te puede ayudar u aquí sobre el Uso de ArcPy Asignación de Publicar los Documentos de Mapa de ArcGIS Server. es similar a mi la documentación...
Para resumir(la imagen es de un enlace que doy más arriba):
espero te sirva de ayuda...
si quieres hacerlo en c# se puede ver en mi blog: http://nicogis.blogspot.it/2012/10/ags-101-restful-administrative-api.html
para la conversión mxd -> msd puede utilizar python llamado de c#
Aragón tiene una gran respuesta, pero lamentablemente no funciona para ArcGIS / ArcServer 10.1.
El nuevo método sólo traté está basada en el ArcGIS 10.1 ayuda. Usted puede encontrar el enlace para el archivo de ayuda aquí: http://resources.arcgis.com/en/help/main/10.1/index.html#//00s30000006q000000
He aquí cómo se utiliza el código para publicar MXDs basado en una carpeta especificada:
#import modules
import arcpy, sys, os, string
#specify folder containing MXDs
inFolder = raw_input("Please enter folder containing 10.1 MXDs to Publish to ArcServer: ")
#specify connection File Path
connectionFilePath = r'C:\Users\<your user name>\AppData\Roaming\ESRI\Desktop10.1\ArcCatalog\<your connection file location.ags>'
#look in folder for mxds
MapPath= []
MapFolder = os.listdir(inFolder)
for file in MapFolder:
fileExt = os.path.splitext(file)[1]
if fileExt == ".mxd":
MapPath = os.path.join(inFolder, file)
file = MapPath.strip('\'')
mxd = arcpy.mapping.MapDocument(file)
base = os.path.basename(file)
serviceName = base[:-4]
SDDraft = file[:-4] + ".sddraft"
sd = file[:-4] + ".sd"
#Create Map SD Draft
print "\n" + "Publishing: " + base
analysis = arcpy.mapping.CreateMapSDDraft(mxd, SDDraft, serviceName, "FROM_CONNECTION_FILE", connectionFilePath, "False", <Service Folder Name>, "None", "None")
# stage and upload the service if the sddraft analysis did not contain errors
if analysis['errors'] == {}:
# Execute StageService
print "Staging Service"
arcpy.StageService_server(SDDraft, sd)
# Execute UploadServiceDefinition
print "Uploading Service Definition"
arcpy.UploadServiceDefinition_server(sd, connectionFilePath)
print "Publishing " + base +" succeeded" + "\n"
else:
# if the sddraft analysis contained errors, display them
print analysis['errors']
Podría haber una manera más sencilla para utilizar este código, pero a mí me funciona. Espero que esto ayude.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.