はじめに
この記事は、「ArcGIS API for Python を使ってみよう」シリーズその②の記事です。
当シリーズブログでは、ArcGIS API for Python(以下、Python API)の使い方などをご紹介していきます。
前回までの記事では、Python API の使いどころや環境構築方法をご紹介しました。今回は、いよいよ実際に Python コードを用いて ArcGIS へのデータ作成方法をご紹介します。
ローカルデータをアップロードして、ホスト フィーチャ サービスとして公開する
ArcGIS Online へ、GIS を含むデータ/含まないデータのどちらもアップロードすることができます。緯度経度など位置情報を含むデータはホスト フィーチャ サービスとして公開することができます。
今回は次の 3 種類のデータをアップロードして、ホスト フィーチャ サービスとして公開します。
これらのデータ以外にアップロードできるファイル形式はこちらをご覧ください。(英語)
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
CSV ファイルからホスト フィーチャ サービスを公開する
# CSV ファイルの指定 csvfile = 'data/kanazawaParking.csv' # CSV ファイルのアップロード parkingCsvItem = gis.content.add({},csvfile) # FeatureService として公開 parkingCsvItem.publish()
ローカル端末上の 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()
ファイル ジオデータベースもシェープファイルと同様に 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 for Developers 開発リソース集
・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 開発リソース集