Code Editor UI 또는 'earthengine' 명령줄 도구의 upload
명령어보다 더 유연하게 Google Earth Engine (EE)에 이미지를 업로드해야 하는 경우 '매니페스트'라는 JSON 파일을 사용하여 이미지 업로드를 설명하고 명령줄 도구의 upload image --manifest
명령어를 사용하면 됩니다.
매니페스트를 사용하여 이미지 타일을 단일 애셋으로 업로드하는 방법을 보여주는 전체 예는 이 Colab 메모장을 참고하세요.
1회 설정
- 매니페스트 업로드는 Google Cloud Storage에 있는 파일에서만 작동합니다. Google Cloud Storage를 사용하려면 아직 프로젝트가 없는 경우 Google Cloud 프로젝트를 만듭니다. 설정하려면 결제용 신용카드를 지정해야 합니다. 현재 EE 자체는 누구에게도 요금을 청구하지 않지만 EE에 파일을 업로드하기 전에 Google Cloud Storage로 파일을 전송하면 소액의 비용이 발생합니다. 일반적인 업로드 데이터 크기 (수십 또는 수백 기가바이트)의 경우 비용이 매우 낮습니다.
- 프로젝트 내에서 Cloud Storage API를 사용 설정하고 버킷을 만듭니다.
- Earth Engine Python 클라이언트를 설치합니다. 여기에는 데이터 업로드에 사용할
earthengine
명령줄 도구가 포함되어 있습니다. - 자동 업로드의 경우 프로젝트와 연결된 Google Cloud 서비스 계정을 사용하는 것이 좋습니다. 테스트에는 서비스 계정이 필요하지 않지만, 잠시 시간을 내어 서비스 계정 사용법을 숙지하세요.
매우 큰 소스 파일 (100GB 이상)은 여러 개의 타일로 분할하면 더 빠르게 업로드될 수 있습니다.
저작물 ID 및 이름
Cloud 프로젝트 소유 애셋의 경우 애셋 이름에 projects/some-project-id/assets/some-asset-id
라는 규칙을 사용합니다.
기존 프로젝트 및 사용자 소유 확장 소재의 확장 소재 이름 알아보기
이전 기존 프로젝트의 경우 매니페스트의 애셋 이름이 Earth Engine의 다른 위치에 표시되는 애셋 ID와 약간 달라야 합니다. 저작물 ID가 users/some_user
또는 projects/some_project
로 시작하는 저작물을 업로드하려면 매니페스트의 저작물 이름에 ID 앞에 projects/earthengine-legacy/assets/
문자열을 추가해야 합니다. 예를 들어 EE 애셋 ID users/username/my_geotiff
는 projects/earthengine-legacy/assets/users/username/my_geotiff
라는 이름을 사용하여 업로드해야 합니다.
예. 즉, projects/some_projects/some_asset
와 같은 ID가 projects
가 두 번 언급된 이름(projects/earthengine-legacy/assets/projects/some_projects/some_asset
)으로 변환됩니다.
이는 혼란스럽지만 Google Cloud API 표준을 준수하는 데 필요합니다.
매니페스트 사용
기본 매니페스트는 다음 코드 블록에 나와 있습니다. gs://earthengine-test
라는 Google Cloud Storage 버킷에서 small.tif
라는 파일을 업로드합니다.
{ "name": "projects/some-project-id/assets/some-asset-id", "tilesets": [ { "sources": [ { "uris": [ "gs://earthengine-test/small.tif" ] } ] } ] }
사용하려면 manifest.json
파일에 저장하고 다음을 실행합니다.
earthengine upload image --manifest /path/to/manifest.json
gs://earthengine-test/small.tif
파일이 존재하며 공개적으로 읽을 수 있습니다. 테스트에 사용할 수 있습니다.
카드 세트
JSON의 다소 복잡한 매니페스트 구조는 일반적인 업로드 문제를 해결하기에 충분한 유연성을 제공하는 데 필요합니다. 즉, 여러 소스 파일의 픽셀을 단일 애셋으로 결합하는 모든 가능한 방법을 설명하는 방법입니다. 파일을 그룹화하는 방법에는 다음과 같이 두 가지가 있습니다.
- 모자이크 여러 파일이 여러 타일을 나타내는 경우도 있습니다 (예: 각 타일이 1x1도 정사각형임). 이러한 파일은 EE 애셋의 동일한 밴드로 모자이크 처리 (병합)되어야 합니다.
- 밴드를 구분합니다. 여러 파일이 여러 밴드를 나타내는 경우도 있습니다. 이러한 파일은 EE 애셋의 밴드로 함께 쌓여 있어야 합니다.
두 가지 방법을 동시에 사용해야 할 수도 있지만 이는 드문 상황입니다.
이러한 옵션을 설명하기 위해 매니페스트는 타일셋 개념을 도입합니다. 단일 tileset은 단일 GDAL 소스에 해당합니다. 따라서 단일 tileset의 모든 소스는 동일한 GDAL 구조(밴드 수 및 유형, 투영, 변환, 누락된 값)를 가져야 합니다. GDAL 소스에는 여러 밴드가 있을 수 있으므로 하나의 tileset에 여러 EE 밴드의 데이터가 포함될 수 있습니다.
모자이크 처리의 경우 매니페스트는 다음과 같습니다.
{ "name": "projects/some-project-id/assets/some-asset-id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/N30W22.tif" ] }, { "uris": [ "gs://bucket/N31W22.tif" ] } ] } ] }
별도의 밴드의 경우 매니페스트는 다음과 같이 표시됩니다 (아래에 설명된 대로 bands
섹션도 추가해야 함).
{ "name": "projects/some-project-id/assets/some-asset-id", "bands": ..., "tilesets": [ { "id": "tileset_for_band1", "sources": [ { "uris": [ "gs://bucket/band1.tif" ] } ] }, { "id": "tileset_for_band2", "sources": [ { "uris": [ "gs://bucket/band2.tif" ] } ] } ] }
별도의 밴드인 경우 명확성을 위해 각 tileset에 서로 다른 tileset ID를 지정해야 합니다. tileset ID는 임의의 문자열이 될 수 있습니다. 이러한 문자열은 업로드된 저작물에 유지되지 않습니다. tileset ID는 쌓인 tileset을 서로 구분하는 처리에만 사용됩니다.
대역
두 번째로 중요한 개념은 소스 파일을 EE 애셋 밴드에 일치시키는 것입니다.
매니페스트의 bands
섹션을 사용하여 이 작업을 실행합니다.
bands
섹션은 생략할 수 있습니다. 이 경우 밴드는 먼저 첫 번째 tileset의 파일에서 생성된 다음 다음 tileset에서 생성되고, 이렇게 계속해서 생성됩니다.
기본적으로 밴드의 이름은 'b1', 'b2' 등으로 지정됩니다. 기본 밴드 이름을 재정의하려면 다음과 같이 끝에 'bands' 섹션을 포함합니다.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/rgb.tif" ] } ] } ], "bands": [ { "id": "R", "tilesetBandIndex": 0 }, { "id": "G", "tilesetBandIndex": 1 }, { "id": "B", "tilesetBandIndex": 2 } ] }
EE 밴드 수는 모든 tileset의 총 밴드 수와 동일해야 합니다.
파일의 모든 밴드를 처리하고 싶지 않다면 tilesetBandIndex
필드를 사용하여 처리할 GDAL 밴드를 지정할 수 있습니다.
첫 번째 밴드의 tilesetBandIndex는 0입니다.
예:
소스 파일에 'tmin', 'tmin_error', 'tmax', 'tmax_error'의 4개 밴드가 있다고 가정해 보겠습니다. 'tmin' 및 'tmax'만 처리하려고 합니다. 관련 매니페스트 섹션은 다음과 같이 표시됩니다.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "temperature", "sources": [ { "uris": [ "gs://bucket/temperature.tif" ] } ] } ], "bands": [ { "id": "tmin", "tilesetBandIndex": 0, "tilesetId": "temperature" }, { "id": "tmax", "tilesetBandIndex": 2, "tilesetId": "temperature" } ] }
마스크 밴드
밴드 마스킹은 매니페스트의 maskBands
구성요소로 제어됩니다.
가능한 세 가지 마스크 구성이 지원되지만 마스크 밴드는 항상 특정 파일의 마지막 밴드로 간주됩니다.
- 동일한 파일의 모든 데이터 범위의 마스크입니다.
- 기타 모든 파일에서 가져온 모든 데이터 밴드의 마스크입니다.
- 일부 데이터 범위에 마스킹합니다.
1. 가장 일반적인 경우는 마지막 밴드가 다른 밴드의 마스크로 사용되는 단일 GeoTIFF입니다. 이는 Byte 유형의 GeoTIFF에만 작동합니다. 다음 매니페스트를 사용합니다.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "data_tileset", "sources": [ { "uris": [ "gs://bucket/data_file.tif" ] } ] } ], "bands": [ { "id": "data_band", "tilesetId": "data_tileset" }, { "id": "qa_band", "tilesetId": "data_tileset" } ], "maskBands": [ { "tilesetId": "data_tileset" } ] }
2. 마스크 GeoTIFF를 다른 GeoTIFF의 모든 밴드에 대한 마스크로 사용하려면 다음 매니페스트를 사용하세요.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "data_tileset", "sources": [ { "uris": [ "gs://bucket/data_file.tif" ] } ] }, { "id": "mask_tileset", "sources": [ { "uris": [ "gs://bucket/mask_file.tif" ] } ] } ], "bands": [ { "id": "data_band", "tilesetId": "data_tileset" }, { "id": "qa_band", "tilesetId": "data_tileset" } ], "maskBands": [ { "tilesetId": "mask_tileset" } ] }
3. GeoTIFF를 다른 파일의 특정 밴드의 마스크로 사용하려면 다음 매니페스트를 사용하세요. 이전 사례와의 차이점은 maskBands
의 bandIds
필드가 설정된다는 점입니다.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "data_tileset", "sources": [ { "uris": [ "gs://bucket/data_file.tif" ] } ] }, { "id": "mask_tileset", "sources": [ { "uris": [ "gs://bucket/mask_file.tif" ] } ] } ], "bands": [ { "id": "data_band", "tilesetId": "data_tileset" }, { "id": "qa_band", "tilesetId": "data_tileset" } ], "maskBands": [ { "tilesetId": "mask_tileset", "bandIds": ["data_band"] } ] }
마지막 예에서는 data_tileset
tileset의 두 밴드를 사용하지만 제공된 유일한 maskBands
목록 객체의 bandIds
필드에 지정된 대로 밴드 중 하나(data_band
)에만 마스크를 적용합니다.
maskBands
에 언급된 tileset의 마지막 밴드만 마스크 밴드로 사용됩니다.
피라미드 구조 정책
Earth Engine은 처리 중에 이미지 피라미드를 구성할 때 2x2픽셀 그리드를 단일 픽셀로 반복적으로 줄여야 하며, 이를 위해 어떤 방식으로든 픽셀 값을 변환해야 합니다. 기본적으로 픽셀 값은 평균화됩니다. 이는 래스터 밴드가 거의 연속적인 데이터를 나타내는 대부분의 경우 올바른 방법입니다. 그러나 기본값을 사용하면 잘못된 결과가 나오는 두 가지 상황이 있습니다. 이 경우 밴드 정의의 pyramidingPolicy
필드를 설정해야 합니다. 설정하지 않으면 기본적으로 값이 'MEAN'으로 간주됩니다.
래스터 이미지 분류의 경우 (예: 토지 피복 분류) 픽셀을 피라미드화하는 가장 논리적인 방법은 4가지 값의 대부분을 사용하여 다음 값을 생성하는 것입니다. 이는 'MODE' 피라미드식 정책을 사용하여 수행됩니다.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/landcover.tif" ] } ] } ], "bands": [ { "id": "landcover", "pyramidingPolicy": "MODE" } ] }
'MEAN'과 'MODE'가 적절하지 않은 래스터 밴드 (예: 비트 패킹된 픽셀)의 경우 'SAMPLE' 피라미딩 정책을 사용해야 합니다. 'SAMPLE'은 항상 각 2x2 그리드에서 왼쪽 상단 픽셀의 값을 사용합니다. 다음 예에서는 연속 변수 ('NDVI')를 나타내는 밴드에 'MEAN' 피라미딩 정책을 할당하고 데이터의 'QA' 밴드에 'SAMPLE'을 할당합니다.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/ndvi.tif" ] } ] } ], "bands": [ { "id": "NDVI", "tilesetBandIndex": 0, "pyramidingPolicy": "MEAN" }, { "id": "QA", "tilesetBandIndex": 1, "pyramidingPolicy": "SAMPLE" } ] }
시작 시간 및 종료 시간
특히 컬렉션에 포함된 경우 모든 저작물에 시작 시간과 종료 시간을 지정하여 데이터에 더 많은 맥락을 제공해야 합니다. 이 입력란은 필수 입력란은 아니지만 가능한 경우 항상 사용하는 것이 좋습니다.
시작 시간과 종료 시간은 일반적으로 소스 파일이 생성된 시간이 아니라 관찰 시간을 의미합니다.
종료 시간은 편의상 제외 경계로 취급됩니다. 예를 들어 정확히 하루 동안 적용되는 확장 소재의 경우 시작 시간과 종료 시간에 연속된 두 날짜의 자정(예: 1980-01-31T00:00:00 및 1980-02-01T00:00:00)을 사용합니다. 저작물에 재생 시간이 없는 경우 종료 시간을 시작 시간과 동일하게 설정합니다. 매니페스트에서 시간을 ISO 8601 문자열로 나타냅니다. 날짜 값을 단순화하려면 종료 시간이 제외된다고 가정하는 것이 좋습니다 (예: 일일 확장 소재의 경우 다음날 자정).
예:
{ "name": "projects/some-project-id/assets/some-asset-id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/img_20190612.tif" ] } ] } ], "startTime": "1980-01-31T00:00:00Z", "endTime": "1980-02-01T00:00:00Z" }
매니페스트 구조 참조
다음 JSON 구조에는 가능한 모든 이미지 업로드 매니페스트 필드가 포함되어 있습니다. 다음 매니페스트 필드 정의 섹션에서 필드 정의를 찾습니다.
{ "name": <string>, "tilesets": [ { "dataType": <string>, "id": <string>, "crs": <string>, "sources": [ { "uris": [ <string> ], "affineTransform": { "scaleX": <double>, "shearX": <double>, "translateX": <double>, "shearY": <double>, "scaleY": <double>, "translateY": <double> } } ] } ], "bands": [ { "id": <string>, "tilesetId": <string>, "tilesetBandIndex": <int32>, "missingData": { "values": [<double>] }, "pyramindingPolicy": <string> } ], "maskBands": [ { "tilesetId": <string>, "bandIds": [ <string> ] } ], "footprint": { "points": [ { "x": <double>, "y": <double> } ], "bandId": <string> }, "missingData": { "values": [<double>] }, "pyramidingPolicy": <string>, "uriPrefix": <string>, "startTime": { "seconds": <integer> }, "endTime": { "seconds": <integer> }, "properties": { <unspecified> } }
매니페스트 필드 정의
이름
string
만들려는 확장 소재의 이름입니다.
name
는 'projects/*/assets/**' 형식입니다(예: 'projects/earthengine-legacy/assets/users/USER/ASSET').
tilesets
list
카드 세트의 속성을 정의하는 사전 목록입니다.
자세한 내용은 다음 tilesets
사전 요소 필드를 참고하세요.
tilesets[i].dataType
string
데이터의 숫자 데이터 유형을 지정합니다. 기본값은 GDAL이 보고하는 유형이며 이 경우 정의할 필요가 없습니다.
데이터 유형 | 값 |
---|---|
미지정 | 'DATA_TYPE_UNSPECIFIED' |
8비트 부호 있는 정수 | "INT8" |
8비트 부호 없는 정수 | "UINT8" |
부호 있는 16비트 정수 | "INT16" |
부호 없는 16비트 정수 | 'UINT16' |
부호 있는 32비트 정수 | "INT32" |
부호 없는 32비트 정수 | "UINT32" |
32비트 부동 소수점 | "FLOAT32" |
64비트 부동 소수점 수 | "FLOAT64" |
tilesets[i].id
string
tileset의 ID입니다. 애셋 매니페스트에 지정된 tileset 중에서 고유해야 합니다. 이 ID는 처리 단계 중에 삭제됩니다. tileset을 밴드에 연결하는 데만 사용됩니다. 빈 문자열은 유효한 ID입니다.
tilesets[i].crs
string
픽셀 그리드의 좌표 참조 시스템으로, 가능하면 표준 코드 (예: EPSG 코드)로 지정하고 그렇지 않은 경우에는 WKT 형식으로 지정합니다.
tilesets[i].sources
list
이미지 파일 및 사이드카의 속성을 정의하는 사전 목록입니다. 자세한 내용은 다음 sources
사전 요소 필드를 참고하세요.
tilesets[i].sources[j].uris
list
처리할 데이터의 URI 목록입니다. Google Cloud Storage URI만 지원됩니다. 각 URI는 gs://bucket-id/object-id
형식으로 지정해야 합니다.
기본 객체는 목록의 첫 번째 요소여야 하며 사이드카는 그 뒤에 나열되어야 합니다. 각 URI 앞에 ImageManifest.uriPrefix
가 추가됩니다(설정된 경우).
tilesets[i].sources[j].affineTransform
dictionary
선택적 아핀 변환입니다. uris
의 데이터 (부속 파일 포함)가 픽셀을 배치하기에 충분하지 않은 경우에만 지정해야 합니다.
다음 키가 포함된 사전으로 제공됩니다.
"scaleX", "shearX", "translateX", "shearY", "scaleY", "translateY"
자세한 내용은
이 참조를 참고하세요.
키 및 값 예시:
{ "scaleX": 0.1, "shearX": 0.0, "translateX": -180.0, "shearY": 0.0, "scaleY": -0.1, "translateY": 90.0 }
밴드
list
tileset에서 가져온 단일 밴드의 속성을 정의하는 사전 목록입니다.
저작물의 밴드 순서는 bands
의 순서와 동일합니다.
자세한 내용은 다음 bands
사전 요소 필드를 참고하세요.
bands[i].id
string
밴드의 ID (이름)입니다.
bands[i].tilesetId
string
밴드에 해당하는 tileset의 ID입니다.
bands[i].tilesetBandIndex
int32
밴드에 해당하는 tileset의 0부터 시작하는 밴드 색인입니다.
bands[i].missingData.values
list
밴드에 데이터가 없음을 나타내는 값 목록 (double 유형)입니다.
bands[i].pyramidingPolicy
string
피라미드식 구조 정책 자세한 내용은 이 링크를 참고하세요. 옵션은 다음과 같습니다.
- 'MEAN' (기본값)
- "MODE"
- "SAMPLE"
maskBands
list
tileset에서 가져온 단일 마스크 밴드의 속성을 정의하는 사전 목록입니다.
마스크 밴드는 최대 1개까지 제공할 수 있습니다.
자세한 내용은 다음 maskBands
사전 요소 필드를 참고하세요.
maskBands[i].tilesetId
string
마스크 밴드에 해당하는 tileset의 ID입니다. tileset의 마지막 밴드는 항상 마스크 밴드로 사용됩니다.
maskBands[i].bandIds
list of strings
마스크 밴드가 적용되는 밴드의 ID 목록입니다. 비어 있으면 마스크 밴드가 저작물의 모든 밴드에 적용됩니다. 각 밴드에는 하나의 마스크 밴드만 해당할 수 있습니다.
풋프린트
dictionary
이미지의 모든 유효한 픽셀의 풋프린트 속성을 정의하는 사전입니다.
비워 두면 기본 풋프린트는 전체 이미지입니다. 자세한 내용은 다음 footprint
사전 요소 필드를 참고하세요.
footprint.points
list
이미지의 모든 유효한 픽셀의 풋프린트를 정의하는 점 목록입니다. 점은 부동 소수점 값을 갖는 'x' 및 'y' 키가 있는 사전으로 정의됩니다. 점 목록은 이미지의 모든 유효한 픽셀의 중심을 포함해야 하는 단순 다각형의 외부를 형성하는 원을 설명합니다. 선형 링이어야 합니다. 마지막 지점은 첫 번째 지점과 같아야 합니다. 좌표는 bandId
로 지정된 밴드의 투영에 있습니다.
참고: 픽셀 (1x1 직사각형)이 풋프린트를 교차하는 경우 footprint
가 픽셀을 포함하는 것으로 간주되므로 각 픽셀의 중심과 같은 비정수 좌표를 사용하세요. 실수로 인접한 픽셀을 선택하지 않으려면 정수 값 좌표를 사용하지 마세요. 정수 값 좌표는 픽셀 간의 경계이기 때문입니다. 픽셀 중심을 따라 풋프린트를 그리면 의도하지 않은 픽셀이 포함되지 않아 의도한 픽셀이 반메리디언이나 극점과 같은 지도 경계에 접촉할 때 오류가 발생할 수 있습니다.
예를 들어 유효한 픽셀이 모두 4개인 2x2 이미지의 경우 다음과 같은 링이 있을 수 있습니다.
[ { "x": 0.5, "y": 0.5 }, { "x": 0.5, "y": 1.5 }, { "x": 1.5, "y": 1.5 }, { "x": 1.5, "y": 0.5 }, { "x": 0.5, "y": 0.5 } ]
footprint.bandId
string
CRS가 풋프린트의 좌표를 정의하는 밴드의 ID입니다. 비어 있으면 첫 번째 밴드가 사용됩니다.
missingData.values
list
이미지의 모든 밴드에 데이터가 없음을 나타내는 값 목록 (double 유형)입니다. 자체 missingData
를 지정하지 않는 모든 밴드에 적용됩니다.
pyramidingPolicy
string
피라미드식 구조 정책 지정하지 않으면 기본적으로 'MEAN' 정책이 적용됩니다. 자체 밴드를 지정하지 않은 모든 밴드에 적용됩니다. 자세한 내용은 이 링크를 참고하세요. 옵션은 다음과 같습니다.
- 'MEAN' (기본값)
- "MODE"
- "SAMPLE"
uriPrefix
string
매니페스트에 정의된 모든 uris
앞에 추가되는 선택적 접두사입니다.
startTime
integer
저작물과 연결된 타임스탬프입니다(있는 경우). 이는 일반적으로 위성 이미지가 촬영된 시간에 해당합니다. 한 달 또는 1년 동안의 평균 값과 같이 시간 간격에 해당하는 애셋의 경우 이 타임스탬프는 해당 간격의 시작에 해당합니다. 에포크(1970-01-01) 이후의 초 및 (선택사항) 나노초로 지정됩니다. UTC 시간대라고 가정합니다.
endTime
integer
한 달 또는 1년 동안의 평균 값과 같이 시간 간격에 해당하는 애셋의 경우 이 타임스탬프는 해당 간격의 끝 (제외)에 해당합니다. 에포크(1970-01-01) 이후의 초 및 (선택사항) 나노초로 지정됩니다. UTC 시간대라고 가정합니다.
속성
dictionary
키-값 쌍의 임의의 평면 사전입니다. 키는 문자열이어야 하며 값은 숫자 또는 문자열일 수 있습니다. 사용자 업로드 저작물에는 아직 목록 값이 지원되지 않습니다.
제한사항
JSON 매니페스트 크기
JSON 매니페스트 파일 크기 제한은 10MB입니다. 업로드할 파일이 많은 경우 데이터 세트를 설명하는 데 필요한 문자 수를 줄이는 방법을 고려하세요. 예를 들어 uriPrefix
필드를 사용하여 uris
목록의 각 URI에 Google Cloud 버킷 경로를 제공할 필요가 없습니다. 크기를 더 줄여야 한다면 파일 이름을 줄여 보세요.
이미지 파일 형식
각 이미지 파일은 TIFF 이미지여야 합니다. 매니페스트에 CRS가 지정되지 않은 경우 파일은 삽입된 CRS가 있는 GeoTIFF여야 합니다.
TIFF 파일은 DEFLATE, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP 또는 ZSTD로 압축할 수 있습니다.
대용량 파일을 업로드할 때 최적의 환경을 제공하기 위한 권장사항은 다음과 같습니다.
- 권장: ZSTD는 속도와 압축의 균형이 우수합니다.
- 권장하지 않음: LZMA는 압축률이 우수하지만 속도가 매우 느릴 수 있습니다.
- 압축되지 않은 파일: 파일 크기가 커지고 업로드 시간이 더 오래 걸립니다.
- 손실 압축 (예: JPEG): 픽셀 값을 변경할 수 있습니다. 무손실 압축 (예: DEFLATE, LZMA, LZW, ZSTD)를 사용하지 마세요. 데이터에 미칠 수 있는 영향을 이해하지 못한 경우