DOC
|
はじめに このシリーズでは「 ArcGIS Pro SDK for .NET を使用した機能開発」のシリーズ記事として、 ArcGIS Pro を拡張するためのアドイン開発時によく使う便利なクラ スやメソッド、また、それらを用いた実践的な開発をご紹介します。本シリーズで実装するソースはすべて GitHub に格納してありますので、ぜひ ArcGIS Pro SDK for .NET (以下 Pro SDK )を使用する開発の参考にしてください。 本シリーズのこれまでの記事では、以下のような機能の実装方法をご紹介しました。 第 1 弾 : マップとの対話的な操作により選択したフィーチャの属性表示を行う機能 第 2 弾 : フィーチャの強調表示、フィーチャへのズーム機能 第 3 弾 : レイヤーのレンダラーの設定 第 4 弾 : アノテーションを操作する機能を実装 第 5 弾となる今回は、ポリゴン・ライン ジオメトリをポイントに変換する機能の実装方法をご紹介します。 本記事で実装する機能の概要 ArcGIS Pro は、ポリゴン・ライン・ポイントなどのジオメトリを操作するためのジオプロセシングツールを多数そろえています。しかし、それらのジオプロセシングツールで実現することが難しい処理を行いたい場合、または所有するライセンスにより使用できないツールと類似の機能を実装したい場合には、Pro SDK を使用する必要があります。本記事では一例として以下のようにジオメトリを変換する機能をご紹介します。 ポリゴン:ポリゴンの重心を取得してポイントを作成する ライン : ラインの両端にポイントを作成する 普段 ArcGIS Pro でデータを選択するように、対象のデータを選択するための [ 選択のダイアログボックス ] を使用できるようにする方法も解説します。 完成イメージ ※使用データに関しては、末尾の関連リンクをご参照ください 本記事で実装する機能の実装手順 アイテム選択ダイアログから 結果を格納するファイルジオデータベースを選択する アクティブなマップ ビューに存在するポリゴン・ラインのレイヤーのみをコンボ ボックスに格納する ジオメトリ変換を実装する(ポリゴンは重心を取得し、ラインは両端のポイントを取得する) ※本記事ではドッキング ウィンドウの「ジオメトリ変換」タブの機能開発を行います。このシリーズ記事では、Pro SDK の機能をいくつかのタブに沿って解説しています。他のタブの機能については、「 ArcGIS Pro SDK for .NET を使った独力での開発 」より各記事をご参照ください。 本記事で使用する主な API カテゴリ 本記事では「ジオメトリ」 「編集」「ジオプロセシング」を中心に使用します。 ※ API カテゴリに関しては「 ArcGIS Pro SDK for .NET を使った独力での開発 」をご参照ください。 本記事で使用するファイル MainDockPane.xaml ドッキング ウィンドウの画面を構成するファイル。作成手順に関しては「 Pro SDK を使用した ArcGIS Pro の拡張④:アドインの開発 」をご参照ください。 MainDockPaneViewModel.cs ドッキング ウィンドウの処理を記述するファイル。 ViewModel 。ドッキング ウィンドウ( MainDockPane.xaml )作成時に自動的に作成されます。 Pro SDK で扱う ViewModel については、「 Pro SDK を使用した ArcGIS Pro の拡張③:アドインプロジェクトの構成 」をご覧ください。 実装手順 1. ダイアログからジオメトリ変換した結果を格納するファイル ジオデータベースを指定する ファイル ジオデータベースを選択するダイアログ画面を呼び出す処理を実装します。(ジオメトリ変換した結果を格納する場所を指定します。) [出力先 GDB] の入力のテキストボックスには、選択したファイル ジオデータベースへのパスが表示されます。 手順 1.1 MainDockPane.xaml の設定 「ジオメトリ変換」タブ アイテムの「 TextBox 」の「 Text 」属性を「 MainDockPaneViewModel.cs 」の「 GdbPath 」プロパティにバインドさせます。 <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding GdbPath, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Margin="5,5,5,5"/>
また、「開く」ボタンの「 Command 」属性を「 MainDockPaneViewModel.cs 」の「 OpenGdbCmd 」プロパティにバインドさせます。 <Button Content="開く" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Stretch" Command="{Binding Path=OpenGdbCmd}" VerticalAlignment="Center" Style="{DynamicResource Esri_Button}"></Button> 1.2 MainDockPaneViewModel.cs でイベント ハンドラーを登録 「開く」ボタンを押下すると、アイテム選択ダイアログが開く処理が実行されるように実装します。 コンストラクタに次の処理を追加します。 // ジオメトリ変換 [開く]を押すとアイテム選択ダイアログが表示される
_openGdbCmd = new RelayCommand(() => OpenGdbDialog(), () => true); 1.3 MainDockPaneViewModel.csへGdbPathプロパティを定義する 選択したファイルジオデータベースのパスを取得し表示する”GdbPath”プロパティを定義します。 private string _gdbPath = string.Empty;
public string GdbPath
{
get { return _gdbPath; }
set
{
SetProperty(ref _gdbPath, value, () => GdbPath);
}
} 1.4 アイテム選択ダイアログを開くメソッドを実装 下記のコードでは、OpenItemDialog クラスをインスタンス化し、アイテム選択ダイアログでカスタムできる部分を 3 つ実装しています。 Title:アイテム選択ダイアログの左上に表示されるタイトル MultiSelect:複数のファイルを選択できるかどうかの設定 Filter:特定のデータタイプ(拡張子)のみを表示する設定 private ICommand _openGdbCmd;
public ICommand OpenGdbCmd => _openGdbCmd;
private void OpenGdbDialog()
{
// 選択ダイアログを作成するクラスをインスタンス化する
OpenItemDialog searchGdbDialog = new OpenItemDialog
{
Title = "ファイルジオデータベースを選択", // 選択ダイアログのタイトル
MultiSelect = false, // 複数のデータの選択を許可しない
Filter = ItemFilters.geodatabases //選択するデータの指定(フィルター:*.gdbのデータのみ表示・選択できる)
};
var ok = searchGdbDialog.ShowDialog();
if (ok != true)
return;
var selectedItems = searchGdbDialog.Items;
foreach (var selectedItem in selectedItems)
GdbPath = selectedItem.Path; //選択したファイルパスを取得する
} 2.アクティブなマップ ビューに存在するポリゴン・ラインレイヤーのみをコンボ ボックスに格納する ここでは、コンボボックスで対象のレイヤーを選択する機能を実装します。 選択対象とするレイヤーは、 第 1 弾 および 第 3 弾 の記事と同じように、アクティブなマップ ビューに含まれているレイヤーが対象です。おさらいになりますので、いずれかの記事をご参照ください。 今回は前回までの記事に加えて、アクティブなマップ ビューに含まれるレイヤーの中でも、ポリゴンまたはラインのデータのみが対象となるように実装します。 実際に選択させるレイヤーをコンボボックスに格納する処理は、MainDockPaneViewModel クラスの GetLayers() メソッドに集約されています。 このメソッド内では、レイヤーを格納する処理に加えて、特定のジオメトリタイプのみを抽出し格納する処理を実装します。 // ジオメトリ変換タブのレイヤーコンボボックスに、ポリゴンまたはラインのレイヤーを格納
var polygonAndLineLayers = mapView.Map.Layers.OfType<FeatureLayer>().Where(f => f.ShapeType == esriGeometryType.esriGeometryPolygon || f.ShapeType == esriGeometryType.esriGeometryPolyline);
PolygonAndLineLayers.Clear();
foreach (var polygonAndLineLayer in polygonAndLineLayers) PolygonAndLineLayers.Add(polygonAndLineLayer); 3.ジオメトリ変換を実装する ( ポリゴンは重心を取得し、ラインは両端のポイントを取得する ) 選択したレイヤーに含まれるジオメトリのタイプを判別して、それぞれ次の操作を行います。 ポリゴン:ポリゴンの重心を求めてポイントを作成する ライン : ラインの両端にポイントを作成する [ ポイント作成 ] ボタンを押下したときに、ジオメトリ変換を行います。 手順 3.1 MainDockPane.xaml の設定 「ジオメトリ変換」タブ アイテムの“フィーチャクラス名”を入力する「 TextBox 」の「 Text 」属性を「 MainDockPaneViewModel.cs 」の「 FeatureClassName 」プロパティにバインドさせます。 <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding FeatureClassName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Margin="5,5,5,5"/> また、「ポイント作成」ボタンの「 Command 」属性を「 MainDockPaneViewModel.cs 」の「 CreatePoint 」プロパティにバインドさせます。 <Button Content="ポイント作成" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Stretch" Command="{Binding Path=CreatePoint}" Style="{DynamicResource Esri_Button}"></Button> 3.2 MainDockPaneViewModel.cs でイベント ハンドラーを登録 「ポイント作成」ボタンを押下すると、ジオメトリ変換が行われるように実装します。 コンストラクタに次の処理を追加します。 // 選択したポリゴンまたはラインにポイントを発生させるジオメトリ処理を行う
_createPoint = new RelayCommand(() => ExecuteCreatePoint(), () => true); 3.3 MainDockPaneViewModel.csへFeatureClassNameプロパティを定義する 入力した 結果出力用のフィーチャ クラス名称を取得するための ”FeatureClassName” プロパティを定義します。 private string _featureClassName;
public string FeatureClassName
{
get { return _featureClassName; }
set
{
SetProperty(ref _featureClassName, value, () => FeatureClassName);
}
} 3.4 イベントハンドラーの実装 入力されたフィーチャ クラス名称を取得して、ライン・ポリゴンレイヤーに対してジオメトリ変換を行う処理を記述します。 大まかな処理の流れは以下です。 既存のフィーチャ クラスの存在検査 新規フィーチャ クラス作成( Geoprocessing.ExecuteToolAsync () で作成する) ポリゴンは重心を取得し、ラインは両端のポイントを取得する処理を実装する ここでは、ポリゴン・ラインそれぞれの実装を解説します。全体コードは Github の MainDockPaneViewModel クラスを参照ください。 ポリゴンの重心を取得してポイントを作成する レイヤーに含まれる各ポリゴンから重心を取得します。重心を取得する処理は、ManipulateGeometry() メソッド内の“polygon”オブジェクトで分岐している条件配下となります。 if (manipulatedlayer.GetFeatureClass().GetDefinition().GetShapeType().ToString() == "Polygon")
{
while (rowCursor.MoveNext())
{
using (var row = rowCursor.Current)
{
Feature feature = row as Feature;
Geometry shape = feature.GetShape();
//
MapPoint mapPoint = GeometryEngine.Instance.Centroid(shape);
//レイヤーのフィーチャクラスの Shape フィールドを取得
string shapeField = featureClass.GetDefinition().GetShapeField();
var attributes = new Dictionary<string, object>();
attributes.Add(shapeField, mapPoint);
//ジオメトリの属性値設定
foreach (var fld in row.GetFields().Where(fld => fld.FieldType != FieldType.Geometry && fld.FieldType != FieldType.OID && fld.Name != "Shape_Length" && fld.Name != "Shape_Area"))
{
attributes.Add(fld.Name, row[fld.Name]);
}
//フィーチャの作成と編集実行
editOperation.Create(featureClass, attributes);
}
}
ポリゴンの重心は、 GeometryEngine.Instance.Centroid メソッドを使用して取得することができます。 取得した重心をポイントとして新規作成する際には、 第 4 弾 の記事の「 2. 選択したアノテーション フィーチャを回転」でご紹介したように、 EditOperation クラスを使用します。今回はフィーチャの新規作成のため Create メソッドを使用します。上記のソースでは、ポイント作成先のフィーチャクラスと、取得したフィーチャ(重心ポイント+属性情報)を渡して新しいフィーチャを作成します。 ラインの両端にポイントを作成する レイヤーに含まれる各ラインから両端のポイントを求める処理は、 ManipulateGeometry() メソッド内の“ Polyline ”オブジェクトで分岐している条件配下となります。 else if (manipulatedlayer.GetFeatureClass().GetDefinition().GetShapeType().ToString() == "Polyline")
// ラインの場合の処理
{
while (rowCursor.MoveNext())
{
using (var row = rowCursor.Current)
{
Feature feature = row as Feature;
Polyline polyline = feature.GetShape() as Polyline;
ReadOnlyPointCollection pts = polyline.Points;
var mapPointBuilder = new MapPointBuilder(manipulatedlayer.GetSpatialReference());
mapPointBuilder.X = pts.First().X;
mapPointBuilder.Y = pts.First().Y;
MapPoint firstMapPoint = mapPointBuilder.ToGeometry();
mapPointBuilder.X = pts.Last().X;
mapPointBuilder.Y = pts.Last().Y;
MapPoint lastMapPoint = mapPointBuilder.ToGeometry();
//レイヤーのフィーチャクラスの Shape フィールドを取得
string shapeField = featureClass.GetDefinition().GetShapeField();
var firstAttributes = new Dictionary<string, object>();
firstAttributes.Add(shapeField, firstMapPoint);
var lastAttributes = new Dictionary<string, object>();
lastAttributes.Add(shapeField, lastMapPoint);
//ジオメトリの属性値設定
foreach (var fld in row.GetFields().Where(fld => fld.FieldType != FieldType.Geometry && fld.FieldType != FieldType.OID && fld.Name != "Shape_Length" && fld.Name != "Shape_Area"))
{
firstAttributes.Add(fld.Name, row[fld.Name]);
lastAttributes.Add(fld.Name, row[fld.Name]);
}
editOperation.Create(featureClass, firstAttributes);
editOperation.Create(featureClass, lastAttributes);
}
}
}
ラインの両端のポイントは、 Polyline クラスから Polyline.Points のプロパティを取得することで求めることができます。 Polyline.Points プロパティを使用することによって、ラインの始点と終点を取得することができます(ラインの両端のポイントを取得)。 1 つラインに対して 2 つのポイントを作成するため、属性情報もそれぞれ同じものを付加しています。 ポリゴンの重心を求めた時と同じように、 EditOperation クラスの Create メソッドを使用して、新規でポイントフィーチャを作成します。 1 つのラインに対して 2 つのポイントを作成するため、 EditOperation の Create メソッドを 2 回実行します。 まとめ 今回はポリゴン・ラインからそれぞれポイントを発生させる処理を解説しました。Pro SDK を使用することによって、ジオメトリ一つ一つのプロパティを取得ができますし、それを利用して今回のようなジオメトリ変換処理を行うことができます。また、今回ご紹介したダイアログ画面の呼び出しなど、ArcGIS Pro 標準の機能を使用することもできます。 このシリーズ記事は、 ArcGIS Pro SDK for .NET を使った独力での開発 ブログをはじめとして、 ArcGIS Pro SDK の実用的な操作や実装について連載してきました。この連載でのご紹介はひとまずこの記事が最後になります。 今後もより業務や研究などの場面で役立つ汎用性の高い機能についてご紹介する予定です。 是非、ご期待ください! 関連リンク ArcGIS Pro SDK for .NET を使用した機能開発 ~マップとの対話的な操作その1~ ArcGIS Pro SDK for .NET を使用した機能開発 ~マップとの対話的な操作その2 ~ ArcGIS Pro SDK for .NET を使用した機能開発 ~レンダラーの設定~ ArcGIS Pro SDK for .NET を使用した機能開発 ~アノテーションの操作~ ArcGIS Pro SDK for .NET を使用した機能開発 ~ジオメトリの変換~ ~ ArcGIS Pro SDK for .NET ハンズオン 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 ハンズオン 使用データ ラインデータ: 静岡県 東海自然歩道(静岡県バイパスルート ) / Esri ジャパンオープンデータポータル ポリゴンデータ: E-stat 経済センサス _ 基礎調査(平成 21 年)の静岡県のデータを、ファイルジオデータベースに加工し、一部を使用しています。
... View more
01-16-2020
06:17 PM
|
0
|
0
|
616
|
DOC
|
はじめに ArcGIS の開発者向けの製品では、ArcGIS Online / ArcGIS Enterprise でホスティングした様々な GIS データを利用できるような、API / SDK を提供しています。 どの開発者向けの API / SDK を使うにしろ、これらの GIS データにアクセスするためのレイヤーを理解するのが、アプリケーションを開発する際の近道となります。 本記事では、 ArcGIS の開発者製品を扱う上で重要なレイヤーの種類と特長について紹介していきます。ご紹介するレイヤーは、 ArcGIS Online または ArcGIS Enterprise 上に作成されるレイヤーを想定しています。 なお、本記事は ArcGIS のコア コンセプト の Layers ページ を参考にしています。 レイヤー ArcGIS を使用してアプリケーションを構築する場合に、レイヤーは主要なコンテンツとなります。 ArcGIS で利用できるレイヤーは、ディスク上またはネットワーク経由で利用可能な ArcGIS REST API 、 CSV ファイル、 GeoJSON 、また他のファイルを介して公開される Web サービスに基づいています。 レイヤーは、 ArcGIS の開発者製品である API および SDK を使用して、ネットワーク経由またはディスク上からロードされた任意のデータから作成され、アプリケーション内で利用することができます。 一時的なグラフィックは、 API で作成できるグラフィック レイヤーを使用して地図上に表示することも可能です。 レイヤーは、マップやアプリケーションを作成するときに使用される地理的データの論理的集合で、大まかにフィーチャ レイヤーかタイル レイヤーのいずれかに分類することができます。 レイヤー タイプ 概要 フィーチャ レイヤー ポイントやポリゴンのようなフィーチャを扱うレイヤー ジオメトリおよび属性情報の編集または更新、オフラインデータベースと同期が可能 タイル レイヤー 事前にキャッシュを作成し、サーバー上にキャッシュを配置しているレイヤー タイル レイヤー の例として、 ベクター タイル マップ はタイル レイヤーとなります。 3D を表示するシーン レイヤーも、アプリケーション内でできるだけスムーズに表示を行うために建物などの 3D オブジェクトを含むフィーチャをキャッシュすることから、タイル レイヤーに分類することができます。 ArcGIS の主なレイヤー ArcGIS Online と ArcGIS Enterprise は、編集、オフライン同期、ベースマップの使用など、地図アプリを開発・利用する上で一般的なユースケースを実現するためのさまざまなタイプのレイヤーをサポートしています。 ArcGIS を使用してアプリケーションを作成するには、これらの種類のレイヤーを使用する方法を考慮することが重要です。 この表は、アプリケーション構築時に使用する主なレイヤータイプの一般的な使用例をまとめたものです。 レイヤーの種類 REST API Service ArcGIS Online※1 ArcGIS Enterprise キャッシュ作成の可否※2 ユースケース Feature Layer ( フィーチャレイヤー ) Feature Service ○ ○ - ベクター形式のデータのクエリ、レンダリング、編集などに利用 Tile Layer ( タイル レイヤー ) Map Service ○ ○ ○ 変更頻度が低いベースマップやその他の複雑なデータセットに利用 Vector Tile Layer ( ベクター タイル レイヤー ) Vector Tile Service ○ ○ ○ 変更頻度が低いベースマップやその他の複雑なデータセットに利用 Dynamic Map Layer ( ダイナミック マップ レイヤー ) Map Service - ○ - 頻繁に変更される、または複雑なレンダリング要件が必要なデータセットを表示するために利用 Image Layer ( イメージ レイヤー ) Image Service - ○ - 衛星画像や他の画像データのレンダリングと解析に利用 Scene Layer ( シーン レイヤー ) Scene Service ○ ○ ○ 3D データセットの表示とレンダリングに利用 ※ 1 : ArcGIS Online ではホストできないレイヤーもありますが、 ArcGIS Enterprise でホストされているレイヤーは ArcGIS Online と共有できます。 ArcGIS Server Webサービス を参照してください。 ※ 2 :キャッシュされたレイヤーは事前に表示のための処理が行われるため、クライアントへ高速で配信できます。キャッシュされていないレイヤーはデータベースクエリを作成し、 HTTP キャッシュのみを利用します。 その他のレイヤー タイプ ご紹介した主なレイヤー タイプの一覧に加え、 ArcGIS Enterprise は多くのレイヤーをサポートしています。詳細な情報は、 ArcGIS Enterprise の ヘルプ ドキュメント「 ArcGIS を使用してサービスを公開する方法 」をご参照ください。具体的なレイヤーについては 公開できるサービスの種類 でご紹介しています。(このドキュメントでは、レイヤー以外の GIS 解析を行うサービスについてもご紹介しています)。 レイヤー タイプのサポート状況は API / SDK によって異なるため、詳細は各製品のサンプルやリファレンスをご確認ください。 CSV、GeoRSS、KML などの一般的なファイルの種類のサポートに加え、 ArcGIS の開発者向け API / SDK では、カスタム レイヤー タイプとして拡張可能なグラフィック レイヤーをサポートします。 レイヤーの使用 ArcGIS プラットフォームでは、複数の方法でレイヤーを作成、編集、共有できます。 ArcGIS REST API から使用する 上記で紹介しました ArcGIS の主なレイヤー タイプは、 ArcGIS Online と ArcGIS Enterprise の基本コンポーネントである ArcGIS Server のインスタンスでホストされるサービスをサポートしており、 ArcGIS の API / SDK は REST API を介して操作します。 開発者は REST API を使用してレイヤーを表示させるだけでなく、 REST API に直接リクエストを送ることで、独自の GIS 機能をアプリケーションに追加することが可能です。 ArcGIS API と SDK から使用する ArcGIS の API / SDK は、REST API を包含して設計されています。どの API / SDK もサポートするレイヤーをマップに追加することができます。 また、レイヤーの種類毎にクラスとして実装されており、実行可能な処理はメソッドとして定義しています。REST API を使用して同様の処理を行う場合に比べ、より扱いやすくなっています。 例えば、 ArcGIS Runtime SDK for .NET ( WPF )の API リファレンスから、 フィーチャ テーブル が持つメソッドをみてみましょう。このクラスでは主にフィーチャ レイヤーが持つ属性情報へのクエリのためのメソッドを定義しています。 REST API で同様の処理を行うためのリファレンスである Query (Feature Service) に比べ、可能な操作がわかりやすいのではないでしょうか。 レイヤーの扱い方は、リファレンスだけでなくサンプルをご紹介するページやガイドページからでも学ぶことができます。 ArcGIS API for JavaScript では、 Intro to layers の sandbox で学習することができます。(このページを翻訳したはじめてのWeb マッピングアプリケーション開発:レイヤー表示編もご覧ください) ArcGIS Runtime SDK の各 OS では、ガイドページの基礎( Fundamentals )にレイヤーについての記述があります。(例: ArcGIS Runtime SDK for .NET のレイヤー ) Web マップで使用する ArcGIS プラットフォームで利用できる Web マップでは、各レイヤーを追加してひとつの主題図を作成することが可能です。 Web マップ自体は、JSON 形式でシンボルなどの設定を保持します。JSON データの中でレイヤーは ‘basemapLayers‘ または ‘operationalLayers‘ プロパティに追加されます。 Web マップへレイヤーを追加するためには、 ArcGIS Online または ArcGIS Enterprise のアイテム ID 、または Map Service の URL のいずれかで参照できます。 Web マップを作成するためのツールであるマップビューアでは、レイヤーのシンボル定義や表示範囲などの定義を GUI から変更することが可能です。 Web マップへのレイヤーの追加の詳細については、 ArcGIS Online の「レイヤ ー の追加」 トピックを参照してください。 Web マップ利用における開発者のメリット Web マップには、表示するレイヤーの情報や、シンボルなどの表現の定義など、アプリ実行時にも利用可能な設定情報を定義することができます。この内容は、開発したアプリケーションはもちろん、 ArcGIS Apps でも適用して扱うことができます。また、 Web マップはユーザ間で共有できます。詳細については、 Web マップの概要 および Web マップの仕様 (英語)を参照してください。 レイヤーの作成 レイヤーの作成方法は、 ArcGIS の各製品によって異なります。 ArcGIS 製品と作成方法のガイドのリンクをレイヤー毎にご紹介します。 レイヤー ArcGIS 製品または学習コンテンツ 作成方法またはガイドページ フィーチャ レイヤー ArcGIS チュートリアルズ データ管理(英語) ArcGIS Online でのデータインポート( CSV 、 GeoJSON 、シェープ ファイルまたはファイル ジオデータベース)の学習用のチュートリアル フィーチャ レイヤー ArcGIS チュートリアルズ 新規データセット作成(英語) ArcGIS for Developer のダッシュボードから、ArcGIS Onlineへ空のフィーチャ レイヤーを定義についての学習用チュートリアル フィーチャ レイヤー ArcGIS Online ホスト フィーチャ レイヤーを公開する フィーチャ レイヤー ArcGIS Enterprise フィーチャレイヤーの作成と共有 フィーチャ レイヤー ArcGIS Pro フィーチャレイヤーの作成と共有 タイル レイヤー ArcGIS Online ファイルからホスト タイル レイヤーの公開 タイル レイヤー ArcGIS Pro ホスト タイル レイヤーの公開 ベクター タイル レイヤー ArcGIS Pro ホスト ベクター タイル レイヤーの公開 シーン レイヤー ArcGIS Online フィーチャ サービスからシーン レイヤ ー を公開す る シーン レイヤー ArcGIS Pro シーン レイヤーの公開 ダイナミック マップ レイヤー ArcMap マップサービスの公開 イメージ レイヤー ArcMap モザイクデータセットを作成する Tips: 開発者向け!レイヤーを扱うときに知りたいこと ここからは、開発時に知っているスムーズに進めることができる実践的な内容を 2 つご紹介します。 レイヤーの種類の確認方法 REST API Service のリファレンス レイヤーの種類の確認方法 ArcGIS Online または ArcGIS Enterprise に作成したレイヤーは、ポータルのアイテムの詳細ページから確認することができます。 アイテムの詳細ページでは、赤枠の部分でレイヤーの種類が確認できます。青枠の部分のどちらかをクリックすると、 ArcGIS REST Services Directory のページが表示され、レイヤー定義を確認することができます。このページでは、対象のフィーチャ レイヤーに対してどのような処理を実行できるか調べることもできます。 ページの一番下には、このフィーチャレイヤーに対して行うことができる操作が並んでいます。例えば “Query” をクリックすると、別ページに移り、クエリを行うためのパラメータを入力して Web ブラウザ上で処理を実行することができます。このときのパラメータの定義方法は REST API に基づくものを入力します。 Feature Layer と Feature Layer (ホスト)の違い アイテム詳細ページから ” ( ホスト) ” 表示となっていないレイヤーは、 サービス化していないため、開発アプリ側で属性情報などの編集を行うことやオフラインで使用するための設定を適用することはできません。このレイヤーは、 マップビューアから地図を作成する過程で“マップメモ“を作成し保存したり、マップビューアへ CSV ファイルをドラッグアンドドロップし、マップを保存すると作成できます。 ” (ホスト)”表示になっている Feature Layer は、 ArcGIS プラットフォームの中でも最も柔軟に利用いただけるデータとなります。Collector for ArcGIS などの ArcGIS Apps で利用するのは( ホスト)となっているレイヤーです。 REST API Service のリファレンス “ ArcGIS の主なレイヤー ” でご紹介しました一覧を、もう一度ご覧ください。 “ REST API Service ”に記述がある名称は、開発者製品でレイヤーを操作する際に使う頻度が高いです。 Feature Service の REST API のリファレンスを見てみましょう。ここには各レイヤーの新機能の概要や、レイヤーに対して行うことができる処理が定義されています。 例えば、フィーチャサービスに対してクエリを実行したい場合、Feature Service の Query についての リファレンスを参照すれば、どのようにリクエストを定義すればよいのか記述されています。 おわりに 今回は、 ArcGIS のレイヤーについて、開発者製品を扱うための概要をお伝えしてきました。 みなさま が普段利用しているレイヤーについて、種別やそのレイヤーでできることをより深く調べることができる足掛かりになればと思います。 最後のトピックで取り上げた、レイヤー種別の判断とリファンスの参照方法は、筆者も開発の際によく利用しています。クエリを実行する際の条件文などは、ArcGIS REST Services Directory で試します。 みなさまの ArcGIS の開発お役に立てれば幸いです。 関連リンク集 ArcGIS 関連ページ ・ ArcGIS for Developers (ESRI ジャパン製品ページ) ・ ArcGIS Online (ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ArcGIS for Developers :Layer コンセプト(英語)
... View more
08-14-2019
08:31 PM
|
1
|
0
|
1673
|
DOC
|
はじめに 2019 年 5 月 22 日 ( 水 ) ~ 24 日 ( 金 ) 、東京ミッドタウン 六本木にて第 15 回 GIS コミュニティフォーラム及びプレフォーラム・セミナーが開催されました! 公開可能なセッションの発表資料は ESRI ジャパンのサポート サイト で公開しております。また、 GeoNet ブログでは開発者向けのセッションで使用したコードなどをご紹介していきます。発表資料や GeoNet 記事、 GitHub へのリンクなどの詳細は 第15 回GIS コミュニティフォーラム開催報告記事 をご覧ください。 この記事では「 ArcGIS でデータサイエンスしよう~ GIS 解析とそのプロセスの新しい共有方法~」のセッションでご紹介した ArcGIS の新しい製品である ArcGIS Notebook Server と、 Notebook Server 上でコーディングした ArcPy と ArcGIS API for Python のデモを解説します。 注意! ArcGIS Notebook Server は現在、国内サポート対象外製品となっています。ただいまサポート検討中です。ご了承ください。 ArcGIS Notebook Server とは ArcGIS Notebook Server は ArcGIS Enterprise のオプショナルサーバー製品で、 GIS を扱ったデータサイエンスを可能にする“基盤“をご提供する製品です。 ArcGIS の各“ Python ”ライブラリの実行環境としてサポートしている“ Jupyter Notebook ”を、 ArcGIS Enterprise のポータル上で操作することを可能にします。 ※ Web GIS は、 ArcGIS Online (クラウド GIS) や ArcGIS Enterprise(オンプレミス)といった ArcGIS 製品で実現できる、「組織内でオンライン マップ(Web マップ)を共有し、さまざまな部門や業務で横断的に活用できる技術」です。詳細は「GIS 基礎解説」を参照してください。 ※ ArcGIS Enterprise のオプショナルサーバーは、より高度な GIS 機能をサーバーベースで利用したい場合に導入していただく製品です。 ArcGIS Notebook Server では次のことが可能です。 Python 実行環境の共有 ・ Web 上で Python コード を実行できる環境を提供する ArcGIS Enterprise のポータル上で解析処理を実行する ・ ArcGIS で公開しているデータに簡単にアクセスして、配信している背景地図を利用したり、 GIS 解析サービスを実行したりできる ・汎用的に使用する Python のライブラリが あらかじめインストールされており、話題の機械学習や深層学習などに必要なライブラリ・パッケージも利用することができる ・ArcPy および ArcGIS API for Python が利用できる(ただし、ArcPyの実行には、有償ライセンスが必要となります) 結果の共有 ・ Python のコードなど実行結果を保存できる“ノートブック”という形式で Python のコードや解析結果を保存・共有できる ArcGIS Notebook Server は、デスクトップ製品で馴染み深い“ ArcPy ”も利用する環境をご提供できるため、例えば ArcGIS デスクトップ製品をインストールしていないユーザーでも、 Web 上で ArcPy を利用した高度な GIS 解析を実行することができます。 セッションでは、 ArcGIS における“共有”をテーマに解説しました。 資料は Esri ジャパンのサポートサイト (要ログイン)にございますので、是非ご覧ください。 ArcPy と ArcGIS API for Python を使って浸水域に位置する避難所を抽出する ここからは、セッションでご紹介したデモについて解説します。 ArcGIS Notebook Server では、デスクトップ製品で高度な GIS 解析を提供する ArcPy と、Web GIS を操作できる ArcGIS API for Python(以下、 Python API )を活用することが可能です。 セッションでは、 その両方と、ArcGIS 以外の汎用 Python ライブラリ を使用して「浸水域に位置する避難所を抽出」し、グラフにしてみました。手法とコードを解説します。 概要 基盤地図情報(国土地理院)で提供されるデータを用いて、避難所ポイントに標高データを付与し、標高別のポイントの割合を求めます。 使用データ ・ 数値標高モデルデータ ( 基盤地図情報(国土地理院)よりダウロード ・ 千葉県千葉市の避難所のデータ ( ESRI ジャパンオープンデータポータル より) 結果 数値標高モデルから作成したラスターと重なる避難所ポイントを標高別に分けてグラフ化しました。 解析方法とコード解説 以下の内容で最終的に標高値毎にグラフで表現できるように複数の GIS 解析を行います。 実際にグラフにするところは Pandas ( データの参照や操作について汎用的に用いられるライブラリ)を使用します。 ArcGIS オープンデータポータルにある千葉県千葉市の避難所のデータの呼び出し(Python API) 数値標高モデルデータをラスターにする(ArcPy) 避難所ポイントのデータに標高データを付与する(ArcPy) サービスの作成と地図への出力(Python API) 解析結果をグラフおよび標高値によるクラス分けをしてグラフで表現する(Pandas) 下準備 今回はシェープファイルからラスターを作成したいので、数値標高モデル( GML )は、同じく基盤地図情報ダウンロードサービスより提供される「基盤地図情報ビューア」を使用してシェープファイル形式に変換します。 解析開始 1. 千葉県千葉市の避難所のデータの呼び出し(Python API) ArcGIS Online 上で ホストされている避難所データを Python API で 呼び出します ※ 。 キーとなるのはアイテム ID と呼ばれる、 Web 上の ArcGIS にあるアイテムを一意に識別するためのランダムな文字列です。 ArcGIS Notebook Server で使用する ArcGIS ノートブックでは、これを UI から選択して入力することができます。 ※ ArcGIS Enterprise の ポータルで ArcGIS Online のデータを参照する設定を行うことにより可能となります。 # Item Added From Toolbar
# Title: 千葉市 避難場所・避難所・広域避難場所・津波避難ビル | Type: Feature Service | Owner: ESRIJ_OpenData
agol_gis = GIS(set_active=False)
chiba_esc_item = agol_gis.content.get("60ef62a433ee4be0b21324c86793e5a8")
chiba_esc_item 2. 数値標高モデルデータをラスターにする(ArcPy) ここでは、 ArcPy で ポイント → ラスター (Point to Raster) ツールを実行します。シェープファイルをラスターのデータソースとして設定します。 ‘ valField ’は、出力ラスターに値を割り当てるために使用するフィールドです。 # arcpyの作業ディレクトリを設定する
env.workspace = myworkspace
# 実行のためのパラメータを設定する
inFeatures ="\\chibademshp\\chibadem.shp"
valField = "dem"
outRaster = myworkspace + "\\chibademp2r"
assignmentType = "MAXIMUM"
priorityField = "dem"
# ポイント->ラスターツール実行
p2r_result = arcpy.PointToRaster_conversion(inFeatures, valField, outRaster,assignmentType, priorityField, 0.00037) 3. 避難所ポイントのデータに標高データを付与する(ArcPy) Python API で取得したポイントの内容を ArcPy で使用できる形に変換して、ポイントデータに標高値を付与します。 抽出値 → ポイント (Extract Values to Points) ツールを実行します。 # フィーチャサービスから、標高値を付加するポイントデータを呼び出しする
baseURL= chiba_esc_item.layers[0].url + '/query'
where = '1=1'
query = "?where={}&returnGeometry=true&outFields=*&f=json".format(where)
fsURL = baseURL + query
pointfs = arcpy.FeatureSet()
pointfs.load(fsURL)
#抽出値 → ポイント (Extract Values to Points)ツールを実行します。
#引数の設定
inPointFeatures = pointfs #避難所のポイントデータ
inRaster = "chibademp2r" #シェープファイルから作成したラスターデータ
outPointFeatures =str(add_dem2esc_gdb) + '/add_esc2dem_point' # 解析結果出力先のファイルジオデータベース
# 実行
exreslit = ExtractValuesToPoints(pointfs, inRaster, outPointFeatures)
4. サービスの作成と地図への出力(Python API) これでポイントデータに標高値が付与できましたので、共有できるデータにするためにホスト フィーチャ サービスとして公開します。先ほど解析結果として出力したファイル ジオデータベースを、 zip 形式 にしてサーバーへアップロードすることで、サービスとして内容を公開することができます。 # ファイルジオデータベースをzipにする
compFile = zipfile.ZipFile('./add_esc2dem_point.zip', 'w', zipfile.ZIP_STORED)
files = glob.glob('./add_esc2dem.gdb/*')
for file in files:
compFile.write(file)
compFile.close()
# ファイルジオデータベースの内容をホストフィーチャサービスとして公開する
add_dem2esc_point_item = gis.content.add({ 'type': 'File Geodatabase'},data=compFile.filename)
add_escapedem_Service = add_dem2esc_point_item.publish() 5. 解析結果をグラフおよび標高値によるクラス分けをしてグラフで表現する 公開したフィーチャサービスの属性情報の内容を読み込んでグラフを作成します。 Python API は属性情報に対する検索結果を DataFlame としてシームレスに扱えるようになっています。 #属性情報をクエリで取得する
analysiseddata = add_escapedem_Service.layers[0].query(as_df=True)
#取得した属性情報のうち、標高値が定義されているもののみを取り出す
rastervalu = analysiseddata[analysiseddata['rastervalu'] > 1]
rastervalu['rastervalu']
# 標高別のクラス分けを適用する
cutedpd = pd.cut(rastervalu['rastervalu'], bins=[0,1,5,10,15,20,50]).value_counts()
cutedpd.index = ["1m=<5m","20m=<50m","15m=<20m","5m=<10m","10m=<15m","<1m"]
#円グラフを描画するための設定
data=cutedpd.values #描画するデータの指定
label=cutedpd.index #凡例の作成
#各種パラメータ
plt.style.use('ggplot')
plt.rcParams.update({'font.size':15})
size=(9,5)
col=cm.cool(np.arange(len(data))/float(len(data)))
#円グラフを描画する
plt.figure(figsize=size,dpi=100)
plt.pie(data,colors=col,counterclock=False,startangle=90,autopct=lambda p:'{:.1f}%'.format(p) if p>=5 else '')
plt.subplots_adjust(left=0,right=0.7)
plt.legend(label,fancybox=True,loc='center left',bbox_to_anchor=(0.9,0.5))
plt.axis('equal')
plt.title('rastervalu') 全体のコードは ESRIジャパン GitHub をご覧ください。 おわりに ArcGIS Notebook Server は、この記事でご紹介したような解析プロセスも、まるごとメンバーと共有することができます。結果だけでなくプロセスも共有できるというのは、解析の再現や知見の共有という点において大きな魅力のひとつです。 何か少しコーディングしてみたい!といった場面でも、開発環境のセットアップで躓いたことがある方もいらっしゃるのではないでしょうか。 ArcGIS Notebook Server は、 GIS データに触れることや少しだけコーディングしてみたいといったことの敷居を低くしてくれました。 高度な GIS 解析をあなたのデータサイエンスに取り入れる準備をして期待していてください! 関連リンク集 ArcGIS 関連ページ ・ ArcGIS API for Python (ESRI ジャパン製品ページ) ・ ArcGIS for Developers (ESRI ジャパン製品ページ) ・ ArcGIS Online (ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ ESRI ジャパン オープンデータポータル ・ ArcGIS API for Python (米国Esri ページ(英語)) シリーズブログ 関連ページ ・ ArcGIS API for Python を使ってみよう:できることや使いどころ ・ ArcGIS API for Python を使ってみよう ① :Jupyter Notebook で使うための環境構築 ・ ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1) ・ ArcGIS API for Python を使ってみよう ② : ローカル端末から ArcGIS Online へデータを作成してみよう ・ ArcGIS API for Python を使ってみよう ③ :ArcGIS Online のアイテムを検索してみよう ・ ArcGIS API for Python を使ってみよう ④ :ArcGIS Online 上のアイテムを削除してみよう ・ ArcGIS API for Python を使ってみよう ⑤ :Web マップを作成してみよう ・ ArcGIS API for Python を使ってみよう ⑥ :解析ツールを使ってみよう ・ ArcGIS API for Python を使ってみよう ⑦: ユーザーやアイテムの管理作業を一括で処理してみよう : ArcGIS 開発リソース集 ・ ArcGIS for API for Python の コンセプト ・ インストールガイド ・ ArcGIS for API for Python の ための 基礎環境:conda 入門
... View more
07-05-2019
02:04 AM
|
1
|
0
|
714
|
DOC
|
はじめに ArcGIS for Developers には、 ArcGIS の開発者がアプリやデータを簡単に作成するために、いくつかの機能やツールが備わっています。 今回はその中の 1 つ、 ArcGIS Online が配信する ベクター タイル 形式の背景地図 を、オリジナルの配色にカスタムできるツール( ArcGIS Vector Tile Style Editor )をご紹介します。このツールで作成した背景地図は、 ArcGIS の 開発者製品 、および対応する ArcGIS Apps から利用可能です。記事の最後では、 ArcGIS API for JavaScript のコードから Web アプリに反映してみます。 このツールは ArcGIS Online のアカウントをお持ちの方なら、どなたでもご利用いただけます。まだお持ちでない方は、ArcGIS の開発者向けサービスである、ArcGIS for Developers の 無償アカウントを作成 してトライしてみましょう! ArcGIS Vector Tile Style Editor でランダムに配色を選択できる機能を実行しています。 ベクター タイル形式の背景地図とは ベクター タイル形式の背景地図とは、地図上に示してある路線や建物など地物の情報が、ポイントやポリライン、ポリゴンを表示するような、図形( ベクター )形式のデータで構成・表現された背景地図です。 対照的なものとして、 ArcGIS Online で配信している“海洋図“や“ラベル付き衛星画像“の背景地図は、画像(ラスター)形式で構成・表現されています。 ベクター タイル形式は画像ではないため、どこまで詳細にズームを行っても解像度に限界がなくきれいに表示されます。地図の表示ラベルが地図の回転に合わせて読みやすい位置に回転することもベクター タイル形式の利点です。ベクター タイル形式は、地物を表すデータと 表示スタイルが分かれているため、例えば道路や河川といったデータ毎の配色をカスタムすることが可能です。 ベクター タイル形式を詳しく知りたい場合は、 ESRI ジャパンが運営する ArcGIS ブログ の「 ベクター タイル大解剖! 基礎編 」の記事も是非ご参照ください。 ArcGIS Vector Tile Style Editor(ベータ版) を起動する ご注意! ご紹介する ArcGIS Vector Tile Style Editor は、E SRI ジャパン国内サポート対象外のツールとなります。 ArcGIS for Developers では、ベクター タイルをカスタムするツールを「 ArcGIS Vector Tile Style Editor 」として公開しています。 このツールは、ブラウザベースのツールです。ツール内の表示などはすべて英語表記となっています。ツールはベータ版です。 ArcGIS for Developers のサイトから以下の手順で起動します。 ArcGIS for Developers へログインする 右上のログインユーザーが表示されている隣のアイコン(App Launcher)から「Developers」を選択する 左上の「ArcGIS for Developers」が表示されている隣の「Dashboard」を選択する 「New BaseMap Style」のボタンを選択する ArcGIS Vector Tile Style Editorが開くので「Get Start」を選択する ベクター タイル マップをカスタムしてみよう 今回は比較的簡単に編集できる方法で、 3 ステップでカスタムした背景地図を作成します。 ベースとなるベクター タイル マップを選択する 水域と境界、建物の色を変更する 保存する 1. ベースとなるベクター タイル マップを選択する 「Get Start」のボタンから始めると、次の画像のような、ベースとなるベクター タイルの背景地図を選択する画面が表示されます。ベースとするマップを選び「 Select Style 」ボタンを選択します。 今回は、 Popular の「 Dark Gray Canvas 」を選択。 2.水域と境界、建物の色を変更する 左側の“ペン“( Quick Edit )のボタンを選択して、水域( Water )、境界( Boundaries )、建物( Buildings )のカラーをクリックしてカラー ピッカーを表示します。任意のカラーを選択できますし、カラー コードを入力し指定することもできます。 ベクタータイルには、地物を表すためのデータが多く含まれています。例えば、一口に水域といっても、海・河川・滝・ダムなどが挙げられます。“ Quick Edit ”では、それらを大きなカテゴリで分けて、まとめて表現を変更できるようになっています。 3.保存する 左側の“フロッピーディスク”( Save As )のボタンを選択して、任意のタイトルを付けて保存します。 保存した内容は ArcGIS Online のアイテムから確認することができますし、内容をマップ ビューアーから確認することもできます。 ArcGIS Online の「マイコンテンツ」から作成したアイテムを確認します。 ArcGIS Vector Tile Style Editor 機能紹介 今回は簡単にできる手順でご紹介しましたが、水域や路線データについても多数のデータを保持しているので、より詳細に配色やラベルを編集することができます。 主な機能が 7 つありますので、ぜひ使ってみましょう。 No. 機能名 機能内容 ① Select Style ベースとなるベクタータイル形式の背景地図を選択する。 ② Quick Edit 代表的なデータに対して比較的簡単に配色やラベルをカスタムする。 次の 5 つのデータにスタイルを設定する。ラベルのフォント(英語のみ)や路線の幅を調節できる。 陸地(Land)/水域(Water)/路線(Roads)/境界(Boundaries)/建物(Buildings)/公園などの緑地(Nature) ③ Edit Layer Style 詳細にスタイルを編集する。ベクター タイルが持つ路線や水域の詳細データに対して、配色やフォントを設定する。 ④ Edit By Color 使用している配色を編集する。現在使用している配色からデータを検索できる。 ⑤ Edit Icons and Patterns アイコンを変更する。ただし、最初にアイコンを持っているベースマップを選択した場合に限る。 ⑥ Save As スタイルを JSON ファイルとして端末に保存する。 ※この機能のアイコンは、保存後に同じアイコンがもう一つ“ Save ”機能として 追加される。 現在のデータに対する上書き保存が有効となる ⑦ Download current style スタイルを JSON ファイルとして端末に保存する。 応用: ArcGIS API for JavaScript で活用する 作成したベクター タイル マップのスタイル(JSON形式)を、 ArcGIS API for JavaScript (以下、 JavaScript API )で活用します。 JavaScript API ではスタイルは、2 つの活用方法があります。 開発した Web アプリから、構築した Web サーバーに スタイルファイルを配置して、コーディングを行って内容を参照して使用する ArcGIS Online のアイテムとして作成して、JavaScript API から参照して使用する スタイルファイルは、 “Download current style” の機能から JSON ファイル(*.json)として出力することができます。(ArcGIS Vector Tile Style Editor 機能紹介 参照) 今回は、JavaScript API のサンプルが実行可能で、且つコード内容を直接編集して反映できる“ Sandbox “というツールで、作成した スタイル ファイルの内容を反映してみます。 Sandbox では JavaScript API のサンプルを実行できるようになっていて、左側に記述したコードを、右上の「 Refresh 」ボタンを選択して反映させ、表現を確認することができます。 今回使用した Sandbox は、あらかじめ ベクター タイル レイヤーの表示を確認できるサンプル となっています。” VectorTileLayer “のオブジェクトを定義する内容に” style “の項目がありますので、ここに出力したスタイルファイルの内容を記述します。 スタイルをコーディングで適用できることは、開発者なら興味深い部分もあるかもしれません。 ArcGIS Online へのアイテムを作成して利用することにもメリットがあります。大きな部分としては、Web アプリのためのサーバーを構築する必要がなく、カスタムした背景地図が使用できることです。コーディングの面でもメリットがあります。ArcGIS Online に作成したアイテムには、 アイテム ID と呼ばれる個々のデータを識別できる一意の ID が定義されます。この ID を使用してコーディングからデータを参照することができるので、JSON の細かいテキスト データに触れることなく扱うことができます。 ArcGIS Online へのアイテム作成は、アイテムのサイズ(データ ストレージ量)に応じて サービス クレジット がかかりますが、カスタムしたベクター タイル マップのサイズにかかるサービス クレジットはごくわずかです。 ESRI が提供する多彩なベクター タイル形式の背景地図 この記事では、自分の好きな配色でカスタムする方法をお伝えしてきましたが、ESRI でも配色をカスタムしたベクター タイル マップ を配信しています。 Vector Basemap Showcase では、ESRI が配信するベクター タイル マップをストーリーマップでみることができます。きれいに配色された地図に加えて、 道路番号を表示するためのアイコンや文字のフォントを変更したマップがあります。このカスタムも、 今回ご紹介してきたツール(Edit Icons and Patterns の機能 )でカスタムすることが可能です。 おわりに ベクター タイル形式の背景地図は、地図が持つ詳細なデータまで自分の配色にカスタムすることが可能です。 また、地図は実に多くのデータで構成されていることが、ツールの使用を通して体感することができます。 ぜひ、あなただけの背景地図を作成して ArcGIS Apps や ArcGIS の開発者製品を利用した Web / ネイティブ アプリ で活用してみましょう! 関連リンク集 ArcGIS 関連ページ ・ Design custom basemaps with the new ArcGIS Vector Tile Style Editor ( ESRI ArcGIS Blog ( 英語 ) ) ・ GIS 基礎解説 ・ ArcGIS ブログ:ベクタータイル大解剖! 基礎編 ・ ArcGIS API for JavaScript ( ESRI ジャパン製品ページ) ・ ArcGIS for Developers ( ESRI ジャパン製品ページ) ・ ArcGIS Online ( ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ ArcGIS API for JavaScript (米国 Esri ページ(英語)) JavaScript 関連ブログ ・ はじめての Web マッピングアプリケーション開発 シリーズ ・ Web アプリ開発のための開発環境を構築してみた ・ Web マッピング アプリ開発に便利なツールをご紹介:~ Visual Studio Code で開発環境を構築~
... View more
04-02-2019
08:55 PM
|
1
|
0
|
1289
|
DOC
|
はじめに この記事は「 Pro SDK を使用した ArcGIS Pro の拡張」シリーズの第 5 弾の記事です。 当ブログ シリーズでは、ArcGIS Pro SDK (以下、 Pro SDK) を使用した ArcGIS Pro の拡張方法をご紹介しています。 前回までの記事で、このシリーズの目的である ArcGIS Pro の拡張アドインを作成する流れまでをご紹介してきました。 第 5 弾の今回は最終回として 構成管理画面をカスタマイズする方法をご紹介します。構成管理画面とは、 ArcGIS Pro を起動してプロジェクトを選択するまでに表示される画面のことを指します。 構成管理画面の開発と開発ステップ 構成管理画面にはスプラッシュ スクリーン画面とプロジェクト選択画面の 2 種類があります。 Visual Studio のプロジェクトの新規作成画面で、 [ArcGIS Pro 構成管理 ] を選択すると、アドインを作成した時と同様に基本的なプロジェクトができあがります。 何も実装しないままでも、 Visual Studio のプロジェクトを実行すると ArcGIS Pro が起動し、デフォルトでカスタマイズされた構成管理画面が表示されます。 今回は、 Pro SDK でカスタマイズ可能な 2 つの画面を、次のようにカスタマイズします。また、カスタマイズした画面を、他のマシンにインストールされた ArcGIS Pro に適用する方法も最後にご紹介します。 スプラッシュ スクリーン画面:タイトル文字列と画像の変更 プロジェクト選択画面:既存のプロジェクト数をカウントして画面に表示する (応用):構成管理画面を適用する ---------------------------------------------- Tips:構成管理画面をカスタマイズするメリットとケース プロジェクトを選択するまでの操作性をより有用なものにすることができます。例えば、たくさんあるプロジェクトをより見やすくしたり、ユーザーに特定のプロジェクトのみを選択させるような画面を構成したりすることでユーザーの利便性が図れます。ケースとして、ArcGIS Pro を包含した企業独自のブランド アプリとして販売するといったことに活用できます。 ---------------------------------------------- 実装解説 (準備) [ArcGIS Pro 構成管理 ] プロジェクトが作成されると、以下のようなファイル構成が出来上がります。 更新するファイルはそれぞれ次のファイルです。 スプラッシュ スクリーン画面 SplashScreen.xaml プロジェクト選択画面 StartPage.xaml StartPageViewModel.cs (プロジェクト数をカウントする) スプラッシュ スクリーン画面 任意の画像を使用して、表示画面を変更するためには以下の手順で行います。 使用する画像を Visual Studio に登録する コードを変更する 使用する画像を Visual Studio に登録する Visual Studio では、使用する任意の画像をプロジェクト内のフォルダに格納しただけでは、開発環境に反映することができません。 [ ソリューション エクスプローラー ] の Image フォルダを選択し、既存の項目から指定の画像を読み込みます。 また読み込んだ画像は [ プロパティ ] から次の設定を行います。 ビルドアクション: Resource 出力ディレクトリにコピー:コピーしない コードを変更する スプラッシュ スクリーンの表示内容は、 SplashScreen.xaml ファイルに定義されており、実装箇所は以下のコードです。 既存のコードを変更して、画像の指定と文字列の変更を実装しています。 <既存のコード > <Grid>
<Border BorderBrush="Black" BorderThickness="3" Margin="10">
<TextBlockStyle="{DynamicResource Esri_TextBlockDialogHeader}"
FontSize="50"
HorizontalAlignment="Center"
VerticalAlignment="Center">
ProConfiguration1
</TextBlock>
</Border>
</Grid> <実装後のコード > <Grid>
<Image Source="../Images/myarcgispro.png" HorizontalAlignment="Center" ></Image>
<TextBlock FontStyle="Normal"
FontSize="60"
Foreground="White"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Margin="10">
My ArcGIS Pro
</TextBlock>
</Grid> Image タグを追加して、指定の画像を設定し、 TextBlock タグで文字の定義に加えて文字サイズや文字色を変更しています。 Border タグをなくすことで画面いっぱいの画像を表示することができます。 プロジェクトを実行すると、指定した画像を表示することができます。 ※今回は NASA が公開している画像を使用しました。 プロジェクト選択画面 既存プロジェクト数をカウントして画面に表示するためには、以下の手順で実装します。 計算結果をバインドする(返す)項目を定義する(StartPage.xaml) プロジェクト数をカウントする(StartPageViewModel.cs) 計算結果をバインドする(返す)項目を定義する( StartPage.xaml ) 画面に表示されている “ Select a Project to start ArcGIS Pro ” は文字列でハードコーディングされています。こちらを変更します。 <既存のコード > <TextBlock Grid.Row="0" Text="Select a Project to start ArcGIS Pro"Style="{DynamicResource Esri_TextBlockH1}" VerticalAlignment="Center" Margin="10"></TextBlock>
<実装後のコード > <TextBlock Grid.Row="0" Text="{Binding ProProjectCount, StringFormat=選択可能なプロジェクト: {0} }"Style="{DynamicResource Esri_TextBlockH1}" VerticalAlignment="Center" Margin="10"></TextBlock> “ Text ” の属性値を実装しています。 “ ProProjectCount ” は、次に実装するプロパティ名です。“ StringFormat ” に定型文と、“ {} ” 内には、 Binding で指定した プロパティ の戻り値が入るようにしています。 ※ {0} のゼロはデフォルト値ではありません。 プロジェクト数をカウントする( StartPageViewModel.cs ) StartPageViewModel.cs ファイルに次の処理を追加で実装します。 プロジェクト数をカウントする処理を含めた “プロパティ” を定義します。 // プロジェクト数のカウント プロパティ
public int ProProjectCount
{
get
{
// プロジェクト数をカウントする
var fileInfos = Project.GetRecentProjects().Select(f => new FileInfo(f));
var projectCollection = new Collection<FileInfo>(fileInfos.ToList());
return projectCollection.Count;
}
} 画面( StartPage.xaml )に定義した “ProProjectCount” の内容を処理します。 Pro SDK 側で、作成したプロジェクト ファイルの一覧を取得することができるので、これを利用してプロジェクト数をカウントし画面へ返却します。 ※画像の変更はスプラッシュ スクリーン画面を実装する手順と同様に違う画像を登録・指定しています。 全体のコードは Esri Japan GitHub をご覧ください。 (応用)管理構成画面を適用する 作成した管理構成画面を適用する手順は次の通りです。 *.proConfigX ファイルを作成する 構成をインストールする 手順 1 で作成したファイルを適用した ArcGIS Pro のショートカットを作成する *.proConfigX ファイルを作成する proConfigX ファイルは Visual Studio でプロジェクトをはじめてビルドした際に作成されます。プロジェクトをビルドすると、ビルド プロパティで設定されているフォルダに出力されます。 【例】 ProConfiguration1.proConfigX 構成をインストールする *.proConfigX ファイルをダブルクリックして、インストール画面からインストールします。 手順 1 で作成したファイルを適用した ArcGIS Pro のショートカットを作成する インストール済みの ArcGIS Pro の実行ファイル(デフォルトのインストール先は「 C:\Program Files\ArcGIS\Pro\bin\ArcGISPro.exe 」)のショートカットを新しく作成して、 [ ショートカット ] タブの [ リンク先 (I)] に次のように入力して、引数を設定します。 /config:< *.proConfigX ファイル名 > 【例】 /config:ProConfiguration1 適用後、ショートカットから ArcGIS Pro を実行すると作成した構成管理画面が表示されます。 ※このショートカット以外から ArcGIS Pro を起動した場合は、通常の起動画面となります。 さいごに 今回で、「 Pro SDK を使用した ArcGIS Pro の拡張」シリーズ ブログは最終回です。 これからも ArcGIS Pro SDK にはアップデートによりさまざまな機能が追加される予定です。その都度 GeoNet ブログでご紹介する予定ですので、ご期待ください! ■関連リンク ・ArcGIS Pro SDK ・ Esri 社 Web サイト: ・ ArcGIS Pro SDK ・ ArcGIS Pro SDK コンセプト(GitHub ) ・ ArcGIS Pro SDK サンプル集(GitHub ) ・ ArcGIS Pro 2.2 API リファレンス ・ 「 Pro SDK を使用した ArcGIS Pro の拡張」シリーズ ブログ : ・ Pro SDK を使用した ArcGIS Pro の拡張① :ArcGIS Pro SDK とは? ・ Pro SDK を使用した ArcGIS Pro の拡張② :環境構築 ・ Pro SDK を使用した ArcGIS Pro の拡張③ :アドインプロジェクトの構成 ・ Pro SDK を使用した ArcGIS Pro の拡張④ :アドインの開発 ・ Pro SDK を使用した ArcGIS Pro の拡張⑤:管理構成画面のカスタマイズ
... View more
10-28-2018
09:49 PM
|
1
|
0
|
650
|
DOC
|
はじめに この記事は、「 ArcGIS API for Python を使ってみよう 」シリーズその⑤の記事です。 当シリーズでは、 ArcGIS API for Python (以下、 Python API )の使い方などをご紹介しています。 前回までの記事では、ArcGIS Online へデータを作成・検索・削除する方法についてご紹介してきました。今回は、作成したデータや検索したデータを使用して Web マップを作成します。 Web マップとは、 ArcGIS Online に作成するオリジナルの主題図で、一度作成すればだれとでも共有することができます。仕組みなど詳しい構成は、 Web マップ の作成をご覧ください。 Tips: 国内サポート開始しました! 10/15 (月曜日)に ArcGIS API for Python の国内サポートを開始しました。 ESRIジャパンのサポートサービスでは、各 ArcGIS 製品の最新バージョンの無償提供や Q&A サポート、および開発者向けの Q&A サービスを有償にてご提供します。開発者サポートサービスをご契約いただくと、 開発ヘルプに記載されている内容相当の解説、ESRI ジャパン サポートページ内の FAQ ・サンプルコードの紹介を行います。 詳しい内容は製品サポートサービスおよび開発者サポートをご覧ください。 中心地とズームレベルを指定し、任意のレイヤーを追加した Web マップを作成する 開発環境としてサポートしている Jupyter Notebook および Jupyter Lab ( Jupyter Lab は Python API バージョン 1.5.0 以上が必要)からは、 ArcGIS が配信する背景地図を表示して、対話的に内容を確認することができます。また、表示している範囲やズーム レベルのまま、 Web マップを作成することができます。 前回まででご紹介したデータの検索方法を応用して、次の手順で Web マップを作成します。 ESRI ジャパン オープンデータポータル で公開しているフィーチャ サービスを検索する 中心地とズームレベルを指定して地図を表示する(Jupyter Notebook 上) Web マップとして保存する (応用):Web マップの定義を更新して、ポリゴンの透過設定とシンボルを変更する 作成した Web マップは、 ArcGIS Online のマップビューワーから確認することができます。 実行コードと解説 実行するコードを解説していきます。 ここで作成する Web マップには、 ESRI ジャパン オープンデータ ポータル に公開されている、富士山に関するデータを使用します。 ArcGIS オープンデータ で公開しているフィーチャ サービスを検索する 前回までのおさらいと応用として、 ESRI ジャパン オープンデータ ポータル に公開されているデータを検索します。 # 静岡県:静岡県-行政界(h23)を検索する:ESRIジャパン オープンデータから
shizuokaPolygList = gis.content.search("title:静岡県 行政界(H23) AND owner:ESRIJ_OpenData","Feature Layer", outside_org=True)
shizuokaPolygList[0]
# 富士山のビューポイントを検索する:ESRIジャパン オープンデータから
MtFujiViewSearchList = gis.content.search("title:静岡県 富士山ビューポイント AND owner:ESRIJ_OpenData","Feature Layer", outside_org=True)
MtFujiViewSearchList[0] 検索結果は、 1 つだけでもリスト形式で取得します。今回は 2 つ検索しますが、内容を見て一番先頭のデータを指定しています。 中心地とズームレベルを指定して地図を表示する "gis" オブジェクトは、ユーザーの認証情報を保持しているオブジェクトですが、ここから MapView (FujiMap) を取得します。 Location と zoomlevel それぞれに中心地とズームレベルを引数として設定します。 今回は、背景地図として衛星画像( satellite )をマップオブジェクトの basemap に指定しました。他にも ArcGIS Online で表示できる背景地図を指定することができます。 # 背景地図の表示
# 中心地名を第一引数に設定する(駅や有名な地名を文字列で入力できる。住所もOK)
FujiMap = gis.map(location='富士山', zoomlevel=10)
# 設定するベースマップを定義する:FujiMap.basemaps を実行すると、背景地図一覧を取得できる
FujiMap.basemap='satellite'
FujiMap 最後にコーディングした ” FujiMap” のところで、 Jupyter Notebook に指定の地図を表示することができます。 後にフィーチャ レイヤーを追加すると、ここで表示した地図にデータを重ねることができます。 検索したデータを追加するためには、 add_layer() メソッドを使用します。 # 静岡県 境界地ポリゴンの追加
FujiMap.add_layer(shizuokaPolygList[0]) Web マップとして保存する Jupyter Notebook 上に表示した地図をそのまま Web マップとして ArcGIS Online へアイテム登録します。 辞書型( dict )のオブジェクトにタイトルやスニペット(説明文)タグを定義します。 ※extentは、Jupyter Noteboook 上の地図を一回以上動作させた場合に取得できます。 # タイトルなどを定義する
web_map_properties = {'title':'富士山 ビューポイント マップ',
'snippet':' Python API による富士山ビュースポット Web マップ',
'tags':'test',
'extent':FujiMap.extent
}
web_map_properties
保存は save() メソッドで行います。 # 保存する:save()
newWebMap = FujiMap.save(item_properties=web_map_properties) これで、 Web マップの完成です。 ArcGIS Online のマップ ビューアーから確認することができます。 (応用) Web マップの定義を更新してポリゴンの透過設定とシンボルを変更する 静岡県のポリゴンの色とビューポイントのアイコンを変更します。 ポリゴンの色や透過度、シンボルの変更を行う一番簡単な方法は、今回使用したフィーチャ レイヤーの定義を変更することですが、自分自身が所有するデータではない場合は変更できません。 そこで、 Web マップの定義を変更することにします。 Web マップのデータも中身は JSON となっており、 Web マップの背景地図や包含するレイヤーの情報が定義されています。 データを含んだ Web マップは大きく分けて 2 層構造になっています。 今回コーディングした " FujiMap" の MapView オブジェクトと、そこから取得できる Data の部分です。 MapView オブジェクトは、 Web マップ自体のタイトルやアイテム ID などを定義しています。 Data の部分には、 Web マップに追加したレイヤー情報が定義されています。レイヤー情報には、この Web マップ上でレイヤーをどのように表示するかの設定( drawingInfo / renderder )を行うことができます。 Data 部分を取得する 先ほど作成した Web マップのオブジェクトから取得します。 # レイヤーの定義を取得する
LayerData = newWebMap.get_data() 静岡県のポリゴンのデータを透過する "operationalLayers " の項目に、追加したレイヤーが定義されています。今回は 2 つあり、 1 つめ (0 番目 ) が静岡県のポリゴン レイヤーです。これの透過度を変更するには、 " opacity" に値を設定します。( 1 を基準とした % ) # 静岡県境界のポリゴンの色を薄めにする
LayerData['operationalLayers'][0]['opacity']=0.25 シンボルを変更する シンボルを表すのは次の部分です。シンボルは ArcGIS Online にあらかじめ定義済みのものを指定します。 ( シンボルのパスなどは、ブラウザの開発者ツールから取得できます ) # ビューポイントのアイコンを変更する
customSymbol ={
"angle": 0,
"xoffset": 0,
"yoffset": 0,
"type": "esriPMS",
"url": "http://static.arcgis.com/images/Symbols/PeoplePlaces/Clue.png",
"contentType": "image/png",
"width": 39.75,
"height": 39.75
}
シンボルをビューポイントのレイヤーの定義に追加します。このレイヤーの 2 つめ (1 番目 ) のオブジェクトに追加します。 "drawingInfo" の項目は、すでに定義済みの場合は、存在するものに対して変更します。今回は存在しないので、定義を追加します。 LayerData['operationalLayers'][1]['layerDefinition']['drawingInfo'] = {
"renderer": {
"type": "simple",
"label": "",
"description": "",
"symbol": customSymbol
}
} 定義を保存する 最後は、 JSON のモジュールを使用して引数を設定し、マップ オブジェクトに対して更新( update )します。 import json
newWebMap.update(data=json.dumps(LayerData))
newWebMap 全体のコードは ESRIジャパン GitHub をご覧ください。 ぜひ、実践してみましょう! ESRI ジャパン GitHub では、今回取り扱ったデータ以外のサンプルも載せています。 次回は、 ArcGIS Online の解析を実行する方法をご紹介予定です。お楽しみに! 関連リンク集 ArcGIS 関連ページ ・ ArcGIS API for Python (ESRI ジャパン製品ページ) ・ ArcGIS for Developers (ESRI ジャパン製品ページ) ・ ArcGIS Online (ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ ESRI ジャパン オープンデータポータル ・ ArcGIS API for Python (米国Esri ページ(英語)) シリーズブログ 関連ページ ・ ArcGIS API for Python を使ってみよう:できることや使いどころ ・ ArcGIS API for Python を使ってみよう ① :Jupyter Notebook で使うための環境構築 ・ ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1) ・ ArcGIS API for Python を使ってみよう ② : ローカル端末から ArcGIS Online へデータを作成してみよう ・ ArcGIS API for Python を使ってみよう ③ :ArcGIS Online のアイテムを検索してみよう ・ ArcGIS API for Python を使ってみよう ④ :ArcGIS Online 上のアイテムを削除してみよう ・ ArcGIS API for Python を使ってみよう ⑤ :Web マップを作成してみよう ・ ArcGIS API for Python を使ってみよう ⑥ :解析ツールを使ってみよう ArcGIS 開発リソース集 ・ ArcGIS for API for Python の コンセプト ・ インストールガイド ・ ArcGIS for API for Python の ための 基礎環境:conda 入門
... View more
10-22-2018
12:02 AM
|
1
|
0
|
2388
|
DOC
|
はじめに 「 ArcGIS API for Python を使ってみよう 」シリーズブログでは、ArcGIS API for Python (以下、 Python API )の機能などをご紹介しています。 環境構築の記事では Anaconda という Python のパッケージ管理システムを使った環境構築方法をご紹介しました。 この記事では、ArcGIS Pro ( ArcGIS のデスクトップ製品)を使った環境構築方法をご紹介します。 2020 年 5 月 25 日追記 ArcGIS for Developers 開発リソース集にて環境構築の方法を詳しくご紹介しています。最新バージョンのインストール方法等は ArcGIS for Developers 開発リソース集の ArcGIS API for Python のインストールガイドのページをご参照ください。 ArcGIS Pro で環境構築を行うメリット 次の 2 つのメリットが挙げられます。 ArcGIS Pro にはすでに Anaconda の環境がセットアップされている( Anaconda のインストールが不要) ArcPy と連携できる Tips:ArcPy とは? ArcGIS 上で様々な空間演算ができる Python ライブラリです。 Python APIは基本的に Web GIS に対して処理を実行するのに対して、ArcPy はローカル環境に存在する地理空間データに対して処理を実行します。 ArcPy は ArcGIS Pro に付属する Python ライブラリのため、パッケージ管理システム(Anaconda や pipなど)でインストールすることはできません。 ArcGIS Pro と Python コマンドプロンプトを使用した環境構築方法 それでは、環境構築方法に移っていきます。 ArcGIS Pro 2.1 には、デフォルトで旧バージョン( 1.2.5 )の Python API がインストールされています。 そのため、 ArcGIS Pro の Python パッケージマネージャーから現在の Python API のバージョンを確認 Python コマンドプロンプトを使用して Python API のバージョンをアップデート (再度、手順1に戻る) という 2 つの手順となります。 1.ArcGIS Pro の Python パッケージマネージャーから現在の Python API のバージョンを確認 ArcGIS Pro を起動したら、画面左下の [ArcGIS Pro について ] ボタンを選択します。 左のメニューから [Python] を選択して「 Python パッケージマネージャー」を表示します。 画面中ごろの「インストール済みパッケージ」が選択されており、インストールされたパッケージの中にある [arcgis] という名前のパッケージが Python API のライブラリです。ここでバージョンの確認ができます。 デフォルトのバージョンは 1.2.5 です。 2.Python コマンドプロンプトを使用して Python API のバージョンをアップデート Python API のバージョンを最新にしましょう。 「 Python コマンドプロンプト」は、 Windows のメニューから次の順番で選択して起動します。 [Windows メニュー ] > [ArcGIS] > [Python コマンドプロンプト ] 「 Python コマンドプロンプト」を起動したら、以下コマンドを入力し [Enter] キーで実行します。 conda upgrade -c esri --no-pin arcgis 続けるかどうか 「Proceed(/n)?」 の表示がでたら ”y “ を入力して実行します。 Tips:コマンド解説 アップデートするライブラリは Web 上の Anaconda が管理しています。 「-c esri」はその Anaconda 上のチャネルを指定しています(”esri” というチャネルが登録されています) 「--no-pin arcgis」は、インストールする端末の conda 環境を保ったまま、arcgis(Python API)をアップデートするための設定です。 ※Python API のバージョンアップと、Anaconda と Python APIのバージョンの依存関係によって、コマンドが変更される可能性があります。 参考サイト:conda upgradeオプション -How to pin Conda- これで、エラーなく処理が終われば環境構築の完了です。 最後に Python パッケージマネージャーから結果をみてみましょう。(2018年7月11日現在、最新バージョンは 1.4.2 です) 注意 Python API のバージョンダウンは行えませんので最新バージョンを使用してください。 “CondaIOError”が表示された場合は、インストール先の権限不足が原因である可能性があるので、Windows Explorer で ArcGIS Pro のインストールディレクトリの次のフォルダに実行者のセキュリティ権限を与えます。 【例】C:\Program Files\ArcGIS\Pro\bin\Python おまけ: Jupyter Notebook で ArcPy を利用する Jupyter Notebook は 「 Python コマンドプロンプト」と同じくWindowsのメニューから起動できます。 [Windows メニュー ] > [ArcGIS] > [Jupyter Notebook ] Tips :便利なコマンド引数(筆者談) 「Python コマンドプロンプトからも起動可能です。その場合「jupyter notebook <ディレクトのパス>」 を指定することで、任意のフォルダ配下を Jupyter Notebook のホームディレクトリに設定することができます。 デフォルトのホームディレクトリは、おおよそ各ユーザーフォルダの配下となります。 新しいノートブックを作成して開き、 ArcPy を使えるようにする以下のコマンドを実行します。 import arcpy
# ArcPy を使用して 'Buffer_analysis' ジオプロセシング ツールの引数についてのヘルプを表示します。
print(arcpy.Usage("Buffer_analysis")) 参考サイト:指定したジオプロセシングツールの使い方を表示する “import arcpy“ のコマンドを実行するだけでも、セル左側の [ ] 内に数字が表示されたら 、処理成功です。 おわりに ArcGIS Pro のバージョンがアップデートされるなど、さらに良い環境構築方法が見つかりましたら、またお知らせしていきます~ 関連リンク集 ArcGIS 関連ページ ・ ArcGIS API for Python (ESRI ジャパン製品ページ) ・ ArcGIS for Developers (ESRI ジャパン製品ページ) ・ ArcGIS Online (ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ ESRI ジャパン オープンデータポータル ・ ArcGIS API for Python (米国Esri ページ(英語)) シリーズブログ 関連ページ ・ ArcGIS API for Python を使ってみよう:できることや使いどころ ・ ArcGIS API for Python を使ってみよう ① :Jupyter Notebook で使うための環境構築 ・ ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1) ・ ArcGIS API for Python を使ってみよう ② : ローカル端末から ArcGIS Online へデータを作成してみよう ・ ArcGIS API for Python を使ってみよう ③ :ArcGIS Online のアイテムを検索してみよう ・ ArcGIS API for Python を使ってみよう ④ :ArcGIS Online 上のアイテムを削除してみよう ・ ArcGIS API for Python を使ってみよう ⑤ :Web マップを作成してみよう ・ ArcGIS API for Python を使ってみよう ⑥ :解析ツールを使ってみよう ArcGIS 開発リソース集 ・ ArcGIS for API for Python の コンセプト ・ インストールガイド ・ ArcGIS for API for Python の ための 基礎環境:conda 入門
... View more
06-26-2018
01:52 AM
|
0
|
0
|
3173
|
DOC
|
はじめに この記事は、「 ArcGIS API for Python を使ってみよう」シリーズその②の記事です。 当シリーズブログでは、 ArcGIS API for Python (以下、 Python API )の使い方などをご紹介していきます。 前回までの記事では、 Python API の使いどころ や 環境構築方法 をご紹介しました。今回は、いよいよ実際に Python コードを用いて ArcGIS へのデータ作成方法をご紹介します。 ローカルデータをアップロードして、ホスト フィーチャ サービスとして公開する ArcGIS Online へ、 GIS を含むデータ / 含まないデータのどちらもアップロードすることができます。緯度経度など位置情報を含むデータは ホスト フィーチャ サービス として公開することができます。 今回は次の 3 種類 のデータをアップロードして、ホスト フィーチャ サービスとして公開します。 CSV ファイル(緯度経度付き) シェープファイル ファイルジオデータベース ※おまけ:ArcGIS Online にフォルダを作成して PDF ファイルを格納する これらのデータ以外にアップロードできるファイル形式はこちらをご覧ください。(英語) Python API のコードを実行し、アップロードが完了すると、 ArcGIS Online のマイコンテンツ画面からデータを確認できます。 実行コードと解説 実際に実行するコードを記述して解説していきます。まずは、Python API で ArcGIS Online にログインします。 Python API のメソッドを使うためには、冒頭に import 文を記述して、目的のメソッドを使用できるようにします。 他のモジュールやクラスについては リファレンス もご覧ください。 from arcgis.gis import GIS
develoersUser = 'ArcGIS Online へログインするユーザ名'
develoersPass = 'ArcGIS Online へログインするパスワード'
gis = GIS("http://www.maps.arcgis.com/",develoersUser,develoersPass)
user = gis.users.get(develoersUser)
user ej python Bio: First Name: ej Last Name: python Username: ejpythondev Joined: February 22, 2018 CSV ファイルからホスト フィーチャ サービスを公開する # CSV ファイルの指定
csvfile = 'data/kanazawaParking.csv'
# CSV ファイルのアップロード
parkingCsvItem = gis.content.add({},csvfile)
# FeatureService として公開
parkingCsvItem.publish() kanazawaParking Feature Layer Collection by ejpythondev Last Modified: 3月 15, 2018 0 comments, 0 views ローカル端末上の CSV ファイルを指定したオブジェクトを作成して、 gis.content.add() の第二引数に設定します。この時点で、 ArcGIS Online 上に指定した CSV ファイル自体がアップロードされます。 ArcGIS Online は、アップロードされたファイルに対して、フィーチャ サービスを作成します。 ParkingCsvItem には、アップロードされた CSV ファイルについて ArcGIS Online 上の管理情報などが返ってきます。このオブジェクトに対して publish() を実行すると、フィーチャ サービスとして公開が完了します。 シェープファイルからホスト フィーチャ サービスを公開する シェープファイルも、 CSV ファイルと同様に、 ArcGIS Online へファイル自体をアップロードした後、フィーチャ サービスとして公開することができます。 # シェープ ファイルのアップロード
shpfile = 'data/yokohamaPolygonShp.zip'
ShpItem = gis.content.add({}, shpfile)
# FeatureService として公開
ShpItem.publish() この際の注意点として、シェープファイルは zip ファイルにしたものを指定します。 ファイル ジオデータベースからホスト フィーチャ サービスを公開する ファイル ジオデータベースについても、先の 2 種類のファイルと同様にアップロードと公開が可能ですが、今回はタイトルなどを指定してみます。 # ファイルジオデータベースのアップロード
fgdb = 'data/kawasakiEscapeFGDB.zip'
fgdbItem = gis.content.add({ 'type': 'File Geodatabase' , 'title':'川崎避難所ファイルジオ'}, fgdb )
# FeatureService として公開
fgdbItem.publish() 川崎避難所ファイルジオ Feature Layer Collection by ejpythondev Last Modified: 3月 15, 2018 0 comments, 0 views ファイル ジオデータベースもシェープファイルと同様に zip ファイルにして指定します。加えて、ファイル ジオデータベースの場合はこの zip がファイル ジオデータベースであることを指定します。 また、タイトルとしてフィーチャ サービス名を指定することができます。 おまけ: ArcGIS Online にフォルダを作成して PDF ファイルを格納する ArcGIS Online のコンテンツ画面では、フォルダを作成してそこにアイテム(アップロードしたファイルや公開したサービス)を格納することができます。 # 日付フォルダを作成する
from datetime import datetime as dt
tdatetime = dt.now()
today = tdatetime.strftime('%Y/%m/%d')
FolderName = 'geodev_'+ today
# ArcGIS Online へ フォルダを作成する
newFolder = gis.content.create_folder(FolderName) 上記のコードでは、 Python で時間を扱うライブラリを使用して日付を取得し、フォルダ名に指定しています。create_folder() のメソッドでフォルダを作成しています。 PDF ファイル形式はフィーチャ サービスにすることはできませんが、 ArcGIS Online で作成したグループや組織サイトでは、ここにアップロードすることでファイルを共有することができます。 作成したアイテム pdffileItem に対してmove() のメソッドで、新しく作成したフォルダへアイテムを移動することができます。 pdffile = 'data/ESRIジャパンPDFファイル.pdf'
pdffileItem = gis.content.add({'type': 'PDF' }, pdffile)
# フォルダ移動
pdffileItem.move(newFolder) 全体のコードは ESRI ジャパン GitHub をご覧ください。 ぜひ、実践してみましょう! ESRI ジャパン GitHub では、今回取り扱ったデータ以外のサンプルも載せています。 次回は、今回作成したデータをファイル名などで検索する方法をご紹介予定です。お楽しみに! 関連リンク集 ArcGIS 関連ページ ・ ArcGIS API for Python (ESRI ジャパン製品ページ) ・ ArcGIS for Developers (ESRI ジャパン製品ページ) ・ ArcGIS Online (ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ ESRI ジャパン オープンデータポータル ・ ArcGIS API for Python (米国Esri ページ(英語)) シリーズブログ 関連ページ ・ ArcGIS API for Python を使ってみよう:できることや使いどころ ・ ArcGIS API for Python を使ってみよう ① :Jupyter Notebook で使うための環境構築 ・ ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1) ・ ArcGIS API for Python を使ってみよう ② : ローカル端末から ArcGIS Online へデータを作成してみよう ・ ArcGIS API for Python を使ってみよう ③ :ArcGIS Online のアイテムを検索してみよう ・ ArcGIS API for Python を使ってみよう ④ :ArcGIS Online 上のアイテムを削除してみよう ・ ArcGIS API for Python を使ってみよう ⑤ :Web マップを作成してみよう ・ ArcGIS API for Python を使ってみよう ⑥ :解析ツールを使ってみよう ArcGIS 開発リソース集 ・ ArcGIS for API for Python の コンセプト ・ インストールガイド ・ ArcGIS for API for Python の ための 基礎環境:conda 入門
... View more
02-21-2018
06:40 PM
|
1
|
0
|
2771
|
DOC
|
はじめに この記事は、「 ArcGIS API for Python を使ってみよう」シリーズその①の記事です。 当シリーズブログでは、ArcGIS API for Python(以下、 Python API )の使い方などをご紹介していきます。 記念すべきスタートの記事 では、このライブラリでできることや使いどころをご紹介しました。 今回は環境構築について説明します。 2020 年 3 月 30 日追記 ArcGIS for Developers 開発リソース集にて環境構築の方法を詳しくご紹介しています。最新バージョンのインストール方法等は ArcGIS for Developers 開発リソース集の ArcGIS API for Python のインストールガイドのページをご参照ください。 パッケージ インストール方法 Python API のパッケージをインストールする方法は次の 2 つがあります。 Anaconda からインストール ArcGIS Pro からインストール ここでは Anaconda からインストールする方法をご紹介します。 Anaconda とはメジャーな Python のパッケージをまとめてインストールできるもので、データ解析をサポートすることで有名な Pandas や 数値計算を効率的に行うための NumPy もこのパッケージにすでに含まれています。 ArcGIS Pro をお持ちの方は、この製品の Python パッケージ マネージャーからインストールすることができます。こちらの方法は後日、別の環境構築手順としてブログ記事を公開予定ですが、 Esri 社 の ガイド (英語)にはすでに掲載されていますので、ぜひご覧ください。 環境構築手順 次の 2 ステップでインストールは完了です! Anaconda イントール ArcGIS API for Python のインストール ※動作要件: Python 3.5 以上 1.Anaconda インストール Anaconda のダウンロードページから Python 3.5 以上のインストーラーを使用する OS に合わせてダウンロードし、実行画面に従ってイントールします。 ArcGIS 製品をお持ちの方へ注意点 ArcMap は Python 2.x 系を使用しています。 1 つの端末に違うバージョンの Python が共存することは可能ですが、 Anaconda セットアップ時は以下の点にご注意ください。 [Advanced Option] の設定 ・既に ArcGIS 製品がインストールされているマシンにインストールを行う場合 → [Add Anaconda to system PATH environment variable] のチェックがオフになっていることを確認して下さい。 ・既に Python がインストールされていて、 Visual Studio 等の環境から使用している場合 → [Register Anaconda as system Python 3.6] のチェックをオフにして下さい 2.ArcGIS API for Python のインストール Anaconda がイントールできたら、端末のスタート メニューから Anaconda Prompt を立ち上げて、次の Python API をインストールするコマンドを入力します。 c onda install -c esri arcgis インストールの準備が完了したら を選択してインストールを開始します。 さあ、 Jupyter Notebook を起動してみましょう インストールが終わったら Anaconda Prompt へ次のコマンドを入力して Jupyter Notebook を立ち上げます。 Jupyter notebook デフォルトに設定しているブラウザーで Jupyter Notebook が立ち上がります。 新しいノートブックを作成して、 Python API のバージョンを調べるためのコードを実行してみましょう。 結果がかえってきたら、環境構築が完了です。 # バージョン確認コード from arcgis.gis import arcgis arcgis.__version__ 地図は以下のコードで表示することができます。 from arcgis.gis import GIS gis = GIS() map = gis.map("東京都", zoomlevel = 13) map 地図が出ない場合について Python API のバージョンが古いと地図が出ない場合がございます。 バージョン 1.3.0(2018/02/21 現在)に満たない場合は、次のコマンドで Python API のバージョンを上げてお試しください。 conda upgrade -c esri arcgis バージョンアップができない場合について(2018/02/26 現在) python モジュールの扱い方は pip を使用するなど手段は複数ありますが、この問題に対して行ったコマンドは次の通りです。 必ずしも正しい方法ではないかもしれませんが問題に突き当たった方はお試しください。 condaのバージョンを下げる ※hatenaブログ conda update --allが出来なくて焦る の記事を参考にしました。 conda install conda=4.2 下げた conda のバージョンで root をアクティベートする conda env list // アクティベートする環境を示す conda activate root // root 環境をアクティベートする 新しい AnacondaPronpt を開いて Python API をアップグレードする conda upgrade -c esri arcgis ぜひ、実践してみましょう! 当シリーズ記事では、引き続き Python API でできることを紹介していきます。 次回は、位置情報が含まれる CSV や、シェープ ファイルから ArcGIS へデータをサービスとして公開する方法をご紹介予定です。 関連リンク集 ArcGIS 関連ページ ・ ArcGIS API for Python (ESRI ジャパン製品ページ) ・ ArcGIS for Developers (ESRI ジャパン製品ページ) ・ ArcGIS Online (ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ ESRI ジャパン オープンデータポータル ・ ArcGIS API for Python (米国Esri ページ(英語)) シリーズブログ 関連ページ ・ ArcGIS API for Python を使ってみよう:できることや使いどころ ・ ArcGIS API for Python を使ってみよう ① :Jupyter Notebook で使うための環境構築 ・ ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1) ・ ArcGIS API for Python を使ってみよう ② : ローカル端末から ArcGIS Online へデータを作成してみよう ・ ArcGIS API for Python を使ってみよう ③ :ArcGIS Online のアイテムを検索してみよう ・ ArcGIS API for Python を使ってみよう ④ :ArcGIS Online 上のアイテムを削除してみよう ・ ArcGIS API for Python を使ってみよう ⑤ :Web マップを作成してみよう ・ ArcGIS API for Python を使ってみよう ⑥ :解析ツールを使ってみよう ArcGIS 開発リソース集 ・ ArcGIS for API for Python の コンセプト ・ インストールガイド ・ ArcGIS for API for Python の ための 基礎環境:conda 入門
... View more
02-18-2018
05:15 PM
|
1
|
0
|
5550
|
DOC
|
みなさんは Python を普段どのように使っていますか? 軽量なプログラミング言語として学習しやすい言語であると同時に、最近の流行りとしてデータ サイエンティストが使う言語としての印象も高まってきていますね。 ここでは、GIS と GIS に関連するデータを Python を使って操作できる ArcGIS API for Python というライブラリについて、できることや使い方をシリーズ記事でご紹介していきます。 「 ArcGIS API for Python を使ってみよう」シリーズ その①: Jupyter Notebook で使うための環境構築 その②:ローカル端末から ArcGIS Online へデータを作成してみよう その③:ArcGIS Online のアイテムを検索してみよう その④:ArcGIS Online のアイテムを削除してみよう その⑤:Web マップを作成してみよう その⑥ :解析ツールを使ってみよう その⑦ :ユーザーやアイテムの管理作業を一括で処理してみよう ・・・ ※随時、コンテンツとリンクを更新予定です! ArcGIS API for Python とは? ArcGIS API for Python (以下、 Python API とします) は、地図や地理空間データを扱うための Web GIS をサポートする Python ライブラリです。 ベクトルとラスタの分析、ジオコーディング、地図作成、ルート解析、ユーザー、グループ、情報アイテムの効率的なツールを提供するだけでなく、Esri 社 やその他の機関が公開する地図、地理空間データにアクセスすることができます。 また、 Pandas や NumPy など科学的 Python ライブラリ と合わせて利用できると同時に、対話的にコードを実行できる Jupyter Notebook での実行をサポートしています。 ArcGIS for Developers で作成できる 無償アカウントを作成 すれば、公開されたコンテンツとツールを使用して、 Web マップ、アプリケーション、データを作成、保存、管理することが可能で、作成したデータは他のユーザーと共有することができます。 すでに ArcGIS Online の組織向け のアカウントをお持ちであれば、 Living Atlas の サブスクリプション コンテンツ や豊富な空間分析ツールにアクセスでき、組織、コミュニティ、 Web 上でコンテンツを公開、共有、使用することができます。加えて、 Web GIS 上に作成したユーザーやグループ、およびコンテンツの管理を強力にサポートします。 ArcGIS API for Python でできること Python API は主に次のことができます。 <GIS データ、コンテンツの作成・管理 > 緯度経度など位置情報が含まれる CSV ファイルや シェープ ファイル などの GIS データは、クリックなど UI 操作をすることなくスクリプトの実行だけで、 ArcGIS へ公開することができます。 スクリプトを実行してコンテンツ作成とコンテンツ検証のワークフローを繰り返し行うことができます。 Web マップなどのコンテンツ作成が自動化できるだけでなく、コンテンツの管理として古くなったアイテムの修正や Web マップやレイヤー内の壊れたリンクを修正、更新することができます。 <Web GIS の管理 > ArcGIS Online の組織サイトや Portal for ArcGIS の構築、ユーザーの作成、役割の割り当て、グループの管理、アクセス制限の設定などの繰り返して行うことが見込まれる作業は、そのほとんどをスクリプトで自動化して実行することができます。 <ArcGIS を使った解析 > ArcGIS プラットフォームのほとんどの解析機能を使用できます。 Jupyter Notebook で API を使用してワークフローを記録して分析方法を共有することもできます。 Python API は Pandas や NumPy などのライブラリセットと組み合わせることができて 、さらに Web 上に公開されているあらゆるデータを取り込んで解析ができるので、機械学習と解析の分野でも位置情報に即した解析を行うことにも役立ちます。 Jupyter notebook で早速やってみよう! Python API は Jupyter Notebook を使って対話的にコードを実行していくことができます。 Jupyter Notebook はデータサイエンティストが好むツールとして人気があります。 Jupyter Notebook へ ArcGIS の地図を出力して、主題図を可視化していくことができます! どうでしょう?やってみたくなりませんか? まずは環境構築ですね!環境構築は ArcGIS API for Python を使ってみよう ①:Jupyter Notebook で使うための環境構築でご紹介します! 関連リンク集 ArcGIS 関連ページ ・ ArcGIS API for Python (ESRI ジャパン製品ページ) ・ ArcGIS for Developers (ESRI ジャパン製品ページ) ・ ArcGIS Online (ESRI ジャパン製品ページ) ・ ArcGIS for Developers 開発リソース集 ・ ESRI ジャパン オープンデータポータル ・ ArcGIS API for Python (米国Esri ページ(英語)) シリーズブログ 関連ページ ・ ArcGIS API for Python を使ってみよう:できることや使いどころ ・ ArcGIS API for Python を使ってみよう ① :Jupyter Notebook で使うための環境構築 ・ ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1) ・ ArcGIS API for Python を使ってみよう ② : ローカル端末から ArcGIS Online へデータを作成してみよう ・ ArcGIS API for Python を使ってみよう ③ :ArcGIS Online のアイテムを検索してみよう ・ ArcGIS API for Python を使ってみよう ④ :ArcGIS Online 上のアイテムを削除してみよう ・ ArcGIS API for Python を使ってみよう ⑤ :Web マップを作成してみよう ・ ArcGIS API for Python を使ってみよう ⑥ :解析ツールを使ってみよう ArcGIS 開発リソース集 ・ ArcGIS for API for Python の コンセプト ・ インストールガイド ・ ArcGIS for API for Python の ための 基礎環境:conda 入門
... View more
02-07-2018
12:09 AM
|
1
|
0
|
6364
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|