Skip To Content

タイルの公開

このトピックの内容

ポータルで公開されホストされているタイルでは、事前に描画されたマップ イメージまたはタイルのコレクションを使用して、大規模なデータセットの高速な仮想化をサポートしています。 ホストされたタイルは、操作レイヤー用の地理コンテキストを提供します。 たとえば、近傍の道路に関するタイルを含めれば、フィーチャ レイヤー内で道路標識を視覚的に参照できるようになります。

サービス定義ファイルまたは ArcMap ドキュメントからタイルを公開して、ポータルでホストすることができます。

公開時にタイルのキャッシュを自動的に構築するか、公開後にキャッシュを手動で構築するかを選択できます。詳細については、「タイル キャッシュのベスト プラクティス」をご参照ください。

マップまたはサービス定義ファイルをホスト タイル レイヤーとして公開するには、コンテンツを作成したり、ホスト タイル レイヤーを公開する権限を持っている必要があります。

ArcMap でのマップの定義と公開

ArcMap から、ポータルでホストするタイルを公開することができます。

ArcMap を起動する前に、 がポータルと接続されていることを確認します。

  1. ArcMap を起動し、公開するマップを開きます。
  2. コンテンツの作成やホスト タイル レイヤーの公開ができる権限を持っているアカウントを使用してポータルにサイン インします。
    1. [アイテムの追加] をクリック [ファイル] > [サイン イン] の順にクリックします。.
    2. ポータルのユーザー名とパスワードを入力して、[サイン イン] をクリックします。
  3. マップを公開します。
  4. [アイテムの追加] をクリック [ファイル] > [共有] > [サービス] の順にクリックします。
  5. [サービスを公開] を選択し、[次へ] をクリックします。
    注意:

    代わりにサービスを上書きすると、既存のマップ タイル アイテムがポータルから削除され、新規のアイテムが同じ名前で作成されます。 その新しいアイテムはルート フォルダーに作成され、新規 ID が割り当てられます。 共有を再構成する必要があります。また、必要に応じて、再公開前に配置されていたフォルダーにそのアイテムを再び移動します。

  6. 接続タイプのドロップダウン リストで、[マイ ホスト サービス] を選択します。 タイルの名前を入力して、[続行] をクリックします。
  7. [サービス エディター] で必要なプロパティを設定します。 ここでは、対象タイルの使用を許可するユーザーを選択し、そのタイルをサーバーでどのように公開するかを詳細に設定できます。

    タイルを配置するための最適な構成方法については、ArcGIS for Server ヘルプの「サービスのチューニングと構成」をご参照ください。 そこで参照されているプロパティの中には、 にのみ適用され、ホスト タイル レイヤーを操作する場合には使用しないものがあります。

    ヒント:

    このセッション中に [サービス エディター] を閉じると、作業をドラフト サービスとして保存するかどうかを確認するメッセージが表示されます。 ドラフト サービスを保存しておくと、後でサービス構成作業を再開することができます。デフォルトでは、ドラフト サービスは、[マイ ホスト マップ] への接続の [ドラフト] フォルダーに保存されます。 詳細については、ArcGIS for Server ヘルプの「ドラフト サービスについて」をご参照ください。

  8. ホスト タイル レイヤー専用に設定する必要のあるプロパティもいくつかあります。これらについて、以下の手順で詳しく説明します。
  9. [サービス エディター] の左側のウィンドウで、[ケーパビリティ] をクリックし、[タイル マッピング] をオンにして、マップをタイル レイヤーとして公開します。 マップ ビューアーにレイヤーを追加したときに、レイヤーのポップアップを構成したい場合は、[フィーチャ アクセス] をオンにして、フィーチャ レイヤーをタイルとともに公開します。

    [サービス エディター] の左側のウィンドウにあるサブアイテム [タイル マッピング] をクリックすると、公開されるタイル レイヤーに対してクライアントが可能な操作について、詳細なプロパティを設定できます。

  10. [キャッシュ] アイテムをクリックして、タイル キャッシュのプロパティを設定します。 詳細については、ArcGIS for Server ヘルプの「マップ キャッシュの作成」をご参照ください。一部の高度なキャッシュ設定は、 で直接公開しているときのみ使用可能であることに注意してください。
  11. [サービス エディター] の左側のウィンドウで [アイテム説明] をクリックし、タイル レイヤーのサマリーとタグを入力します。 この情報は、公開する前に入力する必要があります。詳細については、ArcGIS for Server ヘルプの「マップ サービスのプロパティの設定」にあるアイテム説明のセクションをご参照ください。
  12. [サービス エディター] の左側のウィンドウで、[共有] をクリックして、ホスト タイル レイヤーを共有するユーザーを選択します。 デフォルトでは、ホスト タイル レイヤーは、[マイ コンテンツ] のみで共有されており、そのユーザーだけがアクセス可能になっています。 自分のタイル レイヤーは [マイ コンテンツ] からいつでも表示できますが、すべてのユーザーや組織のメンバー、または特定のグループのメンバーと共有することもできます。
  13. [サービス エディター] で、[分析]統計情報の更新 をクリックします。

    マップを公開できるかどうかが検証されます。公開するには、[準備] ウィンドウで [エラー]エラーを修正する必要があります。 さらに必要であれば、警告メッセージと情報メッセージに従って問題を修正し、公開されるタイルのパフォーマンスと外観を改善します。これらの問題の解決の詳細については、ArcGIS for Server ヘルプの「GIS リソースの分析」をご参照ください。

  14. 必要に応じて、[サービス エディター][プレビュー]プレビューをクリックします。 Web 上でタイル レイヤーがどのように表示されるかを確認することができます。
  15. エラーを修正し、必要に応じて警告とメッセージを修正したら、[公開]公開をクリックします。
    注意:

    データがこの時点でサーバーにコピーされます。 公開に要する時間は、データのサイズ、ネットワークの接続速度と帯域幅の影響を受けます。 また、タイルを生成する時間も確保しておく必要があります。

タイルをポータルで公開したら、[カタログ] ウィンドウの [マイ ホスト サービス] ノードを展開すると、そのタイルが表示されます。

ホスト タイル レイヤーは、ポータル Web サイトの [マイ コンテンツ] ページに、[タイル] と [サービス定義] という 2 つの個別のアイテムとして一覧表示されます。 サービス定義は、マップ、マップのデータ、およびタイルの公開方法に関する詳細が含まれる圧縮ファイルです。サービス定義は、ArcGIS for Server を実行しているコンピューターに転送して公開することができます。

ArcGIS Pro でのマップの定義と公開

ArcGIS Pro のマップから、ポータルでホストするタイルを公開することができます。

先に進む前に、ポータルへの接続を必ずアクティブにしておいてください。

マップ作成時に使用されていた複雑なカートグラフィック シンボルの中には、Web ブラウザーで表示できないものがあることにも注意してください。 ほとんどのシンボル タイプは利用できますが、公開時にシンボルがダウングレードされる場合があります。サポートされるシンボルの種類の詳細については、ArcGIS for Server ヘルプの「フィーチャ サービスの作成」を参照し、必要に応じて公開前にマップ シンボルに変更を加えます。

  1. を起動し、公開するマップを含むプロジェクトを開きます。
  2. コンテンツの作成やホスト タイル レイヤーの公開ができる権限を持っているアカウントを使用して、ArcGIS Pro から組織サイトにサイン インします。
  3. [共有] タブの [共有] グループで、[Web レイヤー] をクリックします。
  4. フィーチャ レイヤーの名前を入力します。 レイヤーは、デフォルトでは [マイ コンテンツ] に保存されます。 [マイ コンテンツ] 内のフォルダーに保存するには、フォルダー名を入力するか、既存のフォルダーに移動します。
  5. [レイヤー タイプ] には [タイル] を選択します。
  6. タイル レイヤーのサマリーとタグを入力します。
  7. タイル レイヤーの共有方法を指定します。 公開するすべてのレイヤーが、組織のパーソナル ワークスペース ([マイ コンテンツ]) に自動的に共有されます。 次のいずれかに共有するまで、他のユーザーはコンテンツにアクセスできません。
    • [組織] - このオプションを選択すると、レイヤーを組織内のすべての認証済みユーザーと共有できます。
    • すべてのユーザーこのオプションを選択すると、ポータルにアクセスできるすべてのユーザーがレイヤーを使用できるようになります。
    • [グループ] - 所属するグループのメンバーとレイヤーを共有できます。
  8. [構成] タブをクリックし、キャッシュ設定を指定します。
    1. [詳細レベル] バーをリサイズおよびドラッグして、タイル レイヤーの最小および最大縮尺を示します。

      最小および最大縮尺を変更すると、生成されるキャッシュの推定サイズが変わります。

    2. レイヤーの公開時に [キャッシュの構築]、もしくは、レイヤーの公開後に [キャッシュを手動で構築] を選択します。

      レイヤーを公開した後、ポータルの Web サイトでタイル レイヤーを開いて、手動でキャッシュを構築します。

  9. [コンテンツ] タブをクリックして、タイル レイヤーに対象のデータ レイヤーが含まれていることを確認します。
  10. [分析] 統計情報の更新をクリックして、エラーや問題がないかを確認します。

    問題が見つかると、[メッセージ] タブに表示されます。 各メッセージを右クリックすると、詳細情報を表示したり、エラーや警告に関するヘルプを確認したり、推奨される解決策を入手したりできます。公開する前に、エラーを修正する必要があります。さらに必要であれば、警告に従って問題を修正し、ホスト タイル レイヤーのパフォーマンスと外観を改善します。

  11. エラーを修正し、必要に応じて警告を修正したら、[公開]公開をクリックします。
    注意:

    データがこの時点でサーバーにコピーされます。 公開に要する時間は、データのサイズ、ネットワークの速度と帯域幅によって変わります。

公開が完了すると、[Web レイヤーの管理] をクリックしてポータルの Web サイトを開くことができます。

ホスト フィーチャ レイヤーの公開

既存のホスト フィーチャ レイヤーを使用して、ホスト タイル レイヤーをポータルで公開できます。 これは、ArcGIS 製品をローカルにインストールしていない場合に便利なワークフローです。たとえば、シェープファイルをホスト フィーチャ レイヤーとして公開し、そのホスト フィーチャ レイヤーをホスト タイル レイヤーとして公開できます。

注意:

ホスト フィーチャ レイヤーの変更内容は自動的にはホスト タイル レイヤーに反映されません。 更新されたホスト フィーチャ レイヤーからホスト タイル レイヤーを再公開する必要があります。

ホスト フィーチャ レイヤーからホスト タイル レイヤーを公開する場合、一部のスタイル設定の制限が適用されますので注意してください。

ホスト フィーチャ レイヤーからホスト タイル レイヤーを公開するには、次の手順に従います。

  1. ホスト タイル レイヤーを公開する権限を持つアカウントでサイン インして、[マイ コンテンツ] をクリックします。
  2. 公開するには、次のどちらかを実行します。
    • 公開するホスト フィーチャ レイヤーをクリックし、[公開] をクリックします。
    • [アイテムの追加] をクリック [作成] > [タイル レイヤー] の順にクリックし の順にクリックし、[フィーチャ レイヤー] を選択してタイルとして公開します。
  3. ホスト タイル レイヤーのタイトル、タグ、サマリーを入力し、フォルダーを選択します。
  4. 必要に応じて、[表示範囲] ドロップダウン リストで縮尺を選択し、レイヤーを表示する範囲を変更します。
  5. [OK] をクリックします。
  6. タイルを生成する縮尺の横にあるチェックボックスをオンにします。次に、[タイルの作成] をクリックします。
    注意:

    縮尺範囲に大きな縮尺を含めると、タイルの生成と保存に消費されるクレジットの数が大幅に増える可能性があります。データの精度を超えるタイルを作成しないでください。

  7. 作成されるタイルの数についてのメッセージを確認します。処理を続行する場合は、[はい、タイルを作成します。] をクリックします。

サービス定義ファイルの公開

タイルの公開およびキャッシュの作成では、多くのサーバー リソースが使用されます。 多数のタイル レイヤーを公開する必要がある場合、マップの作成者は、タイル レイヤーをポータルに公開するために必要なすべての情報を含むサービス定義 (*.sd) ファイルを ArcMap で作成することをお勧めします。 次に、スクリプトを使用して、サービス定義ファイルをアップロードし、それを営業時間の後にポータルに公開します。結果のタイル レイヤーは、ポータルのホスティング サーバーでホストされます。

サービス定義ファイルの作成

ポータルでホストされるタイル レイヤーに必要なデータとシンボルを含むサービス定義ファイルを作成するには、マップ作成者は次の手順に従う必要があります。

  1. ArcMap を起動し、ポータルにサイン インします。
  2. マップを作成して保存します。

    マップの作成と公開の詳細については、ArcGIS ヘルプの「マップ サービス」をご参照ください。

  3. サービス定義ファイルを作成します。
  4. [アイテムの追加] をクリック [ファイル] > [共有] > [サービス] の順にクリックします。.
  5. [サービス定義ファイルを保存] を選択し、[次へ] をクリックします。
  6. [接続の選択] をクリックして、ドロップダウン リストから [マイ ホスト サービス] を選択します。
  7. ファイルの名前を入力し、[次へ] をクリックします。
  8. サービス定義ファイルを作成するクライアント コンピューター上のディレクトリを指定して、[続行] をクリックします。

    [サービス エディター] が開きます。

  9. [サービス エディター] の左側のウィンドウで、[キャッシュ] をクリックします。
  10. [タイル スキーマ] を選択します。
  11. タイルおよび [キャッシュ サイズの計算] に最小縮尺と最大縮尺を選択します。
  12. [サービスの公開後にキャッシュを手動で構築します] をクリックします。
  13. また、[高度な設定] をクリックし、タイル キャッシュの詳細なキャッシュ設定を設定することもできます。
  14. [サービス エディター] の左側のウィンドウで [アイテム説明] をクリックし、タイル レイヤーの情報を入力します。

    サービス定義ファイルを作成する前に、少なくともサマリーとタグを入力する必要があります。

  15. [分析] 統計情報の更新をクリックして、エラーがないことを確認します。

    エラーがあれば、サービス定義ファイルをステージングする前に、修正する必要があります。必要に応じて、返された警告およびメッセージに対して修正を加えることができます。

  16. エラーを修正し、必要に応じて警告とメッセージを修正したら、[ステージ]ステージをクリックします。

サービス定義ファイルが指定した場所に保存されます。

サービス定義の読み込みと公開

作成者からサービス定義ファイルを取得したら、それをポータルの [マイ コンテンツ] に手動でアップロードしてタイル レイヤーを公開するか、スクリプトをスケジュールして、ファイルをアップロードし、公開します。

手動によるアップロードと公開

ポータル Web サイトにサイン インし、サービス定義ファイルをポータルに追加して公開します。

  1. コンテンツの作成やホスト タイル レイヤーの公開ができる権限を持つメンバーとしてポータルにサイン インして、[マイ コンテンツ] を開きます。
  2. [アイテムの追加] をクリックします。
  3. コンピューターから読み込むファイルを選択します。
  4. 参照ボタンをクリックして、サービス定義ファイルを選択します。
  5. [このファイルをサービスとして公開します] をオンにします。
  6. タグの項目をカンマで区切って入力します。

    タグは、アイテムを説明し、アイテムの検索を容易にする単語または短いフレーズです。「Federal land」は 1 つのタグと見なされますが、「Federal, land」は 2 つのタグと見なされます。

  7. [アイテムの追加] をクリックして、サービス定義ファイルを追加し、タイル レイヤーを公開します。

    タイル レイヤーがポータルのホスティング サーバーで公開され、サービス定義とタイルが [マイ コンテンツ] に追加されます。

  8. タイル レイヤーを公開したら、[タイルの構築開始] オプションを選択できます。 そのリンクをクリックして、タイルを作成します。

デフォルトでは、サービス定義ファイルとホスト タイル レイヤーにアクセスできるのは公開したユーザーだけです。ファイルとタイルは、組織内の他のユーザーや特定のグループと共有できます。

アップロードおよび公開するためのスクリプトの実行

サービス定義ファイルを営業時間の後にアップロードして公開するには、ArcGIS Server コンピューターで次のスクリプトを自動実行します。

  1. 次のスクリプトをテキスト ファイルにコピーし、拡張子 *.pyを付けてファイルを保存します。

    import os, sys, json, urllib, urllib2, httplib, urlparse, mimetools, mimetypes
    from cStringIO import StringIO
    
    # generates a new token from Portal
    def generate_token(baseurl, username, password):
        tokenUrl = urlparse.urljoin(baseurl, 'sharing/generateToken')
        postdata = { 'username': username, 'password': password,
                   'client': 'requestip', 'expiration': 60, 'f': 'json' }
        encoded_postdata = urllib.urlencode(postdata)
        opener = urllib2.build_opener()
        try: resp = opener.open(tokenUrl, data=encoded_postdata)
        except urllib2.HTTPError as e: raise Exception('Unable to connect to Portal, please check the url: {} {}'.format(e.code, e.reason))
        resp_json = json.loads(resp.read())
        if 'error' in resp_json: raise Exception('\n'.join(resp_json['error']['details']))
        return resp_json['token']
        sys.exit(1)
    
    # create proper multi-part POST request data
    def _encode_multipart_formdata(fields, files):
        boundary = mimetools.choose_boundary()
        buf = StringIO()
        for (key, value) in fields.iteritems():
            buf.write('--%s\r\n' % boundary)
            buf.write('Content-Disposition: form-data; name="%s"' % key)
            buf.write('\r\n\r\n%s\r\n' % str(value))
        for (key, filepath, filename) in files:
            buf.write('--%s\r\n' % boundary)
            buf.write('Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename))
            buf.write('Content-Type: %s\r\n' % (mimetypes.guess_type(filename)[0] or 'application/octet-stream'))
            f = open(filepath, "rb")
            try:
                buf.write('\r\n' + f.read() + '\r\n')
            finally:
                f.close()
        buf.write('--' + boundary + '--\r\n\r\n')
        buf = buf.getvalue()
        return boundary, buf
    
    # send multi-part POST request
    def _postmultipart(host, selector, fields, files, ssl):
        boundary, body = _encode_multipart_formdata(fields, files)
        headers = { 'Content-Type': 'multipart/form-data; boundary={0}'.format(boundary) }
        if ssl: h = httplib.HTTPSConnection(host)
        else: h = httplib.HTTPConnection(host)
        
        h.request('POST', selector, body, headers)
        resp = h.getresponse()
    
        return resp.read()
    
    # first upload the SD file and create an item in Portal
    def addSDItem(baseurl, user, token, title, file, folder = ''):
        addUrl = 'sharing/rest/content/users/{}/{}addItem'
        if folder != '': addUrl = addUrl.format(user, folder + '/')
        else: addUrl = addUrl.format(user, '')
        
        url = urlparse.urljoin(baseurl, addUrl)
    
        files = [('file', file, os.path.split(file)[1])]
        fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 
                   'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' }
    
        ssl = url.startswith('https://')
        
        parsed_url = urlparse.urlparse(url)
        
        print('Uploading {} to {}..'.format(file, baseurl))
        resp = _postmultipart(parsed_url.netloc, str(parsed_url.path), fields, files, ssl)
        resp_json = json.loads(resp)
    
        if 'error' in resp_json:
          raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message']))
        
        return resp_json['id']
        
    # second publish the uploaded SD item as a new tiled service
    def publishTiles(baseurl, user, token, itemid):
        publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user))
        query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True,
                      'publishParameters' : { 'name' : 'cities' }, 'fileType': 'serviceDefinition' }
                      
        query_string = urllib.urlencode(query_dict)
        print('Publishing tile service from item..')
        response = urllib.urlopen(publishUrl, query_string)
            
        resp_json = json.loads(response.read())
        
        if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message']))
    
    # read input from command line when run as a standalone script
    if __name__ == '__main__':
        try: 
          url = sys.argv[1]
          user = sys.argv[2]
          password = sys.argv[3]
          f = sys.argv[4]
          title = sys.argv[5]
          if not url.endswith('/'): url += '/' # make sure the url ends with /
        except: # if too few parameters are passed on command line, show usage help
          print('Usage: ')
          print('       publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]')
          print('')
          print('portalUrl           The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/')
          print('userName            The username of a user to publish the service.')
          print('                    This user must have the required publishing privileges.')
          print('password            The password of the user')
          print('sdFilePath          Path to the .sd file containing the service definition')
          print('                    E.g. c:\\temp\cachedService.sd')
          print('titleOfServiceItem  The title to assign to the published item in the portal.')
          sys.exit(1)  
    
        token = generate_token(url, user, password)
    
        id = addSDItem(url, user, token, title, f)
        publishTiles(url, user, token, id)
        print('Publishing complete. Tile generation has been started and may take a while to finish.')

  2. バッチ ファイルまたはシェル スクリプトを作成し、Python スクリプトを実行するようスケジュール設定します。
  3. ファイルで、Python スクリプトを呼び出し、サイトに固有のオプションを指定します。

    たとえば、スクリプト「publishServiceItem.py」を実行するには、ポータルの URL、接続の際に使用するユーザー名、ユーザーのパスワード、サービス定義ファイルのパス、作成するサービスのタイトルを入力します。 この例では、ポータルの URL は https://portal.domain.com/arcgis/、ユーザー名とパスワードは pub1 と pub.1、サービス定義ファイルのパスは C:\maps\SDs\mymap.sd、サービス名は studytiles です。

    publishServiceItem.py https://portal.domain.com/arcgis/ pub1 pub.1 C:\maps\SDs\mymap.sd studytiles

    ヒント:

    また、次の単純化されたスクリプトを使用して、ポータルにサービス定義ファイルをアップロードし、タイル レイヤーを公開し、キャッシュを構築することもできます。 ただし、このスクリプトを実行するには、別の Python パッケージ (PortalPy および Python RequestsstrLine を追加インストールする必要があります。 PortalPy は と一緒にインストールされます。 このモジュールのインストールと使用の詳細については、 のヘルプの「PortalPy を使用した管理タスクのスクリプト化」をご参照ください。

    import portalpy, requests, urlparse, sys, os
    
    # first upload the SD file and create an item in Portal
    def addSDItem(baseurl, user, token, title, file, folder = ''):
        addUrl = 'sharing/rest/content/users/{}/{}addItem'
        if folder != '': addUrl = addUrl.format(user, folder + '/')
        else: addUrl = addUrl.format(user, '')
        
        url = urlparse.urljoin(baseurl, addUrl)
    
        files = { 'file' : (os.path.split(file)[1], open(file, 'rb')) }
        fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 
                   'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' }
    
        print('Uploading {} to {}..'.format(file, baseurl))
        
        # send POST with upload request
        # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs
        resp = requests.post(url, data=fields, files=files, verify=False)
        resp_json = resp.json()
    
        if 'error' in resp_json:
          raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message']))
        
        return resp_json['id']
    
    # second publish the uploaded SD item as a new tiled service
    def publishTiles(baseurl, user, token, itemid):
        publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user))
        query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True,
                      'publishParameters' : "{ 'name' : 'cities' }", 'fileType': 'serviceDefinition' }
        
        print('Publishing tile service from item..')
        
        # send POST with publish request
        # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs
        response = requests.post(publishUrl, data=query_dict, verify=False) 
            
        resp_json = response.json()
        
        if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message']))
    
    # read input from command line when run as a standalone script
    if __name__ == '__main__':
        try: 
          url = sys.argv[1]
          user = sys.argv[2]
          password = sys.argv[3]
          f = sys.argv[4]
          title = sys.argv[5]
          if not url.endswith('/'): url += '/' # make sure the url ends with /
        except: # if too few parameters are passed on command line, show usage help
          print('Usage: ')
          print('       publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]')
          print('')
          print('portalUrl           The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/')
          print('userName            The username of a user to publish the service.')
          print('                    This user must have the required publishing privileges.')
          print('password            The password of the user')
          print('sdFilePath          Path to the .sd file containing the service definition')
          print('                    E.g. c:\\temp\cachedService.sd')
          print('titleOfServiceItem  The title to assign to the published item in the portal.')
          sys.exit(1) 
    
        portal = portalpy.Portal(url, user, password)
        token = portal.generate_token(user, password)
    
        id = addSDItem(url, user, token, title, f)
        publishTiles(url, user, token, id)
        print('Publishing complete. Tile generation has been started and may take a while to finish.')

  4. ポータルの使用状況が最低になったときにスクリプトが実行されるようスケジュール設定します。

    スクリプトのスケジュール設定の詳細については、ArcGIS ジオプロセシングのヘルプの「Python スクリプトを指定の時間に実行するようスケジュールを設定する」をご参照ください。