12 votos

Cómo publicar muchos MXD archivos en el Servidor de ArcGIS 10.1 automáticamente?

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?

14voto

texai Puntos 178

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):

arcgis

espero te sirva de ayuda...

5voto

MHG Puntos 81

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#

4voto

fcw Puntos 1164

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.com

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.

Powered by:

X