ArcGIS Notebook Server でシェープファイルおよびファイル ジオデータベースをアップロードして、その後 ArcPy で使用するためにノートブック内でアクセスできます。
ArcGIS Notebooks 内で使用するデータセットのアップロード
ノートブックの ArcPy で使用するシェープファイルまたはファイル ジオデータベースをアップロードするには、次の手順に従います。
- アップロードするデータセットを圧縮して、*.zip ファイルを作成します。
- ノートブック ビューアーで、[ファイル] タブをクリックします。
- [ファイル] タブで、/arcgis/home を参照します。
- [ファイルの選択] をクリックしてデータセットの *.zip ファイルを選択します。
- [アップロード] をクリックします。
- ノートブックで、次のいずれかの方法を使用してファイルを解凍します。
- ノートブック セル内から IPython マジック ステートメントを使用します。
!unzip /arcgis/home/watersheds.zip -d /arcgis/home
- Python Zip モジュールを使用して、ファイルを解凍します。
import zipfile with zipfile.ZipFile("/arcgis/home/watersheds.zip","r") as zip_ref: zip_ref.extractall("/arcgis/home")
- ノートブック セル内から IPython マジック ステートメントを使用します。
ノートブックで ArcPy を使用する方法の詳細については、「ノートブックでの ArcPy の使用」をご参照ください。
アップロードしたデータセットをノートブックの ArcPy で使用
シェープファイルまたはファイル ジオデータベースをアップロードしたら、ノートブックからそれにアクセスできます。
アップロードしたシェープファイルを ArcPy で使用
次の手順は、アップロードしたシェープファイルとともに ArcPy バッファー ツールを使用するサンプル ワークフローの概要を示しています。
- Python スタート データセット アイテム ページからサンプル データセットをダウンロードします。
- 「ArcGIS Notebooks 内で使用するデータセットのアップロード」セクションに記載されている手順を使用して、*.zip ファイルをノートブックのワークスペースにアップロードします。
- ArcGIS API for Python および ArcPy をインポートします。
from arcgis.gis import GIS gis = GIS("home") import arcpy
- ワークスペース ディレクトリにアップロードしたデータセットを解凍します。
!unzip /arcgis/home/PythonStart.zip -d /arcgis/home
- ArcPy ワークスペースを、抽出されたファイルのディレクトリ パスに設定します。
arcpy.env.workspace = "/arcgis/home/PythonStart"
- fire_stations.shp ファイル内の各消防署の周囲 500 メートルのバッファーを作成します。
result = arcpy.Buffer_analysis("fire_stations.shp", "fire_stations_500m", "500 METERS")
- 作成されたバッファー シェープファイル データセットの説明を生成し、出力します。
#Describe the resulting shapefile dataset desc = arcpy.Describe("fire_stations_500m.shp") # Print dataset properties # print("Feature Type: " + desc.featureType) print("Shape Type : " + desc.shapeType) print("Spatial Index: " + str(desc.hasSpatialIndex)) print(("Dataset Type: {0}".format(desc.datasetType))) print(("Extent:\n XMin: {0}, XMax: {1}, YMin: {2}, YMax: {3}".format( desc.extent.XMin, desc.extent.XMax, desc.extent.YMin, desc.extent.YMax))) print(("Spatial reference name: {0}:".format(desc.spatialReference.name)))
- バッファー シェープファイル内のフィールドの名前とタイプを出力します。
for field in desc.fields: print("%-22s %s %s" % (field.name, ":", field.type)) #print field.name + " = " + field.type
- バッファー シェープファイル データセットの *.zip ファイルを作成します。
import os, fnmatch import zipfile # The path for listing items path = '/arcgis/home/PythonStart/' os.chdir(path) # List of files in complete directory file_list = [] # Loop to extract files containing word "fire_stations_500m" for path, folders, files in os.walk(path): for file in files: if fnmatch.fnmatch(file, '*fire_stations_500m*'): file_list.append(file) with zipfile.ZipFile('/arcgis/home/fire_stations_500m.zip', 'w') as zipF: for file in file_list: zipF.write(file, compress_type=zipfile.ZIP_DEFLATED)
- バッファー シェープファイルをホスト フィーチャ レイヤーとして公開します。
item = gis.content.add({}, '/arcgis/home/fire_stations_500m.zip') published_item = item.publish() published_item.share(everyone=True) display(published_item)
- バッファー シェープファイルを削除します。
arcpy.Delete_management("fire_stations_500m.shp")
このサンプル ワークフローでは、アップロードしたデータセットとともに ArcPy を使用して、新しいバッファー シェープファイルを作成して公開しました。
アップロードしたファイル ジオデータベースを ArcPy で使用
次の手順は、ArcPy で使用するファイル ジオデータベースをアップロードするサンプル ワークフローの概要を示しています。
- シンガポールのデータ ジオデータベース アイテム ページからサンプル データセットをダウンロードします。
- ファイル ジオデータベースを含む *.zip ファイルをノートブックのワークスペースにアップロードします。 このプロセスの詳細については、上記の「ArcGIS Notebooks 内で使用するデータセットのアップロード」セクションをご参照ください。
- ArcGIS API for Python および ArcPy をインポートします。
from arcgis.gis import GIS gis = GIS("home") import arcpy
- ワークスペース ディレクトリにアップロードしたデータセットを解凍します。
!unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home
- ArcPy ワークスペースを、抽出されたファイルのディレクトリ パスに設定します。
arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"
- ファイル ジオデータベース内に含まれているフィーチャクラスの名前をリストします。
singapore_data = arcpy.ListFeatureClasses() singapore_data
- いずれかのフィーチャクラスに含まれているフィールドをリストします。
singapore_tourist_attractions = singapore_data[2] singapore_tourist_attractions_fields = [] fields = arcpy.ListFields(singapore_tourist_attractions) for field in fields: if (field.name != 'Shape'): singapore_tourist_attractions_fields.append(field.name) singapore_tourist_place_fields
- データセット内の行ごとに、objectid、place-name、および address フィールドの値を出力します。
with arcpy.da.SearchCursor(singapore_tourist_attractions, singapore_tourist_attractions_fields) as cursor: for row in cursor: print(u'{0}, {1}, {2}'.format(row[0], row[1], row[2]))