اگر به انعطافپذیری بیشتری برای آپلود تصاویر در Google Earth Engine (EE) نسبت به رابط کاربری ویرایشگر کد یا فرمان upload
ابزار خط فرمان «Earthengine» نیاز دارید، میتوانید این کار را با توصیف آپلود تصویر با استفاده از یک فایل JSON معروف به «مانیفست» و استفاده از فرمان upload image --manifest
از ابزار خط فرمان انجام دهید.
یک مثال کامل را در این نوت بوک Colab ببینید که آپلود کاشی های تصویر را به عنوان یک دارایی با استفاده از مانیفست نشان می دهد.
راه اندازی یک بار
- بارگذاریهای مانیفست فقط با فایلهای موجود در Google Cloud Storage کار میکنند. برای شروع استفاده از Google Cloud Storage، اگر قبلاً ندارید، یک پروژه Google Cloud ایجاد کنید . توجه داشته باشید که راه اندازی نیاز به مشخص کردن یک کارت اعتباری برای صورتحساب دارد. خود EE در حال حاضر هزینهای از کسی دریافت نمیکند، اما انتقال فایلها به Google Cloud Storage قبل از آپلود آنها در EE هزینه کمی دارد. برای اندازههای معمولی دادههای آپلود (دهها یا صدها گیگابایت)، هزینه بسیار پایین خواهد بود.
- در پروژه خود، Cloud Storage API را روشن کنید و یک سطل ایجاد کنید .
- کلاینت Earth Engine Python را نصب کنید . این شامل ابزار خط فرمان
earthengine
است که ما از آن برای آپلود داده ها استفاده خواهیم کرد. - برای آپلودهای خودکار، ممکن است بخواهید از یک حساب سرویس Google Cloud مرتبط با پروژه خود استفاده کنید. برای تست کردن نیازی به حساب سرویس ندارید، اما زمانی که فرصت دارید، لطفاً با استفاده از آنها آشنا شوید.
فایلهای منبع بسیار بزرگ (100 گیگابایت یا بیشتر) ممکن است سریعتر آپلود شوند اگر به چندین کاشی تقسیم شوند.
شناسه و نام دارایی
برای داراییهای متعلق به پروژه Cloud، از این قرارداد برای نامهای دارایی استفاده کنید: projects/some-project-id/assets/some-asset-id
.
درباره نام دارایی برای پروژه قدیمی و دارایی های متعلق به کاربر بیاموزید
برای پروژههای قدیمیتر، نام دارایی در مانیفست باید کمی متفاوت از شناسه دارایی قابل مشاهده در جاهای دیگر Earth Engine باشد. برای آپلود داراییهایی که شناسههای دارایی آنها با users/some_user
یا projects/some_project
شروع میشود، نام دارایی در مانیفست باید دارای رشته projects/earthengine-legacy/assets/
باشد که به شناسه اضافه شده است. برای مثال، شناسه دارایی EE users/username/my_geotiff
باید با استفاده از نام projects/earthengine-legacy/assets/users/username/my_geotiff
آپلود شود.
بله، این بدان معناست که شناسههایی مانند projects/some_projects/some_asset
به نامهایی تبدیل میشوند که در آن projects
دو بار ذکر شده است: projects/earthengine-legacy/assets/projects/some_projects/some_asset
. این گیج کننده است اما برای مطابقت با استانداردهای Google Cloud API ضروری است.
استفاده از مانیفست
یک مانیفست اصلی در بلوک کد زیر نشان داده شده است. فایلی به نام small.tif
از یک سطل فضای ذخیرهسازی ابری Google به نام gs://earthengine-test
آپلود میکند.
{ "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 کنار هم چیده شوند.
(ممکن است لازم باشد از هر دو راه به طور همزمان استفاده شود، اما این یک وضعیت نادر است.)
برای توصیف این گزینه ها، مانیفست ها مفهوم یک مجموعه کاشی را معرفی می کنند. یک مجموعه کاشی منفرد مربوط به یک منبع GDAL است. به همین دلیل، همه منابع در یک مجموعه کاشی باید ساختار GDAL یکسانی داشته باشند (تعداد و نوع باندها، طرح ریزی، تبدیل، مقدار از دست رفته). از آنجایی که یک منبع GDAL می تواند چندین باند داشته باشد، یک مجموعه کاشی ممکن است حاوی داده هایی برای چندین باند 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 میتواند یک رشته دلخواه باشد - این رشتهها در دارایی آپلود شده نگهداری نمیشوند. شناسههای مجموعه کاشیها فقط برای تشخیص کاشیهای انباشته شده از یکدیگر استفاده میشوند.
باندها
دومین مفهوم مهم تطبیق فایل های منبع با باندهای دارایی EE است. این کار با استفاده از بخش bands
مانیفست انجام می شود.
قسمت bands
را می توان حذف کرد، در این صورت باندها ابتدا از فایل های اولین مجموعه کاشی و سپس از مجموعه کاشی بعدی و غیره ایجاد می شوند. بهطور پیشفرض، باندها «b1»، «b2»، و غیره نامگذاری میشوند. برای لغو نام باندهای پیشفرض، یک بخش «باند» را در پایان قرار دهید، مانند این:
{ "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 باید با تعداد کل باندها در همه مجموعههای کاشی یکسان باشد.
اگر نمیخواهید همه باندهای یک فایل را وارد کنید، میتوانید از قسمت tilesetBandIndex
استفاده کنید تا مشخص کنید کدام یک از باندهای GDAL باید وارد شوند. باند اول tilesetBandIndex 0 دارد.
مثال:
فرض کنید فایل منبع دارای چهار باند است: "tmin"، "tmin_error"، "tmax"، "tmax_error". ما فقط می خواهیم "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 منفرد است که آخرین باند آن به عنوان ماسک برای باندهای دیگر استفاده می شود. این فقط برای GeoTIFF از نوع Byte کار می کند. از مانیفست زیر استفاده کنید:
{ "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 به عنوان ماسک برای یک باند خاص در یک فایل دیگر، از مانیفست زیر استفاده کنید (تفاوت با حالت قبلی این است که فیلد bandIds
در maskBands
تنظیم شده است):
{ "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"] } ] }
در مثال آخر، ما با دو باند از مجموعه tileset data_tileset
کار می کنیم، اما فقط یک ماسک را به یکی از باندها ( data_band
) اعمال می کنیم، همانطور که توسط فیلد bandIds
تنها شی فهرست ارائه شده maskBands
تعیین شده است.
توجه داشته باشید که تنها آخرین باند مجموعه کاشی ذکر شده در maskBands
به عنوان نوار ماسک استفاده می شود.
سیاست هرمی
هنگامی که Earth Engine هرم های تصویری را در حین دریافت می سازد، باید شبکه های 2x2 پیکسل را به طور مکرر به یک پیکسل کاهش دهد و مقدار پیکسل را به نوعی تغییر دهد. بهطور پیشفرض، مقادیر پیکسل میانگین میشوند، که در بیشتر موارد زمانی که باند شطرنجی دادههای کم و بیش پیوسته را نشان میدهد، کار درستی است. با این حال، دو حالت وجود دارد که اتکا به پیشفرض نتایج نادرستی ایجاد میکند، در این صورت، فیلد pyramidingPolicy
در تعریف باند باید تنظیم شود (اگر تنظیم نشده باشد، مقدار آن به طور پیشفرض «MEAN» در نظر گرفته میشود).
برای طبقهبندی تصاویر شطرنجی (مثلاً برای طبقهبندی پوشش زمین) منطقیترین راه برای هرمی کردن پیکسلها، گرفتن اکثریت چهار مقدار برای تولید مقدار بعدی است. این با استفاده از خط مشی هرمی "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 می گیرد. مثال زیر خط مشی هرمی "MEAN" را به باندی که یک متغیر پیوسته ("NDVI") را نشان می دهد و "SAMPLE" را به باند "QA" داده اختصاص می دهد.
{ "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 زیر شامل تمام فیلدهای مانیفست آپلود تصویر ممکن است. تعاریف فیلد را در قسمت تعاریف فیلد Manifest زیر بیابید.
{ "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").
کاشی ها
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. باید در میان مجموعههای کاشی مشخصشده در مانیفست دارایی منحصربهفرد باشد. این شناسه در مرحله پردازش کنار گذاشته می شود. این فقط برای پیوند یک مجموعه کاشی به یک باند استفاده می شود. رشته خالی یک شناسه معتبر است.
tilesets[i].crs
string
سیستم مرجع مختصات شبکه پیکسلی که در صورت امکان به عنوان کد استاندارد (مثلا کد EPSG) و در غیر این صورت در قالب WKT مشخص شده است.
tilesets[i].منابع
list
فهرستی از فرهنگ لغت که ویژگی های یک فایل تصویری و حاشیه های آن را تعریف می کند. برای اطلاعات بیشتر به فیلدهای عنصر فرهنگ لغت sources
زیر مراجعه کنید.
tilesets[i].sources[j].uris
list
فهرستی از URI های داده هایی که باید مصرف شوند. فقط URI های Google Cloud Storage پشتیبانی می شوند. هر 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
شناسه (نام) گروه.
bands[i].tilesetId
string
شناسه مجموعه کاشی مربوط به باند.
bands[i].tilesetBandIndex
int32
شاخص باند مبتنی بر صفر از مجموعه کاشی مربوط به باند.
باند[i].missingData.values
list
لیستی از مقادیر (نوع دوگانه) که هیچ داده ای را در باند نشان نمی دهد.
bands[i].pyramidingPolicy
string
سیاست هرمی برای اطلاعات بیشتر به این لینک مراجعه کنید. گزینه ها عبارتند از:
- "MEAN" (پیش فرض)
- "MODE"
- "نمونه"
باندهای ماسک
list
فهرستی از فرهنگهای لغت که ویژگیهای یک باند ماسک منفرد را که از یک مجموعه tileset منبع شده است، تعریف میکنند. حداکثر 1 ماسک باند ممکن است ارائه شود. برای اطلاعات بیشتر، فیلدهای عنصر دیکشنری maskBands
زیر را ببینید.
maskBands[i].tilesetId
string
شناسه مجموعه کاشی مربوط به نوار ماسک. آخرین نوار مجموعه کاشی همیشه به عنوان نوار ماسک استفاده می شود.
maskBands[i].bandIds
list of strings
فهرست شناسه باندهایی که نوار ماسک روی آنها اعمال می شود. اگر خالی باشد، نوار ماسک به همه باندهای دارایی اعمال می شود. هر باند ممکن است فقط یک باند ماسک مربوطه داشته باشد.
رد پا
dictionary
دیکشنری که ویژگی های ردپای همه پیکسل های معتبر در یک تصویر را تعریف می کند. اگر خالی باشد، ردپای پیشفرض کل تصویر است. برای اطلاعات بیشتر به فیلدهای عنصر فرهنگ لغت footprint
زیر مراجعه کنید.
ردپا.نقاط
list
لیستی از نقاطی که ردپایی از تمام پیکسل های معتبر در یک تصویر را مشخص می کند. یک نقطه توسط یک فرهنگ لغت با کلیدهای "x" و "y" دارای مقادیر شناور تعریف می شود. فهرستی از نقاط برای توصیف حلقهای است که نمای بیرونی یک چندضلعی ساده را تشکیل میدهد که باید مرکز همه پیکسلهای معتبر تصویر را در خود داشته باشد. این باید یک حلقه خطی باشد: آخرین نقطه باید برابر با اولین باشد. مختصات در طرح بندی باند مشخص شده توسط bandId
هستند.
توجه: از مختصات غیر صحیح مانند مرکز هر پیکسل استفاده کنید زیرا اگر پیکسل (مستطیل 1×1) ردپای را قطع کند، footprint
شامل یک پیکسل می شود. برای جلوگیری از انتخاب تصادفی پیکسل های همسایه، از مختصات با مقدار صحیح استفاده نکنید، زیرا آن ها مرزهای بین پیکسل ها هستند. ترسیم ردپای در امتداد مراکز پیکسل از اضافه کردن پیکسلهای ناخواسته جلوگیری میکند، که میتواند باعث ایجاد خطا در زمانی که پیکسلهای مورد نظر در کنار مرز نقشه مانند پادمریدین یا قطب قرار میگیرند.
به عنوان مثال، برای یک تصویر 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 آن مختصات ردپا را مشخص می کند. اگر خالی باشد از اولین باند استفاده می شود.
missingData.values
list
لیستی از مقادیر (نوع دوگانه) که هیچ داده ای را در تمام باندهای تصویر نشان نمی دهد. برای همه باندهایی اعمال می شود که missingData
خود را مشخص نمی کنند.
pyramiding Policy
string
سیاست هرمی اگر مشخص نشده باشد، خط مشی "MEAN" به طور پیش فرض اعمال می شود. برای همه باندهایی که گروه خودشان را مشخص نمی کنند اعمال می شود. برای اطلاعات بیشتر به این لینک مراجعه کنید. گزینه ها عبارتند از:
- "MEAN" (پیش فرض)
- "MODE"
- "نمونه"
uriPrefix
string
یک پیشوند اختیاری که به همه uris
تعریف شده در مانیفست اضافه شده است.
زمان شروع
integer
مهر زمانی مرتبط با دارایی، در صورت وجود. این معمولاً مربوط به زمانی است که در آن یک تصویر ماهواره ای گرفته شده است. برای دارایی هایی که با یک بازه زمانی مطابقت دارند، مانند مقادیر متوسط در طول یک ماه یا سال، این مهر زمانی با شروع آن بازه مطابقت دارد. به عنوان ثانیه و (اختیاری) نانوثانیه از دوران (01-01-1970) مشخص شده است. فرض بر این است که در منطقه زمانی UTC باشد.
پایان زمان
integer
برای دارایی هایی که با یک بازه زمانی مطابقت دارند، مانند مقادیر متوسط در طول یک ماه یا سال، این مهر زمانی مربوط به پایان آن بازه زمانی (انحصاری) است. به عنوان ثانیه و (اختیاری) نانوثانیه از دوران (01-01-1970) مشخص شده است. فرض بر این است که در منطقه زمانی UTC باشد.
خواص
dictionary
فرهنگ لغت مسطح دلخواه از جفت های کلید-مقدار. کلیدها باید رشته ای باشند و مقادیر می توانند اعداد یا رشته باشند. مقادیر فهرست هنوز برای دارایی های بارگذاری شده توسط کاربر پشتیبانی نمی شود.
محدودیت ها
اندازه مانیفست JSON
محدودیت اندازه فایل مانیفست JSON 10 مگابایت است. اگر فایل های زیادی برای آپلود دارید، راه هایی را برای کاهش تعداد کاراکترهای مورد نیاز برای توصیف مجموعه داده در نظر بگیرید. به عنوان مثال، از فیلد uriPrefix
استفاده کنید تا نیازی به ارائه مسیر سطل Google Cloud برای هر URI در لیست uris
نباشد. در صورت نیاز به کاهش اندازه بیشتر، سعی کنید نام فایل ها را کوتاه کنید.
فرمت فایل تصویری
هر فایل تصویری باید یک تصویر TIFF باشد. اگر CRS در مانیفست مشخص نشده باشد، فایل باید GeoTIFF با CRS جاسازی شده باشد.
فایل های TIFF را می توان با DEFLATE، JPEG-XL/JXL، LERC، LERC_DEFLATE، LERC_ZSTD، LZMA، LZW، WEBP یا ZSTD فشرده کرد.
توصیه هایی برای بهترین تجربه آپلود برای فایل های حجیم:
- بهترین انتخاب: ZSTD تعادل خوبی از سرعت و فشرده سازی ارائه می دهد.
- اجتناب: LZMA با وجود فشرده سازی خوب می تواند بسیار کند باشد.
- فایل های فشرده نشده: منجر به فایل های بزرگتر و زمان آپلود طولانی تر می شود.
- فشرده سازی از دست رفته (به عنوان مثال، JPEG): ممکن است مقادیر پیکسل را تغییر دهد. از فشرده سازی بدون تلفات (به عنوان مثال، DEFLATE، LZMA، LZW، ZSTD) استفاده کنید، مگر اینکه تأثیر بالقوه روی داده های خود را درک کنید.