일반적인 질문
문제가 있습니다. 도움이 필요합니다.
이 가이드에 따라 질문을 게시하고 가능한 한 많은 정보를 제공합니다(좋은 질문을 하는 방법에 관한 Stack Overflow 가이드 참고). 이는 일반적으로 다음을 의미합니다.
코드 편집기에서 스크립트 링크 전송('링크 가져오기' 버튼을 클릭하여 가져오기)
스크립트를 실행하는 데 필요한 애셋을 공유하는 것입니다
실패한 일괄 태스크의 경우 실패한 태스크의 ID를 보고합니다. 작업 ID는
4C25GIJBMB52PXTEJTF4JLGL와 같습니다. 코드 편집기의 작업 탭에서 찾을 수 있습니다. 자세히 알아보기
Earth Engine 아키텍처에 대해 어디에서 읽을 수 있나요?
Gorelick et al. 2017 논문을 참고하세요.
Google에서 만들지 않은 Earth Engine 튜토리얼 중 추천하는 것이 있나요?
추천하는 원격 감지 튜토리얼이 있나요?
원격 감지 소개 동영상이 포함된 우자발 간디의 무료 EE 과정을 참고하세요.
Earth Engine 프로그래밍
일반적인 코딩 오류에는 어떤 것이 있나요?
디버깅 가이드를 참고하세요.
'… is not a function' 오류가 발생하는 이유는 무엇인가요?
이 오류는 Earth Engine에서 호출된 메서드를 찾을 수 없을 때 발생합니다. 다음과 같은 일반적인 원인을 확인하세요.
철자 또는 대소문자 구분: 메서드는 대소문자를 구분합니다. API 참조에서 맞춤법을 확인합니다.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
유형 변환 누락: .get()와 같은 함수에서 반환된 값은 일반 ee.ComputedObject 인스턴스이며 명시적으로 변환해야 합니다. 알 수 없는 객체 유형 변환을 참조하세요.
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
클라이언트 및 서버 메서드 혼합: Earth Engine 객체에서 표준 JavaScript 또는 Python 메서드 (예: .push() 또는 .append())를 사용하지 않는지 확인합니다. 클라이언트 및 서버 함수 혼합 방지를 참고하세요.
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
사용할 수 없는 메서드: 객체의 유형이 올바르고 메서드가 문서에 있거나 이전에 작동했지만 지금은 실패하는 경우 버그를 신고합니다.
ee.Image("image") * 2와 같은 기본 수학을 사용할 수 없는 이유는 무엇인가요?
EE에서는 서버 측 객체 또는 작업과 클라이언트 측 객체 또는 작업을 혼합해서는 안 됩니다. EE 객체에 대한 모든 작업은 서버 측에서 수행됩니다. 클라이언트 측 계산은 의도한 대로 작동하지 않습니다. 자세한 내용은 이 페이지를 참조하세요.
for 루프 또는 if/else 문을 사용하려면 어떻게 해야 하나요?
Earth Engine 프로그래밍은 함수형 언어를 사용하여 수행되므로 루프 및 조건부 연산은 map 또는 filter과 같은 동등한 개념을 사용하여 표현해야 합니다. 자세한 내용은 이 페이지를 참고하세요.
이미지나 동영상에 텍스트 라벨을 표시하려면 어떻게 해야 하나요?
텍스트 라벨에 대한 기본 제공 지원은 없지만 다음을 수행할 수 있습니다.
- 서드 파티 JS 패키지를 사용합니다. 예시 보기
- 서드 파티 Python 패키지 geemap을 사용합니다.
- EE QGIS 플러그인을 사용하여 EE 이미지를 가져오는 QGIS 사용
표준 색상 팔레트를 사용할 수 있나요?
서드 파티 JS 패키지 ee-palettes를 사용합니다.
Earth Engine을 사용하는 나만의 웹사이트를 만들려면 어떻게 해야 하나요?
기본 애플리케이션에는 Earth Engine 앱을 사용합니다. 더 복잡한 경우에는 EE 기반 App Engine 앱을 빌드할 수 있습니다.
지도 ID는 어떻게 작동하나요?
지도 ID (API 전체에서 mapid라고 함)는 클라이언트가 지도 타일을 가져올 수 있는 키입니다. 각 ID는 getMapId 엔드포인트에 이미지 표현식을 제공하여 생성된 해시입니다. 결과 ID는 이후 단계에서 타일을 생성하는 데 사용될 이미지 표현식과 사용자 인증 정보를 모두 가리키는 키입니다.
지도 타일을 요청하려면 타일의 위치 (x, y, zoom)와 mapid (이미지 및 사용자 인증 정보의 키)를 지정해야 합니다. 동일한 ID를 재사용하여 여러 지도 타일을 로드할 수 있습니다. mapid 키 재사용에는 제한이 없지만 몇 시간 후에 만료됩니다. ID가 유지되는 구체적인 기간은 공개되지 않지만, 작성하는 모든 코드는 ID 만료에 대응할 수 있어야 합니다.
이러한 ID를 만들려면 소량의 데이터를 저장하고 사용자 인증 정보를 검증해야 하므로 가능한 한 오랫동안 재사용하는 것이 좋습니다. getMapId 엔드포인트와 특별히 연결된 API 할당량은 없지만 타일을 가져오는 속도에 가까운 속도로 mapid 객체를 만드는 워크플로는 잘못된 것일 수 있습니다. Earth Engine에는 이러한 ID를 삭제, 나열 또는 관리하는 API 엔드포인트가 없습니다. 이러한 ID는 일시적인 리소스이기 때문입니다.
ee.Algorithms.If()에서 true 및 false 사례를 모두 출력하는 이유는 무엇인가요?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
If() 알고리즘은 알고리즘 자체가 실행되기 전에 모든 인수를 평가해야 한다는 점에서 Earth Engine의 다른 모든 알고리즘과 마찬가지로 작동합니다.
알고리즘은 trueCase 및 falseCase 결과를 모두 가져온 다음 condition 인수를 기반으로 하나를 선택하고 반환하지만, 이러한 값이 알고리즘에 전달되려면 먼저 두 경로를 모두 실행해야 합니다.
'요청 페이로드 크기가 한도를 초과합니다'라는 오류가 표시됩니다.
Earth Engine에 매우 큰 요청을 전송하려고 합니다. 이는 일반적으로 코드에서 클라이언트 측 'for' 루프를 많이 사용하거나 여러 도형 객체에서 FeatureCollection을 구성할 때 발생합니다. 후자의 경우 스크립트에서 이러한 도형을 만드는 대신 도형이 포함된 CSV 파일을 생성하고 테이블 애셋에 업로드합니다.
ee.Image.clip()과 ee.Filter.bounds()는 어떻게 다른가요?
이 GIS Stack Exchange 스레드를 참고하세요.
ee.Image.clip() 함수는 지정된 ee.Geometry 또는 ee.Feature와 교차하지 않는 픽셀을 마스킹하여 시각화에서 투명하게 만들고 계산에서 제외합니다. 이미지에서 픽셀을 잘라내는 것으로 개념화할 수 있습니다.
ee.Filter.bounds() 함수는 ee.Geometry 또는 ee.Feature와의 이미지 교차를 기반으로 ee.ImageCollection에서 ee.Image 객체를 필터링합니다. 이는 분석 범위를 지정된 리전과 교차하는 이미지만으로 제한하는 데 사용되며, 표현식을 최적화하는 데 도움이 됩니다.
픽셀당 하나의 특성으로 이미지 픽셀을 특성 컬렉션으로 변환하는 방법
ee.Image.sample() 함수를 사용합니다. 함수의 API 참조 페이지에서 사용 예시를 참조하세요.
ee.ImageCollection.merge()과 ee.ImageCollection.combine()의 차이점은 무엇인가요?
ee.ImageCollection.merge() 함수는 각 이미지에 일치하는 밴드, 메타데이터, CRS 또는 배율이 있는지 여부와 관계없이 두 컬렉션의 모든 이미지를 하나의 컬렉션으로 병합합니다. 두 컬렉션의 합집합입니다. combine() 메서드는 두 컬렉션에서 일치하는 이미지의 밴드를 단일 컬렉션으로 결합합니다. 일치하는 이미지는 동일한 ID (system:index 속성)를 공유합니다. 이미지 ID를 기반으로 두 컬렉션의 내부 조인이며, 일치하는 이미지의 밴드가 결합됩니다. 일치하는 이미지의 경우 보조 이미지의 밴드가 기본 이미지에 추가됩니다 (덮어쓰기는 선택사항). 일치하는 이미지가 없으면 빈 컬렉션이 반환됩니다.
여러 기간에 걸쳐 이미지 컬렉션을 필터링하려면 어떻게 해야 하나요?
이 GIS Stack Exchange 스레드를 참고하세요.
여러 컬렉션을 함께 merge()하거나 ee.Filter.or()를 사용하세요.
특정 지점 주변에 경계 상자를 만들려면 어떻게 해야 하나요?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
Data Catalog
데이터 세트 X를 추가할 수 있나요?
데이터 세트 요청 가이드에 따라 데이터 세트 요청 버그를 신고합니다.
Earth Engine 홈 폴더에 데이터를 업로드할 수도 있습니다. 래스터 데이터 가져오기 및 테이블 데이터 가져오기를 참조하세요.
기존 데이터 세트에 새 버전이 있음
데이터 세트 요청 가이드에 따라 데이터 세트 버그를 신고하고 데이터 세트 업데이트를 요청하고 있음을 표시합니다.
기존 데이터 세트가 업데이트되지 않거나 애셋이 누락됨
문제를 신고하기 전에 가능하면 선택한 애셋이 데이터 세트 제공업체의 사이트에 실제로 존재하는지 확인하세요. 자세한 내용은 누락된 이미지 가이드를 참고하세요.
ImageCollection를 필터링하여 애셋을 찾는 경우 필터가 너무 제한적이지 않은지 확인합니다.
특히 다음 사항에 유의하세요.
Sentinel-2 SR (Level 2 데이터)은 초기 Level 1 장면에 대해 ESA에서 생성되지 않았습니다.
Landsat은 2000년 이전의 전 세계 데이터를 보유하고 있지 않습니다.
기존 데이터 세트에 잘못된 값이 있음
개발자 포럼에 게시 애셋의 원래 해상도로 확대하고 어떤 값이 잘못되었는지 명확하게 보여주는 스크립트를 포함합니다. 대체 값을 관찰한 위치를 정확하게 설명합니다.
데이터 세트에 대해 다른 곳에서 질문할 수 있나요?
NASA 데이터 세트에 관한 질문은 NASA Earth Data 포럼을 참조하세요.
코페르니쿠스 데이터 세트에서 작동하는 도구 상자에 대한 질문은 S1, S2, S3 포럼을 참조하세요.
EE 카탈로그의 크기는 얼마나 되나요?
2023년 10월 현재 카탈로그에는 1, 000개 이상의 데이터 세트가 포함되어 있습니다. 디스크 크기는 무손실 압축을 고려한 후 90페타바이트가 넘습니다.
EE의 데이터는 얼마나 자주 업데이트되나요?
일반적으로 모든 진행 중인 데이터 세트는 최소한 매일 업데이트됩니다 (모든 데이터 세트에 매일 새로운 데이터가 있는 것은 아님). 일부 데이터 세트는 하루에 여러 번 업데이트됩니다. 하지만 카탈로그에 최신 애셋이 있는지 확인하는 정책은 없습니다.
프로그래매틱 방식으로 EE 카탈로그의 콘텐츠를 보려면 어떻게 해야 하나요?
데이터 세트 목록은 STAC 형식으로 Google Cloud Storage 버킷 gs://earthengine-stac에 내보내집니다.
항목 파일은 catalog.json입니다.
분석에 Google 지도 데이터나 이미지를 사용할 수 있나요?
Google은 분석을 위해 기본 지도 데이터를 라이선스하거나 판매하지 않습니다.
저작물이 처리된 날짜를 확인하려면 어떻게 해야 하나요?
'system:version' 애셋 속성은 유닉스 시간 이후의 마이크로초로 형식이 지정된 수집 타임스탬프입니다. 다음은 Landsat 이미지의 처리 타임스탬프를 인간이 읽을 수 있는 형식으로 변환하는 예시입니다.
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
Earth Engine 카탈로그에 JSON-LD 메타데이터가 있나요?
예, JSON-LD 메타데이터가 카탈로그 HTML 페이지에 삽입되어 있습니다. 예를 들어 Sentinel-2 페이지에는 다음 블록이 포함되어 있습니다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
simpleComposite 알고리즘은 어떻게 구현되나요?
서버 측 구현은 이 JavaScript 코드와 동일합니다.
Landsat 표면 반사율 데이터에서 구름이 없는 합성 이미지를 만들려면 어떻게 해야 하나요?
Landsat 레벨 2 (표면 반사율) 데이터에는 구름 및 기타 원치 않는 이미지 아티팩트를 마스킹하는 데 사용할 수 있는 여러 품질 대역이 있습니다. 이러한 밴드를 사용하여 Landsat 8 SR 이미지를 처리하고 구름이 없는 중앙값 합성 이미지를 만드는 예시는 이 GIS Stack Exchange 게시물에 나와 있습니다. 개발자 가이드의 지도 분류 예시에 사용할 구름 없는 합성 이미지를 빌드하는 데도 동일한 절차가 사용됩니다.
센서 간 Landsat 표면 반사율 조정이 필요한가요?
Roy et al., 2016에는 Landsat 7~8 TOA와 표면 반사율 간의 반사율 차이 분석이 포함되었습니다. 독자가 한 센서 데이터의 반사율 값을 다른 센서 데이터로 변환할 수 있도록 OLS 및 RMA 계수를 게시했습니다. 논문의 마지막 줄에는 '센서 차이는 매우 작지만 Landsat 데이터 애플리케이션에 따라 상당한 영향을 미칠 수 있습니다'라고 명시되어 있습니다. 하지만 이 분석은 수집 전 데이터를 기반으로 했습니다.
Collection 1 및 Collection 2 재처리 중에 개선된 사항은 센서 간의 관계에 영향을 미칠 수 있지만, Collection 1 또는 Collection 2 데이터에 대해 Roy et al. (2016)과 유사한 분석은 없는 것으로 알고 있습니다. 공식적인 분석은 없지만 영향력 있는 Landsat 사용자들 사이에서는 컬렉션 2, 레벨 2 (표면 반사율) 데이터에 대한 보정이 필요하지 않다는 일반적인 합의가 있는 것으로 보입니다. 예를 들어 Landsat 과학팀의 마이크 울더는 Collection 2, Level 2 조화의 필요성에 관한 질문에 대한 답변에서 관심 있는 애플리케이션의 특성(토지 피복 매핑 및 변화 감지 포함)에 따라 Collection 2 표면 반사율 제품은 센서 간 조정 없이도 매우 적합하고 신뢰할 수 있다고 언급했습니다.
MSS 이미지에서 구름과 구름 그림자를 마스킹하려면 어떻게 해야 하나요?
JavaScript 코드 편집기의 서드 파티 msslib 모듈에는 MSScvm 알고리즘 구현과 MSS 데이터를 탐색하고 준비하는 데 유용한 기타 함수가 포함되어 있습니다.
데이터 관리
내가 업로드하는 데이터의 소유자는 누구인가요?
Earth Engine 서비스 약관에 따라 고객은 Earth Engine에 업로드하는 데이터를 소유합니다.
데이터를 업로드할 수 없습니다.
코드 편집기의 오른쪽 상단에 있는 작업 창에서 업로드 작업 상태를 확인합니다. 전용 작업 페이지를 볼 수도 있습니다.
태스크가 없으면 코드 편집기를 통해 파일을 업로드하려고 시도했지만 네트워킹 문제로 인해 파일 업로드가 완료되지 않아 태스크가 생성되지 않았을 수 있습니다. 다른 브라우저나 다른 컴퓨터를 사용해 보세요.
실패한 태스크가 있으면 표시되는 오류를 검토합니다. 특정 오류 메시지가 없으면 먼저 래스터 파일의 경우 gdalinfo, 벡터 파일의 경우 ogr2ogr를 실행하여 파일이 손상되지 않았는지 확인합니다.
이러한 명령어는 소스 파일에서 모든 데이터를 읽으려고 시도하고 파일이 손상된 경우 오류를 표시합니다.
gdalinfo 호출 예시:
gdalinfo -mm -stats -checksum file.tif
in.shp를 out.csv로 변환하는 ogr2ogr 호출 예시:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
파일이 유효한 것으로 보이면 실패한 작업 ID를 스크린샷이 아닌 텍스트로 개발자 메일링 리스트에 게시합니다.
작업 ID의 형식은 4C25GIJBMB52PXTEJTF4JLGL입니다. 가능하면 소스 파일을 공개적으로 읽을 수 있도록 설정합니다. 비공개 파일인 경우 Earth Engine팀에서 검토하도록 하려면 earthengine@google.com에만 공유하세요. 소스 파일을 공유할 수 없는 경우 최소한 gdalinfo -mm -stats -checksum의 출력을 제공하세요.
Earth Engine에서 특정 투영을 지원하지 않는 경우 업로드하기 전에 데이터를 다시 투영해야 합니다(예: gdalwarp 사용).
NetCDF 또는 지원되지 않는 다른 래스터 형식의 파일을 업로드하려면 어떻게 해야 하나요?
GeoTIFF만 Earth Engine에 업로드할 수 있습니다. 다른 GDAL 호환 형식은 gdal_translate를 사용하여 GeoTIFF로 변환할 수 있습니다. 예:
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
일부 NetCDF 또는 HDF 파일은 gdalinfo로 검색할 수 있는 여러 하위 데이터 세트로 구성됩니다. 이 경우 gdal_translate 명령어는 다음과 같습니다 (큰따옴표 사이의 경로 참고).
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
NetCDF 파일에는 GDAL이 인식하는 투영이 포함되지 않는 경우가 있습니다. 이 경우 gdal_translate 명령줄에서 투영 및 공간 범위를 설정해야 합니다. 예:
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
업로드된 GeoTIFF에 어떤 압축 알고리즘을 사용할 수 있나요?
업로드 시 GeoTIFF는 DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP 또는 ZSTD로 압축할 수 있습니다. Earth Engine이 제자리에서 읽는 COG(ee.Image.loadGeoTIFF() 또는 COG 지원 애셋)는 DEFLATE, JPEG, LZW, PACKBITS, ZSTD 또는 압축 없음(COG 권장사항 참고)을 사용할 수 있습니다.
ZSTD는 대부분의 이미지를 잘 압축하면서도 압축 해제가 빠르므로 전반적으로 좋은 선택입니다.
gdal_translate를 사용할 때 ZSTD 압축을 적용하려면 다음 옵션을 추가합니다. 데이터에 부동 소수점 값이 있으면 PREDICTOR를 3으로 변경합니다. 업로드하는 대신 COG로 등록하려는 파일은 COG 등록 가이드를 참조하세요.
gdal_translate in.tif out.tif \
-co BIGTIFF=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=16 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
래스터 처리가 며칠 동안 실행되었지만 완료되지 않았습니다.
gdalinfo를 사용하여 파일에 다음 GDAL 옵션이 설정되어 있는지 확인합니다.
INTERLEAVE=PIXEL 이 옵션과 많은 밴드가 있는 파일의 경우 이러한 파일의 레이아웃으로 인해 읽기가 매우 느려지므로 수집이 완료되지 않을 수 있습니다.
업로드하기 전에 이러한 파일을 밴드 인터리브 레이아웃으로 변환해 보세요.
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
이는 수집에 적용됩니다. COG 지원 애셋은 두 인터리브를 모두 지원합니다(단일 대역 파일과 다중 대역 파일 참고).
업로드한 래스터가 기본 지도와 일치하지 않습니다.
데이터가 기본 지도에서 약간 벗어난 경우 투영에 잘못된 데이터 (지구 모양에 대한 가정)가 있을 수 있습니다.
이는 GDAL 메타데이터에서 완전히 인코딩할 수 없는 정현파 투영에서 가장 자주 발생합니다. 타겟 투영이 무엇인지 알고 있는 경우 (예: MODIS 정현곡선 투영을 사용하는 파일의 경우 SR-ORG:6974) 명령줄 업로드 중에 --crs 플래그를 설정하거나 업로드 매니페스트의 crs 필드를 설정합니다.
데이터가 심하게 왜곡되거나 완전히 잘못된 위치에 표시되면 투영 또는 아핀 변환이 잘못되었을 수 있습니다.
내 래스터가 동반구에만 표시됩니다.
경도 범위 [0, 360]에 걸쳐 있는 전역 래스터를 업로드했을 수 있습니다. 하지만 Earth Engine에서는 래스터가 [-180, 180] 범위에 있어야 합니다. 수집 전에 래스터의 왼쪽과 오른쪽 절반을 바꿉니다. GIS Stack Exchange 제안사항을 참고하세요.
수집된 분류 이미지가 얼룩덜룩하게 보이는 이유는 무엇인가요?
기본 MEAN
피라미드 정책을 사용했을 수 있습니다.
분류 이미지의 경우 MODE 피라미드 정책을 사용해야 합니다. QA/비트마스크 이미지의 경우 SAMPLE 피라미드 정책을 사용해야 합니다.
다음 오류가 발생합니다. 데이터 값 -128.0을 Short<0, 255> 유형의 밴드 #0에 적용할 수 없습니다.
GDAL은 단일 바이트 밴드를 부호 있는 정수를 포함하는 것으로 처리할 수 없으므로 이러한 밴드를 부호 없는 정수로 읽습니다. 이는 음수 데이터 없음 값과 충돌합니다.
값이 실제로 부호 있는 정수인 경우 매니페스트 업로드를 사용하고 파일을 포함하는 타일셋 섹션에 data_type: "INT8"를 추가합니다.
값이 부호 없는 정수인 경우 파일에 잘못된 nodata 값이 있습니다. 업로드 시 올바른 데이터 값 (또는 존재하지 않는 값)으로 재정의할 수 있습니다. gdal_translate -a_nodata를 사용하여 nodata 값을 변경하거나 gdal_edit.py -unsetnodata를 사용하여 삭제할 수도 있습니다.
GeoJSON 또는 지원되지 않는 다른 벡터 형식의 파일을 업로드하려면 어떻게 해야 하나요?
ogr2ogr를 사용하여 OGR 호환 형식을 CSV 또는 SHP로 변환합니다. 예:
or2ogr -f "ESRI Shapefile" file.shp file.kml
CSV 업로드에서 도형 열에는 GeoJSON이 포함될 수 있습니다.
Python을 사용하여 데이터를 업로드하거나 한 번에 여러 파일을 업로드하고 싶습니다.
명령줄 업로드를 사용합니다. 이러한 업로드를 수행하려면 먼저 소스 파일을 GCS (Google Cloud Storage) 버킷에 배치해야 합니다. 무료 등급 한도 내에서 GCS를 사용하면 비용이 청구되지 않습니다. 가격 책정 페이지를 참조하세요.
여러 타일로 분할된 대규모 래스터 모자이크를 업로드하고 싶습니다.
파일의 투영 및 픽셀 크기가 모두 동일한 경우 동일한 애셋에 함께 업로드하면 자동으로 모자이크 처리됩니다.
파일의 투영 또는 픽셀 크기가 다른 경우 단일 래스터 애셋으로 모자이크할 수 없습니다. 대신 각 타일을 별도의 애셋으로 동일한 ImageCollection에 업로드합니다. 이 애셋은 ImageCollection.mosaic()를 사용하여 모자이크 처리할 수 있습니다.
모자이크를 업로드하려고 하는데 타일이 일치하지 않는다는 오류가 발생합니다.
Earth Engine 래스터 모자이크의 타일은 투영 및 픽셀 크기가 동일해야 합니다. 또한 타일은 픽셀 경계에 정확하게 정렬되어야 합니다.
GCS 버킷에서 파일을 업로드하려고 하는데 Earth Engine에서 파일을 찾을 수 없습니다.
GCS 업로드와 Earth Engine 연결에 서로 다른 Google 계정을 사용했을 수 있습니다. Earth Engine에 연결하는 데 사용하는 계정에서 GCS 파일을 읽을 수 있는지 확인합니다. 브라우저 멀티로그인으로 인해 혼동이 발생하는 경우 시크릿 브라우저 창에서 Earth Engine에 연결합니다.
한 번에 여러 애셋을 내보내고 싶습니다.
각 이미지를 별도로 내보내야 합니다.
단일 명령어로 Folder 또는 ImageCollection를 이동하거나 삭제하고 싶습니다.
earthengine rm -r는 폴더 또는 컬렉션과 그 안의 모든 항목을 삭제하지만 한 번에 하나의 애셋을 삭제하므로 대규모 컬렉션은 몇 시간이 걸릴 수 있습니다. 더 빠르게 진행하려면 스크립트에서 하위 요소를 동시에 삭제한 다음 상위 요소를 삭제합니다(대규모 컬렉션 작업 참조). 동일한 접근 방식이 모든 플랫 컬렉션 또는 폴더에 적용됩니다. 다른 폴더나 컬렉션이 포함된 폴더는 비어 있을 때까지 컨테이너를 삭제할 수 없으므로 아래에서 위로 비워야 합니다. 이동하려면 mv를 동일한 방식으로 사용합니다.
EE 외부에서 Earth Engine 데이터에 직접 액세스하고 싶습니다.
QGIS에는 Earth Engine 플러그인이 있습니다.
GDAL에는 Earth Engine 드라이버가 있습니다.
다른 시스템에서는 EE REST API를 사용할 수 있습니다.
Earth Engine 애셋을 완전히 다시 처리하지 않고 일부를 업데이트하고 싶습니다.
EE에 업로드된 래스터 또는 벡터 데이터는 업데이트할 수 없습니다. 저작물 메타데이터 속성만 업데이트할 수 있습니다. 예외는 COG 지원 애셋입니다. 덮어쓰기를 사용 설정한 상태로 다시 등록하여 업데이트된 Cloud Storage 파일을 가리킬 수 있습니다.
내 계정에 액세스할 수 없게 됩니다. 내 저작물은 어떻게 해야 하나요?
원래 계정의 정책에서 데이터 전송을 허용하는 경우 애셋을 다른 계정과 공유한 다음 새 계정에서 소유할 애셋을 복사하세요. 이동할 애셋이 많은 경우 명령줄 복사 유틸리티를 사용합니다.
계정이 삭제되면 해당 계정이 소유한 애셋에 더 이상 액세스할 수 없습니다.
내보낸 이미지가 잘못된 위치에 있습니다.
사인 곡선 또는 원뿔과 같은 일부 투영의 경우 GeoTIFF 파일이 필요한 모든 투영 매개변수를 저장하지 못할 수 있습니다. 이로 인해 데스크톱 GIS 도구에서 보거나 EE로 다시 수집할 때 내보낸 파일이 잘못된 위치에 표시됩니다.
이 문제를 해결하려면 GeoTIFF 파일에서 잘 작동하는 것으로 알려진 내보내기 crs 매개변수를 지정합니다. 예를 들어 관심 영역이 포함된 UTM 영역의 EPSG 코드를 사용합니다.
내보낸 피처 컬렉션 애셋이 내가 설정한 속성을 유지하지 않습니다.
Export.table.* 함수는 출력에서 테이블 수준 속성을 보존하지 않습니다.
많은 출력 형식 (예: CSV, GeoJSON)에서는 이러한 메타데이터를 지원하지 않습니다. Export.table.toAsset 함수는 테이블 수준 속성을 지원할 수 있지만 현재는 지원하지 않습니다.
CSV 형식으로 Drive로 내보낸 표는 XLSX 형식으로 변환됩니다.
Google Drive 설정에 따라 Earth Engine에서 내보내는 CSV 테이블을 데이터 유형 변환과 같은 의도하지 않은 효과가 있는 XLSX 파일로 변환할 수 있습니다. 이후 내보내기의 동작을 수정하려면 다음 단계를 따르세요.
- 웹의 Google Drive에서 오른쪽 상단의 설정 톱니바퀴를 클릭합니다.
- '설정'을 클릭합니다.
- '업로드된 파일을 Google Docs 편집기 형식으로 변환'으로 스크롤하여 선택 해제합니다.
클라우드 최적화 GeoTIFF (COG)
배경 정보는 COG 개요 및 COG 등록 가이드를 참조하세요.
COG 지원 애셋을 공유했는데 공동작업자에게 권한 오류가 표시됩니다.
COG 지원 애셋은 Cloud Storage 버킷의 파일에 대한 포인터이므로 공동작업자는 Earth Engine 애셋과 버킷 모두에 대한 읽기 액세스 권한이 필요합니다. 버킷에서 스토리지 객체 뷰어 및 스토리지 버킷 뷰어 역할을 부여합니다. 그렇지 않으면 볼 수 있는 애셋에 대한 권한 오류는 일반적으로 둘 중 하나가 누락되었음을 의미합니다. 권한 구성을 참조하세요.
COG 애셋을 저장하려면 어떤 Cloud Storage 버킷 위치를 사용해야 하나요?
미국 내 일부 위치만 지원되며 Earth Engine은 다른 위치의 버킷에 대한 등록 및 읽기 요청을 거부합니다. 지원되는 버킷 위치를 참조하세요.
Cloud Storage에서 COG 파일을 교체했습니다. 애셋이 로드되지 않거나 이전 데이터가 계속 표시되는 이유는 무엇인가요?
COG를 등록하면 Earth Engine에서 파일의 객체 생성(버전)을 고정하므로 파일을 제자리에서 덮어써도 애셋이 업데이트되지 않습니다. 동일한 이름으로 애셋을 다시 등록하고 덮어쓰기를 사용 설정합니다. 먼저 삭제할 필요는 없습니다. COG 지원 애셋 업데이트, 교체, 삭제를 참고하세요.
COG 지원 애셋이 가리키는 파일 버전을 어떻게 알 수 있나요?
애셋의 메타데이터 (ee.data.getAsset())는 고정된 세대를 파일 URI의 서픽스로 표시합니다. 객체 세대를 참조하세요.
Cloud Storage에서 COG 파일을 삭제하고 Earth Engine 애셋은 삭제하지 않거나 그 반대의 경우 어떻게 되나요?
독립적입니다. Earth Engine 애셋을 삭제해도 Cloud Storage의 파일은 그대로 유지되며, 파일을 삭제해도 애셋은 그대로 유지되지만 일반적으로 픽셀을 읽을 수 없게 됩니다. 독립적인 수명 주기를 참고하세요.
대규모 COG 지원 ImageCollection를 삭제하거나 교체하는 가장 빠른 방법은 무엇인가요?
Earth Engine API에는 일괄 또는 재귀 삭제가 없으며 earthengine rm -r는 한 번에 하나의 애셋을 삭제합니다. 이미지를 교체하는 경우 삭제하는 대신 덮어쓰기를 사용 설정하여 다시 등록합니다. 삭제하는 경우 스크립트에서 병렬화합니다. 접근 방식과 스크립트는 대규모 컬렉션 작업을 참조하세요.
내 COG 등록이 작업 탭에 표시되지 않는 이유는 무엇인가요?
COG 등록은 일괄 수집 작업이 아닌 파일의 메타데이터만 색인 생성하는 동기식 API 호출이므로 태스크를 만들지 않습니다. 호출이 반환되는 즉시 애셋 탭에서 애셋을 사용할 수 있습니다. 등록 요청 제출을 참조하세요.
여러 COG 파일을 하나의 Earth Engine 애셋으로 결합할 수 있나요?
각 파일에 동일한 장면의 서로 다른 밴드가 포함된 경우에만 매니페스트에서 각 파일을 자체 타일 세트로 나열하고 밴드를 타일 세트에 매핑합니다. 공간적으로 인접한 파일을 하나의 COG 지원 애셋으로 모자이크할 수 없습니다. 각 파일을 ee.ImageCollection에서 자체 이미지로 등록하고 mosaic()를 호출합니다. 매니페스트 제한사항을 참조하세요.
COG 지원 애셋은 어떤 압축 스키마, 타일 크기, 픽셀 유형을 사용할 수 있나요?
지원되는 압축 스키마, 타일 크기, 픽셀 데이터 유형은 외부 COG 준비 권장사항을 참고하세요. Earth Engine에서 COG로 직접 읽을 수 없는 압축 형식의 파일은 계속 표준 애셋으로 업로드할 수 있습니다.
'처음 10000000바이트에서 TIFF의 메타데이터를 읽을 수 없습니다.'라는 오류가 표시됩니다.
Earth Engine은 파일을 로드하거나 등록할 때 파일의 시작 부분만 읽습니다. 타일이 많은 큰 이미지와 잘린 파일은 이 제한을 초과합니다. 한도 및 한도 내로 유지하는 방법은 파일 크기 선택을 참조하세요.
파일이 변경될 때 ee.Image.loadGeoTIFF()은 등록된 애셋과 어떻게 다른가요?
ee.Image.loadGeoTIFF()는 각 계산 또는 지도 타일 요청에서 현재 파일 버전을 읽으므로 대체 항목을 선택합니다 (렌더링된 지도 타일은 캐시된 상태로 유지되므로 지도에서 고르지 않음). 등록된 애셋은 항상 등록된 세대를 고정하며 새 파일을 보려면 다시 등록해야 하지만, 그 대신 공간과 메타데이터가 색인 생성되므로 대규모 컬렉션에서 사용할 수 있습니다. Cloud Storage에서 COG 읽기를 참조하세요.
코드 편집기
잘못된 계정을 사용하라는 메시지가 표시되어 코드 편집기에 로그인할 수 없습니다.
로그아웃하고 '계정 선택' 페이지에서 Earth Engine을 사용하도록 등록된 계정을 선택한 후 두 번째 '계정을 선택하여 Earth Engine 코드 편집기로 이동' 페이지에서 동일한 계정을 다시 선택합니다 (정확한 문구는 다를 수 있음).
세계 지도를 스크린샷하고 싶은데 웹 메르카토르 투영법이 마음에 들지 않습니다.
코드 편집기에서 사용되는 지도 투영은 웹 메르카토르('EPSG:3857')입니다. 적도에서 멀리 떨어진 객체의 크기를 부풀려 고위도 지역이 적도 근처 지역에 비해 실제보다 훨씬 크게 보이게 합니다. 코드 편집기의 지도 캔버스 투영은 변경할 수 없지만 ee.Image.changeProj 메서드를 사용하여 원하는 투영의 이미지를 웹 메르카토르 캔버스에 '페인트'할 수 있습니다.
로빈슨 도법으로 코드 편집기 지도에 전역 DEM을 표시하는 예시는 메서드의 API 참조 페이지를 참고하세요.
코드 편집기의 검사기 및 그리기 도구는 여전히 웹 메르카토르에서 작동하므로 이 기법은 시각화 목적으로만 사용해야 합니다.
스크립트가 저장되지 않습니다 (Script error: Unknown commit).
스크립트를 저장할 때 Script error: Unknown commit 메시지가 표시되면 저장 중인 저장소가 동기화되지 않았을 수 있습니다.
이 상태의 원인은 다양하며 식별하기 어렵습니다. 문제를 해결하려면 스크립트 탭의 오른쪽 상단에 있는 버튼을 사용하여 스크립트 목록을 새로고침해 보세요. 그래도 문제가 해결되지 않으면 스크립트 탭의 새로 만들기 버튼에서 새 저장소를 만들고 스크립트를 저장해 보세요(동기화되지 않은 저장소에서 새 저장소로 스크립트를 이동해야 할 수 있음).
코드 편집기에 400 오류가 반복적으로 표시되는 이유는 무엇인가요?
코드 편집기에서 400 오류가 반복적으로 표시되면 https://myaccount.google.com/connections로 이동하여 앱 및 서비스 목록에서 'Earth Engine 코드 편집기'를 찾아 선택한 다음 'Earth Engine 코드 편집기와의 모든 연결 삭제'를 선택하고 확인합니다. 그런 다음 코드 편집기를 열고 다시 인증합니다.
삭제된 스크립트와 폴더를 복구하려면 어떻게 해야 하나요?
기존 저장소 내의 스크립트나 폴더를 실수로 삭제한 경우 전체 커밋 기록은 Google 서버의 Git 로그에 보존됩니다. 표준 Git 명령줄 도구를 사용하여 저장소를 로컬로 클론하면 삭제된 스크립트나 폴더를 복원할 수 있습니다.
하지만 전체 저장소 (users/username/repository)를 삭제하면 저장소와 커밋 기록이 earthengine.googlesource.com에서 영구적으로 삭제되며 실행취소하거나 복구할 수 없습니다.
Git 사용자 인증 정보 생성, 저장소 클론, 삭제된 파일 또는 폴더 복원에 대한 단계별 안내는 스크립트 복구 및 저장소 이전 가이드를 참조하세요.
스크립트 저장소 루트의 이름을 바꾸려면 어떻게 해야 하나요?
스크립트 루트 디렉터리 (users/username)는 원래 Earth Engine 계정 등록에 바인딩됩니다. require('users/username/repository:...') 경로를 사용하여 모듈식 코드를 가져오는 외부 스크립트나 공동작업자 프로젝트가 중단되므로 백엔드에서 직접 이름을 바꿀 수 없습니다.
새 네임스페이스가 필요한 경우 지원되는 해결 방법은 작업을 새 계정으로 이전하는 것입니다.
- 새 Google 아이덴티티를 사용하여 새 Earth Engine 계정을 등록합니다 (새로운
users/new_username루트가 생성됨). - 저장소 마이그레이션 안내에 따라 이전 저장소를 클론하고 전체 기록을 새 빈 저장소에 푸시합니다.
중요 고려사항:
- 공개 모듈: 다른 사용자가 사용하는 공개 모듈이 있는 경우 워크플로가 중단되지 않도록 이전 계정과 저장소를 활성 상태로 유지하는 것이 좋습니다.
- 비공개 스크립트: 스크립트가 완전히 비공개인 경우 새 저장소 경로를 참조하도록
require()가져오기 문을 업데이트한 후 이전 저장소를 안전하게 삭제할 수 있습니다.