ArcGIS API for Python を使ってみよう③:ArcGIS Online のアイテムを検索してみよう

3453
0
03-25-2018 06:21 PM
Labels (2)

ArcGIS API for Python を使ってみよう③:ArcGIS Online のアイテムを検索してみよう

はじめに

 

この記事は、「ArcGIS API for Python を使ってみよう」シリーズその③です。

当シリーズブログでは、ArcGIS API for Python(以下、Python API)の使い方をご紹介しています。

前回の記事では、Python API を用いた ArcGIS Online へのデータ作成方法をご紹介しました。今回は、ArcGIS Online 上に公開したデータを検索する方法をご紹介します。

アイテムの持つ情報から ArcGIS Online 上のアイテムを検索する

 

Python API を使用すると ArcGIS Online 上にあるアイテムを様々な切り口から検索することができます。検索を行う際の基本コードは次の通りです。1 行目は検索を行うコード、2 行目は検索結果を表示させるコードです。

 

# 検索の基本コード
search_result = gis.content.search(query = "【クエリ構文を設定】")
# 検索結果を表示する
search_result‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

アイテムを検索するためには、ContentManager クラスsearch() メソッドを使用します。検索の条件にクエリ構文を設定することで検索を行うことができます。サポートされているクエリ 構文については、search reference をご覧ください (英語)

今回は次のクエリ構文を使用します。

 

  • title:アイテムのタイトル
  • uploaded:アイテムをアップロードした日付
  • tags:アイテムのタグ
  • access:アイテムの共有レベル

アイテム タイトルで検索

まずは、アイテムのタイトルで検索をしてみましょう。今回は、シリーズ②で ArcGIS Online に作成した、kanazawaParking というタイトルのフィーチャサービスを検索します。

アイテム タイトルで検索をする場合、クエリ構文に title を使用します。

# アイテム タイトル (kanazawaParking) で検索する
searched_featureservice = gis.content.search(query="title: kanazawaParking ")
searched_featureservice‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

検索結果は次のように配列で返されます。

 

検索にはワイルドカードも使用することができます。

# ワイルドカード(*) を使って検索する
searched_featureservice = gis.content.search(query = "title: kanazawa*")
searched_featureservice‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

アイテムを ArcGIS Online にアップロードした日付で検索

 

アイテムを ArcGIS Online にアップロードした日付(作成日時)で検索してみましょう。クエリ構文に uploaded を使用し、期間を指定します。なお、ArcGIS  上での日付は Unix タイムで扱われているため、検索したい日付を Unix タイムに変換した上で、さらに 6 桁で 0 埋めして 19 桁にする必要があります。

以下では、指定日から現在時刻までの間にアップロードしたファイルを検索します。

 

# 現在時刻を Unix タイムに変換
# time モジュールを読み込む
import time
nowUnixtme = int(round(time.time() * 1000))
# 19 桁になるよう 0 埋め
nowUnixtme_padded = '%019d' % nowUnixtme‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

# 指定した日を Unix タイムに変換
# datetime モジュールを読み込む
import datetime
tstr = '2018-03-15'
# 文字列を datetime に変換する
tdatetime = datetime.datetime.strptime(tstr, '%Y-%m-%d')
# datetime を Unix タイムに変換する
unixtime = tdatetime.timestamp()
miliUnixtime = unixtime *1000
# 19 桁になるよう 0 埋め
execUnixtme_padded = '%019d' % miliUnixtime
execUnixtme_padded‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

日付を Unix タイムに変換できたら、変換した Unix タイムをパラメータに指定して、検索してみましょう。

# アップロードした日付で検索
searched_date = gis.content.search(query="uploaded:["+ execUnixtme_padded+ " TO " + nowUnixtme_padded + "]")
searched_date‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

アイテムをタグで検索

アイテムを ArcGIS Online にアップロードするときに付けたタグで検索してみましょう。付けたタグは、ArcGIS Online 上でアイテム詳細を表示して確認することができます。タグを設定することでアイテムをより検索しやすくなります。

クエリ構文に tag を指定します。

# タグで検索
searched_tag = gis.content.search(query= "tags:geodev_jp")
 searched_tag‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

アイテムを共有レベルで検索

ArcGIS Online のアイテムはそれぞれに共有レベルが設定され、デフォルトでは非公開が選択されています。アイテム共有の詳細については ArcGIS Online ヘルプをご覧ください。

アイテムの公開レベルをまとめて確認したいときに便利です。

共有レベルは次の 4 種類です。

 

  • private:非公開
  • org:組織サイトのメンバーに公開
  • public:全体に公開
  • shared:グループに公開

# 共有レベルで検索
searched_data = gis.content.search(query= "access:public")
 searched_data ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

上記のコードでは、全体に公開しているアイテムを検索しています。

フォルダーを検索

ここまでは、アイテムの持つ情報をキーにアイテムを検索してきました。次は、ユーザーのフォルダーを検索します。

まずは自分が持っているフォルダーの一覧を取得してみましょう。結果は配列として返されます。

# フォルダーを検索する
searched_folderlist = user.folders
searched_folderlist‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

 

では、結果として返ってきたフォルダー一覧の 1 つ目のフォルダーの中身を検索してみましょう。

# 1 つ目のフォルダーの中身を検索
user.items(folder = folderlist[0])‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

検索するフォルダー名がわかっている場合は、文字列で直接フォルダー名を指定します。

# フォルダー名で検索
user.items(folder = "geodev_2018/03/15")‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

おまけ:ArcGIS Online 全体で公開されているアイテムを検索

 

自分の組織外を検索するかどうかを決めるプロパティである outside_orgTrue にすると、他のユーザーが全体に公開しているアイテムを検索することができます。

# パブリックのアイテムを検索
searched_public = gis.content.search("title:境界線表示用 ", outside_org=True)
searched_public‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

今回ご紹介したコードは ESRIジャパン GitHub 上で公開しています。

ぜひ、みなさんもお試しください!

 

当シリーズ記事では、引き続き Python API でできることを紹介していきます。次回は、今回の記事で検索したアイテムを削除する方法をご紹介予定です。

関連リンク集

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入門

Labels (2)
Version history
Last update:
‎12-12-2021 03:42 AM
Updated by: