ArcGIS Server 10.1で多くのMXDファイルを自動的に公開する方法は?


12

ArcGIS Server 10.1で多くのmxdファイルを自動的に公開する方法は?

約60個のmxdファイルがあり、それらを自動的に公開したい。これを行う方法はありますか?


Btelliot、あなたのコードも10.2で動作します!明らかに、サービスに関する詳細を定義する必要がありますが、これは驚くべき出発点です!!! 10X

回答:


14

arcpyを使用して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()関数(info):マップドキュメント(.mxd)を分析して、マップをマップサービス定義(MSD)ファイルに変換する際の潜在的な適合性とパフォーマンスの問題の原因を特定します。

例:

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

2. ConvertToMSD()関数(info):マップをマップサービス定義(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()関数(info):既存のマップサービス定義(MSD)ファイルを指定されたArcGIS Serverに公開します。

例:

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

最後に、必要に応じてすべての機能をマージする必要があります。実際のuを助けることができるチュートリアルがあり、ここ程度のArcGIS Serverへのマップドキュメントを公開するために使用ArcPyマッピング。それは私のドキュメントに似ています...

要約するには(画像は上記のリンクからです):

アークギス

私はそれがあなたを助けることを願っています...


AGS 10.1で動作するようになりますか?10.1では、*。msdではなく* .sdです。
user7172

はい、これは10用ですが、10.1用の新しいarcpyを更新できます...-
アラゴン

1
アラゴンに感謝します。これはとても役に立ちました!130を超えるMXDの自動公開が終了しました。:)後世のために、10.1ワークフローは次のarcpy.mapping.CreateMapSDDraftarcpy.StageService_serverarcpy.UploadServiceDefinition_server
とおりです。-


4

Aragonにはすばらしい答えがありますが、残念ながらArcGIS / ArcServer 10.1では機能しません。

試したばかりの新しい方法は、ArcGIS 10.1ヘルプに基づいています。ヘルプファイルへのリンクは、http//resources.arcgis.com/en/help/main/10.1/index.html#//00s30000006q000000にあります。

コードを使用して、指定したフォルダーに基づいてMXDを公開する方法を次に示します。

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

このコードを使用するより簡単な方法があるかもしれませんが、それは私のために動作します。お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.