ArcGIS सर्वर 10.1 में स्वचालित रूप से कई MXD फाइलें कैसे प्रकाशित करें?


12

ArcGIS सर्वर 10.1 में स्वचालित रूप से कई mxd फाइलें कैसे प्रकाशित करें?

मेरे पास लगभग 60 mxd फाइलें हैं और मैं उन्हें अपने आप प्रकाशित करना चाहता हूं। क्या इसे करने का कोई तरीका है?


Btelliot, आपका कोड भी 10.2 काम करता है! स्पष्ट रूप से सेवा से संबंधित कुछ विवरणों को परिभाषित करने की आवश्यकता है, लेकिन यह एक अद्भुत प्रारंभिक बिंदु है !!! 10X

जवाबों:


14

आप अपनी mxd फ़ाइलों को प्रकाशित करने के लिए आर्कपी का उपयोग कर सकते हैं।

अपनी mxd फ़ाइलों को सूचीबद्ध करने के लिए os.walk का उपयोग करें:

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

और फिर इस तरह से जाएं:

1. analyzeForMSD () फ़ंक्शन ( सूचना ): मैप सेवा परिभाषा (MSD) फ़ाइल में मैप को कनवर्ट करते समय संभावित उपयुक्तता और प्रदर्शन के मुद्दों के लिए स्रोतों को निर्धारित करने के लिए मैप दस्तावेजों (.mxd) का विश्लेषण करता है।

उदाहरण:

import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ReadyForMSD.mxd")
analysis = arcpy.mapping.AnalyzeForMSD(mxd)

2. ConvertToMSD () फ़ंक्शन ( सूचना ): एक नक्शा को एक मानचित्र सेवा परिभाषा (MSD) फ़ाइल में कनवर्ट करता है।

उदाहरण:

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 () फ़ंक्शन ( सूचना ): एक नामित आर्किस सर्वर के लिए एक मौजूदा मानचित्र सेवा परिभाषा (MSD) फ़ाइल प्रकाशित करता है।

उदाहरण:

import arcpy
msd = r"C:\Project\Project.msd"
arcpy.mapping.PublishMSDToServer (msd, "http://<MyServer>/arcgis/services", 
              "<MyServer>", "MyMapService", "MyMapServiceFolder", ["WMS", "KML"])

आखिरी बात यह है कि आपको अपनी जरूरतों के लिए सभी फंक्शंस को मर्ज करना चाहिए। वास्तव में एक ट्यूटोरियल है जो आर्क मैप्स को मैप दस्तावेज़ प्रकाशित करने के लिए आर्कपी मैपिंग के उपयोग के बारे में यहां मदद कर सकता है । यह मेरे दस्तावेज के समान है ...

संक्षेप में (छवि लिंक से है जो मैं ऊपर देता हूं):

ArcGIS

मुझे उम्मीद है इससे आपको मदद मिली होगी...


10.1 के साथ काम करके इसकी इच्छा? 10.1 में * .msd के बजाय .sd है।
user7172

हाँ यह 10 के लिए है, लेकिन आप 10.1 ...
आरागॉन

1
धन्यवाद आरागॉन, यह बहुत मददगार था! बस 130 MXD पर स्वतः-प्रकाशन समाप्त हो गया। :) बस arcpy.mapping.CreateMapSDDraftarcpy.StageService_serverarcpy.UploadServiceDefinition_server
पोस्टर के


4

आरागॉन के पास एक शानदार जवाब है, लेकिन दुर्भाग्य से यह आर्कगिस / आर्कसर 10.1 के लिए काम नहीं करता है।

मैंने अभी जो नया तरीका आजमाया है वह आर्कगिस 10.1 मदद से दूर है। आप मदद फ़ाइल का लिंक यहां देख सकते हैं: http://resources.arcgis.com/en/help/main/10.1/index.html#//00s30000006q000000

यहां बताया गया है कि मैं एक निर्दिष्ट फ़ोल्डर के आधार पर MXDs प्रकाशित करने के लिए कोड का उपयोग कैसे करता हूं:

#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']

इस कोड का उपयोग करने का एक सरल तरीका हो सकता है, लेकिन यह मेरे लिए काम करता है। उम्मीद है की यह मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.