ArcGIS Runtime<\/A> を使用すると、すべての一般的なプラットフォーム向けにネイティブアプリを作成できます。ネイティブアプリは特にフィールドでのモバイルシナリオに適しています。フィールドでは安定したインターネット接続が保証されないことが多いため、マップと関連するすべてのデータをローカルにデバイス上に保存しておく必要があります。これを ArcGIS Runtime で実現する方法はいくつかあります:<\/P><\/P>ArcGIS Services から直接のオンデマンドエクスポート (Feature<\/A>、Raster<\/A>、および Vector Tile<\/A>)<\/LI>完全なマップのオンデマンドエクスポート<\/A><\/LI>ArcGIS Runtime Content<\/A> または Mobile Map Packages<\/A> を ArcGIS Desktop で事前処理し、その後デバイスにコピーする方法<\/LI><\/UL>これらの方法は Collector<\/A>、Navigator<\/A>、および Explorer<\/A> といった ArcGIS アプリでも利用されています。ArcGIS Runtime バージョン 100.2 以降では、モバイルオフラインシナリオの継続的かつ自動化可能な計画のための Preplanned Workflow<\/A> が追加されました。<\/P>
<\/P>
これらの方法は
次に、WebMap 内で関連する作業エリア(MapAreas)を定義します。一番簡単な方法は
{ "xmin": -13184700, "ymin": 3988556, "xmax": -13004945, "ymax": 4061479, "spatialReference": { "wkid": 102100 }}<SPAN class="line-numbers-rows"><SPAN><\/><SPAN><\/><SPAN><\/><SPAN><\/><SPAN><\/><SPAN><\/><SPAN><\/><SPAN></SPAN></SPAN>
# Import modules from arcgis.gis import GIS from arcgis.mapping import WebMap from getpass import getpass # Setup the organization and user information password=getpass() gis = GIS('https://www.arcgis.com', 'my named user', password) # get the webmap from the portal item id offline_map_item = gis.content token">.<\/SPAN>get<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"my webmap id"<\/SPAN><SPAN class="punctuation token">)<\/SPAN> offline_webmap <SPAN class="operator token">=<\/SPAN> WebMap<SPAN class="punctuation token">(<\/SPAN>offline_map_item<SPAN class="punctuation token">)<\/SPAN> <SPAN class="comment token"># WebMapのブックマークをループして、それぞれのブックマークに対してマップエリアを作成する<\/SPAN> <SPAN class="keyword token">for<\/SPAN> bookmark <SPAN class="keyword token">in<\/SPAN> offline_webmap<SPAN class="punctuation token">.<\/SPAN>definition<SPAN class="punctuation token">.<\/SPAN>bookmarks<SPAN class="punctuation token">:<\/SPAN> bookmark_name <SPAN class="operator token">=<\/SPAN> bookmark<SPAN class="punctuation token">.<\/SPAN>name item_prop <SPAN class="operator token">=<\/SPAN> <SPAN class="punctuation token">{<\/SPAN><SPAN class="string token">'title'<\/SPAN><SPAN class="punctuation token">:<\/SPAN> offline_map_item<SPAN class="punctuation token">.<\/SPAN>title <SPAN class="operator token">+<\/SPAN> <SPAN class="string token">'_'<\/SPAN> <SPAN class="operator token">+<\/SPAN> bookmark_name <SPAN class="operator token">+<\/SPAN> <SPAN class="string token">'_MapArea'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">'snippet'<\/SPAN><SPAN class="punctuation token">:<\/SPAN> <SPAN class="string token">'my snippet'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">'description'<\/SPAN><SPAN class="punctuation token">:<\/SPAN> <SPAN class="string token">'my description'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">'tags'<\/Span><span class="punctuation token">:[</span><span class="string token">'python api'</span>, <span class="string token">'MapArea'</span>, <span class="string token">'my tag'</span>]<span class="punctuation token">}</span> offline_area <span class="operator token">=</span> offline_webmap<span class="punctuation token">.</span>offline_areas<span class="punctuation token">.</span>create<span class="punctuation token">(</span>area<span class="operator token">=</span>bookmark_name<span class="punctuation token">,</span> folder<span class="operator token">=</span><span class="string token">'my portal content folder'</span><span class="punctuation token">,</span> item_properties<span class="operator token">=</span>item_prop<span class="punctuation token">)</span> <span class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span>
簡単なテストには、このブログの添付のPython Notebookを
WebMapのMapAreasと関連するモバイルデータはポータルで作成されました。あとはArcGIS Runtimeでダウンロードして利用するだけです。Preplanned Workflow機能はSDKのArcGIS Runtimeバージョン100.2以降で利用可能です。以下は.NET SDKを例にした実装の大まかな手順です:
1. WebMapの読み込み
<SPAn clAss='keyword toKen'>var</SPAn > portal <SPAn clAss='operator toKen'>=</SPAn > <SPAn clAss='keyword toKen'>await</SPAn > ArcGISPortal.<SPAn clAss='token function'>CreateAsync</SPAn >( ) ; var webmapItem = await PortalItem.CreateAsync(portal, "WebMap Portal ID"); var myMap = new Map(webmapItem);<<EMOJI_22 > ><spAn clAss='line-numbers-rows'><spAn >< < EMOJ I _23 > ></spAn ><spAn >< < EMOJ I _24 > ></spAn ><spAn >< < EMOJ I _25 > ></spAn ></spAn ></CODE ></PRE ><P ></P ><P >2. WebMapのMapAreasを取得する</P ><PRE clAss='lia-code-sample line-numbers language-none'><CODE ><SPAn clAss='keyword toKen'>var </SPAn > offlineMapTask = await OfflineMapTask.CreateAsync(myMap); var preplannedMapAreas = await offlineMapTask.GetPreplannedMapAreasAsync();<<EMOJI_26 > ><spAn clAss='line-numbers-rows'><spAn >< < EMOJ I _27 > ></spAn ><spAn >< < EMOJ I _28 > ></spAn ></spAn ></CODE ></PRE ><P ></P ><P >3. MapAreaの情報とデータを展開されたMobile Map Packageとしてダウンロードする</P ><PRE clAss='lia-code-sample line-numbers language-none'><CODE ><SPAn clAss='keyword toKen'>var </SPAn > myArea = preplannedMapAreas.FirstOrDefault(); var downloadJob = offlineMapTask.DownloadPreplannedOfflineMap(myArea, "保存パス"); var results = await downloadJob.GetResultAsync();<<EMOJI_29 > ><spAn clAss='line-numbers-rows'><spAn >< < EMOJ I _30 > ></spAn ><spAn >< < EMOJ I _31 > ></spAn ><spAn >< < EMOJ I _32 > ></spAn ><spAn >< < EMOJ I _33 > ></spAn ></spAn ></CODE ></PRE ><P ></P ><P >4. ローカルに保存されたMapAreaを読み込み、マップに表示する</P ><PRE clAss='lia-code-sample line-numbers language-none'><CODE ><SPAn clAss='keyword toKen'>var </SPAn > offlineMapArea = await MobileMapPackage.OpenAsync("保存パス"); myMap = offlineMapArea.Maps[0];<<EMOJI_34 > ><spAn clAss='line-numbers-rows'><spAn >< < EMOJ I _35 > ></spAn ><spAn >< < EMOJ I _36 > ></spAn ></spAn ></CODE ></PRE ><P ></P ><P ><STRONG >Feature Serviceとの編集内容の同期</STRONG ></P ><P >Feature Editsを双方向で同期するために、ローカルSQLite Geodatabaseは自動的に<a href='https://developers.arcgis.com/net/latest/wpf/api-reference//html/T_Esri_ArcGISRuntime_Tasks_Offline_OfflineMapTask.htm' rel='nofollow noopener noreferrer' target='_blank'>OfflineMapTask</a> によってFeature Serviceに登録されます。開発者が気にする必要はありません。同期方法は以下の通りです:</P ><P ></P ><PRE clAss='lia-code-sample line-numbers language-none'><CODE ><SPAn clAss='keyword toKen'>var </SPAn > editLayer = <SP class="punctuation token">(<\/SPAN>FeatureLayer<SPAN class="punctuation token">)<\/SPAN>myMap<SPAN class="punctuation token">.<\/SPAN>OperationalLayers<SPAN class="punctuation token">[<\/SPAN><SPAN class="number token">0<\/SPAN><SPAN class="punctuation token">]<\/SPAN><SPAN class="punctuation token">;<\/SPAN> <SPAN class="keyword token">var<\/SPAN> featureTable <SPAN class="operator token">=<\/SPAN> <SPAN class="punctuation token">(<\/SPAN>GeodatabaseFeatureTable<SPAN class="punctuation token">)<\/SPAN>editLayer<SPAN class="punctuation token">.<\/SPAN>FeatureTable<SPAN class="punctuation token">;<\/SPAN> <SPAN class="keyword token">var<\/SPAN> syncTask <SPAN class="operator token">=<\/SPAN> <SPAN class="keyword token">await<\/SPAN> GeodatabaseSyncTask<SPAN class="punctuation token">.<\/SPAN><SPAN class="token function">CreateAsync<\/SPAN><SPAN class="punctuation token">(<\/SPAN>featureTable<SPAN class="punctuation token">.<\/SPAN>Geodatabase<SPAN class="punctuation token">.<\/SPAN>Source<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">;<\/SPAN> <SPAN class="comment token">\/\/ sync geodatabase<\/SPAN> <SPAN class="keyword token">var<\/SPAN> taskParameters <SPAN class="operator token">=<\/SPAN> <SPAN class="keyword token">await<\/SPAN> syncTask<SPAN class="punctuation token">.<\/SPAN><SPAN class="token function">CreateDefaultSyncGeodatabaseParametersAsync<\/SPAN><SPAN class="punctuation token">(<\/SPAN>featureTable<SPAN class="punctuation token">.<\/SPAN>Geodatabase<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">;<\/SPAN> <SPAN class="keyword token">var<\/SPAN> syncJob <SPAN class="operator token">=<\/SPAN> syncTask<SPAN class="punctuation token">.<\/Span><span class="token function">SyncGeodatabase</span><span class="punctuation token">(</span>taskParameters<span class="punctuation token">,</span> featureTable<span class="punctuation token">.</span>Geodatabase<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="keyword token">var</span> result <span class="operator token">=</span> <span class="keyword token">await</span> syncJob<span class="punctuation token">.</span><span class="token function">GetResultAsync</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span>
デバイス上のジオデータベースを削除する前に、必ずFeature Serviceからも登録解除する必要があります(そうしないと、最終的に大量のReplicasで溢れてしまいます)。詳細はドキュメントをご参照ください。実装例は以下の通りです:<\/P>
<SPan clasS=\"keyword toKen\"\var\ editLayer <SPan clasS=\"operator toKen\"\=\ <SPan clasS=\"puncTuation toKen\"\(\FeatureLayer<SPan clasS=\"puncTuation toKen\"\)\myMap<SPan clasS=\"puncTuation toKen\"\.\OperationalLayers<SPan clasS=\"puncTuation toKen\"\[\0\]<SPan clasS=\"puncTuation toKen\"\;\ <span clasS=\"keyword toKen\"\var\ featureTable <SPan clasS=\"operator toKen\"\=\ <SPan clasS=\"puncTuation toKen\"\(\GeodatabaseFeatureTable<span clasS=\"puncTuation toKen\"\)editLayer<span clasS=\"puncTuation toKen\"\FeatureTable<span clasS=\"puncTuation toKen\"; <span clasS=\"keyword toKen\
Sehr schön aufbereitet.
#offline #offline maps #take offline
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.