ArcGIS सर्वर 10.1 में स्वचालित रूप से कई mxd फाइलें कैसे प्रकाशित करें?
मेरे पास लगभग 60 mxd फाइलें हैं और मैं उन्हें अपने आप प्रकाशित करना चाहता हूं। क्या इसे करने का कोई तरीका है?
ArcGIS सर्वर 10.1 में स्वचालित रूप से कई mxd फाइलें कैसे प्रकाशित करें?
मेरे पास लगभग 60 mxd फाइलें हैं और मैं उन्हें अपने आप प्रकाशित करना चाहता हूं। क्या इसे करने का कोई तरीका है?
जवाबों:
आप अपनी 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"])
आखिरी बात यह है कि आपको अपनी जरूरतों के लिए सभी फंक्शंस को मर्ज करना चाहिए। वास्तव में एक ट्यूटोरियल है जो आर्क मैप्स को मैप दस्तावेज़ प्रकाशित करने के लिए आर्कपी मैपिंग के उपयोग के बारे में यहां मदद कर सकता है । यह मेरे दस्तावेज के समान है ...
संक्षेप में (छवि लिंक से है जो मैं ऊपर देता हूं):
मुझे उम्मीद है इससे आपको मदद मिली होगी...
arcpy.mapping.CreateMapSDDraft
arcpy.StageService_server
arcpy.UploadServiceDefinition_server
अगर आप इसे c # में करना चाहते हैं तो आप मेरे ब्लॉग में देख सकते हैं: http://nicogis.blogspot.it/2012/10/ags-101-restful-administrative-api.html
रूपांतरण mxd के लिए -> msd आप c # से प्राप्त अजगर का उपयोग कर सकते हैं
आरागॉन के पास एक शानदार जवाब है, लेकिन दुर्भाग्य से यह आर्कगिस / आर्कसर 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']
इस कोड का उपयोग करने का एक सरल तरीका हो सकता है, लेकिन यह मेरे लिए काम करता है। उम्मीद है की यह मदद करेगा।