ArcGIS API for Python を使ってみよう② : ローカル端末から ArcGIS Online へデータを作成してみよう

4723
0
02-21-2018 06:40 PM

ArcGIS API for Python を使ってみよう② : ローカル端末から ArcGIS Online へデータを作成してみよう

 

はじめに

この記事は、「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入門

Version history
Last update:
‎11-12-2020 10:23 PM
Updated by:
Contributors