DOC
|
はじめに 「さわって覚える ArcGIS API for Python 」シリーズブログは、 ArcGIS API for Python の ガイド や サンプル 、 API リファレンス などのリソースを最大限ご活用いただく第一歩として、ガイドの中で紹介されている主要なモジュールを中心に、実際にさわって覚えていただくようなノートブックと共に、全 5 回のシリーズとして紹介していく予定です。 基本編 (GIS モジュール編) フィーチャ データ編 場所検索、ジオコーディング編 ネットワーク解析編(前編)/ ネットワーク解析編(後編) マッピング、可視化編 ラスター編 前回の記事 では、フィーチャ レイヤーへのアクセス方法やフィーチャの編集についてご紹介しました。第 3 回目となる今回は、場所検索、ジオコーディング編として、「 geocode() メソッドの理解」のノートブックをもとに、主要な処理を解説していきます。紹介したノートブックは GitHub にも公開しますので、ご参照ください。 ArcGIS API for Python の環境構築がまだお済みでない方は、開発リソース集の インストールガイド にインストール方法を掲載しておりますので、ご参照ください。 本記事では以下の内容でジオコーディングについてご紹介します。 geocode() メソッドを使用したジオコーディング address パラメーターを使用したジオコーディング search_extent パラメーターを使用したジオコーディング location パラメーターと distance パラメーターを使用したジオコーディング geocode() メソッドを使用したジオコーディング ジオコーディング とは、住所、地名、目標物、郵便番号などが示す場所に対して座標を付与することです。 geocoding モジュール の geocode() メソッドは、住所や地名等を含む文字列を指定することでジオコーディングすることができるメソッドです。ここからは geocode() メソッドが持つさまざまなパラメーターを使用したジオコーディングについてご紹介していきます。 ArcGIS Online を利用している場合、デフォルトでは ArcGIS World Geocoding Service がジオコーダーとして利用されます。以降では ArcGIS World Geocoding Service の利用を前提として話を進めます。なお、以下のコードを実行すると現在利用しているジオコーダーの URL を把握することができます。 from arcgis . gis import GIS from arcgis . geocoding import get_geocoders gis = GIS ( “ポータルの URL” , “ユーザー名” , “パスワード” ) get_geocoders ( gis ) address パラメーターを使用したジオコーディング geocode() メソッドの address パラメーターではジオコーディングする住所や地名、郵便番号、または POI を含む文字列を指定することができます。 以下のコードでは geocode() メソッドに住所を入力しマップ ウィジェットにジオコーディング結果を表示します。 まずは、ジオコーディング結果を表示するマップ ウィジェットを表示 します。 # インポート
from arcgis.geocoding import geocode
from arcgis.gis import GIS
# 地図の表示
gis = GIS(“ポータルの URL”, “ユーザー名”, “パスワード”)
map = gis.map("東京都千代田区平河町")
map 続いて geocode() メソッドで “東京都千代田区平河町2-7-1” の住所を指定しジオコーディングを行います。 # geocode() メソッドでジオコーディング
single_line_address = "東京都千代田区平河町2-7-1"
esrij = geocode(single_line_address)[0] ジオコーディングの結果は辞書 (dictionary) 型で返却され以下のキーを持っています。 score: 入力した住所が返却された候補の住所情報とどの程度マッチしているかを 0 ~ 100 の値で表します。 100 は完全に一致していることを表し、低い値は一致度合いが低いことを表します。 location:マッチした住所の位置情報( x, y )が含まれています。 address:マッチした住所が含まれています。 attributes:ジオコーディング結果の情報をさまざまなフィールドで表します。各フィールドの詳細については Output Fields をご参照ください。 extent :マッチした住所のエクステントが含まれています。このエクステントは、マッチしたフィーチャを表示するために、 ArcGIS World Geocoding Service で設定されている値です 。空間参照は WGS84 が用いられています。 最後にジオコーディング結果の location キーに含まれる XY の情報を使用してマップ ウィジェットに表示します。 以下のコードではポップアップを設定して draw() メソッドの引数にジオコーディング結果の location (esrij['location']) を設定し、マップ ウィジェットに描画しています。また、ここではシンボルを見やすいように調整しています。シンボル設定に使用する辞書 (dictionary) は GitHub で公開されているツール を使うと簡単に生成できます。 # ポップアップを追加しマップ ウィジェットに描画
popup = {"title" : "ESRIジャパン株式会社",
"content" : esrij['address']}
# シンボルを設定(設定用の辞書生成ツール: https://esri.github.io/arcgis-python-api/tools/symbol.html)
symbol = {"color":[0,0,128,128],
"size":18,
"type":"esriSMS",
"style":"esriSMSCircle",
"outline":{"color":[0,0,128,255],
"width":1,
"type":"esriSLS",
"style":"esriSLSSolid"}}
map.draw(esrij['location'], popup, symbol=symbol) マップ ウィジェットを確認するとジオコーディングの結果が表示されます。表示されたポイントをクリックしてポップアップも確認してみましょう。 search_extent パラメーターを使用したジオコーディング search_extent パラメーターでは、座標の組み合わせを指定し、検索範囲を特定の地域に限定することができます。このパラメーターを使用することで、例えば現在のマップのエクステント内にある場所や住所を検索する際に活用することができます。 以下の例では、東京都千代田区平河町のジオコーディング結果のエクステント内にある病院を検索しています。 まず、東京都千代田区平河町でジオコーディングを行いマップ ウィジェットを表示します result = geocode("東京都千代田区平河町")[0]
map = gis.map(result)
map 先ほどご紹介したようジオコーディング結果の辞書 (dictionary) にはエクステントの情報 (result[‘extent’]) が含まれています。 以下のコードでは、ジオコーディング結果から取得したエクステント (result[‘extent’]) を geocode() メソッドの search_extent パラメーターに指定して検索範囲を東京都千代田区平河町のジオコーディング結果のエクステント内に絞り込んでいます。 # 平河町周辺の病院をジオコーディング
# ArcGIS World Geocoding Service を用いて郵便局、病院など不特定のPOIを検索する際は英単語で行うことをおすすめします。
# 平河町周辺の病院をジオコーディング
hospitals = geocode("hospital", search_extent = result['extent'])
# マップ ウィジェットに描画
for hospital in hospitals:
map.draw(hospital['location'], symbol = symbol) location パラメーターを使用したジオコーディング 本記事執筆時点では、 ArcGIS API for Python の API リファレンス の location パラメーターの説明では、 distance パラメーターと併せて用いるものとして説明されていますが、ラッピングしている ArcGIS REST API のドキュメント では distance パラメーターは既に廃止されており、パラメーターを渡しても認識されない旨が記載されています。 l ocation パラメーターは指定した位置からの近さに基づいてジオコーディングの候補をソートするために用います 。location location パラメーターを使うことで指定した座標から近い場所にある候補ほど上位に表示されるようになります。そのため、例えばモバイル アプリケーションで GPS で取得したユーザーの位置から近い場所や、現在表示しているマップの中心地に近い場所などを優先的に検索したい場合などに便利です。 location パラメーターは、 XY 座標で表現するか、 JSON ポイント オブジェクトとして表現することができます。 XY で表現する場合、空間参照は WGS 84 でなければなりません。そうでない場合は、座標の空間参照は、 JSON オブジェクトで定義することができます。 JSON での定義については こちら をご参照ください。 以下の例では東京都千代田区平河町 2-7-1 をジオコーディングし、その座標を location に指定して郵便局 を検索 しています。 # 中心となる地点をジオコーディング
esrij = geocode("東京都千代田区平河町2-7-1")[0]
esrij['location'] location パラメーター上記のジオコーディング結果の XY 座標 (esrij['location']) を指定し、郵便局を検索します。 post_offices = geocode("post office", location=esrij['location'])
for post_office in post_offices:
print(post_office["attributes"]["LongLabel"])
比較のために location パラメーターを指定せずに実行してみましょう。この場合、東京都千代田区平河町 2-7-1 の座標からの近さは表示順に影響を与えなくなります。そのため、海外の郵便局が上位に表示されます。 post_offices = geocode("post office")
for post_office in post_offices:
print(post_office["attributes"]["LongLabel"])
おわりに 今回は、geocode () メソッドを使ったジオコーディングについてご紹介しました。geocode () メソッドは他にも返却される結果の件数を制御する max_location や、結果を FeatureSet として返却するかどうかを指定する as_featureset パラメーターなどが提供されており、それぞれを組み合わせたりすることで検索結果の絞り込みや活用の幅を広げることができます。ご紹介したもの以外のジオコーディングの方法については「geocode() メソッドの理解」や「ジオコーディング結果のフィルタリング」のノートブックの他、「 Understanding the geocode() function 」や「 Filtering your geocoding results 」等のガイドもご参照ください。また、 ArcGIS API for Python を使用する際は冒頭でご紹介した ガイド や サンプル 、 API リファレンス などのリソースと併せて、本シリーズブログもご活用ください。 次回は「ネットワーク解析編」としましてルート検索についてご紹介する予定です。 関連リンク ArcGIS 関連ページ ArcGIS API for Python (ESRI ジャパン製品ページ) ArcGIS for Developers (ESRI ジャパン製品ページ) ArcGIS Online (ESRI ジャパン製品ページ) ArcGIS for Developers 開発リソース集 ArcGIS API for Python (米国Esri ページ(英語)) シリーズブログ 関連ページ ArcGIS API for Python を使ってみよう シリーズブログ 開発リソース集 ArcGIS for API for Python のコンセプト インストールガイド ArcGIS for API for Python のための基礎環境:conda 入門 関連するノートブック geocode() メソッドの理解 ジオコーディング結果のフィルタリング Understanding the geocode function ( 英語) Filtering your geocoding results ( 英語)
... View more
06-17-2020
10:19 PM
|
0
|
0
|
662
|
DOC
|
※ この記事は、米国 Esri 社のブログ記事 「 Developer Tools for COVID-19 Apps 」 を翻訳したものです。 もしあなたが、斬新な可視化や対応支援をおこなうような新型コロナウイルス感染症 (COVID-19) のアプリを開発しているのなら、 Esri はあなたのソリューションに利用することができる無償のロケーション サービスと SDK の一式を提供します。 このブログは ArcGIS for Developers を通じて使うことができるいくつかの重要なサービス (OpenStreetMap (OSM) ベースマップとスタイル設定、、そしてデータ ホスティング ) について、シンプルなマッピング アプリを作成する観点から紹介します。これらのサービスを使用して利益を得る、または 200MB 以上のデータをホストする場合を除いて、無償で利用することができます ( 詳細 ※ ) ※ 具体的には ArcGIS Online(開発者向け)Subscription で毎月無償提供される 50 クレジットの範囲内でデータ ホスティングを含む各種サービスを利用できます。自動で有償プランに切り替わることはありません。サービスの利用によるクレジットの消費量については ArcGIS Online のページ を参照ください。 はじめるには 要約 ( 主要なリンクのみまとめています ) : アカウント作成 と アプリの 骨組み部分を作成する チュートリアル 最初のステップは 無償の開発者アカウントを作成 ※ することです。このアカウントはマップのスタイル設定の管理、データのホスト、セキュアなサービスのためのトークンの生成などに使用されます。次に、 このチュートリアル に従って基本的な Web アプリの骨組みを作成しましょう。 ※ 開発リソース集 の 開発者アカウントの作成 で日本語のガイドを掲載しています。 このブログの残りの部分では、 JavaScript の Web アプリについて紹介します。しかし、リンクしているチュートリアルではその他のプログラミング言語とプラットフォームにも共通するコンセプトをカバーしています。 これが アウトプット です ( 私達はアメリカ合衆国を俯瞰できるように中心点を変更しています ) 。 ベースマップの選択 要約: OSM と イコール アース図法のマップ ギャラリー、 スタイ ル設定 と アプリへの追加 のチュートリアル 次はベースマップを更新しましょう。この リンク先 では、 OSM データから作成された高速描画のが豊富に提供されています。 この チュートリアル を行うことで、これらのマップのスタイル設定をあなたの創造的なセンスに合うように変更することができます。 私の同僚の John Nelson も、いくつかの素晴らしいイコール アース図法のベースマップを公開しています。これらは COVID-19 の場合のように人口に基づいた可視化をする際により適切に表現することができます ( 詳細 )。 ベースマップを選んだら、アイテムをクリックし、アイテム ID を URL から取得して、 このチュートリアル に従ってあなたのアプリに追加しましょう。 JavaScript の場合、更新した主要部分は次のとおりです。 // OSMのグレイ ベクター ベースマップを URL から取得します: // https://www.arcgis.com/home/item.html?id=1932e7d4432d45dabc0d4d13109c1f09 var basemap = new Basemap ( { baseLayers : [ new VectorTileLayer ( { portalItem : { id : "1932e7d4432d45dabc0d4d13109c1f09" } } ) ] } ) ; var map = new Map ( { basemap } ) ; アウトプットは こちらを参照 してください。 データのホストと追加 要約: データのアップロード 、スタイルとポップアップの設定、そして アプリへの追加 のチュートリアル。 サービスのベスト プラクティス 無償の 200MB のベクター データのホスティングを活用しましょう! このチュートリアル では CSV 、 GeoJSON 、そしてその他のデータ ソースを UI または Python を使ってアップロードします。アップロードしたら、 このチュートリアル を通じて、アプリに追加することが可能な RESTful なサービスを作成します。 サービスは編集、動的なタイル表示、空間または統計的なクエリなどをサポートしています。これらのサービスは一日に数十億のリクエストを処理することがきますので、重要な運用の実践方法については このブログ を参照してください。アプリでは、レイヤーのスタイルの設定や ( チュートリアル ) 、クリックされたときのポップアップにデータを表示させる ( チュートリアル ) ことができます。 デモとして、この Unacast の ソーシャル・ディスタンシングのデータ を所有しており、アップロードしたと仮定しましょう。主要なコードの更新部分は次のようになります。 // Unacast social distancing layer // pulled from REST API link (bottom right) of item page // https://www.arcgis.com/home/item.html?id=ab72fb3e9bf24d9594f0b942718bffeb var layer = new FeatureLayer ( { url : 'https://services.arcgis.com/DO4gTjwJVIJ7O9Ca/arcgis/rest/services/Unacast_Latest_Available__Visitation_and_Distance_/FeatureServer' , renderer : { type : 'unique-value' , field : 'grade_distance' , defaultSymbol : { type : 'simple-fill' , outline : { color : 'gray' , width : '0.1px' } } , legendOptions : { title : 'Grade' } , uniqueValueInfos : [ { value : 'A' , symbol : { type : 'simple-fill' , color : '#0070ff' , outline : { color : 'gray' , width : '0.1px' } } } , { value : 'B' , symbol : { type : 'simple-fill' , color : '#bed2ff' , outline : { color : 'gray' , width : '0.1px' } } } , { value : 'C' , symbol : { type : 'simple-fill' , color : '#e6e600' , outline : { color : 'gray' , width : '0.1px' } } } , { value : 'D' , symbol : { type : 'simple-fill' , color : '#ffaa00' , outline : { color : 'gray' , width : '0.1px' } } } , { value : 'F' , symbol : { type : 'simple-fill' , color : '#e60000' , outline : { color : 'gray' , width : '0.1px' } } } ] , } , popupTemplate : { title : "{county_name}" , content : "Unacast's social distancing grade is {grade_distance}" } } ) ; var map = new Map ( { basemap , layers : [ layer ] } ) ; アウトプットは こちらを参照 してください。 注:個別にレイヤーを追加、スタイリングする代わりに、 ArcGIS Online の Map Viewer を使用して Web マップを作成することも可能です。 Web マップはアプリにコード 1 行で追加することができます。詳細は Web マップ のチュートリアル 、 レイヤーのスタイル設定のチュートリアル 、そして Web マップを追加するチュートリアル ※ を参照してください。 ※ 日本語で Web マップの作成・表示に関するブログ記事も公開しているのでご参照ください。 信頼性の高いデータの追加 要約: データ ソース と上記と同じチュートリアル コロナ ウイルス対策の一貫として、数多くの信頼性の高い地理空間データが全世界の GIS コミュニティや信頼できるパートナーから提供されています。これらの中には上記で紹介した Unacast のデータや、ジョンズ・ホプキンス大学の現在の COVID-19 の発生件数、 Definitive Healthcare の病床数などが含まれています。これらのデータセットは ここから検索 し、上記のチュートリアルと同じ手順であなたのマップに追加することができます。 注:これらのデータは多くの業務の中で価値を付加することができ、クライアントのアプリから直接呼び出す必要はありません。 REST API に直接アクセスしたり、 Python と Pandas を使ってデータ処理のパイプラインを作成したりすることもできます ( ガイド )。 ユーザー エクスペリエンス を組み込む 要約: 検索と ルート案内 のチュートリアル、 その他の機能 データとレイヤーは、アプリの中でその他の位置情報サービスや解析処理と組み合わせることで、情報量が多く説得力のあるソリューションを構築することができます。 検索と ルート案内 機能 ※ 、そして 強力なビジュアライゼーション の作成に関するチュートリアルがあるのでご参照ください。 ※ 訳注: 日本語で ルート案内に関するブログ記事 も公開しているのでご参照ください。 ここではユーザーが場所を発見できるようにするための Search と凡例を追加するだけにとどめますが、追加のアイディアのために最後の「追加のリソース」もチェックしてください。主なスニペットは次のとおりです。 var searchWidget = new Search ( { view } ) ; view . ui . add ( searchWidget , 'top-right' ) ; var legendWidget = new Legend ( { view } ) ; view . ui . add ( legendWidget , 'bottom-right' ) ; 全てのアウトプット はこちらを参照してください。 追加のリソース これが最終的な アウトプット です!以下は、もしあなたがより深く学びたい場合に私がおすすめするいくつかのリソースです。 Esri の COVID-19 resources と ArcGIS for Developers resources ページ GitHub 上のサンプルアプリ– これらはアプリに追加することができる API のその他の機能と対話的な UX に焦点を当てています ( フィードバックやプル リクエスト歓迎です! ) 。 構成可能なアプリ– もしすぐにアプリを作成する必要があったり、デバッグのことを考えたりしたくなければ、 Esri はたくさんの構成可能なアプリのビルダーとテンプレートを提供しています。 Disaster response program – もしあなたが追加のリソースや支援が必要であれば、 Esri は公衆衛生当局や他の組織を緊急の GIS 支援で支援します ※ 。 ※ 国内においても同様に無償の支援プログラムを展開しています。 開発ブログとチュートリアル ※ : 全ての開発チュートリアル | Google Maps からの移行 | スマートマッピングのブログ | クライアント サイドのクエリのブログ ※ 日本語でも Web アプリ開発のブログを シリーズ記事 として公開しています。また、上記 Google Maps からの移行については 翻訳記事 を公開しています 。 カートグラフィーのブログ : | Mapping Coronavirus, responsibly | Improve Your COVID-19 Cases Map | Better colors for better mapping
... View more
04-30-2020
01:42 AM
|
0
|
0
|
322
|
DOC
|
はじめに みなさんは Web AppBuilder for ArcGIS ( 以下、「 Web AppBuilder 」 ) を使用したことはありますでしょうか。 ArcGIS Online や ArcGIS Enterprise をご利用されている方であれば一度は使ったことがあると思いますが、 Web AppBuilder を活用すると、コーディングをしなくてもウィジェット ( 機能別の部品 ) を組み合わせるだけで簡単に Web アプリケーションを作成することができます。 2019 年の Esri User Conference の 発表 では、 Web AppBuilder で作成された ArcGIS Online 上の Web アプリケーションの総数が 500,000 を超えており、多くのお客様にご利用いただいております。一例としてあげると、以下のようなものがあります。 国内 出典:放置自転車情報マップ (大東京防犯ネットワーク 防犯情報マップ ) 海外 出典:Manufacturing sites in Sweden (Business Sweden) そんな Web AppBuilder を拡張するために、開発者向けには、 Web AppBuilder for ArcGIS ( Developer Edition ) ( 以下、「 Developer Edition 」 ) を提供しています。細かい UI のカスタマイズが必要な場合や、用意されているウィジェット ( 一覧 ) では対応できないような機能が要件にある場合に、ご利用頂くことが可能です。 Developer Edition を利用してカスタマイズした Web アプリケーション Developer Edition を利用してカスタマイズした Web アプリケーションの例では以下があります。クリックした地点の属性情報をアプリ左側に表示させる機能や住所検索機能を拡張しています。 出典: 都市計画情報マップ ( 千代田区都市計画情報提供ポータル ) Developer Edition のデプロイ パターン 先日、 Developer Edition の バージョン 2.15 を リリース しましたが、皆様から、デプロイに係る問い合わせを受けることがよくあります。そこで、当該リリースに合わせて主なデプロイ パターンの解説を 開発リソース集 に掲載いたしました。 以下ではその内容を簡単にご紹介いたします。エンド ユーザーの利用形態や要件によって最適なデプロイは異なりますが、主なパターンとしては次の 3 つが考えられます。 1. Web アプリケーションをデプロイ Developer Edition を使って、 Web マップやウィジェットも含めて Web アプリケーションとして作成し・デプロイするパターンです。マップやウィジェットが固められているため柔軟性には欠けますが、特定の業務で継続的に利用されることが想定される場合や、エンドユーザーによる設定変更等が不要な場合等に活用できます。 作成からデプロイまでの流れは Developer Edition を使って Web アプリケーションを作成後、作成した Web アプリケーションをダウンロードし、 Web サーバーに配置するだけです。 ご注意いただきたい点は、作成した Web アプリケーションは独自に用意した Web サーバーに配置する必要があることです。 2. ウィジェット をデプロイ カスタムのウィジェットのみを作成・デプロイするパターンです。エンド ユーザーさま自身が ArcGIS Online や ArcGIS Enterprise の Web AppBuilder を使用して web アプリケーションを作成することを想定しているものの、デフォルトの Web AppBuilder のウィジェットには無い機能が必要な場合にカスタム ウィジェットを追加しておくことができます。 この場合、ご注意いただきたい点は 2 つあります。 1 つ目は、 Web アプリケーションをデプロイする時と同様、作成したウィジェットは独自の Web サーバーに配置する必要があります。もう 1 つは、作成したウィジェットは ArcGIS Online の Web AppBuilder からは利用できないことです。 ArcGIS Enterprise の Web AppBuilder を使用する必要があります。 3. テンプレート をデプロイ Esri が用意している web アプリケーションのテンプレート とは別に、 Web AppBuilder で作成した web アプリケーションをベースに独自のテンプレートを作成・配置するパターンです。マップや設定の変更のみでエンドユーザーが Web アプリケーションを作成することができます。 ただし、今回開発リソース集でご紹介している方法は、開発環境と運用環境が同じでなる点にご注意ください。運用時においてもユーザーが Developer Edition にアクセスできる必要があります。 まとめ 以下の表は、上記 3 つのパターンについて、必要なコンポーネント等を表にまとめたものです。 パターン 開発時に必要なコンポーネント 運用時に必要なコンポーネント ArcGIS Online での 利用可否 ArcGIS Enterpriseでの 利用可否 Web アプリケーションをデプロイ Node.js、Developer Edition Web サーバー、ArcGIS Online もしくは ArcGIS Enterprise ◯ ◯ ウィジェットをデプロイ Node.js、Developer Edition Web サーバー、ArcGIS Enterprise ✕ ◯ テンプレートをデプロイ Node.js、Developer Edition Developer Edition、ArcGIS Online もしくは ArcGIS Enterprise ◯ ◯ より詳しい内容は開発リソース集の デプロイ パターンのページ をご覧ください。 関連リンク Web AppBuilder for ArcGIS (Developer Edition) (ESRIジャパン 製品ページ ) ArcGIS for Developer開発リソース集 Web AppBuilder for ArcGIS (Developer Edition) デプロイパターン
... View more
01-31-2020
12:30 AM
|
0
|
0
|
501
|
DOC
|
はじめに 2019 年も残すところあとわずかとなりました。 マッピング & ロケーション開発のプラットフォームである「 ArcGIS for Developers 」を最大限活用いただくために、 ESRI ジャパンの開発者製品を担当するチームでは、多くのセミナーの開催や ArcGIS の開発に係る情報発信を行ってまいりました。 これらの資料やサンプルコードは、その都度ブログやフォローアップのメール等でお知らせしてまいりましたが、見逃してしまった方もいらっしゃるかもしれません。 また、 ArcGIS プラットフォームを拡張するパターンも多岐にわたり、開発者向けの製品が多いことから、初めての方は欲しい情報を探す時間が長くなりがちです。 そこで、今回の記事では、 2019 年に公開したサンプル コードやブログ記事などを中心に、 API/SDK 別にリンクをまとめておきたいと思います。各リンクにはそれぞれ、紹介している内容のレベルの目安として、【基礎】、【応用】、【最新情報】のフラグを付けています。気になったリンクがあれば、この機会にブックマーク等していただければ幸いです。 ArcGIS for Developers & ArcGIS Developer Subscription イベント資料 開発塾 2019 :はじめに _ まとめ ArcGIS プラットフォーム及び開発者製品・サブスクリプション プログラムの概要 マッピング & ロケーション 開発 最前線: 01_ArcGIS_ 開発者製品の概要と最新動向 上記を簡潔に説明したものに加え、 ArcGIS for Developers を使って できることも記載 ArcGIS API for JavaScript イベント資料 JavaScript API ハンズオン( 資料 / コード ) 【基礎】 API を使用した Web アプリ開発の基礎を学べるハンズオン 開発塾 2019 :ウィジェット開発ハンズオン( 資料 / コード ) 【応用】 API で利用可能なカスタム ウィジェットの開発手法を学べるハンズオン マッピング & ロケーション開発最前線: Web アプリケーション( 資料 / コード ) 【最新情報】 WebGL によるパフォーマンス向上やスマートマッピング、編集ウィジェット等 ブログ はじめての Web マッピングアプリケーション開発 シリーズ 【基礎】 API を使用した Web アプリ開発の基礎を紹介するシリーズ記事 Web マッピング アプリ開発に便利なツール紹介 シリーズ 【応用】 TypeScript を使用した開発やカスタム ビルドの作成方法等を紹介するシリーズ記事 レイヤーを拡張して「Tile Map Service 」のサービスを表示 【応用】 カスタム レイヤーを作成して今昔マップを表示してみた記事 ガイド カスタム フォント 【応用】 ラベルやグラフィック等で独自フォントを使用する手順を紹介するガイド Web AppBuilder for ArcGIS (Developer Edition) ガイド ウィジェット一覧表 【基礎】 Web AppBuilder for ArcGIS ( ArcGIS Online 版、 ArcGIS Enterprise 版、 Developer Edition 版)で提供されているウィジェットの一覧表 ArcGIS Runtime SDK イベント資料 Runtime SDK ハンズオン( 資料 / コード ) 【基礎】 ArcGIS Runtime SDK for .NET を使用したデスクトップ アプリ開発の基礎を学べるハンズオン 開発塾 2019 : ArcGIS プラットフォームを活用した調査アプリケーション構築までのハンズオン( 資料 / コード )【応用】 Esri のサンプル( Data Collection for .NET )を拡張して現地調査アプリを開発するハンズオン(デプロイ方法の手順は近日公開予定) マッピング & ロケーション開発最前線:ネイティブ アプリケーション( 資料 / コード ) 【最新情報】 オフライン利用のワークフロー(プレプラン / オンデマンド)や AR 連携 ArcGIS Pro SDK for .NET イベント資料 ArcGIS Pro SDK for .NET ハンズオン 【基礎】 SDK を使用した ArcGIS Pro 拡張の基礎を学べるハンズオン マッピング & ロケーション開発最前線:デスクトップ拡張、スクリプト( 資料 / コード ) 【最新情報】 構成管理やアドイン(ジオコーディング、座標系設定、属性テーブル等)による ArcGIS Pro の拡張 ブログ ArcGIS Pro SDK for .NET を使用した機能開発シリーズ 【応用】 SDK を使用したアドイン開発の実装方法と解説を交えたシリーズ記事 ArcGIS API for Python イベント資料 ArcGIS プラットフォームを活用した調査アプリケーション構築までのハンズオン(開発塾 2019 )( 資料 / コード (zip ファイル内のNotebook 参照) )【基礎】 後半で ArcGIS API for Python を使用した基礎的な可視化・集計を紹介 GIS コミュニティフォーラム: ArcGIS でデータサイエンスしよう ~ GIS 解析とそのプロセスの新しい共有方法~ (ブログ/コード) 【応用】 Notebook Server ( ※ 現在は国内未サポートです ) で ArcGIS API for Python を使用 GIS コミュニティフォーラム: ArcGIS でデータサイエンスしよう ~より高度で自由な地理空間分析へ~ ( ブログ / コード ) 【応用】 ArcGIS API for Python を使用した物体検出 マッピング & ロケーション開発最前線:最新テクノロジー ( 資料 / コード ) 【最新情報】 勾配ブースティングを用いた機械学習、ディープ ラーニングで動画内の物体検出 ブログ ArcGIS API for Python を使ってみよう シリーズ 【基礎】 API の使い方の基礎を紹介するシリーズ記事 ArcGIS API for Python のコアコンセプト( その1 、 その2 )【基礎】 API の基本となるコンセプトや、環境構築に係るベストプラクティスを解説 ArcPy イベント資料 GIS コミュニティフォーラム: ArcGIS ユーザーのためのデータハンドリング~さまざまなデータ活用の第一歩~ ( ブログ / コード ) 【基礎】 いくつかのデータを例に Python を活用したデータハンドリングの手法を紹介 Web GIS で集めたデータを ArcGIS Pro でも活用しよう! ~レポート作成までのステップ~ ( ブログ / コード ) 【基礎】 ArcPy を使った Web GIS のデータから ArcGIS Pro でレポート作成する処理を紹介 Python を使って作業の効率化を図ろう! (GIS 学会 ハンズオン セッション ) 【基礎】 arcpy を使った自動化の基礎を解説 マッピング & ロケーション開発最前線:デスクトップ拡張、スクリプト ( 資料 / コード ) 【最新情報】 CIM を用いたシンボル変更、 arcpy と ArcGIS API for Python を用いたデータ処理自動化 ブログ Python を使って作業の効率化を図ろう! シリーズ 【基礎】 ArcPy を使った処理の基本を紹介するシリーズ記事 ArcPy でのフィーチャ データの利用 【基礎】 ArcPy でのフィーチャ データ , テーブルの操作について Esri Developer Summit 2019 のセッションスライドに沿って紹介 ArcGIS の Python でのマルチプロセス処理 【応用】 ArcPy と Python を使用したマルチプロセス処理のベストプラクティスを紹介 ArcGIS の Python でのマルチプロセス処理 - 実装例 【応用】 上記ベストプラクティスに従い現実のデータをマルチプロセス処理したコードを紹介 ブログ記事 アクセス数 TOP 5! 開発製品担当チームでは特にブログに力を入れて発信してきました!上記と重複する記事もありますが、2019年 公開記事の閲覧数 (2019 年 12 月 27 日時点 ) が多かった記事 TOP 5 をご紹介します! 第 1 位: 「地理院地図Vector 」(仮称)を ArcGIS で表示してみました 【応用】 国土地理院が試験公開中の 「地理院地図Vector 」(仮称) を、 ArcGIS API for JavaScript で表示できるか試行 第 2 位: ArcGIS の Python でのマルチプロセス処理 【応用】 ArcPy と Python を使用したマルチプロセス処理のベストプラクティスを紹介。 実装 編 もご覧ください。 第 3 位: GIS コミュニティフォーラム開催報告:「ArcGIS でデータサイエンスしよう ~より高度で自由な地理空間分析へ~ 」② 【応用】 ArcGIS API for Python を使用した物体検出のワークフローを解説 第 4 位: Web マッピング アプリ開発に便 利なツールをご紹介:~Visual Studio Code で開発環境を構築~ 【基礎】 Visual Studio Code を使って ArcGIS API for JavaScript の開発環境を構築をインストールから紹介 第 5 位: Web マッピング アプリ開発に便利なツールをご紹介:~ TypeScript を使用したアプリ開発~ 【応用】 TypeScript と ArcGIS API for JavaScript の型定義ファイルを使うための開発環境の設定方法を紹介 まとめ ここではご紹介しきれなかったものもありますが、上記の中身を見ていただければそれぞれの API/SDK の基礎から応用までを一とおりご確認いただけると思います。 ESRI ジャパン の GitHub では他にもコードを公開しており、例えば workshop リポジトリでは過去のイベントで発表した資料やコードがまとまっていますので、さらに色々見てみたいという方はご覧ください。 来年も多くのサンプル コードやブログ記事など、 ArcGIS で開発する皆様に役立つ情報をお届けしたいと思います。 それでは、よいお年をお過ごしください。来年も引き続きよろしくお願いいたします。 ■関連リンク ArcGIS for Developer 開発リソース集 GeoNet 開発ブログ Esri Japan GitHub
... View more
12-26-2019
09:33 PM
|
0
|
0
|
712
|
DOC
|
はじめに このシリーズでは「 ArcGIS Pro SDK for .NET を使用した機能開発」のシリーズ記事として、 ArcGIS Pro を拡張するためのアドイン開発時によく使う便利なクラスやメソッド、また、それらを用いた実践的な開発をご紹介しています。本シリーズで実装しているソースはすべて GitHub に格納してありますので、 ArcGIS Pro SDK for .NET (以下 Pro SDK )を使用する開発の参考にしてください。 本シリーズのこれまでの記事では、以下のような機能の実装方法をご紹介しました。 第 1 弾 : マップとの対話的な操作により選択したフィーチャの属性表示を行う機能 第 2 弾 : フィーチャの強調表示、フィーチャへのズーム機能 第 3 弾 : レイヤーのレンダラーの設定 第 4 弾となる今回は、 アノテーション を操作する機能の実装方法をご紹介します。 本記事の対象読者 ・ Pro SDK を使用して ArcGIS Pro のアドイン開発を行っている方 ・ Pro SDK を使用した ArcGIS Pro のアドイン開発をこれから行う、もしくは、検討している方 ※「ArcGIS Pro SDK for .NET を使った独力での開発」でご紹介した Pro SDK のハンズオンで予習しておくと、本シリーズをよりスムーズに理解できると思います。 本記事で実装する機能の概要 GIS の成果物である「地図」において、最も重要な要素の一つは地物の名称などが見やすく記載されているかどうかです。 ArcGIS Pro では Maplex ラベル エンジンを使用することで高度なラベル制御が可能ですが、地図調製の現場ではアノテーションを作成して更に細かな制御が必要な場合が多いでしょう。 アノテーションの操作に係る機能をカスタマイズすることで、こうした細かな注記表現の制御の作業効率を向上させることが期待できます。 本記事でご紹介するサンプルでは、選択したアノテーションをコピーしたり回転したりする機能を Pro SDK を使って拡張します。 完成イメージ 本記事で実装する機能の実装手順 選択したアノテーション フィーチャの角度を取得 選択したアノテーション フィーチャを回転 選択したアノテーション フィーチャをコピー ※本記事ではドッキング ウインドウの「アノテーション操作」タブの機能を実装します。「ジオメトリ変換」タブの機能は今後の連載でご紹介します。 本記事で使用する主な API カテゴリ 本記事では「編集」、「ジオデータベース」、「ジオメトリ」を中心に使用します。 ※API カテゴリに関しては 「 ArcGIS Pro SDK for .NET を使った独力での開発 」をご参照ください。 本記事で使用するソース 本記事で使用するソースは GitHub に格納しています。ソースに関して実装のポイントとなる部分を抜粋して解説しますので、ダウンロードをお願いします。 本記事で使用するファイル MainDockPane.xaml ドッキング ウインドウの画面を構成するファイル。作成手順に関しては「 Pro SDK を使用した ArcGIS Pro の拡張④:アドインの開発 」をご参照ください。 MainDockPaneViewModel.cs ドッキング ウインドウの処理を記述するファイル。 ViewModel 。ドッキング ウインドウ( MainDockPane.xaml )作成時に自動的に作成されます。 Pro SDK で扱う ViewModel については、「 Pro SDK を使用した ArcGIS Pro の拡張③:アドインプロジェクトの構成 」をご参照ください。 実装手順 1. 選択したアノテーション フィーチャの角度を取得 この手順では、選択されたアノテーション フィーチャの角度を取得し、ドッキング ウインドウ内のテキストボックス内に取得した角度を表示するように機能を拡張します。 手順 1.1 MainDockPane.xaml の設定 「アノテーション操作」タブ アイテムの「TextBox」の「Text」属性を「MainDockPaneViewModel.cs」の「Angle」プロパティにバインドさせます。 <TextBox x:Name="angle_textBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" TextAlignment ="Right" MaxLength="4" Text="{Binding Path = Angle, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/> また、「選択」ボタンの「 Command 」属性を「 MainDockPaneViewModel.cs 」の「 AnnotationAngle 」プロパティにバインドさせます。 <Button Content="選択" Grid.Column="3" HorizontalAlignment="Stretch" Command="{Binding Path=AnnotationAngle}"Style="{DynamicResource Esri_Button}"></Button> 1.2 テキスト ボックスとバインドするプロパティを作成 「 MainDockPaneViewModel.cs 」に Angle プロパティを作成します。次の手順で実装しますが、アノテーション フィーチャを選択した際に取得した角度を格納します。 private double _angle;
public double Angle
{
get { return _angle; }
set
{
SetProperty(ref _angle, value, () => Angle);
}
} 1.3 MainDockPaneViewModel.cs でイベント ハンドラーを登録 「選択」ボタンを押すと 「 ExexuteAnnotationAngle() 」メソッドが実行されるように実装します。 第一回目 の手順 2.2 で紹介したように「 GetPlugInWrapper() 」を使用し、マップ ツール と「選択」ボタンをバインドしています。 // アノテーション タブの選択ボタンを押すと ExexuteAnnotationAngle() が実行される
_annotationAngle = new RelayCommand(() => ExexuteAnnotationAngle(), () => true);
/// <summary>
/// アノテーション操作タブの選択ボタンをクリック
/// </summary>
private ICommand _annotationAngle;
public ICommand AnnotationAngle => _annotationAngle;
public void ExexuteAnnotationAngle()
{
var cmd = FrameworkApplication.GetPlugInWrapper("AddInSamples_IdentifyFeatures") as ICommand;
if (cmd.CanExecute(null))
cmd.Execute(null);
} 1.4 イベント ハンドラーの実装 第一回目 の手順 5.3 で実装した OnMapSelectionChanged() を拡張し、「アノテーション操作」タブの「選択」ボタンを使用した場合に、アノテーション フィーチャの角度を取得するように if 文で制御します。前回までの記事で既に実装済みの部分は else で処理します。 /// <summary>
/// マップ内の選択状態が変わった場合に発生
/// </summary>
private void OnMapSelectionChanged(MapSelectionChangedEventArgs args)
{
var mapView = MapView.Active;
if (mapView == null)
return;
RemoveFromMapOverlay();
// アノテーション操作タブの場合
if (_tabPage == 2)
{
QueuedTask.Run(() =>
{
var selection = mapView.Map.GetSelection();
// 選択しているフィーチャクラスがある場合
if (selection.Count > 0)
{
var featureLayer = selection.FirstOrDefault().Key as BasicFeatureLayer;
// アノテーションの場合
if (featureLayer.GetType().Name == "AnnotationLayer")
{
var table = featureLayer.GetTable();
var feature = featureLayer.GetSelection();
// OBJECTIDを指定
QueryFilter queryFilter = new QueryFilter
{
WhereClause = "ObjectId =" + feature.GetObjectIDs().First(),
};
// 複数選択した場合は最初に取得したアノテーションの角度を使用する
using (RowCursor rowCursor = table.Search(queryFilter))
{
rowCursor.MoveNext();
using (Row row = rowCursor.Current)
{
// 角度取得
Angle = Convert.ToDouble(row["Angle"]);
}
}
}
}
});
}
else
{
(後略)
2. 選択したアノテーション フィーチャを回転 この手順では、選択したアノテーション フィーチャの角度を任意の角度に回転する機能を実装します。 手順 2.1 MainDockPane.xaml の設定 「回転」ボタンの「 Command 」属性を「 MainDockPaneViewModel.cs 」の「 RotateAnnotation 」プロパティにバインドさせます。 <Button Content="回転" Grid.Column="4" HorizontalAlignment="Stretch" Command="{Binding Path=RotateAnnotation}" Style="{DynamicResource Esri_Button}"></Button> 2.2 MainDockPaneViewModel.cs でイベント ハンドラーを登録 「実行」ボタンを押すと「 ExecuteRenderingClick() 」メソッドが実行されるように実装します。 // アノテーション タブの回転ボタンを押すと ExecuteRotateAnnotation() が実行される
_rotateAnnotation = new RelayCommand(() => ExecuteRotateAnnotation(), () => true); 2.3 イベント ハンドラーの実装 選択したフィーチャをループ処理し、アノテーション フィーチャであった場合、テキスト ボックスに入力されている値を使用して角度を更新します。フィーチャの属性情報等にアクセスする際は Inspector クラスを使用します。EditOperation クラスの Modify メソッドを使用することでジオメトリや属性情報を更新し、Execute メソッドで実行します。EditOperation クラスは編集する際に必ず使用するクラスです。主要な機能として以下の 3 つがあります。 データに対して編集操作を実行する 複数の編集を一つの実行 (Execute) に集約する 編集操作によって編集されたレイヤーのキャッシュを無効化する 詳細については Editing の コンセプト ( 英語) をご参照下さい。 /// <summary>
/// アノテーション操作タブの回転ボタンをクリック
/// </summary>
// アノテーションの回転
private ICommand _rotateAnnotation;
public ICommand RotateAnnotation => _rotateAnnotation;
private void ExecuteRotateAnnotation()
{
var mapView = MapView.Active;
if (mapView == null)
return;
try
{
QueuedTask.Run(() =>
{
var selection = mapView.Map.GetSelection();
// 選択しているフィーチャクラスがある場合
if (selection.Count > 0)
{
var editOperation = new EditOperation();
// フィーチャクラスごとにループ
foreach (var mapMember in selection)
{
var layer = mapMember.Key as BasicFeatureLayer;
// アノテーションの場合
if (layer.GetType().Name == "AnnotationLayer")
{
using (var rowCursor = layer.GetSelection().Search(null))
{
var inspector = new Inspector();
while (rowCursor.MoveNext())
{
using (var row = rowCursor.Current)
{
// 角度更新
inspector.Load(layer, row.GetObjectID());
var annoProperties = inspector.GetAnnotationProperties();
annoProperties.Angle = _angle;
inspector.SetAnnotationProperties(annoProperties);
editOperation.Modify(inspector);
}
}
}
}
}
editOperation.Execute();
}
});
}
catch
{
MessageBox.Show("アノテーションの角度変更に失敗しました。");
}
} 3. 選択したアノテーション フィーチャをコピー この手順では、選択したアノテーション フィーチャをコピーする機能を実装します。 手順 3.3 MainDockPane.xaml の設定 「コピー」ボタンの「Command」属性を「MainDockPaneViewModel.cs」の「RotateAnnotation」プロパティにバインドさせます。 <Button Content="コピー" Grid.Column="5" HorizontalAlignment="Stretch" Command="{Binding Path=CopyAnnotation}" Style="{DynamicResource Esri_Button}"></Button> 3.2 MainDockPaneViewModel.cs でイベント ハンドラーを登録 「実行」ボタンを押すと「 ExecuteRenderingClick() 」メソッドが実行されるように実装します。 // アノテーション タブのコピーボタンを押すと ExecuteCopyAnnotation() が実行される
_copyAnnotation = new RelayCommand(() => ExecuteCopyAnnotation(), () => true); 3.3 イベント ハンドラーの実装 選択したフィーチャをループ処理し、アノテーション フィーチャであった場合に処理を実行する点は上述した 2.3 の処理と同じです。 コピーする処理は下に記載するメソッドを別に作成しています。大まかな処理の流れは以下の通りです。 CreateRowBuffer メソッド等を使用しコピー先のアノテーション フィーチャを作成 コピー元のアノテーション フィーチャのエクステントとテキストのグラフィックを取得 ( それぞれ GetShape メソッド、 GetGraphic メソッドを使用 ) エクステントから重心を算出 作成したアノテーション フィーチャにコピー private void InsertAnnotation(AnnotationFeature annofeat)
{
var selectedFeatures = MapView.Active.Map.GetSelection().Where(kvp => kvp.Key is AnnotationLayer).ToDictionary(kvp => (AnnotationLayer)kvp.Key, kvp => kvp.Value);
var layer = selectedFeatures.Keys.FirstOrDefault();
// コピーするアノテーション用に行を作成
AnnotationFeatureClass annotationFeatureClass = layer.GetFeatureClass() as AnnotationFeatureClass;
RowBuffer rowBuffer = annotationFeatureClass.CreateRowBuffer();
Feature feature = annotationFeatureClass.CreateRow(rowBuffer) as Feature;
// コピーするアノテーションを作成
AnnotationFeature copyAnnoFeat = feature as AnnotationFeature;
copyAnnoFeat.SetStatus(AnnotationStatus.Placed);
copyAnnoFeat.SetAnnotationClassID(0);
// コピー元のアノテーションの重心にポイントを作成
Envelope shape = annofeat.GetShape().Extent;
var x = shape.Center.X;
var y = shape.Center.Y;
var mapPointBuilder = new MapPointBuilder(layer.GetSpatialReference());
mapPointBuilder.X = x;
mapPointBuilder.Y = y;
MapPoint mapPoint = mapPointBuilder.ToGeometry();
// コピー元のアノテーションのテキストを作成
var annoGraphich = annofeat.GetGraphic() as CIMTextGraphic;
CIMTextGraphic cimTextGraphic = new CIMTextGraphic();
// 作成したポイントとアノテーションをコピー先のアノテーションにコピー
cimTextGraphic.Text = annoGraphich.Text;
cimTextGraphic.Shape = mapPoint;
// シンボル設定
var symbolRef = new CIMSymbolReference();
symbolRef.SymbolName = annoGraphich.Symbol.SymbolName;
symbolRef.Symbol = annoGraphich.Symbol.Symbol;
cimTextGraphic.Symbol = symbolRef;
// コピー
copyAnnoFeat.SetGraphic(cimTextGraphic);
copyAnnoFeat.Store();
} アノテーションを操作する際に使用されている CIMTextGraphic はアノテーションのテキストやフォーマットに係る属性を含んでいます。詳細は Annotation のコンセプト (英語) 及び Editing Annotation のコンセプト (英語) をご参照ください。 今回実装したような CIMTextGraphic を操作する仕組みを流用することで、アノテーションのテキストを動的に変更することや、任意のフォント設定でアノテーションを作成・更新することも可能になるでしょう。 まとめ 本記事ではアノテーション フィーチャの角度を取得し、回転、コピーする処理を実装、解説しました。これらの操作はカスタマイズしなくとも可能ですが、 Pro SDK を活用することでより効率的に実行できるようになります。細かなアノテーション操作が必要な地図調製などの業務向けには、本記事でご紹介した内容をご参考にしていただき、利用頻度の高い操作等を効率的に行えるようカスタマイズしていただければと思います。 次回 次回はジオメトリ操作タブ内に機能を実装していきます。 関連リンク ArcGIS Pro SDK for .NET を使用した ArcGIS Pro の拡張 シリーズ ArcGIS Pro SDK for .NET ArcGIS Pro SDK for .NET コンセプト(GitHub ) ArcGIS Pro SDK for .NET サンプル集(GitHub ) ArcGIS Pro SDK 2.4 for .NET API リファレンス ArcGIS Pro SDK for .NET ハンズオン
... View more
12-18-2019
11:57 PM
|
0
|
0
|
592
|
BLOG
|
Hi David, Thank you for your reply! I am very excited with a lot of new funtionalities!
... View more
11-18-2019
06:47 PM
|
0
|
0
|
239
|
BLOG
|
Hi, Do we need Enterprise 10.8 (prerelease) for some of the new functionalities of the API? or 10.7.1 is enough for them? Thanks,
... View more
11-05-2019
03:13 AM
|
0
|
0
|
239
|
POST
|
Hi Fang, Thank you for replying. Yup, I know the IE11 is not recommended for the API. I recommend modern browsers to our customers Best regards, Hiromu
... View more
11-04-2019
09:07 PM
|
0
|
0
|
44
|
POST
|
Hi, The functionality is beta, so this is just a notification. IE11 seems to be not able to render bottom of text of dictionary renderer on SceneView. Left: Chrome, Right: IE11 It happens probably not just only in Japanese, but also in English. Thanks,
... View more
11-04-2019
06:39 PM
|
0
|
2
|
108
|
DOC
|
はじめに 2019年 5 月 22 日 (水 ) ~ 24 日 (金 )、東京ミッドタウン 六本木にて第 15回 GIS コミュニティフォーラム及びプレフォーラム・セミナーが開催されました。 公開可能なセッションの発表資料は ESRI ジャパンのサポートサイトで公開しております。また、 GeoNet ブログでは開発者向けのセッションで使用したコードなどをご紹介しています。発表資料や GeoNet 記事、 GitHub へのリンクなどの詳細は 第15 回GIS コミュニティフォーラム開催報告記 事をご覧ください。 テクニカル セッション「 ArcGISでデータサイエンスしよう ~より高度で自由な地理空間分析へ~」の中では、 R や Python との連携による高度な解析についてデモンストレーションを交えてご紹介しました。少し間が空いてしまいましたが、今回は ArcGIS API for Python と ArcGIS Pro を用いてディープ ラーニング モデルを作成し、航空写真から航空機を検出したデモンストレーションについて詳細をご紹介いたします。 R との連携については 前回の記事をご参照ください。 概要 本稿は以下の流れに沿ってご紹介します。 ArcGIS API for Python を用いたディープ ラーニングについて 環境構築 セッションでご紹介したデモンストレーションの全体像 デモンストレーションの再現手順 トレーニング データの作成 ArcGIS API for Python を用いたディープ ラーニング モデルの作成 作成したディープ ラーニング モデルの適用 まとめ 1. ArcGIS API for Python を用いたディープ ラーニングについて ArcGIS API for Python は、Web GIS (ArcGIS Online / ArcGIS Enterprise) を活用してマップと地理空間データを扱うための API です。本 API は、想定されるユーザーが以下の 4 つのタイプとして明確に定められています。 Web GIS の管理者 コンテンツ作成者 GIS アナリスト/データ サイエンティスト 開発者 上記の中でも、特に GIS アナリスト/データ サイエンティストに対しては、Web サイトで公開されているサンプル コードの数が最も多く、米国 Esri 社も利用の推進に力を入れているセグメントです。 ArcGIS API for Python は、TensorFlow や PyTorch 等のディープ ラーニング用フレームワークと組み合わせて使用することが可能です。特に PyTorch については、PyTorch をベースに開発されている fastai というライブラリをラッピングしており、両者を追加でインストールすることで、arcgis.learn モジュールから直接機能を呼び出して使用することができるようになっています。 以降では、GIS コミュニティフォーラムでご紹介したデモンストレーションをもとに、具体的な環境構築の方法、トレーニング データの作成、ArcGIS API for Python によるディープ ラーニングの学習、そして学習したモデルを適用するまでの一連の流れをご紹介していきます。 2.環境構築 ① 使用したソフトウェア等 ご紹介したデモンストレーションで使用したソフトウェア、エクステンションおよび Python のライブラリは以下のとおりです(右側に記載した数字は使用したバージョンです)。 ArcGIS 製品 ArcGIS Pro 2.3.2 ArcGIS API for Python (arcgis) 1.6.0 ArcGIS Image Analyst サード パーティーの Python ライブラリ pytorch 1.0.0 torchvision 0.22 fastai 1.0.39 spacy 2.1.3 ② GeoAI Data Science VM について ディープ ラーニングによる学習を実行するにあたり、比較的ハイスペックな GPU が必要となるため、今回は Microsoft Azure の Geo AI Data Science VM (GeoAI DSVM) を使用して仮想マシンを構築しました。Azure 上での GeoAI DSVM のプロビジョニングについては Microsoft Azure のドキュメントをご参照ください。GeoAI DSVM には ArcGIS Pro の英語版があらかじめインストールされています。 ③ ディープ ラーニング用の Python 環境の作成 ArcGIS Pro は Miniconda を内包しており、Python パッケージ マネージャーから複数の Python 環境を作成・管理することができます (詳細については「ArcGIS API for Python のコアコンセプト その 2」を参照ください)。以降では、この機能を用いてデフォルトの Python 環境とは別にディープ ラーニング用の環境を作成します。 必須ではありませんが、GeoAI DSVM の ArcGIS Pro の UI を日本語に設定したい場合は、弊社サポートサイトから日本語版をダウンロードしてインストールしてください。 ※ 英語環境でも以降の手順は同じです。 ArcGIS Pro を起動し、スタートアップ画面の左下にある [設定] をクリックします。 [Python] メニューオプションを選択します。 [環境の管理] ボタンをクリックし、「環境の管理」ウィンドウを開いて、[デフォルトのクローン] ボタンを選択します。 デフォルト環境のクローンが作成されます。 クローンの作成中は下部にインストール中のパッケージ名が表示されます。 すべてのパッケージのインストールが完了すると、クローンされた環境が格納されているディレクトリ名が表示されます。 ※ 完了前に操作をすると、作成した環境が正常に動作しない可能性があります。 クローン環境作成の様子 作成した環境のラジオボタンをクリックして、環境をアクティブにします。 ※ アクティブな環境をデフォルトに戻したい場合は、arcgispro-py3 (デフォルトの環境) のラジオボタンをクリックしてください。 環境をアクティブにしたら、ArcGIS Pro を終了し、[スタート] → [ArcGIS] → [Python コマンド プロンプト] の順にクリックして、Python コマンドプロンプトを起動します。 <img
... View more
09-04-2019
05:18 AM
|
1
|
0
|
1608
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|