gdal2tiles দিয়ে সুপার-ওভারলে তৈরি করা হচ্ছে

মানো মার্কস, গুগল জিও এপিআই টিম
সেপ্টেম্বর 2009

উদ্দেশ্য

এই টিউটোরিয়ালটি আপনাকে একটি সুপার-ওভারলে তৈরির মূল বিষয়গুলির মধ্যে নিয়ে যায়, গ্রাউন্ড ওভারলেগুলির একটি সেট যা অঞ্চল-ভিত্তিক নেটওয়ার্কলিঙ্কগুলি ব্যবহার করে, ওপেন সোর্স জিওস্পেশিয়াল ডেটা অ্যাবস্ট্রাকশন লাইব্রেরি ইউটিলিটিগুলি ব্যবহার করে৷

ভূমিকা

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

  • একটি জিওব্রাউজারে আপনার নিজের স্যাটেলাইট বা বায়বীয় চিত্র স্থাপন করা
  • বিদ্যমান চিত্রের উপরে ঐতিহাসিক মানচিত্র স্থাপন করা, যেমন Google Earth এ Rumsey Maps স্তর
  • রাস্টার আকারে GIS ডেটা আমদানি করা হচ্ছে
  • জিওব্রাউজারে LIDAR বা ইনফ্রারেড চিত্র স্থাপন করা

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

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

Adobe's PhotoShop বা GIMP-এর মতো গ্রাফিক্স এডিটিং অ্যাপ্লিকেশন দিয়ে ম্যানুয়ালি এটি করা সম্ভব, তবে এটি জটিল, ক্লান্তিকর এবং ত্রুটি-প্রবণ হতে পারে। এছাড়াও অনেকগুলি ভাল অ্যাপ্লিকেশন উপলব্ধ রয়েছে, প্রাথমিকভাবে উইন্ডোজের জন্য, যেমন SuperOverlay , Arc2Earth , এবং MapCruncher CrunchUp2KML এর সাথে মিলিত।

আপনি যদি প্রক্রিয়াটিকে স্বয়ংক্রিয় করতে চান, বা আপনার নিজের অ্যাপ্লিকেশনে কার্যকারিতা যোগ করতে চান, GDAL , আপনাকে রাস্টার এবং ভেক্টর ডেটা নিয়ে কাজ করার জন্য প্রচুর সরঞ্জাম সরবরাহ করে। এই নিবন্ধটি কমান্ড লাইন বিকল্পগুলি কভার করে। যাইহোক, লাইব্রেরিগুলি সহজেই আপনার নিজস্ব অ্যাপ্লিকেশনগুলিতে অন্তর্ভুক্ত করা যেতে পারে। এই টিউটোরিয়ালের জন্য, আপনি gdalinfo , gdal_translate , gdalwarp , এবং gdal2tiles ইউটিলিটি ব্যবহার করতে যাচ্ছেন। চূড়ান্ত আউটপুট একটি সুপার ওভারলে হয়.

কমান্ড লাইন ধাপ

কমান্ড লাইনে GDAL ব্যবহার করার জন্য ছয়টি ধাপ রয়েছে।

  1. GDAL ডাউনলোড এবং ইনস্টল করুন
  2. একটি ইমেজ ডাউনলোড করুন
  3. ছবি সম্পর্কে তথ্য নির্ধারণ করতে gdalinfo ব্যবহার করুন
  4. gdal_translate করতে gdal_translate ব্যবহার করুন
  5. চিত্রের অভিক্ষেপ পরিবর্তন করতে gdalwarp ব্যবহার করুন
  6. ইমেজটিকে টাইলসের মধ্যে ভাঙতে এবং সংশ্লিষ্ট KML কোড তৈরি করতে gdal2tiles ব্যবহার করুন

ধাপ 1: GDAL ডাউনলোড এবং ইনস্টল করুন

এখানে বিস্তারিত হিসাবে GDAL ডাউনলোড এবং ইনস্টল করে শুরু করুন।

ধাপ 2: একটি ছবি ডাউনলোড করুন

আপনি যে কোন ছবি ব্যবহার করতে পারেন। ওয়েবে ভৌগলিক তথ্যের বেশ কয়েকটি উৎস রয়েছে। আপনি সেগুলির যেকোনও ব্যবহার করতে পারেন, তবে আপনার ইমেজের সীমানা-চিত্রের প্রতিটি কোণার অক্ষাংশ এবং দ্রাঘিমাংশ জানা উচিত। এই টিউটোরিয়ালটি একটি NASA ব্লু মার্বেল চিত্র ব্যবহার করে, যা NASA এর ওয়েবসাইট থেকে ডাউনলোডের জন্য উপলব্ধ। এই ছবিগুলি 2004 সালে তোলা হয়েছিল এবং মহাকাশ থেকে পৃথিবীর একটি সুন্দর চিত্র উপস্থাপন করে। ডান নেভিগেশন বারের নীচের ডানদিকে ফাইলগুলির মধ্যে একটি বেছে নিন।

আপনি যদি নিজের ছবি ব্যবহার করেন এবং জানেন যে এটি ইতিমধ্যেই জিওরেক্টিফায়েড, তাহলে আপনি ধাপ 5 এ চলে যেতে পারেন। অন্যথায়, ধাপ 3 দিয়ে এগিয়ে যান।

ধাপ 3: ছবিটি সম্পর্কে তথ্য পান

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

এই তথ্য ক্যাপচার করার জন্য GDAL একটি সহজ উপযোগিতা, gdalinfo প্রদান করে। কমান্ড লাইনে, শুধু gdalinfo filename টাইপ করুন, ফাইলের পাথের সাথে filename নাম প্রতিস্থাপন করুন। আপনি এই মত দেখায় আউটপুট পাওয়া উচিত:

Driver: JPEG/JPEG JFIF
Files: world_200401.jpg
Size is 21600, 10800
Coordinate System is `'
Image Structure Metadata:
  SOURCE_COLOR_SPACE=YCbCr
  INTERLEAVE=PIXEL
  COMPRESSION=JPEG
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,10800.0)
Upper Right (21600.0,    0.0)
Lower Right (21600.0,10800.0)
Center      (10800.0, 5400.0)
Band 1 Block=21600x1 Type=Byte, ColorInterp=Red
  Image Structure Metadata:
    COMPRESSION=JPEG
Band 2 Block=21600x1 Type=Byte, ColorInterp=Green
  Image Structure Metadata:
    COMPRESSION=JPEG
Band 3 Block=21600x1 Type=Byte, ColorInterp=Blue
  Image Structure Metadata:
    COMPRESSION=JPEG

এই টিউটোরিয়ালের জন্য গুরুত্বপূর্ণ তথ্য হল উপরের বাম, নীচের বাম, উপরের ডান, নীচের ডান লাইনগুলি। এগুলি আপনাকে প্রতিটি কোণার পিক্সেল এবং লাইনের মান বলে। উপরের বাম, এই ক্ষেত্রে, 0,0 এ এবং নীচের ডানদিকে 21600,10800।

ধাপ 4: চিত্রটি জিওরিফারেন্স করুন

এই ক্ষেত্রে জিওরেফারেন্সিং মানে ছবির প্রতিটি কোণে ভৌগলিক অবস্থান বর্ণনা করে মেটাডেটা তৈরি করা। ধাপ 3 এবং gdal_translate এ প্রাপ্ত তথ্য ব্যবহার করে, আপনি ফাইলটিতে জিওরিফারেন্স তথ্য বরাদ্দ করতে পারেন। এটি world_200401.jpg ইমেজ, bluemarble1.vrt থেকে একটি VRT ফাইল তৈরি করে। VRT ফাইলগুলি হল XML ফাইল যাতে একটি নির্দিষ্ট রূপান্তর সম্পর্কে তথ্য থাকে, এই ক্ষেত্রে gdal_translate ধাপ। আপনার টাইলসের চূড়ান্ত সেট তৈরি করতে আপনি পরবর্তী ধাপে এটি আবার ব্যবহার করবেন। gdal_translate আপনাকে প্রধান ইমেজ ফাইল ফরম্যাট সহ একাধিক ফাইল আউটপুট প্রকার করতে দেয়। VRT আউটপুট ব্যবহার করে আপনি শেষ ধাপ পর্যন্ত আউটপুট ফাইল তৈরি বন্ধ রাখতে পারবেন। আপনি যদি কমান্ড লাইনটি করছেন তবে এটি দক্ষতা বাড়ায় এবং পৃথক পদক্ষেপের জন্য আপনার অপেক্ষার সময় হ্রাস করে। আপনি যে কমান্ডটি চালাবেন তা এখানে:

gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 21600 0 180 90 -gcp 21600 10800 180 -90 world_200401.jpg bluemarble1.vrt

সেই লাইনে অনেক তথ্য আছে, তাই এখানে তা ভেঙে দেওয়া হল:

  • -of হল আউটপুট ফরম্যাট, এই ক্ষেত্রে VRT।
  • -a_srs ফাইলে একটি স্থানিক রেফারেন্স সিস্টেম বরাদ্দ করে। এটি কোন অ্যাপ্লিকেশন ব্যবহার করে তা বলে যে কোন সমন্বয় সিস্টেম ব্যবহার করা হচ্ছে। এই ক্ষেত্রে, এটি EPSG:4326 ব্যবহার করছে, যা WGS84 এর মতোই, Google Earth দ্বারা ব্যবহৃত সমন্বয় ব্যবস্থা।
  • -gcp , বা গ্রাউন্ড কন্ট্রোল পয়েন্ট, ফাইলের অবস্থানগুলিতে স্থানাঙ্ক বরাদ্দ করে। এই ক্ষেত্রে, আপনার আসলে শুধুমাত্র তিনটি পয়েন্ট প্রয়োজন, যেহেতু ছবিটি একটি আয়তক্ষেত্র এবং তাই চতুর্থ বিন্দুটি সহজেই চিহ্নিত করা যেতে পারে। -gcp এর জন্য, পিক্সেল এবং তারপর লাইন নম্বর এবং তারপর দ্রাঘিমাংশ এবং অক্ষাংশ সেট করে gcp সংজ্ঞায়িত করুন। তাদের প্রতিটি একটি স্থান দ্বারা পৃথক করা হয়.
  • শেষ দুটি প্যারামিটার হল অরিজিন ফাইল এবং টার্গেট ফাইল।

ধাপ 5: চিত্রটি ওয়ার্প করুন

আসল চিত্রটি গোলাকার গ্লোবের জন্য তৈরি করা হয়নি, এটি সমতল শুয়ে থাকার জন্য তৈরি করা হয়েছিল। GIS পদে, এটি প্রজেক্ট করা হয়, যার মানে হল এটি একটি ত্রিমাত্রিক বস্তুর একটি দ্বি-মাত্রিক উপস্থাপনা। প্রজেকশনের জন্য চিত্রটিকে বিকৃত করা প্রয়োজন যাতে এটি প্রদর্শিত হয় যে আপনি পৃথিবীর একটি সমতল চিত্র দেখতে কেমন হবে।

এটিকে সঠিকভাবে দেখতে পাওয়ার জন্য, আপনাকে এটিকে পৃথিবীর সাথে মানানসই করার জন্য চিত্রটিকে বিকৃত করতে হবে। সৌভাগ্যবশত GDAL এর জন্য একটি দুর্দান্ত সরঞ্জাম সরবরাহ করে। শুধু টাইপ gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt । এটি একটি নতুন ফাইল তৈরি করবে, bluemarble2.vrt, যা ওয়ারিং পদ্ধতি সম্পর্কে মেটাডেটা প্রদান করে।

ধাপ 6: টাইলস তৈরি করুন

আপনি প্রায় সম্পন্ন করেছেন, কিন্তু এই অংশটি সবচেয়ে বেশি সময় নেবে। টাইলস তৈরি করতে, টাইপ করুন gdal2tiles.py -p geodetic -k bluemarble2.vrt-k একটি KML আউটপুট জোর করে। এটি একটি সুপার-ওভারলে সহ একটি ডিরেক্টরি কাঠামো তৈরি করবে। যেহেতু প্রতিটি ইমেজ ফাইল আলাদাভাবে তৈরি করতে হবে, এটি চালানোর জন্য কিছু সময় নেয়। বড় ছবিগুলির জন্য, আপনি এখন যেতে পারেন, এক কাপ কফি পান, ঘুমাতে পারেন, হয়তো হালকা খাবার পান৷ আপনার হয়ে গেলে, doc.kml খুলুন এবং ফলাফলগুলি পর্যবেক্ষণ করুন!

উপসংহার

এই টিউটোরিয়ালটি GDAL কি করতে পারে তার উপরিভাগ স্ক্র্যাচ করে, কিন্তু এটি টাইলস তৈরির জন্য একটি সুবিধাজনক প্রক্রিয়া প্রদান করে। মূল GDAL লাইব্রেরিগুলি C++ এ লেখা, কিন্তু তারা পার্ল, পাইথন, VB6, R, রুবি, জাভা এবং C#/.NET-এর জন্য বাইন্ডিং প্রদান করে, যার অর্থ আপনি সহজেই আপনার নিজের অ্যাপ্লিকেশনগুলিতে GDAL অন্তর্ভুক্ত করতে পারেন। এছাড়াও, gdal2tiles সহ অনেকগুলি ইউটিলিটি পাইথনে লেখা আছে, যার ফলে সেগুলিকে পাইথন অ্যাপ্লিকেশনগুলিতে অন্তর্ভুক্ত করা সহজ হয়। gdal2tilesGoogle Maps API এবং OpenLayers পৃষ্ঠাগুলি তৈরি করার ক্ষমতাও রয়েছে।