ArcGIS Notebooks를 사용하여 ArcPy와 함께 사용할, Notebooks에서 접근할 수 있는 쉐이프파일 및 파일 지오데이터베이스를 업로드할 수 있습니다.
Notebook에서 사용할 데이터셋 업로드
Notebook에서 ArcPy와 함께 사용할 쉐이프파일 또는 파일 지오데이터베이스를 업로드하려면 다음을 수행합니다.
- 업로드할 데이터셋을 .zip 파일로 압축합니다.
- Notebook 편집기에서 파일 탭을 클릭합니다.
- 파일 탭에서 /arcgis/home으로 이동합니다.
- 파일 선택을 클릭하고 데이터셋의 .zip 파일을 선택합니다.
- 업로드를 클릭합니다.
- Notebook에서 다음 방법 중 하나로 파일의 압축을 풉니다.
- Notebook 셀 내에서 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")
- Notebook 셀 내에서 IPython 매직문을 사용합니다.
Notebook에서 ArcPy를 사용하는 방법에 대해 자세히 알아보려면 Notebook에서 ArcPy 사용을 참고하세요.
Notebook에서 ArcPy로 업로드한 데이터셋 사용
쉐이프파일 또는 파일 지오데이터베이스를 업로드하면 Notebook에서 접근할 수 있습니다.
ArcPy로 업로드한 쉐이프파일 사용
다음 단계에서는 업로드된 쉐이프파일과 함께 ArcPy 버퍼 도구를 사용하는 예시 워크플로에 대해 간략하게 설명합니다.
- Python 시작 데이터셋 항목 페이지에서 샘플 데이터셋을 다운로드합니다.
- 위의 Notebook에서 사용할 데이터셋 업로드 섹션에 나와 있는 단계에 따라 Notebook 작업 영역에 .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.analysis.Buffer("fire_stations.shp", "fire_stations_500m", "500 METERS")
- 결과 버퍼 쉐이프파일 데이터셋에 대한 설명을 생성하고 인쇄합니다.
# Describe the resulting shapefile dataset desc = arcpy.Describe("fire_stations_500m.shp") # Print dataset properties print(f"Dataset Type: {desc.datasetType}") print(f"Shape Type: {desc.shapeType}") print(f"Feature Type: {desc.featureType}") print(f"Spatial Index: {desc.hasSpatialIndex}") print(f"Spatial reference name: {desc.spatialReference.name}") print(f"Extent:\n\tXMin: {desc.extent.XMin}\n\tXMax: {desc.extent.XMax}") print(f"\tYMin: {desc.extent.YMin}\n\tYMax: {desc.extent.YMax}")
- 버퍼 쉐이프파일에 있는 필드의 이름 및 유형을 인쇄합니다.
for field in desc.fields: print("%-22s %s %s" % (field.name, ":", field.type))
- 버퍼 쉐이프파일 데이터셋의 .zip 파일을 생성합니다.
import os import 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.management.Delete("fire_stations_500m.shp")
ArcPy와 함께 업로드된 파일 지오데이터베이스 사용
다음 단계에서는 ArcPy와 함께 사용할 파일 지오데이터베이스를 업로드하는 워크플로 예시에 대해 간략하게 설명합니다.
- 싱가포르 데이터 지오데이터베이스 항목 페이지에서 샘플 데이터셋을 다운로드합니다.
- 위의 Notebook에서 사용할 데이터셋 업로드 섹션에 나와 있는 단계에 따라 Notebook에 파일 지오데이터베이스가 포함된 .zip 파일을 업로드합니다.
- 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_attractions_fields
- 데이터셋의 각 행에 대해 Object ID, 장소 이름, 주소 필드 값을 인쇄합니다.
with arcpy.da.SearchCursor(singapore_tourist_attractions, singapore_tourist_attractions_fields) as cursor: for row in cursor: print(f'{row[0]}. {row[1]}, {row[2]}')