تحميل بيان الصور

إذا كنت بحاجة إلى مزيد من المرونة في تحميل الصور إلى Google Earth Engine (EE) مقارنةً بما توفره واجهة مستخدم "محرر الرموز" أو الأمر upload في أداة سطر الأوامر "earthengine" ، يمكنك إجراء ذلك من خلال وصف عملية تحميل صورة باستخدام ملف JSON يُعرف باسم "بيان" واستخدام الأمر upload image --manifest في أداة سطر الأوامر.

يمكنك الاطّلاع على مثال كامل في هذا دفتر ملاحظات Colab الذي يوضّح كيفية تحميل مربّعات الصور كمواد عرض فردية باستخدام بيان.

عملية إعداد لمرة واحدة

  1. لا تعمل عمليات تحميل البيان إلا مع الملفات المتوفّرة في Google Cloud Storage. لبدء استخدام Google Cloud Storage، أنشئ مشروعًا على Google Cloud، إذا لم يكن لديك مشروع. يُرجى العِلم أنّ عملية الإعداد تتطلّب تحديد بطاقة ائتمان لأغراض الفوترة. لا تفرض شركة EE رسومًا على أي مستخدم في الوقت الحالي، ولكن سيتم فرض تكلفة صغيرة على نقل الملفات إلى Google Cloud Storage قبل تحميلها إلى EE. بالنسبة إلى أحجام بيانات التحميل المعتادة (عشرات أو مئات غيغابايت)، ستكون التكلفة منخفضة جدًا.
  2. ضمن مشروعك، فعِّل واجهة برمجة التطبيقات Cloud Storage API و أنشئ حزمة.
  3. ثبِّت عميل Earth Engine Python. يتضمّن هذا الدليل أداة سطر الأوامر earthengine التي سنستخدمها لتحميل البيانات.
  4. بالنسبة إلى عمليات التحميل المبرمَجة، ننصحك باستخدام حساب خدمة على 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 Cloud Storage باسم 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 ضرورية لتوفير ما يكفي من المرونة لمواجهة أحد التحديات الشائعة في عملية التحميل، وهو كيفية وصف كل الطرق المحتملة لدمج وحدات البكسل من ملفات مصدر متعددة في مادة عرض واحدة. على وجه التحديد، هناك طريقتان مستقلتان لتجميع الملفات معًا:

  • الفسيفساء في بعض الأحيان، تمثّل ملفات متعددة مربّعات متعددة (على سبيل المثال، كل مربّع هو مربّع أبعاده 1×1 درجة). يجب أن تكون هذه الملفات مجمّعة (مدمجة معًا) في النطاق نفسه في مادة عرض 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"
          ]
        }
      ]
    }
  ]
}

يُرجى العلم أنّه في حال استخدام نطاقات منفصلة، علينا منح كلّ مجموعة رسومات قاعدية معرّفًا مختلفًا للوضوح. يمكن أن يكون معرّف مجموعة الأشكال الأرضية سلسلة عشوائية، ولا يتم حفظ هذه السلاسل في مادة العرض المحمَّلة. لا تُستخدَم معرّفات مجموعات الأشكال إلا في عملية نقل البيانات بهدف التفريق بين مجموعات الأشكال المكدّسة.

النطاقات

المفهوم الثاني المهم هو مطابقة الملفات المصدر مع مجموعات مواد عرض 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. قناع لجميع أشرطة البيانات في الملف نفسه
  2. قناع لجميع نطاقات البيانات الواردة من جميع الملفات الأخرى
  3. قناع لبعض نطاقات البيانات

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"]
    }
  ]
}

في المثال الأخير، نعمل مع شريطَين من مجموعة التنسيق data_tileset، ولكنّنا نطبّق قناعًا على أحد الشريطَين (data_band) فقط، كما هو محدّد في حقل bandIds لعنصر القائمة الوحيد maskBands المقدَّم.

يُرجى العلم أنّه لا يتم استخدام سوى النطاق الأخير من مجموعة البلاط المذكورة في maskBands كأحد أشرطة القناع.

سياسة التسويق الهرمي

عندما تُنشئ أداة Earth Engine مخطّطات هرمية للصور أثناء نقل البيانات، عليها تصغير شبكات 2×2 بكسل بشكل متكرّر إلى بكسل واحد، ما يؤدي إلى تحويل قيمة البكسل بطريقة معيّنة. يتمّ تلقائيًا احتساب متوسّط قيم البكسل، وهو الإجراء الصحيح في معظم الحالات عندما يمثّل النطاق المخطّط بيانات مستمرة تقريبًا. ومع ذلك، هناك حالتان يؤدي فيهما الاعتماد على القيمة التلقائية إلى ظهور نتائج غير صحيحة، وفي هذه الحالة يجب ضبط الحقل 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"
    }
  ]
}

بالنسبة إلى النطاقات المركّبة التي لا يكون فيها "المتوسّط" أو "الوضع" منطقيَين (مثل وحدات البكسل المُجمّعة بتيًا)، يجب استخدام سياسة التجميع "عيّنة". تأخذ "عيّنة" دائمًا قيمة بكسل العلوي الأيسر من كل شبكة 2×2. يحدّد المثال التالي سياسة التجميع "المتوسّط" لنطاق يمثّل متغيّرًا مستمرًا ("NDVI") و"عيّنة" لنطاق "جودة البيانات".

{
  "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").

مجموعات الأشكال

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

معرّف مجموعة البلاطات يجب أن تكون فريدة بين مجموعات الأشكال الأرضية المحدّدة فيملف بيان مواد العرض. يتم تجاهل هذا المعرّف أثناء خطوة المعالجة، ولا يُستخدَم إلا لربط مجموعة شرائح بمجموعة ألوان. السلسلة الفارغة هي معرّف صالح.

tilesets[i].crs

string

نظام مرجعي للإحداثيات لشبكة البكسل، يتم تحديده كرمز عادي كلما أمكن (مثل رمز EPSG)، وبتنسيق WKT في الحالات الأخرى

tilesets[i].sources

list

قائمة قواميس تحدّد خصائص ملف الصورة وملفات البيانات الجانبية راجِع sources حقول عناصر القاموس التالية للحصول على مزيد من المعلومات.

tilesets[i].sources[j].uris

list

قائمة برموز الموارد المتسلسلة للبيانات المطلوب نقلها يُسمَح فقط بمعرّفات الموارد المنتظمة (URI) لـ Google Cloud Storage. يجب تحديد كلّ معرّف موارد منتظم (URI) بالشكل التالي: gs://bucket-id/object-id. يجب أن يكون العنصر الأساسي هو العنصر الأول في القائمة، ويجب إدراج العناصر الجانبية بعد ذلك. يُضاف البادئة ImageManifest.uriPrefix إلى كلّ معرّف موارد منتظم (URI) في حال ضبطها.

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

قائمة بمراجع تحدّد سمات نطاق واحد مصدره من مجموعة رسومات. يُرجى العلم أنّ ترتيب النطاقات في مادة العرض هو نفسه ترتيب bands. راجِع حقول عناصر القاموس bands التالية للحصول على مزيد من المعلومات.

bands[i].id

string

رقم تعريف (اسم) المجموعة

bands[i].tilesetId

string

رقم تعريف مجموعة الأشكال المركّبة المقابلة للشريحة

bands[i].tilesetBandIndex

int32

فهرس النطاق المستند إلى الصفر من مجموعة البلاطات المقابلة للنطاق

bands[i].missingData.values

list

قائمة بالقيم (من النوع double) التي لا تمثّل أي بيانات في النطاق

bands[i].pyramidingPolicy

string

سياسة التضخيم يُرجى الاطّلاع على هذا الرابط للحصول على مزيد من المعلومات. تتضمن الخيارات:

  • "MEAN" (التلقائي)
  • "MODE"
  • "عيّنة"

maskBands

list

قائمة قواميس تحدّد سمات شريط قناع واحد مصدره من مجموعة رسومات. يمكن توفير شريط قناع واحد كحد أقصى. راجِع حقول عناصر القاموس maskBands التالية للحصول على مزيد من المعلومات.

maskBands[i].tilesetId

string

رقم تعريف مجموعة الأشكال المركّبة المقابلة لفرقة القناع يُستخدَم دائمًا الشريط الأخير من مجموعة رسومات الأشكال كشريط قناع.

maskBands[i].bandIds

list of strings

قائمة بأرقام تعريف النطاقات التي ينطبق عليها نطاق القناع إذا كانت فارغة، يتم تطبيق شريط القناع على جميع الأشرطة في مادة العرض. يمكن أن تتضمّن كل مجموعة ترددات مجموعة قناع واحدة فقط.

البصمة

dictionary

معجم يحدِّد خصائص مساحة العرض لجميع وحدات البكسل الصالحة في الصورة إذا كانت فارغة، تكون مساحة العرض التلقائية هي الصورة بأكملها. راجِع حقول عناصر القاموس footprint التالية للحصول على مزيد من المعلومات.

footprint.points

list

قائمة بالنقاط التي تحدّد مساحة جميع وحدات البكسل الصالحة في الصورة يتم تعريف النقطة من خلال قاموس يتضمّن مفتاحَي x وy اللذَين يتضمنان قيمًا عائمة. قائمة بنقاط لوصف حلقة تشكل الجزء الخارجي من مضلع بسيط يجب أن يحتوي على مراكز جميع وحدات البكسل الصالحة للصورة يجب أن تكون هذه حلقة خطية: يجب أن تكون النقطة الأخيرة مساوية للنقطة الأولى. الإحداثيات في إسقاط النطاق المحدّد بواسطة bandId.

ملاحظة: استخدِم إحداثيات غير صحيحة، مثل مركز كل بكسل، لأنّه يتم اعتبار أنّ footprint يتضمّن بكسلًا إذا كان البكسل (مستطيل أبعاده 1×1) يتقاطع مع مساحة العرض. لتجنُّب اختيار بكسل مجاور عن طريق الخطأ، لا تستخدِم إحداثيات ذات قيمة عددية، لأنّها الحدود بين البكسلات. يمنع رسم مساحة العرض على طول مراكز البكسل تضمين وحدات بكسل غير مقصودة، ما قد يؤدي إلى حدوث أخطاء عندما تكون وحدات البكسل المقصودة متاخمة لحدود الخريطة، مثل خط الطول المقابل أو أحد القطبين.

على سبيل المثال، بالنسبة إلى صورة 2×2 تحتوي على جميع وحدات البكسل الأربعة الصالحة، في ما يلي حلقة واحدة محتملة:

[
  {
    "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

رقم تعريف النطاق الذي يحدِّد نظام مرجعي جغرافي إحداثيات مساحة التغطية. إذا كان الحقل فارغًا، يتم استخدام النطاق الأول.

missingData.values

list

قائمة بالقيم (من النوع double) التي لا تمثّل أي بيانات في جميع نطاقات الصورة ينطبق على جميع النطاقات التي لا تحدّد missingData الخاصة بها.

pyramidingPolicy

string

سياسة التضخيم في حال عدم تحديدها، يتم تطبيق السياسة "MEAN" تلقائيًا. ينطبق ذلك على جميع النطاقات التي لا تحدّد نطاقًا خاصًا بها. يُرجى الاطّلاع على هذا الرابط للحصول على مزيد من المعلومات. تتضمن الخيارات:

  • "MEAN" (التلقائي)
  • "MODE"
  • "عيّنة"

uriPrefix

string

بادئة اختيارية يتم إضافتها إلى جميع uris المحدّدة في البيان

startTime

integer

الطابع الزمني المرتبط بمادة العرض، إن وجد ويتوافق ذلك عادةً مع الوقت الذي تم فيه التقاط صورة القمر الصناعي. بالنسبة إلى مواد العرض التي تتوافق مع فاصل زمني، مثل متوسّط القيم على مدار شهر أو عام، يتوافق الطابع الزمني مع بداية هذا الفاصل الزمني. يتم تحديدها بالثواني (اختياريًا) بالنانوسيكون منذ بدء حساب الفترة (01‏-01‏-1970). يُفترض أنّه في المنطقة الزمنية للتوقيت العالمي المنسّق.

endTime

integer

بالنسبة إلى مواد العرض التي تتوافق مع فاصل زمني، مثل متوسط القيم على مدار شهر أو عام، يتوافق الطابع الزمني مع نهاية ذلك الفاصل (حصري). يتم تحديدها بالثواني (اختياريًا) بالنانوسيكون منذ بدء حساب الفترة (01‏-01‏-1970). يُفترض أنّه في المنطقة الزمنية للتوقيت العالمي المنسّق.

المواقع

dictionary

قاموس مسطّح عشوائي لأزواج المفتاح/القيمة يجب أن تكون المفاتيح سلاسل، ويمكن أن تكون القيم إما أرقامًا أو سلاسل. لا تتوفّر قيم القوائم بعد لمواد العرض التي يحمّلها المستخدم.

القيود

حجم بيان JSON

الحد الأقصى لحجم ملف البيان بتنسيق JSON هو 10 ميغابايت. إذا كان لديك العديد من الملفات المطلوب تحميلها، ننصحك بالتفكير في طرق لتقليل عدد الأحرف اللازمة لوصف مجموعة البيانات. على سبيل المثال، استخدِم الحقل uriPrefix لتجنُّب الحاجة إلى تقديم مسار حزمة Google Cloud لكل معرِّف موارد منتظم في قائمة 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) ما لم تكن على دراية بالتأثير المحتمل على بياناتك.