سؤالات عمومی
مشکلی دارم، به کمک نیاز دارم!
سؤالی را طبق این راهنما پست کنید و تا حد امکان اطلاعات ارائه دهید (به راهنمای Stack Overflow برای پرسیدن سؤالات خوب مراجعه کنید). این معمولاً به این معنی است:
ارسال پیوند به یک فیلمنامه در «ویرایشگر کد» (برای دریافت آن، روی دکمه «دریافت پیوند» کلیک کنید)
همرسانی هر دارایی موردنیاز برای اجرای دستورگان
برای تکالیف دستهای ناموفق، شناسه تکلیف ناموفق را گزارش کنید. شناسههای تکلیف بهاین شکل است:
4C25GIJBMB52PXTEJTF4JLGL. آنها را میتوانید در زبانه «تکلیف» در «ویرایشگر کد» پیدا کنید. بیشتر بدانید.
کجا میتوانم درباره معماری Earth Engine بخوانم؟
این مقاله را ببینید: Gorelick et al. 2017.
آیا آموزشهای توصیهشدهای برای Earth Engine وجود دارد که توسط Google ساخته نشده باشد؟
صفحههای EDU و منابع آموزشی را ببینید.
آیا آموزشهای توصیهشدهای برای سنجش از دور وجود دارد؟
این دوره رایگان EE از Ujaval Gandhi را ببینید که شامل ویدیویی با مقدمهای بر سنجش از دور است.
برنامهنویسی Earth Engine
برخیاز خطاهای رایج کدنویسی چیست؟
به راهنمای اشکالزدایی مراجعه کنید.
چرا خطای «… تابع نیست» را دریافت میکنم؟
این خطا زمانی رخ میدهد که Earth Engine نتواند روش فراخواندهشده را پیدا کند. دلایل رایج زیر را بررسی کنید:
حروفحساس بودن یا حساسیت به املا: روشها حروفحساس هستند. املا را با مرجع میانای برنامهسازی کاربردی مقایسه کنید.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
تبدیل نوع ازدسترفته: مقادیر برگشتی از توابعی مثل .get() نمونههای ee.ComputedObject عمومی هستند و باید بهطور صریح تبدیل نوع شوند. به
تبدیل نوع شیء ناشناس مراجعه کنید.
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
ترکیب روشهای کارخواه و کارساز: مطمئن شوید که از روشهای استاندارد
جاوا اسکریپت یا پایتون (مثل .push() یا .append()) در
اشیا Earth Engine استفاده نمیکنید. به از ترکیب کردن کارکردهای کارخواه و کارساز اجتناب کنید مراجعه کنید.
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، از QGIS برای وارد کردن تصاویر EE استفاده کنید
آیا میتوانم از برخی پالتهای رنگ استاندارد استفاده کنم؟
از بسته JS طرف سوم ee-palettes استفاده کنید.
چگونه وبسایت خودم را بسازم که از Earth Engine استفاده کند؟
برای برنامههای پایه، از برنامههای Earth Engine استفاده کنید. در موارد پیچیدهتر، میتوانید برنامههای App Engine با پشتیبانی EE بسازید.
شناسههای نقشه چگونه کار میکنند؟
شناسههای نقشه (که در سراسر «میانای برنامهسازی کاربردی» mapid نامیده میشوند) کلیدهایی هستند که به کارخواهان امکان میدهند کاشیهای نقشه را واکشی کنند. هر شناسه یک مقدار درهمسازی است که با ارائه عبارت تصویر به
نقطه پایانی getMapId ایجاد میشود. شناسههای حاصل کلیدهایی هستند که به هر دو
عبارت تصویر و اطلاعات اعتباری کاربر که برای تولید
کاشیها در مرحله بعدی استفاده خواهد شد اشاره میکنند.
درخواست کاشیهای نقشه شامل مشخص کردن مکان کاشی (x، y،
zoom) و همچنین mapid (کلید تصویر و اطلاعات اعتباری) میشود. از همان
شناسه میتوان برای بار کردن کاشیهای نقشه متعدد استفاده کرد. هیچ محدودیتی برای استفاده مجدد از کلیدهای
mapid وجود ندارد، اما این کلیدها پساز چند ساعت منقضی میشوند. ما بازههای زمانی مشخصی درباره مدت ماندگاری آنها منتشر نمیکنیم، اما هر کدی که مینویسید باید دربرابر منقضی شدن شناسه مقاوم باشد.
ایجاد این شناسهها شامل ذخیره مقدار کمی داده و اعتبارسنجی اطلاعات اعتباری است، بنابراین بهتر است تا حد امکان از آنها مجدداً استفاده کنید. هیچ سهمیه
«میانای برنامهسازی کاربردی» بهطور خاص با نقطه پایانی getMapId مرتبط نیست، اما هر گردش کاری
که شامل ایجاد mapid شیء با نرخی نزدیک به نرخ
واکشی کاشیها باشد احتمالاً کار اشتباهی انجام میدهد. Earth Engine نقطه پایانی API برای برداشتن، فهرست کردن، یا مدیریت این شناسهها ندارد، زیرا اینها منابع گذرا هستند.
چرا ee.Algorithms.If() هم حالت درست و هم حالت نادرست را چاپ میکند؟
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 هستید. این اتفاق معمولاً زمانی رخ میدهد که کد از حلقههای «برای» سمت کارخواه زیادی استفاده کند یا از بسیاری از اشیای هندسی یک 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.Image شیء را از ee.ImageCollection فیلتر میکند. از آن برای محدود کردن
دامنه تجزیهوتحلیل فقط به تصاویری که با منطقه معینی تلاقی دارند استفاده میشود،
که به بهینهسازی عبارات کمک میکند.
چگونه پیکسلهای تصویر را به مجموعههای ویژگی تبدیل کنیم، بهطوریکه هر پیکسل یک ویژگی باشد؟
از تابع ee.Image.sample() استفاده کنید. نمونههای استفاده را در صفحه مرجع میانای برنامهسازی کاربردی تابع ببینید
.
تفاوت بین ee.ImageCollection.merge() و ee.ImageCollection.combine() چیست؟
تابع ee.ImageCollection.merge()
همه تصاویر دو مجموعه را در یک مجموعه ادغام میکند،
صرفنظر از اینکه تصاویر مربوطه دارای نوارهای همزمان، فراداده،
سیستم مرجع مختصات، یا مقیاس باشند یا نه. این مجموعه حاصل ترکیب دو مجموعه است. روش combine()
نوارهای تصاویر منطبق از دو مجموعه را در یک مجموعه
ترکیب میکند. تصاویر منطبق شناسه یکسانی دارند (دارایی system:index). این
یک پیوند داخلی از دو مجموعه براساس شناسه تصویر است که در آن نوارهای تصاویر
منطبق ترکیب میشوند. برای تصاویر منطبق، نوارهای تصویر ثانویه به تصویر اصلی پیوست میشود (جاینویسی اختیاری است). اگر تصویر منطبقی وجود نداشته باشد، مجموعه خالی برگردانده میشود.
چگونه مجموعههای تصویر را در چند بازه زمانی فیلتر کنیم؟
این رشته 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 (دادههای سطح ۲) برای صحنههای اولیه سطح ۱ توسط «آژانس فضایی اروپا» تولید نشده است.
Landsat قبلاز سال ۲۰۰۰ پوشش جهانی ندارد.
مجموعه داده موجود مقادیر اشتباهی دارد
در تالار گفتمان توسعهدهندگان پست کنید. دستورگانهای اضافه کنید که روی وضوح اصلی دارایی زوم میکند و مقادیر اشتباه را بهوضوح نشان میدهد. توضیح دهید دقیقاً کجا مقدار جایگزین را مشاهده کردهاید.
در کجا میتوانم درباره مجموعه دادهها سؤال بپرسم؟
برای سؤالات مربوط به مجموعه دادههای NASA، به تالار گفتمان دادههای زمین NASA مراجعه کنید.
برای پرسش درباره عملکرد جعبهابزارها در مجموعه دادههای کوپرنیک، به انجمنهای S1، S2، و S3 مراجعه کنید.
کاتالوگ EE چقدر بزرگ است؟
از اکتبر ۲۰۲۳، این کاتالوگ حاوی بیشاز ۱۰۰۰ مجموعه داده است. اندازه آن در دیسک بیشاز ۹۰ پتابایت است (پساز درنظر گرفتن فشردهسازی بدون افت).
دادههای EE هر چند وقت یکبار بهروز میشود؟
معمولاً، همه مجموعه دادههای جاری حداقل روزانه بهروزرسانی میشوند (اگرچه همه این مجموعه دادهها هر روز دادههای جدید ندارند). برخیاز مجموعههای داده چندین بار در روز بهروزرسانی میشوند. بااینحال، هیچ خطمشیای وجود ندارد که حضور جدیدترین داراییها در کاتالوگ را تضمین کند.
چگونه محتوای کاتالوگ EE را بهصورت برنامهریزیشده مشاهده کنم؟
فهرست مجموعه دادهها در قالب STAC به
سطل Google Cloud Storage gs://earthengine-stac صادر میشود.
فایل ورودی
catalog.json است.
آیا میتوانم از دادهها یا تصاویر Google Maps برای تجزیهوتحلیل استفاده کنم؟
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 چگونه پیادهسازی میشود؟
پیادهسازی سمت سرور معادل این کد جاوا اسکریپت است.
چگونه میتوانم از دادههای بازتاب سطحی Landsat ترکیبات بدون ابر ایجاد کنم؟
دادههای «سطح ۲ Landsat» (بازتابپذیری سطح) چندین باند کیفیت دارند که میتوان از آنها برای پوشاندن ابرها و دیگر مصنوعات ناخواسته تصویر استفاده کرد. مثالی از استفاده از این باندها برای پردازش تصاویر Landsat 8 SR و ایجاد یک ترکیب بدون ابر میانه در این پست GIS Stack Exchange ارائه شده است. از همین روش برای ساختن ترکیب بدون ابر برای استفاده در مثالهای طبقهبندی تحت نظارت در «راهنمای توسعهدهندگان» استفاده میشود.
آیا هماهنگسازی بازتاب سطحی Landsat بین حسگرها لازم است؟
Roy et al., 2016 شامل تحلیل تفاوتهای بازتابندگی بین Landsat 7-8 TOA و بازتابندگی سطح بود. آنها ضرایب OLS و RMA را منتشر کردند تا خوانندگان بتوانند مقادیر بازتابندگی دادههای یک حسگر را به حسگر دیگر تبدیل کنند. خط آخر مقاله میگوید: «اگرچه تفاوتهای حسگر بسیار کوچک است، اما بسته به کاربرد دادههای Landsat، ممکن است تأثیر قابلتوجهی داشته باشد.» بااینحال، این تجزیهوتحلیل براساس دادههای پیشاز جمعآوری بود.
بهبودهای انجامشده درطول پردازش مجدد «مجموعه ۱» و «مجموعه ۲» ممکن است بر رابطه بین حسگرها تأثیر بگذارد، اما تا جایی که میدانیم، هیچ تجزیهوتحلیلی مشابه Roy et al. (2016) برای دادههای «مجموعه ۱» یا «مجموعه ۲» انجام نشده است. باوجود عدم وجود تحلیل رسمی، بهنظر میرسد که در میان کاربران تأثیرگذار Landsat اجماع عمومی وجود دارد که دادههای «مجموعه ۲، سطح ۲» (بازتابپذیری سطح) نیازی به تصحیح ندارند. برای مثال، در پاسخ به سؤالی درباره نیاز به هماهنگسازی «مجموعه ۲، سطح ۲»، مایک وولدر از «تیم علمی Landsat» خاطرنشان کرد که بسته به ماهیت کاربرد موردنظر (ازجمله نقشهبرداری پوشش زمین و تشخیص تغییر)، محصولات بازتاب سطح «مجموعه ۲» بسیار مناسب و قابلاعتماد هستند و نیازی به اصلاح بین حسگرها ندارند.
چگونه میتوانم ابرها و سایههای ابر را در تصاویر MSS بپوشانم؟
واحد msslib طرف سوم برای «ویرایشگر کد جاوا اسکریپت» شامل پیادهسازی الگوریتم MSScvm و همچنین عملکردهای مفید دیگر برای کاوش و آمادهسازی دادههای MSS است.
مدیریت دادهها
چه کسی مالک دادههایی است که بارگذاری میکنم؟
طبق «شرایط خدمات» Earth Engine، مشتریان مالک دادههایی هستند که در Earth Engine بارگذاری میکنند.
نمیتوانم دادهها را بارگذاری کنم!
وضعیت تکلیف بارگذاری را در قاب «تکالیف» در گوشه بالا سمت چپ ویرایشگر کد بررسی کنید. همچنین میتوانید صفحه تکلیف اختصاصی را مشاهده کنید.
اگر هیچ وظیفهای وجود ندارد، احتمالاً سعی کردهاید فایل خود را ازطریق «ویرایشگر کد» بارگذاری کنید، اما بهدلیل مشکل شبکه، بارگذاری فایل هرگز تکمیل نشده است، بنابراین وظیفه هرگز ایجاد نشده است. از مرورگر دیگری یا رایانه دیگری استفاده کنید.
اگر تکلیفی ناموفق بود، خطایی را که نشان میدهد بررسی کنید. اگر پیام خطای خاصی وجود ندارد، ابتدا با اجرای gdalinfo برای فایلهای شطرنجی یا ogr2ogr برای فایلهای برداری، مطمئن شوید که فایل شما خراب نیست.
این دستورات سعی میکنند همه دادهها را از فایلهای منبع بخوانند و
اگر فایلها خراب باشند، خطاها را نمایش دهند.
مثال فراخوانی gdalinfo:
gdalinfo -mm -stats -checksum file.tif
نمونه فراخوانی ogr2ogr که in.shp را به out.csv تبدیل میکند:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
اگر فایل معتبر بهنظر میرسد، شناسه تکلیف ناموفق را بهعنوان نوشتار (نه بهعنوان نماگرفت) در
فهرست پستی توسعهدهندگان پست کنید.
شناسههای تکلیف این قالب را دارند: 4C25GIJBMB52PXTEJTF4JLGL. درصورت امکان، فایل منبع خود را بهصورت عمومی خوانا کنید. اگر فایل خصوصی است، آن را فقط با earthengine@google.com همرسانی کنید
اگر میخواهید تیم Earth Engine آن را بررسی کند. اگر همرسانی فایل منبع امکانپذیر نیست، حداقل
برونداد 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 فشرده کرد. برای خواندن زنده COG، میتوانید از DEFLATE، JPEG، LZW، یا ZSTD استفاده کنید. ZSTD انتخاب کلی خوبی است زیرا بهسرعت فشردهسازی را انجام میدهد و درعینحال فشردهسازی خوبی برای اکثر تصاویر ارائه میدهد.
برای اعمال فشردهسازی ZSTD هنگام استفاده از gdal_translate، این گزینهها را اضافه کنید. اگر
دادهها مقادیر ممیز شناور دارند، PREDICTOR را به ۳ تغییر دهید.
gdal_translate in.tif out.tif \
-co COPY_SRC_OVERVIEWS=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=22 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
دریافت شطرنجی من چند روز است که درحال اجرا است و تمام نشده است.
بااستفاده از gdalinfo، بررسی کنید که آیا فایل شما گزینه GDAL زیر را تنظیم کرده است یا نه:
INTERLEAVE=PIXEL. برای فایلهایی که این گزینه را دارند و دارای نوارهای زیادی هستند، فرایند انتقال ممکن است هرگز تکمیل نشود زیرا چیدمان چنین فایلهایی باعث میشود خواندن بسیار کند شود.
پیشاز بارگذاری، این فایلها را به چیدمان بینباندی تبدیل کنید:
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
شطرنجیهای بارگذاریشده من با نقشه پایه مطابقت ندارد.
اگر دادهها کمی از نقشه پایه فاصله داشته باشد، احتمالاً تصویرسازی دارای
مبدأ نادرست (فرضیه درباره شکل زمین) است.
این اتفاق اغلب برای
تصویرسازی سینوسی رخ میدهد که نمیتواند بهطور کامل در فراداده GDAL کدبندی شود. وقتی میدانید طرح هدف باید چه باشد (برای نمونه، SR-ORG:6974 برای فایلهایی که از طرح سینوسی MODIS استفاده میکنند)، پرچم --crs را درطول بارگذاری خط فرمان یا فیلد crs در مانیفست بارگذاری تنظیم کنید.
اگر دادهها بهطور فاحش تحریفشده یا در مکان کاملاً اشتباهی ظاهر شوند، احتمالاً تصویرسازی یا تبدیل آفین اشتباه است.
رستر من فقط در نیمکره شرقی نشان داده میشود.
احتمالاً شطرنجی جهانی را بارگذاری کردهاید که محدوده طول جغرافیایی [۰، ۳۶۰] را دربرمیگیرد. بااینحال، Earth Engine نیاز دارد که شطرنجیها در محدوده [-۱۸۰، ۱۸۰] باشند. پیشاز انتقال، نیمههای چپ و راست شطرنجی را جابهجا کنید. این پیشنهادهای GIS Stack Exchange را ببینید.
چرا تصویر طبقهبندی انتقالدادهشده من خالدار بهنظر میرسد؟
احتمالاً از MEAN
خطمشی هرمی پیشفرض استفاده کردهاید.
برای تصاویر طبقهبندی، باید از خطمشی هرمی MODE استفاده شود. برای تصاویر QA/بیتمَسک، باید از خطمشی هرمی SAMPLE استفاده شود.
خطای زیر را دریافت میکنم: مقدار داده -۱۲۸.۰ نمیتواند روی باند #۰ از نوع «کوتاه<۰، ۲۵۵>» اعمال شود.
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 نمیتواند آن را پیدا کند.
ممکن است از «حسابهای Google» مختلفی برای بارگذاری GCS و برای اتصال به Earth Engine استفاده کرده باشید. مطمئن شوید که حساب کاربری که برای اتصال به Earth Engine استفاده میکنید، فایل GCS را بخواند. اگر ورود به سیستم چندگانه مرورگر باعث سردرگمی میشود، در پنجره مرورگر ناشناس به Earth Engine متصل شوید.
میخواهم تعداد زیادی دارایی را بهطور همزمان صادر کنم.
باید هر تصویر را جداگانه صادر کنید.
میخواهم Folder یا ImageCollection را با یک فرمان جابهجا یا حذف کنم.
ابتدا باید هر دارایی را جابهجا کنید یا حذف کنید ، سپس پوشه یا مجموعه والد را جابهجا یا حذف کنید. اگر داراییهای کودک زیادی وجود دارد، یک حلقه پوسته یا پایتون برای تکرار آنها بنویسید.
میخواهم مستقیماً از خارج از EE به دادههای Earth Engine دسترسی داشته باشم.
QGIS دارای افزایه Earth Engine است.
GDAL درایور Earth Engine دارد.
سیستمهای دیگر میتوانند از REST API «محیط اجرا» استفاده کنند.
میخواهم بخشی از دارایی Earth Engine خود را بدون اینکه کاملاً آن را دوباره وارد کنم بهروزرسانی کنم.
بهروزرسانی دادههای شطرنجی یا برداری بارگذاریشده در EE امکانپذیر نیست. فقط ویژگیهای فراداده دارایی را میتوان بهروزرسانی کرد.
دسترسی به حسابم را ازدست میدهم. با داراییهایم چه کنم؟
اگر خطمشیهای حساب اصلی اجازه انتقال داده را میدهد، لطفاً داراییهایتان را با حساب دیگری همرسانی کنید، سپس داراییها را کپی کنید تا حساب جدید مالک آنها شود. اگر داراییهای زیادی برای انتقال وجود دارد، از برنامه کمکی کپی خط فرمان استفاده کنید.
اگر حسابی حذف شود، داراییهای متعلق به آن دیگر قابل دسترسی نیستند.
تصویر صادرشده من در مکان اشتباهی است.
برای برخیاز طرحهای تصویر، مانند سینوسی یا مخروطی، فایلهای GeoTIFF گاهی نمیتوانند همه پارامترهای طرح تصویر لازم را ذخیره کنند. این امر منجر به فایل صادرشدهای میشود که هنگام مشاهده در ابزارهای GIS رایانهای یا بازخوراندن در EE در مکان اشتباهی ظاهر میشود.
برای رفع این مشکل، پارامتر crs صادراتی را که میدانید با فایلهای GeoTIFF بهخوبی کار میکند مشخص کنید—برای مثال، از کد EPSG برای منطقه UTM حاوی منطقه موردعلاقهتان استفاده کنید.
از کدام مکان مخزن Cloud Storage باید برای ذخیره داراییهای COG استفاده کنم؟
پاسخ به این سؤال بستگی به این دارد که برای چه چیزی میخواهید بهینهسازی کنید. اگر برای دسترسی به محاسبات با تأخیر کم بهینهسازی میکنید، بهترین مکانهای مخزن GCS برای ذخیره داراییهای COG، US-CENTRAL* است. برای کسب اطلاعات درباره ملاحظات دیگر، به صفحه مکانهای دستهبندی مراجعه کنید.
داراییهای مجموعه عارضههای صادرشده ویژگیهایی را که تنظیم کردهام حفظ نمیکنند.
هیچیک از توابع Export.table.* ویژگیهای سطح جدول را در برونداد حفظ نمیکنند.
برای بسیاری از قالبهای برونداد (مثلاً CSV، GeoJSON)، از چنین فرادادههایی پشتیبانی نمیشود. تابع Export.table.toAsset میتواند از داراییهای سطح جدول پشتیبانی کند، اما درحالحاضر این کار را نمیکند.
جداول صادرشده به Drive با قالب CSV به قالب XLSX تبدیل میشوند.
بسته به تنظیمات Google Drive، جدولهای CSV که از Earth Engine صادر میکنید میتوانند به فایلهای XLSX با تأثیرات ناخواسته، مانند تبدیل نوع داده، تبدیل شوند. برای اصلاح رفتار برای صادر کردنهای بعدی، این مراحل را دنبال کنید.
- در Google Drive در وب، روی چرخدنده «تنظیمات» در بالا سمت چپ کلیک کنید.
- روی «تنظیمات» کلیک کنید.
- به «تبدیل فایلهای بارگذاریشده به قالب ویرایشگر سندنگار Google» پیمایش کنید و آن را پاک کنید.
ویرایشگر کد
نمیتوانم به سیستم «ویرایشگر کد» وارد شوم زیرا از من میخواهد از حساب اشتباهی استفاده کنم.
از سیستم خارج شوید، حسابی را که برای استفاده از Earth Engine ثبت شده است در صفحه «انتخاب حساب» انتخاب کنید، و سپس همان حساب را در صفحه دوم «انتخاب حساب برای ادامه کار با Earth Engine Code Editor» دوباره انتخاب کنید (عبارت دقیق ممکن است متفاوت باشد).
میخواهم از نقشه جهانی نماگرفت بگیرم، اما طرح «مرکاتور وب» را دوست ندارم.
برونافکنی نقشه استفادهشده در «ویرایشگر کد»
Web Mercator
('EPSG:3857') است. این تصویر اندازه اشیای دور از خط استوا را بزرگتر نشان میدهد و باعث میشود مناطق با عرض جغرافیایی بالا بسیار بزرگتر از آنچه هستند بهنظر برسند، در مقایسه با مناطق نزدیک به خط استوا. نمیتوانید تصویرسازی بوم نقشه «ویرایشگر کد» را تغییر دهید، اما میتوانید بااستفاده از روش ee.Image.changeProj، تصویری را در تصویرسازی انتخابی خود به بوم Web Mercator «رنگآمیزی» کنید.
برای نمونهای از نمایش DEM جهانی در نقشه «ویرایشگر کد» در
تصویرسازی رابینسون، به صفحه مرجع API این روش مراجعه کنید.
توجه داشته باشید که این تکنیک فقط باید برای اهداف دیداری استفاده شود، زیرا بازرس و ابزارهای طراحی «ویرایشگر کد» همچنان در Web Mercator کار میکنند.
دستورگان من ذخیره نمیشود (Script error: Unknown commit).
اگر هنگام ذخیره کردن یک دستورگان Script error: Unknown commit پیامی دریافت کردید،
احتمالاً به این معنی است که مخزنی که در آن ذخیره میکنید همگامسازی نشده است.
دلیل این وضعیت متغیر است و شناسایی آن دشوار است. برای حل کردن مشکل، فهرستگان را بااستفاده از دکمه گوشه بالای برگه «فهرستگان» بازآوری کنید. اگر این کار جواب نداد، از دکمه «جدید» در برگه «نوشتار» مخزن جدیدی ایجاد کنید و نوشتارتان را در آنجا ذخیره کنید (ممکن است لازم باشد نوشتارها را از مخزن خارج از همگامسازی به مخزن جدید منتقل کنید).
چرا در «ویرایشگر کد» خطاهای ۴۰۰ تکراری میبینم؟
اگر در «ویرایشگر کد» با خطاهای ۴۰۰ مکرر مواجه میشوید، به https://myaccount.google.com/connections بروید، «ویرایشگر کد Earth Engine» را در فهرست برنامهها و سرویسها پیدا کنید، آن را انتخاب کنید، و سپس «حذف همه اتصالهای شما با ویرایشگر کد Earth Engine» را انتخاب کنید و تأیید کنید. سپس «ویرایشگر کد» را باز کنید و دوباره اصالتسنجی کنید.
چگونه میتوانم پوشهها و دستورگانهای حذفشده را بازیابی کنم؟
اگر بهطور تصادفی یک دستورگان یا پوشه را در مخزن موجود حذف کنید، سابقه کامل تعهد در گزارشهای Git در سرورهای ما حفظ میشود. میتوانید با شبیهسازی مخزن بهصورت محلی بااستفاده از ابزارهای خط فرمان استاندارد Git، پوشهها یا دستورگانهای حذفشده را بازیابی کنید.
بااینحال، حذف کل مخزن (users/username/repository) باعث میشود مخزن و سابقه تعهد آن برای همیشه از earthengine.googlesource.com برداشته شود و قابلواگرد یا بازیابی نباشد.
برای دریافت دستورالعملهای گامبهگام درباره تولید اطلاعات اعتباری Git، شبیهسازی مخزن، و بازیابی فایلها یا پوشههای حذفشده، به راهنمای بازیابی نوشتار و انتقال مخزن مراجعه کنید.
چگونه میتوانم ریشه مخزن دستورگان خود را تغییر نام دهم؟
دایرکتوری ریشه نوشتار شما (users/username) به ثبت حساب اصلی Earth
Engine شما محدود شده است. نمیتوان آن را مستقیماً در زیرینه تغییر نام داد
زیرا انجام این کار باعث ازکارافتادن هرگونه دستورگان خارجی یا پروژههای همیار میشود که
کد واحدی شما را بااستفاده از
مسیر require('users/username/repository:...') وارد میکنند.
اگر به فضای نام جدیدی نیاز دارید، راهکار پشتیبانیشده این است که کارتان را به حساب جدیدی انتقال دهید:
- بااستفاده از هویت Google جدیدتان (که ریشه
users/new_usernameپاکی ایجاد میکند)، حساب Earth Engine جدیدی ثبت کنید. - برای شبیهسازی مخزن قدیمی و انتقال سابقه کامل آن به مخزن خالی جدید، دستورالعملهای انتقال مخزن را دنبال کنید.
ملاحظات مهم:
- واحدهای عمومی: اگر واحدهای عمومی دارید که دیگران به آنها متکی هستند، بهشدت توصیه میکنیم حساب و مخزن قدیمی خود را فعال نگه دارید تا جریانهای کاری آنها را مختل نکنید.
- نوشتههای خصوصی: اگر نوشتههایتان کاملاً خصوصی است، میتوانید
بیانیههای وارد کردن
require()را بهروز کنید تا به مسیر مخزن جدید ارجاع دهند و سپس مخزنهای قدیمی را با اطمینان حذف کنید.