Skip To Content

ArcPy で使用するデータセットのアップロード

ArcGIS Notebook Server でシェープファイルおよびファイル ジオデータベースをアップロードして、その後 ArcPy で使用するためにノートブック内でアクセスできます。

ArcGIS Notebooks 内で使用するデータセットのアップロード

ノートブックの ArcPy で使用するシェープファイルまたはファイル ジオデータベースをアップロードするには、次の手順に従います。

  1. アップロードするデータセットを圧縮して、*.zip ファイルを作成します。
  2. ノートブック ビューアーで、[ファイル] タブをクリックします。
  3. [ファイル] タブで、/arcgis/home を参照します。
  4. [ファイルの選択] をクリックしてデータセットの *.zip ファイルを選択します。
  5. [アップロード] をクリックします。
  6. ノートブックで、次のいずれかの方法を使用してファイルを解凍します。
    1. ノートブック セル内から IPython マジック ステートメントを使用します。
      !unzip /arcgis/home/watersheds.zip -d /arcgis/home
    2. Python Zip モジュールを使用して、ファイルを解凍します。
      import zipfile
      with zipfile.ZipFile("/arcgis/home/watersheds.zip","r") as zip_ref:
          zip_ref.extractall("/arcgis/home")

ノートブックで ArcPy を使用する方法の詳細については、「ノートブックでの ArcPy の使用」をご参照ください。

アップロードしたデータセットをノートブックの ArcPy で使用

シェープファイルまたはファイル ジオデータベースをアップロードしたら、ノートブックからそれにアクセスできます。

アップロードしたシェープファイルを ArcPy で使用

次の手順は、アップロードしたシェープファイルとともに ArcPy バッファー ツールを使用するサンプル ワークフローの概要を示しています。

  1. Python スタート データセット アイテム ページからサンプル データセットをダウンロードします。
  2. ArcGIS Notebooks 内で使用するデータセットのアップロード」セクションに記載されている手順を使用して、*.zip ファイルをノートブックのワークスペースにアップロードします。
  3. ArcGIS API for Python および ArcPy をインポートします。

    from arcgis.gis import GIS
    gis = GIS("home")
    import arcpy

  4. ワークスペース ディレクトリにアップロードしたデータセットを解凍します。

    !unzip /arcgis/home/PythonStart.zip -d /arcgis/home

  5. ArcPy ワークスペースを、抽出されたファイルのディレクトリ パスに設定します。

    arcpy.env.workspace = "/arcgis/home/PythonStart"

  6. fire_stations.shp ファイル内の各消防署の周囲 500 メートルのバッファーを作成します。

    result = arcpy.Buffer_analysis("fire_stations.shp", "fire_stations_500m", "500 METERS")

  7. 作成されたバッファー シェープファイル データセットの説明を生成し、出力します。

    #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)))

  8. バッファー シェープファイル内のフィールドの名前とタイプを出力します。

    for field in desc.fields:
        print("%-22s %s %s" % (field.name, ":", field.type))
        #print field.name + " = " + field.type

  9. バッファー シェープファイル データセットの *.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)

  10. バッファー シェープファイルをホスト フィーチャ レイヤーとして公開します。

    item = gis.content.add({}, '/arcgis/home/fire_stations_500m.zip')
    published_item = item.publish()
    published_item.share(everyone=True)
    display(published_item)

  11. バッファー シェープファイルを削除します。

    arcpy.Delete_management("fire_stations_500m.shp")

このサンプル ワークフローでは、アップロードしたデータセットとともに ArcPy を使用して、新しいバッファー シェープファイルを作成して公開しました。

アップロードしたファイル ジオデータベースを ArcPy で使用

次の手順は、ArcPy で使用するファイル ジオデータベースをアップロードするサンプル ワークフローの概要を示しています。

  1. シンガポールのデータ ジオデータベース アイテム ページからサンプル データセットをダウンロードします。
  2. ファイル ジオデータベースを含む *.zip ファイルをノートブックのワークスペースにアップロードします。 このプロセスの詳細については、上記の「ArcGIS Notebooks 内で使用するデータセットのアップロード」セクションをご参照ください。
  3. ArcGIS API for Python および ArcPy をインポートします。

    from arcgis.gis import GIS
    gis = GIS("home")
    import arcpy

  4. ワークスペース ディレクトリにアップロードしたデータセットを解凍します。

    !unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home

  5. ArcPy ワークスペースを、抽出されたファイルのディレクトリ パスに設定します。

    arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"

  6. ファイル ジオデータベース内に含まれているフィーチャクラスの名前をリストします。

    singapore_data = arcpy.ListFeatureClasses()
    singapore_data

  7. いずれかのフィーチャクラスに含まれているフィールドをリストします。

    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

  8. データセット内の行ごとに、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]))