Google 어스 엔진의 파이썬 API 사용하기 - 2부: 자산 읽기/쓰기
7026 단어 GIS파이썬GoogleEarthEngine
소개
지난번 환경 구축을 실시했으므로, 우선은 기본의 데이터의 읽고 쓰기에 도전해 보겠습니다. Earth Engine에서는 자신의 데이터를 '자산'이라고 부르는 것 같습니다.
자산 불러오기
기존 에셋 로드
Earth Engine은 즉시 사용할 수 있는 다양한 자산을 제공합니다. 이러한 기존 에셋을 로드하려면 에셋의 ID를 알아야 합니다. 여기에서는 예로서 JAXA가 공개하고 있는 「ALOS DSM: Global 30m」를 읽어 보겠습니다. 먼저 검색 창에 "elevation Japan"을 입력하여 자산을 검색하고 ALOS DSM : Global 30m 옆의 Import 링크를 클릭하여 가져옵니다.
자산 ID는 자산 옆의 ‣ 마크를 클릭하면 id
에 표시됩니다.
이 경우 JAXA/ALOS/AW3D30_V1_1
가 자산 ID입니다.
자산 ID를 알았으므로 아래 예제와 같이 자산을 로드할 수 있습니다.
import ee
ee.Initialize()
alos_dem = ee.Image("JAXA/ALOS/AW3D30_V1_1")
벡터 데이터 업로드 및 로드
현재, 벡터 데이터(왜 Earth Engine에서의 표기는 Table)의 업로드는 Shapefile로 할 필요가 있는 것 같습니다. Code Editor에서 Shapefile을 업로드할 때 .shp, .dbf, .shx 파일을 동시에 업로드해야 하는 것 같습니다. 파일명에 복수의 마침표가 포함되어 있으면 최초의 마침표 이후를 확장자라고 판단하는 것 같고, 「이상한 확장자의 파일을 업로드 하지 않는다」라고 화내므로 주의입니다. 그 밖에도 .cpg, .prj 등도 동시에 업로드할 수 있는 것 같습니다.
Shapefile 사양으로 인해 열 이름의 최대 길이는 10자입니다. Geodatabase등에서 변환할 때에는, 긴 열명은 미리 알기 쉬운 열명으로 변경해 두면 좋을 것 같습니다.
업로드한 데이터를 로드하려면 ee.FeatureCollection
를 사용합니다.
import ee
ee.Initialize()
vector_data = ee.FeatureCollection("users/{USERNAME}/{ASSET_NAME}")
{USER_NAME}
는 처음 지정한 Earth Engine의 사용자 이름이고 {ASSET_NAME}
는 자산 이름입니다. 자산이 폴더에 있는 경우
vector_data = ee.FeatureCollection(
"users/{USER_NAME}/{FOLDER_NAME}/{ASSET_NAME}"
)
입니다.
래스터 데이터 업로드 및 로드
지금까지 업로드할 수 있는 데이터는 GeoTiff와 TFRecord+JSON(뭐야?)라고 합니다. 사이즈는 최대 10GB까지(사용하고 싶은 데이터가 10GB 이상 있는데, 어떻게 할까).
데이터를 로드하려면 기존 에셋과 마찬가지로 ee.Image
를 사용합니다.
image = ee.Image("users/{USER_NAME}/{FOLDER_NAME}/{ASSET_NAME}")
자산 내보내기
어스 엔진에서 저작물로 내보내기
에셋을 어스 엔진에서 에셋으로 내보내려면 ee.batch
모듈을 사용합니다. 먼저 내보내기 작업을 만든 다음 작업을 실행하는 두 단계 처리입니다. 예를 들면 「ALOS DSM: Global 30m」의 도쿄역 근처를 자산으로 내보냅니다.
# ライブラリ初期化。
import ee
ee.Initialize()
# ALOS DEMの読み込み。
alos_dem = ee.Image("JAXA/ALOS/AW3D30_V1_1")
# 書き出し範囲を作成。
region = [
[139.767, 35.681], [139.767, 35.691],
[139.777, 35.691], [139.777, 35.681]
]
# アセット書き出しのタスクを作成。
# scaleは解像度(m)。指定しないとオリジナルの値が使われる。
export_task = ee.batch.Export.image.toAsset(
image = alos_dem, description = "ALOS DEM Exporting Test",
assetId = "users/{USER_NAME}/TEST_ALOS_DEM", scale = 1,
region = region
)
# 書き出し実行。
ee.batch.data.startProcessing(export_task.id, export_task.config)
{USER_NAME}
를 만든 사용자 이름으로 바꿉니다. 이미지의 내보내기 범위는 튜토리얼 에 있는 ee.Geometry.Rectangle 을 사용하는 방법이라면 TypeError: Object of type Geometry is not JSON serializable
라는 오류가 발생했기 때문에 목록에서 내보내기 범위를 지정하고 있습니다. 이것이 파이썬 3을 사용하고 있기 때문인지 파이썬 2에서도 같은지 알 수 없습니다.
스크립트를 실행하면 웹의 Code Editor의 Tasks 탭에 내보내기 작업이 추가되고 잠시 기다리면 자산 목록에 TEST_ALOS_DEM
라는 이미지가 추가되어야합니다.
참고 페이지
Google 드라이브에 저장
계속?
Reference
이 문제에 관하여(Google 어스 엔진의 파이썬 API 사용하기 - 2부: 자산 읽기/쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/marchen/items/31c7a1643c3a0ffcb1bd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
기존 에셋 로드
Earth Engine은 즉시 사용할 수 있는 다양한 자산을 제공합니다. 이러한 기존 에셋을 로드하려면 에셋의 ID를 알아야 합니다. 여기에서는 예로서 JAXA가 공개하고 있는 「ALOS DSM: Global 30m」를 읽어 보겠습니다. 먼저 검색 창에 "elevation Japan"을 입력하여 자산을 검색하고 ALOS DSM : Global 30m 옆의 Import 링크를 클릭하여 가져옵니다.
자산 ID는 자산 옆의 ‣ 마크를 클릭하면
id
에 표시됩니다.이 경우
JAXA/ALOS/AW3D30_V1_1
가 자산 ID입니다.자산 ID를 알았으므로 아래 예제와 같이 자산을 로드할 수 있습니다.
import ee
ee.Initialize()
alos_dem = ee.Image("JAXA/ALOS/AW3D30_V1_1")
벡터 데이터 업로드 및 로드
현재, 벡터 데이터(왜 Earth Engine에서의 표기는 Table)의 업로드는 Shapefile로 할 필요가 있는 것 같습니다. Code Editor에서 Shapefile을 업로드할 때 .shp, .dbf, .shx 파일을 동시에 업로드해야 하는 것 같습니다. 파일명에 복수의 마침표가 포함되어 있으면 최초의 마침표 이후를 확장자라고 판단하는 것 같고, 「이상한 확장자의 파일을 업로드 하지 않는다」라고 화내므로 주의입니다. 그 밖에도 .cpg, .prj 등도 동시에 업로드할 수 있는 것 같습니다.
Shapefile 사양으로 인해 열 이름의 최대 길이는 10자입니다. Geodatabase등에서 변환할 때에는, 긴 열명은 미리 알기 쉬운 열명으로 변경해 두면 좋을 것 같습니다.
업로드한 데이터를 로드하려면
ee.FeatureCollection
를 사용합니다.import ee
ee.Initialize()
vector_data = ee.FeatureCollection("users/{USERNAME}/{ASSET_NAME}")
{USER_NAME}
는 처음 지정한 Earth Engine의 사용자 이름이고 {ASSET_NAME}
는 자산 이름입니다. 자산이 폴더에 있는 경우vector_data = ee.FeatureCollection(
"users/{USER_NAME}/{FOLDER_NAME}/{ASSET_NAME}"
)
입니다.
래스터 데이터 업로드 및 로드
지금까지 업로드할 수 있는 데이터는 GeoTiff와 TFRecord+JSON(뭐야?)라고 합니다. 사이즈는 최대 10GB까지(사용하고 싶은 데이터가 10GB 이상 있는데, 어떻게 할까).
데이터를 로드하려면 기존 에셋과 마찬가지로
ee.Image
를 사용합니다.image = ee.Image("users/{USER_NAME}/{FOLDER_NAME}/{ASSET_NAME}")
자산 내보내기
어스 엔진에서 저작물로 내보내기
에셋을 어스 엔진에서 에셋으로 내보내려면 ee.batch
모듈을 사용합니다. 먼저 내보내기 작업을 만든 다음 작업을 실행하는 두 단계 처리입니다. 예를 들면 「ALOS DSM: Global 30m」의 도쿄역 근처를 자산으로 내보냅니다.
# ライブラリ初期化。
import ee
ee.Initialize()
# ALOS DEMの読み込み。
alos_dem = ee.Image("JAXA/ALOS/AW3D30_V1_1")
# 書き出し範囲を作成。
region = [
[139.767, 35.681], [139.767, 35.691],
[139.777, 35.691], [139.777, 35.681]
]
# アセット書き出しのタスクを作成。
# scaleは解像度(m)。指定しないとオリジナルの値が使われる。
export_task = ee.batch.Export.image.toAsset(
image = alos_dem, description = "ALOS DEM Exporting Test",
assetId = "users/{USER_NAME}/TEST_ALOS_DEM", scale = 1,
region = region
)
# 書き出し実行。
ee.batch.data.startProcessing(export_task.id, export_task.config)
{USER_NAME}
를 만든 사용자 이름으로 바꿉니다. 이미지의 내보내기 범위는 튜토리얼 에 있는 ee.Geometry.Rectangle 을 사용하는 방법이라면 TypeError: Object of type Geometry is not JSON serializable
라는 오류가 발생했기 때문에 목록에서 내보내기 범위를 지정하고 있습니다. 이것이 파이썬 3을 사용하고 있기 때문인지 파이썬 2에서도 같은지 알 수 없습니다.
스크립트를 실행하면 웹의 Code Editor의 Tasks 탭에 내보내기 작업이 추가되고 잠시 기다리면 자산 목록에 TEST_ALOS_DEM
라는 이미지가 추가되어야합니다.
참고 페이지
Google 드라이브에 저장
계속?
Reference
이 문제에 관하여(Google 어스 엔진의 파이썬 API 사용하기 - 2부: 자산 읽기/쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/marchen/items/31c7a1643c3a0ffcb1bd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# ライブラリ初期化。
import ee
ee.Initialize()
# ALOS DEMの読み込み。
alos_dem = ee.Image("JAXA/ALOS/AW3D30_V1_1")
# 書き出し範囲を作成。
region = [
[139.767, 35.681], [139.767, 35.691],
[139.777, 35.691], [139.777, 35.681]
]
# アセット書き出しのタスクを作成。
# scaleは解像度(m)。指定しないとオリジナルの値が使われる。
export_task = ee.batch.Export.image.toAsset(
image = alos_dem, description = "ALOS DEM Exporting Test",
assetId = "users/{USER_NAME}/TEST_ALOS_DEM", scale = 1,
region = region
)
# 書き出し実行。
ee.batch.data.startProcessing(export_task.id, export_task.config)
Reference
이 문제에 관하여(Google 어스 엔진의 파이썬 API 사용하기 - 2부: 자산 읽기/쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/marchen/items/31c7a1643c3a0ffcb1bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)