Làm cách nào để tự động xuất bản nhiều tệp mxd trong ArcGIS Server 10.1?
Tôi có khoảng 60 mxd tệp và tôi muốn xuất bản chúng tự động. Có cách nào để làm điều này?
Làm cách nào để tự động xuất bản nhiều tệp mxd trong ArcGIS Server 10.1?
Tôi có khoảng 60 mxd tệp và tôi muốn xuất bản chúng tự động. Có cách nào để làm điều này?
Câu trả lời:
bạn có thể sử dụng arcpy để xuất bản các tệp mxd của mình.
để liệt kê các tệp mxd của bạn, hãy sử dụng 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
và sau đó đi theo con đường này:
1. Hàm phân tíchForMSD () ( thông tin ): Phân tích tài liệu bản đồ (.mxd) để xác định nguồn cho các vấn đề về tính phù hợp và hiệu suất tiềm năng khi chuyển đổi bản đồ sang tệp định nghĩa dịch vụ bản đồ (MSD).
Thí dụ:
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\ReadyForMSD.mxd")
analysis = arcpy.mapping.AnalyzeForMSD(mxd)
2. Hàm ConvertToMSD () ( thông tin ): Chuyển đổi bản đồ thành tệp định nghĩa dịch vụ bản đồ (MSD).
Thí dụ:
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. Hàm PublishMSDToServer () ( thông tin ): Xuất bản tệp định nghĩa dịch vụ bản đồ (MSD) hiện có lên Máy chủ ArcGIS được chỉ định.
Thí dụ:
import arcpy
msd = r"C:\Project\Project.msd"
arcpy.mapping.PublishMSDToServer (msd, "http://<MyServer>/arcgis/services",
"<MyServer>", "MyMapService", "MyMapServiceFolder", ["WMS", "KML"])
điều cuối cùng là bạn nên làm điều đó hợp nhất tất cả các funcitons cho nhu cầu của bạn. thực sự có một hướng dẫn có thể giúp bạn ở đây về Sử dụng Ánh xạ ArcPy để Xuất bản Tài liệu Bản đồ lên Máy chủ ArcGIS . nó tương tự như tài liệu của tôi ...
Để tóm tắt (hình ảnh là từ liên kết mà tôi đưa ra ở trên):
Tôi hy vọng nó sẽ giúp bạn...
arcpy.mapping.CreateMapSDDraft
-> arcpy.StageService_server
->arcpy.UploadServiceDefinition_server
nếu bạn muốn làm điều đó trong c # bạn có thể thấy trong blog của tôi: http://nicogis.blogspot.it/2012/10/ags-101-restful-admaster-api.html
để chuyển đổi mxd -> msd, bạn có thể sử dụng python được gọi từ c #
Aragon có một câu trả lời tuyệt vời, nhưng thật không may, nó không hoạt động cho ArcGIS / ArcServer 10.1.
Phương pháp mới tôi vừa thử dựa trên trợ giúp ArcGIS 10.1. Bạn có thể tìm thấy liên kết đến tệp trợ giúp tại đây: http://resource.arcgis.com/en/help/main/10.1/index.html#//00s30000006q000000
Đây là cách tôi sử dụng mã để xuất bản MXD dựa trên một thư mục được chỉ định:
#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']
Có thể có một cách đơn giản hơn để sử dụng mã này, nhưng nó hoạt động với tôi. Hi vọng điêu nay co ich.