কীভাবে ভিএসআইএস 3 ব্যবহার করে এসডি বালতি থেকে জিডিএল দিয়ে ফাইলগুলি দক্ষতার সাথে অ্যাক্সেস করবেন?


19

সুতরাং, জিডিএল সম্প্রতি একটি নতুন বৈশিষ্ট্য যুক্ত করেছে যা এস 3 বালতি ফাইলগুলি এলোমেলোভাবে পড়ার অনুমতি দেয়। আমি পুরো ফাইলটি ডাউনলোড না করে কোনও চিত্রের একাধিক টাইল থেকে জিডিএল চিত্রগুলি ক্রপ করতে দেখছি। আমি কেবলমাত্র জিডিএল যদিও একটি এস 3 বালতিটি কনফিগার করতে এবং অ্যাক্সেস করতে পারি তার সম্পর্কে খুব স্পর্শযুক্ত নথিপত্র দেখেছি এবং কীভাবে শুরু করব তা নিয়ে একটু বিভ্রান্ত হয়ে পড়েছি? কেউ কি এই লক্ষ্যটি সম্পাদন করতে জিডিএল-এর জন্য ভার্চুয়াল ফাইল সিস্টেম সেট করার বিষয়ে একটি অতি সংক্ষিপ্ত উদাহরণ / টিউটোরিয়াল দেওয়ার পক্ষে যথেষ্ট দয়াবান হবে? আপনার সমাধানটি পাইথনের মাধ্যমে স্ক্রিপ্ট করার অনুমতি দিলে বোনাস পিটিএস!

স্পষ্ট করার জন্য: আমরা ইতিমধ্যে পাইথনে এটি সম্পন্ন করেছি। পাইথনের সমস্যাটি হ'ল এটির সাথে এটি পরিচালনা করতে আপনাকে পুরো চিত্রটি ডাউনলোড করতে হবে। জিডিএল-এর নতুনতম সংস্করণে এস 3 বালতি মাউন্ট করার জন্য সমর্থন রয়েছে যাতে আমাদের যদি ফসলের একটি ছোট অংশ বলতে প্রয়োজন হয় তবে আমরা সেই ছোট অংশটিতে সরাসরি পরিচালনা করতে পারি। হায়রে, বৈশিষ্ট্যটি কেবল জানুয়ারীতে স্থিতিশীল শাখায় প্রকাশিত হওয়ায় আমি এটিতে কোনও নথিপত্র পাইনি। সুতরাং সমাধানটি জিডিএল-এর সর্বশেষতম রিলিজে ভিএসআই 3 সিস্টেমটি ব্যবহার করা উচিত বা অন্যথায় এটি পরিচালনা করার জন্য ব্যবহারকারীকে পুরো চিত্রটি ইবিএস ড্রাইভে ডাউনলোড করার প্রয়োজন থেকে বাঁচানোর জন্য স্মার্টলি সিস্টেমটি ব্যবহার করে।

এর অর্থ এটি হল যে জিডিএল এর নতুন সংস্করণগুলিতে পাওয়া ভিএসআই এপিআইগুলি ব্যবহার করে যাতে পুরো ফাইলটি মেমরি বা ডিস্কে পড়ার প্রয়োজন না হয় সেই উত্তরে অনুগ্রহ করা হবে। এছাড়াও, আমরা যে বালতিগুলি ব্যবহার করি তা সর্বদা সর্বজনীন হয় না তাই পোস্ট করা অনেকগুলি HTTP কৌশল আমাদের অনেক পরিস্থিতিতে কাজ করবে না won't


আগ্রহের কারণ হতে পারে: github.com/mapbox/rasterio/issues/511 এবং gist.github.com/perrygeo/9239b9ab64731cacbb35
চাদ কুপার

এস 3 / বালতিগুলির সাথে কোনও অভিজ্ঞতা নেই তবে এই পোস্টটি আগ্রহী হতে পারে: লিঙ্ক । একইভাবে ব্যবহৃত (?)
সেমি 1

@ সেমি 1 আপনাকে ধন্যবাদ, এই ডকুমেন্টেশনটি এখনও অবধি সেরা সহায়তা হয়েছে।
স্কাইলিয়ন

এটা শুনে আনন্দিত. আমি মনে করি এটি আপনার জিজ্ঞাসা করা একটি দুর্দান্ত প্রশ্ন এবং আমি নিবিড়ভাবে দেখছি। আশা করি আপনি / অন্যরা এখানে একটি সুন্দর সমাধান সমাধান এবং পোস্ট করেছেন!
সেমি 1

উত্তর:


18

আমি খুঁজে পেয়েছি যখন জিডিএল-তে কিছু বিশেষভাবে ডকুমেন্টেড না হয়, তবে তাদের পরীক্ষাগুলি অনুসন্ধান করা কার্যকর হতে পারে।

/vsis3পরীক্ষা মডিউল যদিও এটি আসলে পড়া অংশ কোনো উদাহরণ নেই, কিছু সহজ উদাহরণ রয়েছে।

আমি পরীক্ষার মডিউলটির উপর ভিত্তি করে নীচের কোডটি একসাথে আবদ্ধ করেছি, তবে আমি জিডিএল / ভার্সিস 3 এর শংসাপত্রের প্রয়োজন হওয়ায় আমি পরীক্ষা করতে অক্ষম এবং আমার কাছে কোনও এডাব্লুএস অ্যাকাউন্ট নেই।

"""This should read from the Sentinal-2 public dataset
   More info - http://sentinel-pds.s3-website.eu-central-1.amazonaws.com"""

from osgeo import gdal
import numpy as np

# These only need to be set if they're not already in the environment,
# ~/.aws/config, or you're running on an EC2 instance with an IAM role.
gdal.SetConfigOption('AWS_REGION', 'eu-central-1')
gdal.SetConfigOption('AWS_SECRET_ACCESS_KEY', 'MY_AWS_SECRET_ACCESS_KEY')
gdal.SetConfigOption('AWS_ACCESS_KEY_ID', 'MY_AWS_ACCESS_KEY_ID')
gdal.SetConfigOption('AWS_SESSION_TOKEN', 'MY_AWS_SESSION_TOKEN')

# 'sentinel-pds' is the S3 bucket name
path = '/vsis3/sentinel-pds/tiles/10/S/DG/2015/12/7/0/B01.jp2'
ds = gdal.Open(path)

band = ds.GetRasterBand(1)

xoff, yoff, xcount, ycount = (0, 0, 10, 10)
np_array = band.ReadAsArray(xoff, yoff, xcount, ycount)

2
মোটা মোহন মতো কাজ করে! কমান্ড লাইন বিটিডব্লিউর একটি ক্রপিং উদাহরণ এখানে রয়েছে: gdal_translate --config AWS_REGION "some_region" --config AWS_ACCESS_KEY_ID "KEY_ID" --config AWS_SECRET_ACCESS_KEY "ACCESS_KEY" 1000Sc3 / 1000/1000 / এসসিএসকিউ 10,000 from_s3.tif
Skylion

আপনি যে মূল্যবোধগুলি লুকিয়ে রেখেছেন সেগুলি কীসের মতো দেখায়? আমি মনে করি কেইওয়াই_আইডি একটি ব্যবহারকারীর নামের মতো একটি ছোট পাঠ্য স্ট্রিং। ACCESS_KEY কি? দেখে মনে হচ্ছে এটি একটি পেম ফাইলে রয়েছে তবে এটি প্রায় 1000 টি অক্ষর, সুতরাং এটি অন্য কিছু হতে হবে।
সোলেক্স

এগুলি কেবল ব্যবহারকারীর নাম এবং পাসওয়ার্ডের মতো সংখ্যা এবং অক্ষরের সাথে স্ট্রিং হবে। আপনি এই স্ট্রিংগুলি
এডাব্লুএস

10

যেহেতু /vsis3/জিডিএল এ কার্যকর করা হয়েছে আপনি rasterioএস 3 ডেটাসেটের উইন্ডোজ পড়তেও ব্যবহার করতে পারেন। ফলে প্রয়োজন হয় আপনার পরিচয়পত্র জন্য সেট আপ করা boto বা rasterios ব্যবহার অধিবেশন হ্যান্ডলার আওস

import rasterio

with rasterio.open('s3://landsat-pds/L8/139/045/LC81390452014295LGN00/LC81390452014295LGN00_B1.TIF') as ds:
    window = ds.read(window=((0, 100), (0, 100)))  # read a 100 by 100 window in the upper left corner.

রাস্টারও উইন্ডোড - আরডাব্লু এবং ভিএসআই ডক্সও দেখুন ।


1

ডাব্লুএমএস তথ্য সংরক্ষণ করতে একটি এক্সএমএল ফাইল ব্যবহার করার চেষ্টা করুন, আরও বিশদ জিডিএল ডাব্লুএমএস ডকুমেন্টেশনে রয়েছে

ম্যাপজেনের এলিভেশন এপিআই থেকে ডেটা পুনরুদ্ধার করার জন্য এখানে ডাব্লুএমএস এক্সএমএল ফাইলের উদাহরণ রয়েছে:

<GDAL_WMS>
  <Service name="TMS">
    <ServerUrl>https://s3.amazonaws.com/elevation-tiles-prod/geotiff/${z}/${x}/${y}.tif</ServerUrl>
  </Service>
  <DataWindow>
    <UpperLeftX>-20037508.34</UpperLeftX>
    <UpperLeftY>20037508.34</UpperLeftY>
    <LowerRightX>20037508.34</LowerRightX>
    <LowerRightY>-20037508.34</LowerRightY>
    <TileLevel>14</TileLevel>
    <TileCountX>1</TileCountX>
    <TileCountY>1</TileCountY>
    <YOrigin>top</YOrigin>
  </DataWindow>
  <Projection>EPSG:3857</Projection>
  <BlockSizeX>512</BlockSizeX>
  <BlockSizeY>512</BlockSizeY>
  <BandsCount>1</BandsCount>
  <DataType>Int16</DataType>
  <ZeroBlockHttpCodes>403,404</ZeroBlockHttpCodes>
  <DataValues>
    <NoData>-32768</NoData>
  </DataValues>
  <Cache/>
</GDAL_WMS>

তারপরে আপনি এমন একটি বাউন্ডিং বাক্সে ক্লিপ করতে পারেন:

gdalwarp -of "GTiff" -te -13648825.0817 4552130.7825 -13627575.5878 4565507.2624 mapzen_wms.xml test.tif

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

আমি নিশ্চিত না কারণ এটি হ'ল ম্যাপজেন এপিআই এর শেষ পয়েন্টটি টাইল্ড ডাব্লুএমএস তবে উপরের কোডটি আমার জন্য এক মিনিটের মধ্যে চলেছে, আপনি কি নিশ্চিত যে ভিএসআই এপিআই দ্রুততর হবে?
ক্লেনেরিক

আমরা খুব বড় রাস্টারদের সাথে কাজ করছি এবং বড় বড় রেস্টার ডেটাসেটগুলি অবশ্যই আইও। এছাড়াও আমরা যে বালতিগুলি ব্যবহার করি তা ব্যক্তিগত এবং এস 3 এইচপি এপিআই ব্যবহার করে শংসাপত্রের প্রয়োজন যা আমাদের ক্ষেত্রে কার্যকর হবে না। এটি এমন নয় যে আমাদের প্রতিটি চিত্র পড়তে হবে, এটি আমরা জানি যে আমাদের একটি খুব বড় চিত্রের একটি ছোট অংশ ছিঁড়ে ফেলতে হবে।
স্কাইলিয়ন

0

আমি এস 3 বালতি সম্পর্কে তেমন কিছুই জানি না তবে মনে হয় এটি http REST পরিষেবাদি ব্যবহার করে প্রমাণীকরণ সহ একটি ক্লাউড স্টোরেজ ড্রাইভ। অর্থাত্ একটি সাধারণ মাউন্টিং পয়েন্ট হিসাবে ব্যবহৃত হতে পারে, সম্পর্কিত ইউরি সহ with

আপনি যদি চিত্র / রাস্টার অংশের ক্রপিংয়ের সন্ধান করছেন তবে ফাইলটি একটি অনুমোদিত বিন্যাসে থাকা দরকার।

টিএমএস স্পেসিফিকেশনটি একবার দেখুন: http://wiki.osgeo.org/wiki/Tile_Map_Service_Specifications

(সম্ভবত নেটসিডিএফও কৌশলটি করতে পারে))

জিডিএল টিএমএস ফর্ম্যাটগুলি পড়ে এবং লেখেন। মূলত এটি কয়েকটি মেটাডেটা ফাইল সহ কেবল একটি স্ট্যান্ডার্ড ডিরেক্টরি কাঠামো।

এখন, কৌশলটি হ'ল টিএমএস ড্রাইভারের মাধ্যমে ভৌগলিক পরিধি পরামিতিগুলির সাথে উড়তে url তৈরি করা।

ওপেনলায়ার্স টিএমএস ড্রাইভার ডকুমেন্টেশন দেখুন: http://dev.openlayers.org/docs/files/OpenLayers/Layer/TMS-js.html এটি কীভাবে অবস্থান, জুম এবং এক্সটেন্টের উপর ভিত্তি করে অনুরোধগুলি পরিচালনা করে তা দেখতে।

অবশ্যই পাইথনে এটি করা যেতে পারে। আপনার প্রথমে যথাযথ "মাউন্টিং পয়েন্ট" (বা পথ) ইউআরআই তৈরি করতে হবে ভিসারল (ডকুমেন্টেশন অনুসারে) দিয়ে এবং তারপরে, একবার টিএমএস স্পেসিফিকেশন অনুসারে নির্দিষ্ট টাইলটিতে যান (যা পথের একটি এক্সটেনশন) ।


পাইথনের S3 ইন্টারফেসটি ব্যবহার করা থেকে এটি আলাদা করার জন্য আমি কিছু স্পষ্টতা যুক্ত করেছি।
স্কাইলিয়ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.