Skip To Content

ホスト タイル レイヤーの公開

ポータルに公開され、そこでホストされているタイル レイヤーは、描画済みのマップ画像、つまりタイルのコレクションを使用した大規模データセットの高速表示をサポートします。 ホストされたタイルは、操作レイヤー用の地理情報を提供します。たとえば、ある地域の道路をタイルにすると、道路標識のフィーチャ レイヤーの参照情報になります。

ポータルでホストするタイル レイヤーは、次のいずれかの方法で公開できます。

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

ホスト タイル レイヤーを公開するには、ポータル内の次のいずれかのメンバーである必要があります。

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

所有する既存のホスト フィーチャ レイヤーを使用して、ホスト タイル レイヤーをポータルで公開できます。キャッシュされたタイルは、動的にレンダリングされたフィーチャと比べてより高速に描画されるため、これは、大規模データセットを視覚化するのに役立つワークフローです。

メモ:

  • ホスト フィーチャ レイヤーの空間属性に加えた編集内容は自動的にはホスト タイル レイヤーに反映されません。更新されたホスト フィーチャ レイヤーからホスト タイル レイヤーを再公開する必要があります。
  • ホスト フィーチャ レイヤーには、ホスト タイル レイヤーの公開を抑止するスタイル設定の制限があります。
  • マルチパッチまたはポイント クラウドのホスト フィーチャ レイヤーからは、ホスト タイル レイヤーを公開できません。

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

  1. ポータルにサイン インして、[コンテンツ] > [マイ コンテンツ] の順にクリックします。
  2. 公開するには、次のどちらかを実行します。
    • 公開するホスト フィーチャ レイヤーをクリックし、[公開] をクリックします。
    • [作成] > [タイル レイヤー] の順にクリックし、[フィーチャ レイヤー] を選択してタイルとして公開します。
  3. ホスト タイル レイヤーのタイトル、タグ、サマリーを入力します。
  4. ポータル管理者がコンテンツのカテゴリを構成している場合、[カテゴリの割り当て] をクリックして、最大 20 のカテゴリを選択して、アイテムの検索に役立てることができます。また、[カテゴリのフィルター処理] ボックスを使用して、カテゴリのリストを絞り込むこともできます。
  5. ホスト タイル レイヤーを保存するフォルダーを選択します。
  6. 必要に応じて、[表示範囲] の終点をドラッグして、レイヤーを表示する範囲を変更します。
    注意:

    ポータル Web サイトでは推奨の縮尺範囲を表示しますが、変更することもできます。ただし、縮尺範囲に大きな縮尺を含めると、ポータルのホスティング サーバーで消費されるリソースが大幅に増える可能性があることに注意してください。データの精度を超えるタイルを作成しないでください。

  7. [OK] をクリックします。

    ホスト タイル レイヤーが作成され、アイテム ページが表示されます。

ArcGIS Pro におけるマップの定義と公開

ArcGIS Pro のマップからタイル レイヤーを公開して、ポータル上でホストできます。

メモ:

ArcGIS Pro 内のレイヤーにフィルター設定が適用されている場合、ArcGIS は公開されたホスト タイル レイヤーにフィルター設定を適用します。ただし、すべてのデータが ArcGIS Enterprise ポータルにコピーされます。データのサブセットを公開したい場合、そのサブセットを他のフィーチャクラスにエクスポートして公開する必要があります。

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

  1. ArcGIS Pro を起動し、公開するマップを含むプロジェクトを開きます。
  2. ポータルへの接続がアクティブであり、コンテンツの作成とホスト タイル レイヤーの公開を行う権限を持っているアカウントを使用して組織サイトにサイン インしていることを確認します。
  3. タイル レイヤーを公開するには、次のいずれかを実行します。
    • [コンテンツ] ウィンドウでレイヤーを選択します。選択したレイヤーを右クリックして、[Web レイヤーとして共有] をクリックします。
    • マップ内のすべてのレイヤーを公開するには、[共有] タブの [共有] グループで [Web レイヤー] をクリックし、[Web レイヤーの公開] をクリックします。

    ヒント:

    [Web レイヤーとして共有] メニュー オプションがアクティブでない場合、次のいずれかの原因が考えられます。

    • サイン インに使用したアカウントに、ホスト レイヤーを公開する権限がない。
    • Web レイヤーをホストするために必要なホスティング サーバーでポータルが構成されていない。
    • サポートされていないマルチパッチ レイヤーを公開しようとしている。

  4. タイル レイヤーの名前を入力します。レイヤーは、デフォルトでは [マイ コンテンツ] に保存されます。[マイ コンテンツ] 内のサブフォルダーに保存するには、フォルダー名を入力するか、既存のフォルダーに移動します。
  5. [すべてのデータをコピー] を選択します。
  6. [レイヤー タイプ] には [タイル] を選択します。

    これにより、自動的に他の [レイヤー タイプ] オプションがオフに設定されます。データをコピーするときは一度に 1 つのレイヤー タイプしかオンにすることはできません。

  7. タイル レイヤーのサマリーとタグを入力します。
  8. ホスト タイル レイヤーにアクセスできるユーザーを指定します。公開するすべてのレイヤーが、組織のパーソナル ワークスペース ([マイ コンテンツ]) で自動的に共有されます。次のいずれかに共有するまで、他のユーザーはコンテンツにアクセスできません。
    • ポータルの名前 - このオプションを選択すると、レイヤーをポータルのすべての認証済みユーザーと共有できます。
    • すべてのユーザー - このオプションを選択すると、ポータルにアクセスできるすべてのユーザーがレイヤーを使用できるようになります。
    • グループ - 所属するグループのメンバーとレイヤーを共有できます。
  9. [構成] をクリックし、[Web レイヤー プロパティの構成] ボタンをクリックしてキャッシュ設定を指定します。
  10. [タイル スキーマ] を選択します。
  11. [詳細レベル] バーをリサイズおよびドラッグして、タイル レイヤーの最小および最大縮尺を指定します。

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

  12. タイル キャッシュを構築する時と場所を選択します。
    • レイヤーを公開するときにポータルのホスティング サーバーでタイルを構築する場合は、[サーバー上に自動的にキャッシュ] を選択します。
    • ポータルのホスティング サーバー上にキャッシュが構築および格納されている必要があるが、公開後にそれらのキャッシュを自分で構築したい場合は、[サーバー上に手動でキャッシュ] を選択し、タイル レイヤーの公開後にポータルの Web サイトでそのレイヤーを開き、手動でキャッシュを作成します。
    • ArcGIS Pro コンピューター上にキャッシュを構築してパッケージ化する場合は、[ローカルにキャッシュ] を選択し、一時タイル パッケージを保存する ArcGIS Pro コンピューター上の場所を指定します。このタイル パッケージはポータルのホスティング サーバーに自動的にアップロードされて解凍された後、キャッシュがその場所に格納されます。
  13. 一般ユーザーがマップ タイルをダウンロードしてオフラインで使用することを許可するには、[クライアントがキャッシュ タイルをエクスポートすることを許可] をオンにします。
  14. [クライアントがキャッシュ タイルをエクスポートすることを許可] をオンにした場合は、[エクスポートの制限] フィールドを使用して、クライアントがオフラインで一度に利用できるタイルの最大数を指定します。
  15. [コンテンツ] タブをクリックして、タイル レイヤーに対象のデータ レイヤーが含まれていることを確認します。
  16. [分析] をクリックして、エラーや問題がないか確認します。

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

  17. エラーを修正し、必要に応じて警告を修正したら、[公開] をクリックします。
    メモ:
    データがこの時点でサーバーにコピーされます。公開に要する時間は、データのサイズ、ネットワークの速度と帯域幅によって変わります。

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

ArcGIS Pro でタイル パッケージを構築し、組織サイトにアップロードします。

[マップ タイル パッケージの作成 (Create Map Tile Package)] ジオプロセシング ツールを使用してタイル パッケージを作成し、パッケージを組織サイトに追加してから、タイル レイヤーを公開します。

ArcGIS Pro 2.3 以降、このジオプロセシング ツールの出力が .tpk ファイルまたは .tpkx ファイルになるように指定できます。新しい .tpkx 形式は、クラウドおよび共有ネットワーク ロケーションで実行するときのパフォーマンスを改善する簡略化されたファイル構造を使用しており、仕様が公開されている形式です。このワークフローでは、どちらかの形式を使用できます。

  1. パッケージ化するデータを含むプロジェクトを開きます。
  2. [マップ タイル パッケージの作成 (Create Map Tile Package)] ジオプロセシング ツールを開いて実行します。
  3. タイル パッケージの生成が終わったら、コンテンツの作成やホスト タイル レイヤーの公開ができるアカウントの権限を使用してポータルにサイン インし、[コンテンツ] > [マイ コンテンツ] の順にクリックします。
  4. [コンピューター上]タイル パッケージを追加します
  5. [このファイルをホスト レイヤーとして公開します] のチェックボックスをオンにします。
  6. タイトルを入力します。
  7. ポータル管理者がコンテンツのカテゴリを構成している場合、[カテゴリの割り当て] をクリックして、最大 20 のカテゴリを選択して、アイテムの検索に役立てることができます。また、[カテゴリのフィルター処理] ボックスを使用して、カテゴリのリストを絞り込むこともできます。
  8. タグの項目をカンマで区切って入力します。

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

  9. [アイテムの追加] をクリックします。

タイルが展開され、ホスト タイル レイヤーがポータル上に作成されます。これで、[マイ コンテンツ] でマップ タイルおよびタイル パッケージを表示できるようになりました。

大きなタイル パッケージの公開

大量のデータを作成および共有する場合、Esri では、前のワークフローを使用せず、[タイル キャッシュ] ツールセットを使用することをお勧めします。これらのツールは、複数のプロセシング コアを利用して、タイルの生成と公開時のパフォーマンスを向上させることができます。

ArcGIS Pro で、ジオプロセシング ツールを実行します。

  1. [マップ タイル パッケージの作成] ジオプロセシング ツールを実行してタイル パッケージを 1 つのステップで作成するか、次のジオプロセシング ツールを以下の順序で実行します。
    1. [タイル キャッシュのタイル スキーマの生成] ツールを実行して、タイル グリッドと画像形式を定義します。
    2. [タイル キャッシュの管理] ツールを実行して、タイルを作成します。
    3. [タイル キャッシュのエクスポート] ツールを実行して、タイル パッケージを作成します。

    特定の範囲または詳細レベルでキャッシュを生成するには、上記の 3 つのツールを使用します。

  2. [パッケージの共有] ツール ([パッケージ] ツールセット内) を実行して、タイルをポータルにアップロードします。
  3. タイル パッケージの生成が終わったら、ArcGIS Pro でタイル パッケージを作成したときに使用した同じアカウントを使用してポータルにサイン インし、[コンテンツ] > [マイ コンテンツ] の順にクリックします。
  4. タイル パッケージをクリックし、アイテムの詳細ページを表示します。
  5. [Publish] をクリックします。
  6. タイトルおよびタグを入力します。
  7. ポータル管理者がコンテンツのカテゴリを構成している場合、[カテゴリの割り当て] をクリックして、最大 20 のカテゴリを選択して、アイテムの検索に役立てることができます。また、[カテゴリのフィルター処理] ボックスを使用して、カテゴリのリストを絞り込むこともできます。
  8. [Publish] をクリックします。

タイルが展開され、ホスト タイル レイヤーがポータルに作成されます。[マイ コンテンツ] にレイヤーが表示されます。

ArcMap におけるマップの定義と公開

ArcMap からタイル レイヤーを公開して、ポータル上でホストできます。

メモ:

ArcMap 内のレイヤーにフィルター設定が適用されている場合、ArcGIS は公開されたホスト タイル レイヤーにフィルター設定を適用します。ただし、すべてのデータが ArcGIS Enterprise ポータルにコピーされます。データのサブセットを公開したい場合、そのサブセットを他のフィーチャクラスにエクスポートして公開する必要があります。

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

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

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

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

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

    ヒント:

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

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

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

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

    マップを公開できるかどうかが検証されます。公開するには、[準備] ウィンドウで [エラー] エラーを修正する必要があります。さらに必要であれば、警告メッセージと情報メッセージに従って問題を修正し、公開されるタイルのパフォーマンスと外観を改善します。

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

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

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

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

ArcMap でタイル パッケージを構築および共有してから公開

ArcMap では、マップ ドキュメントのタイルを作成し、それを簡単に転送できるタイル パッケージ ファイルで保存できます。ArcMap でタイル パッケージを作成し、ポータルで共有してから、そのタイル パッケージをホスト タイル レイヤーとして公開できます。

ヒント:

ポップアップを構成する場合、ホスト タイル レイヤーとともにフィーチャ レイヤーを公開する必要があります。

ArcMap でタイル パッケージを作成して共有するには、2 つの方法があります。

  • 少量のデータ (1 GB 未満) をパッケージ化して共有する場合は、マップから直接、タイル パッケージを作成して共有します。ポータル Web サイトでパッケージを公開するときは、凡例やテキスト エレメントなどのマップ ドキュメントのエレメントが維持されます。
  • データが 1 GB を超える場合は、ジオプロセシング ツールを使用して、タイルをパッケージ化して共有します。この方法では、タイルがタイル パッケージから公開されるときにデータのみが維持されるため、タイル作成時のパフォーマンスが向上します。

ArcMap 10.7 では、ワークフローの結果が .tpk ファイルまたは .tpkx ファイルになるように指定できます。新しい .tpkx 形式は、クラウドおよび共有ネットワーク ロケーションで実行するときのパフォーマンスを改善する簡略化されたファイル構造を使用しており、仕様が公開されている形式です。次の両方のワークフローでは、どちらかの形式を使用できます。

小さなタイル パッケージの公開

ArcMap で作成するタイル パッケージが 1 GB 未満の場合は、次のワークフローを使用して公開します。

  1. ArcMap でマップを開きます。
  2. コンテンツの作成やホスト タイル レイヤーの公開ができる権限を持っているアカウントを使用してポータルにサイン インします。
  3. [カスタマイズ] > [ArcMap オプション] > [共有]の順にクリックし、[ArcGIS Runtime ツールの有効化] がオンになっていることを確認します。

    これにより、次の手順で使用するメニュー オプションが有効になります。

  4. ArcMap で、[ファイル] > [共有] > [タイル パッケージ] の順にクリックします。
  5. 次の手順で、すべての設定を行います。他の設定も必要に応じて行います。
    1. [タイル パッケージ] タブで、[パッケージを自分の ArcGIS Portal アカウントにアップロード] を選択します。
    2. [タイル フォーマット] タブで、[ArcGIS Online / Bing Maps / Google マップ][タイル スキーマ] として選択します。
    3. [アイテム説明] タブで、必要に応じてアイテムをマークします。
    4. [共有] タブで、パッケージをパブリックまたは特定のグループと共有するかを選択できます。
  6. [共有] をクリックします。

    ArcMap でタイル パッケージを作成する前にマップを保存するよう求められる場合があります。

    特に縮尺の大きなマップが含まれている場合は、タイル パッケージの生成に時間がかかる場合があります。

  7. タイル パッケージの生成が終わったら、ArcMap でタイル パッケージを作成したときに使用した同じアカウントを使用してポータルにサイン インし、[コンテンツ] > [マイ コンテンツ] の順にクリックします。
  8. タイル パッケージをクリックし、アイテムの詳細ページを表示します。
  9. [Publish] をクリックします。
  10. タイトルとタグを入力し、[公開] をクリックします。

タイルが展開され、ホスト タイル レイヤーがポータルに作成されます。[マイ コンテンツ] にレイヤーが表示されます。

大きなタイル パッケージの公開

大量のデータを作成および共有する場合、Esri では、前のワークフローを使用せず、[タイル キャッシュ] ツールセットを使用することをお勧めします。これらのツールは、複数のプロセシング コアを利用して、タイルの生成と公開時のパフォーマンスを向上させることができます。

これらのツールを次の順序で実行します。

  1. [タイル キャッシュのタイル スキーマの生成 (Generate Tile Cache Tiling Scheme)] ツールを実行して、タイル グリッドと画像形式を定義します。
  2. [タイル キャッシュの管理 (Manage Tile Cache)] ツールを実行して、タイルを作成します。
  3. [タイル キャッシュのエクスポート (Export Tile Cache)] ツールを実行して、タイル パッケージを作成します。
  4. [パッケージの共有 (Share Package)] ツール ([パッケージ] ツールセット内) を実行して、タイルをポータル上にアップロードします。
  5. タイル パッケージの生成が終わったら、ArcMap でタイル パッケージを作成したときに使用した同じアカウントを使用してポータルにサイン インし、[コンテンツ] > [マイ コンテンツ] の順にクリックします。
  6. タイル パッケージをクリックし、アイテムの詳細ページを表示します。
  7. [Publish] をクリックします。
  8. タイトルおよびタグを入力します。
  9. ポータル管理者がコンテンツのカテゴリを構成している場合、[カテゴリの割り当て] をクリックして、最大 20 のカテゴリを選択して、アイテムの検索に役立てることができます。また、[カテゴリのフィルター処理] ボックスを使用して、カテゴリのリストを絞り込むこともできます。
  10. [Publish] をクリックします。

タイルが展開され、ホスト タイル レイヤーがポータルに作成されます。[マイ コンテンツ] にレイヤーが表示されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. コンテンツの作成やホスト タイル レイヤーの公開ができる権限を持つメンバーとしてポータルにサイン インして、[コンテンツ] > [マイ コンテンツ] の順にクリックします。
  2. [アイテムの追加] をクリックします。
  3. コンピューターから読み込むファイルを選択します。
  4. 参照ボタンをクリックして、サービス定義ファイルを選択します。
  5. [このファイルをサービスとして公開します] をオンにします。
  6. ポータル管理者がコンテンツのカテゴリを構成している場合、[カテゴリの割り当て] をクリックして、最大 20 のカテゴリを選択して、アイテムの検索に役立てることができます。また、[カテゴリのフィルター処理] ボックスを使用して、カテゴリのリストを絞り込むこともできます。
  7. タグの項目をカンマで区切って入力します。

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

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

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

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

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

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

サービス定義ファイルを営業時間の後にアップロードして公開するには、GIS 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

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

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