আপনার যদি কোড এডিটর UI বা 'আর্থেঞ্জিন' কমান্ড-লাইন টুলের upload কমান্ডের চেয়ে Google আর্থ ইঞ্জিনে (EE) ছবি আপলোড করার জন্য আরও নমনীয়তার প্রয়োজন হয়, তাহলে আপনি "মেনিফেস্ট" নামে পরিচিত একটি JSON ফাইল ব্যবহার করে একটি ইমেজ আপলোড বর্ণনা করে এবং কমান্ড-লাইন টুলের upload image --manifest কমান্ড ব্যবহার করে তা করতে পারেন।
এই Colab নোটবুকে একটি সম্পূর্ণ উদাহরণ দেখুন যা একটি ম্যানিফেস্ট ব্যবহার করে একটি একক সম্পদ হিসেবে ছবির টাইলস আপলোড করা দেখায়।
এককালীন সেটআপ
- ম্যানিফেস্ট আপলোডগুলি শুধুমাত্র Google ক্লাউড স্টোরেজে অবস্থিত ফাইলগুলির সাথে কাজ করে৷ Google ক্লাউড স্টোরেজ ব্যবহার শুরু করতে, একটি Google ক্লাউড প্রজেক্ট তৈরি করুন , যদি আপনার আগে থেকে না থাকে। নোট করুন যে সেটআপের জন্য বিলিং এর জন্য একটি ক্রেডিট কার্ড নির্দিষ্ট করা প্রয়োজন৷ EE নিজেই এই মুহুর্তে কাউকে চার্জ করছে না, তবে ফাইলগুলিকে EE এ আপলোড করার আগে Google ক্লাউড স্টোরেজে স্থানান্তর করার জন্য একটি ছোট খরচ হবে৷ সাধারণ আপলোড ডেটা আকারের জন্য (দশ বা শত গিগাবাইট), খরচ বেশ কম হবে।
- আপনার প্রকল্পের মধ্যে, ক্লাউড স্টোরেজ API চালু করুন এবং একটি বালতি তৈরি করুন ।
- আর্থ ইঞ্জিন পাইথন ক্লায়েন্ট ইনস্টল করুন । এতে
earthengineকমান্ড-লাইন টুল রয়েছে, যা আমরা ডেটা আপলোড করার জন্য ব্যবহার করব। - স্বয়ংক্রিয় আপলোডের জন্য, আপনি আপনার প্রকল্পের সাথে যুক্ত একটি Google ক্লাউড পরিষেবা অ্যাকাউন্ট ব্যবহার করতে চাইতে পারেন। পরীক্ষার জন্য আপনার একটি পরিষেবা অ্যাকাউন্টের প্রয়োজন নেই, কিন্তু যখন আপনার কাছে একটি মুহূর্ত থাকবে, অনুগ্রহ করে সেগুলি ব্যবহার করে নিজেকে পরিচিত করা শুরু করুন৷
খুব বড় সোর্স ফাইলগুলি (100 GB বা তার বেশি) দ্রুত আপলোড হতে পারে যদি সেগুলি একাধিক টাইলগুলিতে বিভক্ত হয়।
সম্পদ আইডি এবং নাম
ক্লাউড প্রকল্পের মালিকানাধীন সম্পদের জন্য, সম্পদের নামের জন্য এই নিয়মটি ব্যবহার করুন: projects/some-project-id/assets/some-asset-id
উত্তরাধিকার প্রকল্প এবং ব্যবহারকারীর মালিকানাধীন সম্পদের সম্পদের নাম সম্পর্কে জানুন
পুরানো লিগ্যাসি প্রোজেক্টের জন্য, ম্যানিফেস্টে থাকা সম্পদের নাম আর্থ ইঞ্জিনের অন্য কোথাও দৃশ্যমান সম্পদ আইডি থেকে কিছুটা আলাদা হতে হবে। যে সম্পদের আইডি 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 ক্লাউড API মান মেনে চলার জন্য প্রয়োজনীয়।
ম্যানিফেস্ট ব্যবহার করে
নিম্নলিখিত কোড ব্লকে একটি মৌলিক ম্যানিফেস্ট দেখানো হয়েছে। এটি gs://earthengine-test নামে একটি Google ক্লাউড স্টোরেজ বাকেট থেকে 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 সম্পদে ব্যান্ড হিসাবে একসাথে স্ট্যাক করা আবশ্যক।
(উভয় উপায় একই সময়ে ব্যবহার করা হতে পারে, কিন্তু এটি একটি বিরল পরিস্থিতি।)
এই বিকল্পগুলি বর্ণনা করার জন্য, ম্যানিফেস্টগুলি একটি টাইলসেটের ধারণার পরিচয় দেয়। একটি একক টাইলসেট একটি একক 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 ব্যান্ডের সংখ্যা সমস্ত টাইলসেটে মোট ব্যান্ডের সংখ্যার সমান হতে হবে।
আপনি যদি একটি ফাইল থেকে সমস্ত ব্যান্ড ইনজেস্ট করতে না চান, তাহলে 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. সবচেয়ে সাধারণ ক্ষেত্রে একটি একক জিওটিআইএফএফ যার শেষ ব্যান্ডটি অন্যান্য ব্যান্ডের জন্য মাস্ক হিসাবে ব্যবহৃত হয়। এটি শুধুমাত্র বাইট ধরনের জিওটিআইএফএফ-এর জন্য কাজ করে। নিম্নলিখিত ম্যানিফেস্ট ব্যবহার করুন:
{
"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. অন্য জিওটিআইএফএফ-এ সমস্ত ব্যান্ডের জন্য একটি মাস্ক জিওটিআইএফএফ ব্যবহার করতে, নিম্নলিখিত ম্যানিফেস্টটি ব্যবহার করুন:
{
"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. অন্য ফাইলে একটি নির্দিষ্ট ব্যান্ডের জন্য একটি মাস্ক হিসাবে একটি জিওটিআইএফএফ ব্যবহার করতে, নিম্নলিখিত ম্যানিফেস্টটি ব্যবহার করুন (আগের ক্ষেত্রের সাথে পার্থক্য হল 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 থেকে দুটি ব্যান্ডের সাথে কাজ করছি, কিন্তু শুধুমাত্র একটি ব্যান্ডে ( data_band ) একটি মাস্ক প্রয়োগ করছি, যা শুধুমাত্র প্রদত্ত maskBands তালিকা অবজেক্টের bandIds ফিল্ড দ্বারা মনোনীত করা হয়েছে।
উল্লেখ্য যে maskBands উল্লিখিত টাইলসেটের শেষ ব্যান্ডটিই মাস্ক ব্যান্ড হিসেবে ব্যবহার করা হয়েছে।
পিরামিডিং নীতি
যখন আর্থ ইঞ্জিন ইনজেশনের সময় ইমেজ পিরামিড তৈরি করে, তখন এটিকে বারবার 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" পিরামিডিং নীতি ব্যবহার করা উচিত। "নমুনা" সর্বদা প্রতিটি 2x2 গ্রিড থেকে উপরের বামদিকের পিক্সেলের মান নেয়৷ নিম্নলিখিত উদাহরণটি একটি ব্যান্ডকে "MEAN" পিরামিডিং নীতি নির্ধারণ করে যা একটি ক্রমাগত পরিবর্তনশীল ("NDVI") এবং ডেটার "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")।
টাইলসেট
list অভিধানের একটি তালিকা যা টাইল সেটের বৈশিষ্ট্য নির্ধারণ করে। আরও তথ্যের জন্য নিম্নলিখিত tilesets অভিধান উপাদান ক্ষেত্রগুলি দেখুন।
টাইলসেট[i]।ডেটা টাইপ
stringডেটার সাংখ্যিক ডেটা টাইপ নির্দিষ্ট করে। ডিফল্ট হল সেই প্রকার যা GDAL রিপোর্ট করে, সেক্ষেত্রে সংজ্ঞায়িত করার প্রয়োজন নেই।
| ডেটা টাইপ | মান |
|---|---|
| অনির্দিষ্ট | "DATA_TYPE_UNSPECIFIED" |
| 8-বিট স্বাক্ষরিত পূর্ণসংখ্যা | "INT8" |
| 8-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা | "UINT8" |
| 16-বিট স্বাক্ষরিত পূর্ণসংখ্যা | "INT16" |
| 16-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা | "UINT16" |
| 32-বিট স্বাক্ষরিত পূর্ণসংখ্যা | "INT32" |
| 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা | "UINT32" |
| 32-বিট ফ্লোট | "ফ্লোট৩২" |
| 64-বিট ফ্লোট | "FLOAT64" |
টাইলসেট [i].id
stringটাইলসেটের আইডি। অ্যাসেট ম্যানিফেস্টে নির্দিষ্ট করা টাইলসেটগুলির মধ্যে অনন্য হতে হবে। এই আইডি প্রসেসিং ধাপের সময় বাতিল করা হয়; এটি শুধুমাত্র একটি ব্যান্ডের সাথে একটি টাইলসেট লিঙ্ক করতে ব্যবহৃত হয়। খালি স্ট্রিংটি একটি বৈধ আইডি।
টাইলসেট [i].crs
stringপিক্সেল গ্রিডের কোঅর্ডিনেট রেফারেন্স সিস্টেম, যেখানে সম্ভব একটি স্ট্যান্ডার্ড কোড হিসাবে নির্দিষ্ট করা হয়েছে (উদাহরণস্বরূপ, EPSG কোড), এবং অন্যথায় WKT ফর্ম্যাটে।
টাইলসেট [i]. উত্স
list একটি চিত্র ফাইল এবং এর সাইডকারের বৈশিষ্ট্য সংজ্ঞায়িত অভিধানের একটি তালিকা। আরও তথ্যের জন্য নিম্নলিখিত sources অভিধান উপাদান ক্ষেত্র দেখুন.
টাইলসেট[i].উৎস [j].uris
list ইনজেস্ট করা ডেটার URI-এর একটি তালিকা। শুধুমাত্র Google ক্লাউড স্টোরেজ ইউআরআই সমর্থিত। প্রতিটি URI অবশ্যই নিম্নলিখিত বিন্যাসে নির্দিষ্ট করতে হবে: gs://bucket-id/object-id । প্রাথমিক বস্তুটি তালিকার প্রথম উপাদান হওয়া উচিত এবং পরে তালিকাভুক্ত সাইডকারগুলি। প্রতিটি URI সেট করা থাকলে ImageManifest.uriPrefix এর সাথে প্রিফিক্স করা হয়।
টাইলসেট[i].উৎস [j].affineTransform
dictionary একটি ঐচ্ছিক affine রূপান্তর. শুধুমাত্র তখনই নির্দিষ্ট করা উচিত যদি 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 অভিধান উপাদান ক্ষেত্র দেখুন.
ব্যান্ড [i].id
stringব্যান্ডের আইডি (নাম)।
ব্যান্ড [i].tilesetId
stringব্যান্ডের সাথে সম্পর্কিত টাইলসেটের আইডি।
ব্যান্ড [i].tilesetBandIndex
int32ব্যান্ডের সাথে সম্পর্কিত টাইলসেট থেকে শূন্য-ভিত্তিক ব্যান্ড সূচক।
ব্যান্ড[i].missingData.values
listমানগুলির একটি তালিকা (দ্বৈত প্রকার) যা ব্যান্ডে কোনও ডেটা উপস্থাপন করে না।
ব্যান্ড[i].পিরামিডিং পলিসি
stringপিরামিডিং নীতি। আরো তথ্যের জন্য এই লিঙ্ক দেখুন. বিকল্প অন্তর্ভুক্ত:
- "MEAN" (ডিফল্ট)
- "মোড"
- "নমুনা"
মাস্কব্যান্ড
list একটি টাইলসেট থেকে প্রাপ্ত একক মাস্ক ব্যান্ডের বৈশিষ্ট্য সংজ্ঞায়িত করা অভিধানের একটি তালিকা। সর্বাধিক 1টি মাস্ক ব্যান্ড প্রদান করা যেতে পারে। আরও তথ্যের জন্য নিম্নলিখিত maskBands অভিধান উপাদান ক্ষেত্রগুলি দেখুন।
maskBands[i].tilesetId
stringমাস্ক ব্যান্ডের সাথে সম্পর্কিত টাইলসেটের আইডি। টাইলসেটের শেষ ব্যান্ডটি সবসময় মাস্ক ব্যান্ড হিসেবে ব্যবহার করা হয়।
মাস্কব্যান্ডস[i].ব্যান্ডআইডস
list of stringsমাস্ক ব্যান্ড প্রযোজ্য ব্যান্ডের আইডিগুলির তালিকা৷ খালি থাকলে, মাস্ক ব্যান্ডটি সম্পদের সমস্ত ব্যান্ডে প্রয়োগ করা হয়। প্রতিটি ব্যান্ডে শুধুমাত্র একটি সংশ্লিষ্ট মাস্ক ব্যান্ড থাকতে পারে।
পদচিহ্ন
dictionary একটি অভিধান একটি চিত্রের সমস্ত বৈধ পিক্সেলের পদচিহ্নের বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে৷ খালি থাকলে, ডিফল্ট ফুটপ্রিন্ট পুরো চিত্র। আরো তথ্যের জন্য নিম্নলিখিত footprint অভিধান উপাদান ক্ষেত্র দেখুন.
ফুটপ্রিন্ট.পয়েন্ট
list একটি চিত্রের সমস্ত বৈধ পিক্সেলের একটি পদচিহ্ন সংজ্ঞায়িত পয়েন্টগুলির একটি তালিকা৷ একটি বিন্দু একটি অভিধান দ্বারা সংজ্ঞায়িত করা হয় যার মধ্যে "x" এবং "y" কী ফ্লোট মান রয়েছে। পয়েন্টগুলির একটি তালিকা হল একটি রিং বর্ণনা করা যা একটি সাধারণ বহুভুজের বাইরের অংশ গঠন করে যাতে চিত্রের সমস্ত বৈধ পিক্সেলের কেন্দ্র থাকতে হবে। এটি অবশ্যই একটি রৈখিক রিং হতে হবে: শেষ বিন্দুটি অবশ্যই প্রথমটির সমান হতে হবে। স্থানাঙ্কগুলি bandId দ্বারা নির্দিষ্ট করা ব্যান্ডের অভিক্ষেপে থাকে।
দ্রষ্টব্য: প্রতিটি পিক্সেলের কেন্দ্রের মতো অ-পূর্ণসংখ্যা স্থানাঙ্ক ব্যবহার করুন কারণ পিক্সেল (একটি 1x1 আয়তক্ষেত্র) ফুটপ্রিন্টকে ছেদ করলে একটি পিক্সেল অন্তর্ভুক্ত করার জন্য 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ব্যান্ডের ID যার CRS পদচিহ্নের স্থানাঙ্কগুলিকে সংজ্ঞায়িত করে৷ খালি হলে, প্রথম ব্যান্ড ব্যবহার করা হয়।
missingData.values
list মানগুলির একটি তালিকা (দ্বৈত প্রকার) যা চিত্রের সমস্ত ব্যান্ডে কোনও ডেটা উপস্থাপন করে না। সমস্ত ব্যান্ডের ক্ষেত্রে প্রযোজ্য যা তাদের নিজস্ব missingData নির্দিষ্ট করে না।
পিরামিডিং নীতি
stringপিরামিডিং নীতি। অনির্দিষ্ট থাকলে, নীতি "MEAN" ডিফল্টরূপে প্রয়োগ করা হয়। সমস্ত ব্যান্ডের ক্ষেত্রে প্রযোজ্য যা তাদের নিজস্ব নির্দিষ্ট করে না। আরো তথ্যের জন্য এই লিঙ্ক দেখুন. বিকল্প অন্তর্ভুক্ত:
- "MEAN" (ডিফল্ট)
- "মোড"
- "নমুনা"
uriPrefix
string একটি ঐচ্ছিক উপসর্গ ম্যানিফেস্টে সংজ্ঞায়িত সমস্ত uris পূর্বে যুক্ত।
শুরুর সময়
integerসম্পদের সাথে যুক্ত টাইমস্ট্যাম্প, যদি থাকে। এটি সাধারণত স্যাটেলাইট ছবি তোলার সময়ের সাথে মিলে যায়। সময়ের ব্যবধানের সাথে সঙ্গতিপূর্ণ সম্পদের জন্য, যেমন এক মাস বা বছরের গড় মান, এই টাইমস্ট্যাম্প সেই ব্যবধানের শুরুর সাথে মিলে যায়। যুগ (1970-01-01) থেকে সেকেন্ড এবং (ঐচ্ছিকভাবে) ন্যানোসেকেন্ড হিসাবে নির্দিষ্ট করা হয়েছে। UTC টাইম জোনে বলে ধরে নেওয়া হচ্ছে।
শেষ সময়
integerসময়ের ব্যবধানের সাথে সামঞ্জস্যপূর্ণ সম্পদের জন্য, যেমন এক মাস বা বছরের গড় মান, এই টাইমস্ট্যাম্পটি সেই ব্যবধানের (একচেটিয়া) শেষের সাথে মিলে যায়। যুগ (1970-01-01) থেকে সেকেন্ড এবং (ঐচ্ছিকভাবে) ন্যানোসেকেন্ড হিসাবে নির্দিষ্ট করা হয়েছে। UTC টাইম জোনে বলে ধরে নেওয়া হচ্ছে।
বৈশিষ্ট্য
dictionaryকী-মান জোড়ার একটি নির্বিচারে সমতল অভিধান। কীগুলি অবশ্যই স্ট্রিং হতে হবে এবং মানগুলি সংখ্যা বা স্ট্রিং হতে পারে৷ ব্যবহারকারীর আপলোড করা সম্পদের জন্য তালিকা মান এখনও সমর্থিত নয়।
সীমাবদ্ধতা
JSON ম্যানিফেস্ট আকার
JSON ম্যানিফেস্ট ফাইলের আকার সীমা হল 10 MB৷ আপনার কাছে আপলোড করার জন্য অনেক ফাইল থাকলে, ডেটাসেট বর্ণনা করার জন্য প্রয়োজনীয় অক্ষরের সংখ্যা কমানোর উপায় বিবেচনা করুন। উদাহরণস্বরূপ, uris তালিকায় প্রতিটি ইউআরআই-এর জন্য Google ক্লাউড বাকেট পাথ প্রদানের প্রয়োজনীয়তা দূর করতে uriPrefix ক্ষেত্রটি ব্যবহার করুন। যদি আরও আকার কমানোর প্রয়োজন হয়, ফাইলের নাম ছোট করার চেষ্টা করুন।
ইমেজ ফাইল ফরম্যাট
প্রতিটি ইমেজ ফাইল একটি TIFF ইমেজ হতে হবে. যদি ম্যানিফেস্টে CRS নির্দিষ্ট করা না থাকে, তাহলে ফাইলটি অবশ্যই একটি এম্বেডেড CRS সহ একটি জিওটিআইএফএফ হতে হবে।
TIFF ফাইলগুলি DEFLATE, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP, বা ZSTD দিয়ে সংকুচিত করা যেতে পারে।
বড় ফাইলের জন্য সেরা আপলোড অভিজ্ঞতার জন্য সুপারিশ:
- সেরা পছন্দ: ZSTD গতি এবং সংকোচনের একটি ভাল ভারসাম্য অফার করে।
- এড়িয়ে চলুন: ভাল সংকোচন সত্ত্বেও LZMA খুব ধীর হতে পারে।
- আনকম্প্রেসড ফাইল: বড় ফাইল এবং আপলোডের সময় বেশি হবে।
- ক্ষতিকর কম্প্রেশন (যেমন, JPEG): পিক্সেল মান পরিবর্তন করতে পারে। লসলেস কম্প্রেশন ব্যবহার করুন (যেমন, DEFLATE, LZMA, LZW, ZSTD) যদি না আপনি আপনার ডেটার উপর সম্ভাব্য প্রভাব বুঝতে পারেন।