টেবিল ম্যানিফেস্ট আপলোড

আপনার যদি কোড এডিটর UI বা 'আর্থেঞ্জিন' কমান্ড-লাইন টুলের upload কমান্ডের চেয়ে Google আর্থ ইঞ্জিনে (EE) টেবিল আপলোড করার আরও নমনীয়তার প্রয়োজন হয়, তাহলে আপনি "মেনিফেস্ট" নামে পরিচিত একটি JSON ফাইল ব্যবহার করে একটি টেবিল আপলোড বর্ণনা করে এবং কমান্ড-লাইন টুলের upload table --manifest কমান্ড ব্যবহার করে তা করতে পারেন।

এককালীন সেটআপ

  1. ম্যানিফেস্ট আপলোডগুলি শুধুমাত্র Google ক্লাউড স্টোরেজে অবস্থিত ফাইলগুলির সাথে কাজ করে৷ Google ক্লাউড স্টোরেজ ব্যবহার শুরু করতে, একটি Google ক্লাউড প্রজেক্ট তৈরি করুন , যদি আপনার আগে থেকে না থাকে। নোট করুন যে সেটআপের জন্য বিলিং এর জন্য একটি ক্রেডিট কার্ড নির্দিষ্ট করা প্রয়োজন৷ EE নিজেই এই মুহুর্তে কাউকে চার্জ করছে না, তবে ফাইলগুলিকে EE এ আপলোড করার আগে Google ক্লাউড স্টোরেজে স্থানান্তর করার জন্য একটি ছোট খরচ হবে৷ সাধারণ আপলোড ডেটা আকারের জন্য (দশ বা শত গিগাবাইট), খরচ বেশ কম হবে।
  2. আপনার প্রকল্পের মধ্যে, ক্লাউড স্টোরেজ API চালু করুন এবং একটি বালতি তৈরি করুন
  3. আর্থ ইঞ্জিন পাইথন ক্লায়েন্ট ইনস্টল করুন । এতে earthengine কমান্ড-লাইন টুল রয়েছে, যা আমরা ডেটা আপলোড করার জন্য ব্যবহার করব।
  4. স্বয়ংক্রিয় আপলোডের জন্য, আপনি আপনার প্রকল্পের সাথে যুক্ত একটি Google ক্লাউড পরিষেবা অ্যাকাউন্ট ব্যবহার করতে চাইতে পারেন। পরীক্ষার জন্য আপনার একটি পরিষেবা অ্যাকাউন্টের প্রয়োজন নেই, কিন্তু যখন আপনার কাছে একটি মুহূর্ত থাকবে, অনুগ্রহ করে সেগুলি ব্যবহার করে নিজেকে পরিচিত করা শুরু করুন৷

সম্পদ আইডি এবং নাম

ক্লাউড প্রকল্পে সম্পদের জন্য, projects/my_cloud_project/assets/my_asset ব্যবহার করুন।

পুরানো লিগ্যাসি প্রোজেক্টের জন্য, ম্যানিফেস্টে থাকা সম্পদের নাম আর্থ ইঞ্জিনের অন্য কোথাও দৃশ্যমান সম্পদ আইডি থেকে কিছুটা আলাদা হতে হবে। যে সম্পদের আইডি users/some_user অথবা projects/some_project দিয়ে শুরু হয় সেই সম্পদগুলি আপলোড করতে, ম্যানিফেস্টে থাকা সম্পদের নাম আইডিতে স্ট্রিং projects/earthengine-legacy/assets/ আগে থেকে যুক্ত থাকতে হবে। উদাহরণ স্বরূপ, EE সম্পদ আইডি users/username/my_table নাম projects/earthengine-legacy/assets/users/username/my_table ব্যবহার করে আপলোড করা উচিত।

হ্যাঁ, এর মানে হল projects/some_projects/some_asset এর মতো আইডিগুলি এমন নামে রূপান্তরিত হয় যেখানে projects দুবার উল্লেখ করা হয়েছে: projects/earthengine-legacy/assets/projects/some_projects/some_asset । এটি বিভ্রান্তিকর কিন্তু Google ক্লাউড API মান মেনে চলার জন্য প্রয়োজনীয়।

ম্যানিফেস্ট ব্যবহার করে

সবচেয়ে সহজ সম্ভাব্য ম্যানিফেস্ট নীচে দেখানো হয়েছে. এটি gs://earthengine-test নামে একটি Google ক্লাউড স্টোরেজ বাকেট থেকে small.csv নামের একটি ফাইল আপলোড করে।

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "sources": [
    {
      "uris": [
        "gs://earthengine-test/small.csv"
      ]
    }
  ]
}

এটি ব্যবহার করতে, manifest.json নামে একটি ফাইলে সংরক্ষণ করুন এবং চালান:

earthengine upload table --manifest /path/to/manifest.json

( gs://earthengine-test/small.csv ফাইলটি বিদ্যমান এবং সর্বজনীনভাবে পাঠযোগ্য-আপনি এটি পরীক্ষার জন্য ব্যবহার করতে পারেন।)

শেপফাইল আপলোডের জন্য, শুধু .shp ফাইলটি নির্দিষ্ট করুন; অন্যান্য ফাইল স্বয়ংক্রিয়ভাবে সনাক্ত করা হবে.

একাধিক সূত্র

সোর্স প্রতি একটি ফাইল সহ একাধিক CSV বা শেফফাইল উত্স নির্দিষ্ট করা সম্ভব৷ এই ক্ষেত্রে, প্রতিটি CSV ফাইলের গঠন একই হতে হবে। উদাহরণস্বরূপ, আমাদের দুটি CSV ফাইল রয়েছে, region1.csv এবং region2.csv :

আইডি আকৃতি
1 {"টাইপ":"পয়েন্ট","সমন্বয়":[-119,36]}
2 {"টাইপ":"পয়েন্ট","সমন্বয়":[-118,37]}
3 {"টাইপ":"পয়েন্ট","সমন্বয়":[-117,38]}
আইডি আকৃতি
4 {"type":"পয়েন্ট","স্থানাঙ্ক":[-112,40]}
5 {"টাইপ":"পয়েন্ট","সমন্বয়":[-111,41]}
6 {"টাইপ":"পয়েন্ট","সমন্বয়":[-110,42]}

তাদের একই কাঠামো আছে, কিন্তু বিভিন্ন বিষয়বস্তু। সেগুলি একটি ক্লাউড স্টোরেজ বালতিতে আপলোড করা হয়েছে: gs://earthengine-test/region1.csv এবং gs://earthengine-test/region2.csv । এগুলিকে আর্থ ইঞ্জিন সম্পদ হিসাবে গ্রহণ করতে, sources তালিকায় দুটি এন্ট্রি সহ একটি ম্যানিফেস্ট তৈরি করুন, এইভাবে:

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "sources": [
    {
      "uris": [
        "gs://earthengine-test/region1.csv"
      ]
    },
    {
      "uris": [
        "gs://earthengine-test/region2.csv"
      ]
    }
  ]
}

শুরু এবং শেষ সময়

ডেটাতে আরও প্রসঙ্গ দেওয়ার জন্য সমস্ত সম্পদের শুরু এবং শেষের সময় নির্দিষ্ট করা উচিত, বিশেষ করে যদি সেগুলি সংগ্রহে অন্তর্ভুক্ত করা হয়। এই ক্ষেত্রগুলির প্রয়োজন নেই, তবে আমরা যখনই সম্ভব তখন এগুলি ব্যবহার করার পরামর্শ দিই৷

শুরু এবং শেষের সময় সাধারণত পর্যবেক্ষণের সময় বোঝায়, উৎস ফাইলটি তৈরি করার সময় নয়।

শেষ সময়টিকে সরলতার জন্য একচেটিয়া সীমানা হিসাবে বিবেচনা করা হয়। উদাহরণস্বরূপ, ঠিক এক দিন বিস্তৃত সম্পদের জন্য, শুরু এবং শেষ সময়ের জন্য পরপর দুই দিনের মধ্যরাত ব্যবহার করুন (উদাহরণস্বরূপ, 1980-01-31T00:00:00 এবং 1980-02-01T00:00:00)। সম্পদের কোনো সময়কাল না থাকলে, শেষের সময় শুরুর সময়ের মতো সেট করুন। ISO 8601 স্ট্রিং হিসাবে ম্যানিফেস্টের সময়গুলিকে উপস্থাপন করে৷ তারিখের মানগুলিকে সহজ করার জন্য আমরা শেষ সময়কে একচেটিয়া (উদাহরণস্বরূপ, দৈনিক সম্পদের জন্য পরের দিনের মধ্যরাত) ধরে নেওয়ার পরামর্শ দিই।

উদাহরণ:

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "sources": [
    {
      "uris": [
        "gs://bucket/table_20190612.csv"
      ]
    }
  ],
  "startTime": "1980-01-31T00:00:00Z",
  "endTime": "1980-02-01T00:00:00Z"
}

ম্যানিফেস্ট গঠন রেফারেন্স

নিম্নলিখিত JSON কাঠামোতে সমস্ত সম্ভাব্য টেবিল আপলোড ম্যানিফেস্ট ক্ষেত্র অন্তর্ভুক্ত রয়েছে৷ নিম্নলিখিত ম্যানিফেস্ট ক্ষেত্রের সংজ্ঞা বিভাগে ক্ষেত্রের সংজ্ঞা খুঁজুন।

{
  "name": <string>,
  "sources": [
    {
      "uris": [
        <string>
      ],
      "charset": <string>,
      "maxErrorMeters": <double>,
      "maxVertices": <int32>,
      "crs": <string>,
      "geodesic": <boolean>,
      "primaryGeometryColumn": <string>,
      "xColumn": <string>,
      "yColumn": <string>,
      "dateFormat": <string>,
      "csvDelimiter": <string>,
      "csvQualifier": <string>,
    }
  ],
  "uriPrefix": <string>,
  "startTime": {
    "seconds": <integer>
  },
  "endTime": {
    "seconds": <integer>
  },
  "properties": {
    <unspecified>
  }
}

ম্যানিফেস্ট ক্ষেত্রের সংজ্ঞা

নাম

string

সম্পদের নাম তৈরি করতে হবে। name "projects/*/assets/**" ফরম্যাটের (উদাহরণস্বরূপ, projects/earthengine-legacy/assets/users/USER/ASSET )।

সূত্র

list

একটি টেবিল ফাইল এবং এর সাইডকারের বৈশিষ্ট্য সংজ্ঞায়িত ক্ষেত্রগুলির একটি তালিকা। আরও তথ্যের জন্য নিম্নলিখিত sources অভিধান উপাদান ক্ষেত্র দেখুন.

সূত্র [i].uris

list

ইনজেস্ট করা ডেটার URI-এর একটি তালিকা। বর্তমানে, শুধুমাত্র Google ক্লাউড স্টোরেজ ইউআরআই সমর্থিত। প্রতিটি URI অবশ্যই নিম্নলিখিত বিন্যাসে নির্দিষ্ট করতে হবে: gs://bucket-id/object-id । প্রাথমিক বস্তুটি তালিকার প্রথম উপাদান হওয়া উচিত এবং পরে তালিকাভুক্ত সাইডকারগুলি। সেট করা হলে প্রতিটি URI-এর সাথে TableManifest.uri_prefix উপসর্গ থাকে।

সূত্র [i].charset

string

ডিকোডিং স্ট্রিং এর জন্য ডিফল্ট অক্ষর সেটের নাম। খালি থাকলে, অক্ষর সেট "UTF-8" ডিফল্টরূপে ধরে নেওয়া হয়।

সূত্র [i].maxErrorMeters

double

স্থানাঙ্ক সিস্টেমের মধ্যে জ্যামিতি রূপান্তর করার সময় মিটারে সর্বাধিক অনুমোদিত ত্রুটি৷ খালি থাকলে, ডিফল্টরূপে সর্বাধিক ত্রুটি 1 মিটার।

উত্স [i].maxVertices

int32

শীর্ষবিন্দুর সর্বোচ্চ সংখ্যা। শূন্য না হলে, জ্যামিতি স্থানিকভাবে বিচ্ছিন্ন অংশে বিভক্ত হবে, প্রতিটি এই সীমার অধীনে।

সূত্র [i].crs

string

ডিফল্ট CRS কোড বা WKT স্ট্রিং যে কোনো জ্যামিতির স্থানাঙ্ক রেফারেন্স সিস্টেম নির্দিষ্ট করে যেখানে একটি নির্দিষ্ট নেই। খালি রাখা হলে, ডিফল্ট হবে EPSG:4326 । শুধুমাত্র CSV/TFRrecord উৎসের জন্য।

উৎস [i].জিওডেসিক

boolean

জ্যামিতিতে প্রান্তগুলি ব্যাখ্যা করার জন্য ডিফল্ট কৌশল যা অন্যথায় নির্দিষ্ট করা নেই। মিথ্যা হলে, প্রজেকশনে প্রান্তগুলি সোজা হয়। সত্য হলে, পৃথিবীর পৃষ্ঠে সবচেয়ে ছোট পথ অনুসরণ করতে প্রান্তগুলি বাঁকা হয়। যখন ফাঁকা থাকে, তখন ডিফল্ট করে মিথ্যা হয় যদি CRS একটি প্রজেক্টেড কোঅর্ডিনেট সিস্টেম হয়। শুধুমাত্র CSV/TFRrecord উৎসের জন্য।

সূত্র [i]।প্রাথমিক জ্যামিতি কলাম

string

একটি সারির প্রাথমিক জ্যামিতি হিসাবে ব্যবহার করার জন্য জ্যামিতি কলাম যখন একাধিক জ্যামিতি কলাম থাকে৷

যদি ফাঁকা রাখা হয় এবং একাধিক জ্যামিতি কলাম বিদ্যমান থাকে, তাহলে প্রথম জ্যামিতি কলামটি ব্যবহার করা হয়। শুধুমাত্র CSV/TFRrecord উৎসের জন্য।

সূত্র [i].xColumn

string

বিন্দু জ্যামিতি নির্ণয়ের জন্য সাংখ্যিক x স্থানাঙ্ক কলামের নাম। যদি yColumn ও নির্দিষ্ট করা থাকে এবং উভয় কলামেই সাংখ্যিক মান থাকে, তাহলে CRS-এ প্রদত্ত স্থানাঙ্ক সিস্টেমে x,y মান দিয়ে একটি বিন্দু জ্যামিতি কলাম তৈরি করা হবে। যদি খালি রাখা হয় এবং CRS একটি প্রজেক্টেড কোঅর্ডিনেট সিস্টেম নির্দিষ্ট না করে, ডিফল্ট "দ্রাঘিমাংশ"। যদি খালি রাখা হয় এবং CRS একটি প্রজেক্টেড কোঅর্ডিনেট সিস্টেম নির্দিষ্ট করে , তাহলে একটি খালি স্ট্রিং ডিফল্ট হয় এবং কোন বিন্দু জ্যামিতি তৈরি হয় না।

একটি জেনারেটেড বিন্দু জ্যামিতি কলামের নাম দেওয়া হবে {xColumn}_{yColumn}_N যেখানে N যুক্ত করা হয়েছে যাতে {xColumn}_{ {xColumn}_{yColumn} {xColumn}_{yColumn}_N নামের একটি কলাম আগে থেকেই থাকে তাহলে এটি অনন্য। শুধুমাত্র CSV/TFRrecord উৎসের জন্য।

সূত্র [i].yColumn

string

বিন্দু জ্যামিতি নির্ণয়ের জন্য সংখ্যাসূচক y স্থানাঙ্ক কলামের নাম। যদি xColumn ও নির্দিষ্ট করা থাকে এবং উভয় কলামেই সাংখ্যিক মান থাকে, তাহলে CRS-এ প্রদত্ত স্থানাঙ্ক সিস্টেমে x,y মান দিয়ে একটি বিন্দু জ্যামিতি কলাম তৈরি করা হবে। যদি খালি রাখা হয় এবং CRS একটি প্রজেক্টেড কোঅর্ডিনেট সিস্টেম নির্দিষ্ট না করে, ডিফল্ট "অক্ষাংশ"। যদি খালি রাখা হয় এবং CRS একটি প্রজেক্টেড কোঅর্ডিনেট সিস্টেম নির্দিষ্ট করে , তাহলে একটি খালি স্ট্রিং ডিফল্ট হয় এবং কোন বিন্দু জ্যামিতি তৈরি হয় না।

একটি জেনারেটেড বিন্দু জ্যামিতি কলামের নাম দেওয়া হবে {xColumn}_{yColumn}_N যেখানে N যুক্ত করা হয়েছে যাতে {xColumn}_{ {xColumn}_{yColumn} {xColumn}_{yColumn}_N নামের একটি কলাম আগে থেকেই থাকে তাহলে এটি অনন্য। শুধুমাত্র CSV/TFRrecord উৎসের জন্য।

সূত্র [i].dateFormat

string

একটি বিন্যাস যার সাথে ক্ষেত্রগুলি এনকোডিং তারিখগুলিকে পার্স করতে হবে৷ ফরম্যাট প্যাটার্ন অবশ্যই জোডা-টাইম ডেটটাইম ফরম্যাট ক্লাস ডকুমেন্টেশনে বর্ণিত হওয়া উচিত। যদি ফাঁকা রাখা হয়, তারিখগুলি স্ট্রিং হিসাবে আমদানি করা হবে৷ শুধুমাত্র CSV/TFRrecord উৎসের জন্য।

সূত্র [i].csvDelimiter

string

CSV ফাইলগুলি ইনজেস্ট করার সময়, একটি একক অক্ষর একটি সারিতে কলামের মানগুলির মধ্যে একটি বিভেদক হিসাবে ব্যবহৃত হয়৷ যদি ফাঁকা রাখা হয়, ডিফল্ট ',' । শুধুমাত্র CSV উৎসের জন্য।

উত্স [i].csvQualifier

string

CSV ফাইলগুলি খাওয়ার সময়, একটি অক্ষর যা কলামের মানকে ঘিরে থাকে (ওরফে "উদ্ধৃতি অক্ষর")। যদি ফাঁকা রাখা হয়, ডিফল্ট হিসেবে " । শুধুমাত্র CSV উৎসের জন্য।

যদি একটি কলামের মান কোয়ালিফায়ার দ্বারা বেষ্টিত না হয়, তাহলে লিডিং এবং টেলিং হোয়াইটস্পেস ছাঁটাই করা হয়। যেমন:

    ..., test,...            <== this value is not qualified
becomes the string value:
    "test"                   <== leading whitespace is stripped
যখন:
    ...," test",...          <== this value IS qualified with quotes
becomes the string value:
    " test"                  <== leading whitespace remains!

uriPrefix

string

একটি ঐচ্ছিক উপসর্গ ম্যানিফেস্টে সংজ্ঞায়িত সমস্ত uris এর পূর্বে যুক্ত।

শুরুর সময়

integer

সম্পদের সাথে যুক্ত টাইমস্ট্যাম্প, যদি থাকে। এটি সাধারণত ডেটা সংগ্রহ করা সময়ের সাথে মিলে যায়। সময়ের ব্যবধানের সাথে সঙ্গতিপূর্ণ সম্পদের জন্য, যেমন এক মাস বা বছরের গড় মান, এই টাইমস্ট্যাম্প সেই ব্যবধানের শুরুর সাথে মিলে যায়। যুগ (1970-01-01) থেকে সেকেন্ড এবং (ঐচ্ছিকভাবে) ন্যানোসেকেন্ড হিসাবে নির্দিষ্ট করা হয়েছে। UTC টাইম জোনে বলে ধরে নেওয়া হচ্ছে।

শেষ সময়

integer

সময়ের ব্যবধানের সাথে সামঞ্জস্যপূর্ণ সম্পদের জন্য, যেমন এক মাস বা বছরের গড় মান, এই টাইমস্ট্যাম্পটি সেই ব্যবধানের (একচেটিয়া) শেষের সাথে মিলে যায়। যুগ (1970-01-01) থেকে সেকেন্ড এবং (ঐচ্ছিকভাবে) ন্যানোসেকেন্ড হিসাবে নির্দিষ্ট করা হয়েছে। UTC টাইম জোনে বলে ধরে নেওয়া হচ্ছে।

বৈশিষ্ট্য

dictionary

কী-মান জোড়ার একটি নির্বিচারে সমতল অভিধান। কীগুলি অবশ্যই স্ট্রিং হতে হবে এবং মানগুলি সংখ্যা বা স্ট্রিং হতে পারে৷ ব্যবহারকারীর আপলোড করা সম্পদের জন্য তালিকা মান এখনও সমর্থিত নয়।

columnDataTypeOverrides

dictionary

যদি স্বয়ংক্রিয় প্রকার সনাক্তকরণ সঠিকভাবে কাজ না করে, তাহলে এই ক্ষেত্রটিকে কী হিসাবে কলামের নাম এবং মান হিসাবে নিম্নলিখিত ধ্রুবকগুলির মধ্যে একটি ব্যবহার করুন: COLUMN_DATA_TYPE_STRING, COLUMN_DATA_TYPE_NUMERIC, COLUMN_DATA_TYPE_LONG৷

সীমাবদ্ধতা

JSON ম্যানিফেস্ট আকার

JSON ম্যানিফেস্ট ফাইলের আকার সীমা হল 10 MB৷ আপনার কাছে আপলোড করার জন্য অনেক ফাইল থাকলে, ডেটাসেট বর্ণনা করার জন্য প্রয়োজনীয় অক্ষরের সংখ্যা কমানোর উপায় বিবেচনা করুন। উদাহরণস্বরূপ, uris তালিকায় প্রতিটি URI-এর জন্য GCP বাকেট পাথ প্রদানের প্রয়োজনীয়তা দূর করতে uriPrefix ক্ষেত্রটি ব্যবহার করুন। যদি আরও আকার কমানোর প্রয়োজন হয়, ফাইলের নাম ছোট করার চেষ্টা করুন।