Làm cách nào để tự động xuất bản nhiều tệp MXD trong ArcGIS Server 10.1?


12

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?


Btelliot, mã của bạn cũng hoạt động 10.2! Rõ ràng cần phải xác định một số chi tiết liên quan đến dịch vụ, nhưng đây là điểm khởi đầu tuyệt vời !!! 10X

Câu trả lời:


14

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

hồ quang

Tôi hy vọng nó sẽ giúp bạn...


Nó sẽ làm việc với ags 10.1? Trong 10.1 là * .sd thay vì * .msd.
dùng7172

vâng, đây là 10 nhưng bạn có thể cập nhật Arcpy mới cho 10.1 ...
Aragon

1
Cảm ơn Aragon, điều này rất hữu ích! Chỉ cần hoàn thành tự động xuất bản hơn 130 MXD. :) Chỉ dành cho hậu thế, quy trình làm việc 10.1 là: arcpy.mapping.CreateMapSDDraft-> arcpy.StageService_server->arcpy.UploadServiceDefinition_server
Mintx


4

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.