KML টিউটোরিয়াল

KML হল একটি ফাইল ফরম্যাট যা Google Earth এর মতো আর্থ ব্রাউজারে ভৌগলিক ডেটা প্রদর্শন করতে ব্যবহৃত হয়। KML নেস্টেড উপাদান এবং বৈশিষ্ট্য সহ একটি ট্যাগ-ভিত্তিক কাঠামো ব্যবহার করে এবং এটি XML স্ট্যান্ডার্ডের উপর ভিত্তি করে। সমস্ত ট্যাগ কেস-সংবেদনশীল এবং KML রেফারেন্সে যেভাবে তালিকাভুক্ত করা হয়েছে ঠিক সেভাবেই দেখতে হবে। রেফারেন্স নির্দেশ করে কোন ট্যাগ ঐচ্ছিক। একটি প্রদত্ত উপাদানের মধ্যে, ট্যাগগুলি অবশ্যই রেফারেন্সে দেখানো ক্রমে উপস্থিত হবে।

আপনি যদি KML-এ নতুন হয়ে থাকেন, তাহলে একটি KML ফাইলের মৌলিক কাঠামো এবং সবচেয়ে বেশি ব্যবহৃত ট্যাগগুলি সম্পর্কে শেখা শুরু করতে এই নথিটি এবং তার সাথে থাকা নমুনা ফাইলগুলি ( SamplesInEarth ) অন্বেষণ করুন৷ প্রথম বিভাগে এমন বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে যা Google আর্থ ইউজার ইন্টারফেস দিয়ে তৈরি করা যেতে পারে। এই বৈশিষ্ট্যগুলির মধ্যে স্থানচিহ্ন, বর্ণনা, গ্রাউন্ড ওভারলে, পাথ এবং বহুভুজ অন্তর্ভুক্ত। দ্বিতীয় বিভাগে এমন বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে যেগুলির জন্য একটি পাঠ্য সম্পাদকের সাথে KML লেখার প্রয়োজন৷ যখন একটি টেক্সট ফাইল একটি .kml বা .kmz এক্সটেনশনের সাথে সংরক্ষিত হয়, তখন আর্থ ব্রাউজারগুলি এটি কীভাবে প্রদর্শন করতে হয় তা জানে৷

টিপ: Google Earth-এ একটি বৈশিষ্ট্যের জন্য KML "কোড" দেখতে, আপনি Google Earth-এর 3D ভিউয়ারে বৈশিষ্ট্যটিতে ডান-ক্লিক করতে পারেন এবং অনুলিপি নির্বাচন করতে পারেন। তারপর ক্লিপবোর্ডের বিষয়বস্তু যেকোনো টেক্সট এডিটরে পেস্ট করুন। Google Earth-এ প্রদর্শিত ভিজ্যুয়াল বৈশিষ্ট্যটি এর KML পাঠ্য সমতুল্য রূপান্তরিত হয়। এই বৈশিষ্ট্য সঙ্গে পরীক্ষা করতে ভুলবেন না.

এখানে বর্ণিত সমস্ত উদাহরণ KML নমুনা ফাইলে রয়েছে। Google Earth-এ উদাহরণগুলি দেখতে সেই ফাইলটি ডাউনলোড করে শুরু করুন।

আরও তথ্যের জন্য

KML 2.2 রেফারেন্স KML ফাইল ফর্ম্যাট সম্পর্কে বিশদ প্রদান করে। আপনি যদি XML এর সাথে পরিচিত হন তবে আপনি KML 2.2 স্কিমাতেও আগ্রহী হবেন।

KML-এর কিছু মূল বৈশিষ্ট্য কীভাবে ব্যবহার করবেন তা নিয়ে আলোচনার জন্য, বিকাশকারীর নির্দেশিকা দেখুন।

সুচিপত্র

মৌলিক KML নথি

সবচেয়ে সহজ ধরনের KML ডকুমেন্ট হল যেগুলি সরাসরি Google Earth-এ রচিত হতে পারে—অর্থাৎ, আপনাকে টেক্সট এডিটরে কোনো KML সম্পাদনা বা তৈরি করতে হবে না। প্লেসমার্ক, গ্রাউন্ড ওভারলে, পাথ এবং বহুভুজ সবই সরাসরি Google Earth-এ রচিত হতে পারে।

স্থানচিহ্ন

প্লেসমার্ক হল গুগল আর্থের সর্বাধিক ব্যবহৃত বৈশিষ্ট্যগুলির মধ্যে একটি। এটি আইকন হিসাবে একটি হলুদ পুশপিন ব্যবহার করে পৃথিবীর পৃষ্ঠে একটি অবস্থান চিহ্নিত করে। সহজতম স্থান-চিহ্নে শুধুমাত্র একটি <বিন্দু> উপাদান থাকে, যা স্থানচিহ্নের অবস্থান নির্দিষ্ট করে। আপনি প্লেসমার্কের জন্য একটি নাম এবং একটি কাস্টম আইকন নির্দিষ্ট করতে পারেন এবং আপনি এতে অন্যান্য জ্যামিতি উপাদান যোগ করতে পারেন।

Google Earth-এ KML স্যাম্পল ফাইল খুলুন এবং প্লেসমার্ক সাবফোল্ডার প্রসারিত করুন। এই ফোল্ডারে তিনটি ভিন্ন ধরনের স্থানচিহ্ন রয়েছে: সরল , ভাসমান এবং বহির্ভূত । সাধারণ প্লেসমার্কের জন্য KML কোডটি এইরকম দেখাচ্ছে:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>Simple placemark</name>
<description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
</Point>
</Placemark> </kml>

এই ফাইলের গঠন নিম্নরূপ ভেঙ্গে যায়:

  • একটি XML হেডার। এটি প্রতিটি KML ফাইলের লাইন 1। এই লাইনের আগে কোনো স্পেস বা অন্য অক্ষর দেখা যাবে না।
  • একটি KML নামস্থান ঘোষণা। এটি প্রতিটি KML 2.2 ফাইলের লাইন 2।
  • একটি স্থানচিহ্ন বস্তু যা নিম্নলিখিত উপাদানগুলি ধারণ করে:
    • একটি নাম যা প্লেসমার্কের লেবেল হিসাবে ব্যবহৃত হয়
    • প্লেসমার্কের সাথে সংযুক্ত "বেলুন"-এ প্রদর্শিত একটি বিবরণ
    • একটি বিন্দু যা পৃথিবীর পৃষ্ঠে স্থানচিহ্নের অবস্থান নির্দিষ্ট করে ( দ্রাঘিমাংশ, অক্ষাংশ, এবং ঐচ্ছিক উচ্চতা )

আপনি যদি ভাবছেন প্লেসমার্কটি কোথায়, এটি গুগলের বিল্ডিং 41-এর উপরে, যেখানে আমরা গুগল আর্থ তৈরি করেছি!

ব্যবহারকারীরা সাধারণত Google আর্থ-এ "প্লেসমার্ক" হিসাবে যা মনে করেন তা আসলে KML-এ একটি <পয়েন্ট> শিশু সহ একটি <প্লেসমার্ক> উপাদান। একটি পয়েন্ট প্লেসমার্ক হল Google Earth এর 3D ভিউয়ারে একটি আইকন এবং লেবেল আঁকার একমাত্র উপায়৷ ডিফল্টরূপে, আইকন হল পরিচিত হলুদ পুশপিন। KML-এ, একটি <Placemark> এক বা একাধিক জ্যামিতি উপাদান থাকতে পারে, যেমন একটি লাইনস্ট্রিং, বহুভুজ বা মডেল। কিন্তু শুধুমাত্র একটি <Placemark> একটি পয়েন্ট সহ একটি আইকন এবং লেবেল থাকতে পারে। পয়েন্ট আইকন স্থাপন করতে ব্যবহার করা হয়, কিন্তু বিন্দু নিজেই কোন গ্রাফিক্যাল উপস্থাপনা নেই.

প্লেসমার্কে বর্ণনামূলক HTML

KML নমুনা ফাইলে আপনি প্লেসমার্ক টেক্সট দিয়ে যা করতে পারেন তার প্রায় সব কিছুর উদাহরণ রয়েছে। আপনি লিঙ্ক, ফন্টের আকার, শৈলী এবং রং যোগ করতে পারেন এবং পাঠ্য সারিবদ্ধকরণ এবং টেবিল নির্দিষ্ট করতে পারেন। আপনি যদি সম্পূর্ণ তালিকা দেখতে চান, একটি পাঠ্য সম্পাদকে "বর্ণনামূলক HTML" প্লেসমার্ক উদাহরণ (স্টাইল এবং মার্কআপ ফোল্ডারে) অনুলিপি করুন এবং আটকান৷

Google Earth-এ অটো-মার্কআপ (রিলিজ 4.0 এবং পরবর্তী)

Google Earth 4.0-এর একটি স্বয়ংক্রিয়-মার্কআপ বৈশিষ্ট্য রয়েছে যা স্বয়ংক্রিয়ভাবে www.google.com- এর মতো পাঠ্যকে সক্রিয় হাইপারলিঙ্কগুলিতে রূপান্তর করে যা ব্যবহারকারী ক্লিক করতে পারে। <description> ট্যাগের ভিতরের টেক্সট, <Snippet> ট্যাগ এবং <BalloonStyle>-এর <text> উপাদান সবই স্বয়ংক্রিয়ভাবে স্ট্যান্ডার্ড HTTP হাইপারলিঙ্কে রূপান্তরিত হয়। আপনাকে <a href= ...> ট্যাগ যোগ করার দরকার নেই।

CDATA উপাদান ব্যবহার করে

আপনি যদি একটি <description> ট্যাগের ভিতরে স্ট্যান্ডার্ড HTML লিখতে চান তবে আপনি এটি একটি CDATA ট্যাগের ভিতরে রাখতে পারেন। আপনি যদি তা না করেন, তাহলে Google আর্থকে ভুলভাবে HTML পার্স করা থেকে বিরত রাখতে কোণ বন্ধনীগুলিকে সত্তা রেফারেন্স হিসাবে লিখতে হবে (উদাহরণস্বরূপ, প্রতীক > &gt; হিসাবে লেখা হয় এবং প্রতীক < কে &lt; হিসাবে লেখা হয়)। এটি XML এর একটি আদর্শ বৈশিষ্ট্য এবং এটি Google Earth এর জন্য অনন্য নয়।

CDATA ট্যাগ এবং CDATA ছাড়া HTML মার্কআপের মধ্যে পার্থক্য বিবেচনা করুন। প্রথমে, এখানে CDATA ট্যাগ সহ <description> আছে:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>CDATA example</name> <description> <![CDATA[ <h1>CDATA Tags are useful!</h1> <p><font color="red">Text is <i>more readable</i> and <b>easier to write</b> when you can avoid using entity references.</font></p> ]]> </description> <Point> <coordinates>102.595626,14.996729</coordinates> </Point> </Placemark> </Document> </kml>

এবং এখানে CDATA ট্যাগ ছাড়াই <description> আছে, যাতে বিশেষ অক্ষর অবশ্যই সত্তার উল্লেখ ব্যবহার করতে হবে:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>Entity references example</name> <description> &lt;h1&gt;Entity references are hard to type!&lt;/h1&gt; &lt;p&gt;&lt;font color="green"&gt;Text is &lt;i&gt;more readable&lt;/i&gt; and &lt;b&gt;easier to write&lt;/b&gt; when you can avoid using entity references.&lt;/font&gt;&lt;/p&gt; </description> <Point> <coordinates>102.594411,14.998518</coordinates> </Point> </Placemark> </Document> </kml>

গ্রাউন্ড ওভারলে

গ্রাউন্ড ওভারলে আপনাকে পৃথিবীর ভূখণ্ডে একটি ছবি "ড্রেপ" করতে সক্ষম করে। <আইকন> উপাদানটিতে ওভারলে চিত্রের সাথে .jpg ফাইলের লিঙ্ক রয়েছে। এখানে কেএমএল নমুনা ফাইলের গ্রাউন্ড ওভারলে উদাহরণ রয়েছে, যা 2001 সালে মাউন্ট এটনা বিস্ফোরণ দেখায়:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Folder>
<name>Ground Overlays</name>
<description>Examples of ground overlays</description>
<GroundOverlay>
<name>Large-scale overlay on terrain</name>
<description>Overlay shows Mount Etna erupting on July 13th, 2001.</description>
<Icon>
<href>https://developers.google.com/kml/documentation/images/etna.jpg</href>
</Icon>
<LatLonBox>
<north>37.91904192681665</north>
<south>37.46543388598137</south>
<east>15.35832653742206</east>
<west>14.60128369746704</west>
<rotation>-0.1556640799496235</rotation>
</LatLonBox>
</GroundOverlay>
</Folder> </kml>

লক্ষ্য করুন যে ফাইলটি প্রথম উদাহরণের মতো একই দুটি লাইন দিয়ে শুরু হয়: XML শিরোনাম এবং KML নেমস্পেস ঘোষণা।

এই উদাহরণটি একটি ফোল্ডার ("গ্রাউন্ড ওভারলেস" শিরোনাম) ব্যবহার করে এটির বিষয়বস্তুগুলিকে গোষ্ঠীবদ্ধ করার এবং লেবেল করার প্রক্রিয়া হিসাবে। আপনি Google আর্থ এ KML নমুনা ফাইল লোড করার সময় স্থান প্যানেলে ফোল্ডারটি কীভাবে উপস্থিত হয় তা লক্ষ্য করুন।

একটি গ্রাউন্ড ওভারলে অবস্থান <LatLonBox> ট্যাগ দ্বারা নিয়ন্ত্রিত হয়। উত্তর ও দক্ষিণ অক্ষাংশ এবং পূর্ব ও পশ্চিম দ্রাঘিমাংশের জন্য আবদ্ধ মান দেওয়া হয়। উপরন্তু, y- অক্ষ গ্রিড উত্তরের সাথে মিলে না এমন চিত্রগুলির জন্য ঘূর্ণন মান দেওয়া হয়। এই উদাহরণ ওভারলে জন্য একটি JPEG ইমেজ ব্যবহার করে. Google Earth এছাড়াও BMP, GIF, TIFF, TGA, এবং PNG ফর্ম্যাট সমর্থন করে।

পথ

Google আর্থ-এ অনেক রকমের পাথ তৈরি করা যেতে পারে এবং আপনার ডেটা দিয়ে খুব সৃজনশীল হওয়া সহজ। KML-এ, একটি <LineString> উপাদান দ্বারা একটি পথ তৈরি করা হয়। পাথ ফোল্ডারে "অ্যাবসোলিউট এক্সট্রুডেড" উদাহরণটি দেখুন এবং আপনি দেখতে পারেন কিভাবে নিম্নলিখিত কোড দ্বারা আকৃতি তৈরি করা হয়েছে:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Document>
<name>Paths</name>
<description>Examples of paths. Note that the tessellate tag is by default
set to 0. If you want to create tessellated lines, they must be authored
(or edited) directly in KML.</description> <Style id="yellowLineGreenPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style> <Placemark>
<name>Absolute Extruded</name>
<description>Transparent green wall with yellow outlines</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>

<altitudeMode>absolute</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357
-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357 </coordinates>
</LineString> </Placemark>
</Document> </kml>

লক্ষ্য করুন কিভাবে এটি সত্যিই মাটির উপরে উচ্চতায় আঁকা একটি রেখা। <টেসেলেট> ট্যাগ লাইনটিকে ছোট ছোট খণ্ডে ভেঙে দেয় এবং <এক্সট্রুড> ট্যাগ লাইনটিকে মাটিতে প্রসারিত করে।

বহুভুজ

আপনি সাধারণ ভবন এবং অন্যান্য আকার তৈরি করতে বহুভুজ ব্যবহার করতে পারেন। উদাহরণের জন্য KML নমুনা ফাইলের বহুভুজ ফোল্ডারটি দেখুন।

পেন্টাগন উদাহরণটি সাধারণ ভিতরের এবং বাইরের শেলগুলি অঙ্কন করে এবং তারপর সেগুলিকে মাটিতে ফেলে দিয়ে তৈরি করা হয়। এখানে কোড আছে:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark>
<name>The Pentagon</name>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-77.05788457660967,38.87253259892824,100
-77.05465973756702,38.87291016281703,100
-77.05315536854791,38.87053267794386,100
-77.05552622493516,38.868757801256,100
-77.05844056290393,38.86996206506943,100
-77.05788457660967,38.87253259892824,100
</coordinates>
</LinearRing>
</outerBoundaryIs>
<innerBoundaryIs>
<LinearRing>
<coordinates>
-77.05668055019126,38.87154239798456,100
-77.05542625960818,38.87167890344077,100
-77.05485125901024,38.87076535397792,100
-77.05577677433152,38.87008686581446,100
-77.05691162017543,38.87054446963351,100
-77.05668055019126,38.87154239798456,100
</coordinates>
</LinearRing>
</innerBoundaryIs>
</Polygon>
</Placemark> </kml>

2 উন্নত KML নথি

এই বিভাগে KML উপাদানগুলির কিছু বর্ণনা করা হয়েছে যেগুলি অবশ্যই একটি পাঠ্য সম্পাদক ব্যবহার করে রচিত হতে হবে, যেমন জ্যামিতির জন্য ভাগ করা শৈলী, স্থানচিহ্নগুলির জন্য হাইলাইট করা আইকন এবং স্ক্রিন ওভারলে৷ বৈশিষ্ট্যগুলি তৈরি এবং সংশোধন করতে Google আর্থ ইন্টারফেস ব্যবহার করার চেয়ে KML "হাতে দ্বারা" লেখা একটু বেশি উন্নত, তবে অল্প পরিমাণ অনুশীলনের সাথে, বেশিরভাগ ব্যবহারকারী এই প্রভাবগুলি যোগ করতে KML ফাইলগুলি সম্পাদনা করতে স্বাচ্ছন্দ্যবোধ করেন৷

জ্যামিতি জন্য শৈলী

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

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

KML নমুনা ফাইলটিতে অনেকগুলি ভাগ করা শৈলী রয়েছে, প্রতিটি ফাইলের শুরুতে একটি আইডি দিয়ে সংজ্ঞায়িত করা হয়েছে। মনে রাখবেন যে আপনার আইডিগুলি বর্ণনামূলক স্ট্রিং হলে এটি সবচেয়ে সহজ যাতে আপনি তাদের প্রভাব কী তা সহজেই বলতে পারেন৷ এখানে একটি শৈলীর ("ট্রান্সব্লুপলি") উদাহরণ রয়েছে যা বহুভুজ মুখগুলির জন্য একটি স্বচ্ছ নীল রঙ এবং বহুভুজের প্রান্তগুলির জন্য 1.5 এর একটি লাইন প্রস্থ (এবং সাদা রঙের ডিফল্ট রঙ) সংজ্ঞায়িত করে৷ এই শৈলীটি Google ক্যাম্পাস উদাহরণে (বহুভুজ ফোল্ডারে) বিল্ডিং 41 দ্বারা ব্যবহৃত হয়:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Style id="transBluePoly">
<LineStyle>
<width>1.5</width>
</LineStyle>
<PolyStyle>
<color>7dff0000</color>
</PolyStyle>
</Style> <Placemark>
<name>Building 41</name>
<styleUrl>#transBluePoly</styleUrl>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates> -122.0857412771483,37.42227033155257,17
-122.0858169768481,37.42231408832346,17
-122.085852582875,37.42230337469744,17
-122.0858799945639,37.42225686138789,17
-122.0858860101409,37.4222311076138,17
-122.0858069157288,37.42220250173855,17
-122.0858379542653,37.42214027058678,17
-122.0856732640519,37.42208690214408,17
-122.0856022926407,37.42214885429042,17
-122.0855902778436,37.422128290487,17
-122.0855841672237,37.42208171967246,17
-122.0854852065741,37.42210455874995,17
-122.0855067264352,37.42214267949824,17
-122.0854430712915,37.42212783846172,17
-122.0850990714904,37.42251282407603,17
-122.0856769818632,37.42281815323651,17
-122.0860162273783,37.42244918858722,17
-122.0857260327004,37.42229239604253,17
-122.0857412771483,37.42227033155257,17 </coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>

মনে রাখবেন যে <styleUrl> উপাদানটি <Placemark> এর একটি শিশু (জ্যামিতিতে এটি প্রভাবিত করে না)।

হাইলাইট করা আইকনগুলির জন্য শৈলী

শৈলী এবং মার্কআপ ফোল্ডারে "হাইলাইট করা আইকন" আপনাকে দেখায় কিভাবে KML এর সাথে একটি রোল-ওভার প্রভাব তৈরি করতে হয়৷ দস্তাবেজটি দুটি শৈলী সংজ্ঞায়িত করে, একটি "সাধারণ প্লেসমার্ক" এর জন্য এবং একটি "হাইলাইট প্লেসমার্ক" এর জন্য (যখন কার্সারটি আইকনের উপর চলে যায় তখন দেখানো হয়)। <StyleMap> উপাদানটিতে দুটি কী/মান জোড়া রয়েছে যা প্রতিটি আইকন শৈলীকে একটি আইকন অবস্থায় ম্যাপ করে। দুটি আইকন অবস্থা আছে: স্বাভাবিক এবং হাইলাইট

এখানে দেখানো মৌলিক পদক্ষেপগুলি নিম্নরূপ:

  1. প্লেসমার্কের স্বাভাবিক আইকনের জন্য একটি <স্টাইল> সংজ্ঞায়িত করুন, এবং এটিতে একটি আইডি বরাদ্দ করুন (এখানে, "সাধারণ প্লেসমার্ক")। <Style>-এ একটি <Icon> রয়েছে যার সাথে একটি <href> ব্যবহার করার জন্য প্রকৃত চিত্র রয়েছে, যেমনটি নীচে দেখানো হয়েছে।
  2. প্লেসমার্কের হাইলাইট আইকনের জন্য একটি <স্টাইল> সংজ্ঞায়িত করুন এবং এটিতে একটি আইডি বরাদ্দ করুন (এখানে, "হাইলাইট প্লেসমার্ক")।
  3. <StyleMap> উপাদান তৈরি করুন এবং এটিতে একটি আইডি বরাদ্দ করুন ("exampleStyleMap")। প্লেসমার্ক এই আইডি উল্লেখ করবে।
  4. <StyleMap> উপাদানে, স্বাভাবিক অবস্থার জন্য "#normalPlacemark" উল্লেখ করুন।
  5. <StyleMap> উপাদানে, হাইলাইট অবস্থার জন্য "#highlightPlacemark" নির্দিষ্ট করুন।
  6. প্লেসমার্কে, একটি <styleUrl> উপাদান যোগ করুন যা "#exampleStyleMap"-কে নির্দেশ করে।
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Highlighted Icon</name>
<description>Place your mouse over the icon to see it display the new icon</description>
<Style id="highlightPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/red-stars.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="normalPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/wht-blank.png</href>
</Icon>
</IconStyle>
</Style>
<StyleMap id="exampleStyleMap">
<Pair>
<key>normal</key>
<styleUrl>#normalPlacemark</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#highlightPlacemark</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>Roll over this icon</name>
<styleUrl>#exampleStyleMap</styleUrl>
<Point>
<coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

স্ক্রীন ওভারলে

স্ক্রীন ওভারলে সরাসরি গুগল আর্থের মধ্যে লেখা যায় না এবং তাই গ্রাউন্ড ওভারলে থেকে তৈরি করা আরও কঠিন। KML নমুনা ফাইলের স্ক্রিন ওভারলে ফোল্ডারে নমুনার একটি ব্যাপক সংগ্রহ অন্তর্ভুক্ত করা হয়েছে।

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

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<ScreenOverlay>
<name>Absolute Positioning: Top left</name>
<Icon>
<href>http://developers.google.com/kml/documentation/images/top_left.jpg</href>
</Icon>
<overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
</ScreenOverlay>
</kml>

<overlayXY> দ্বারা নির্দিষ্ট করা চিত্রের একটি বিন্দুকে <screenXY> দ্বারা নির্দিষ্ট করা স্ক্রিনের একটি বিন্দুতে ম্যাপ করে পজিশনিং নিয়ন্ত্রিত হয়। এই ক্ষেত্রে, চিত্রের উপরের বাম কোণে (0,1) স্ক্রিনের একই বিন্দুর সাথে সামঞ্জস্যপূর্ণ করা হয়েছে।

অন্যান্য স্থির অবস্থানগুলি প্রাপ্ত করা এবং পর্দার আকারের সাথে গতিশীলভাবে আকারের চিত্রগুলি তৈরি করা কীভাবে সম্ভব তা দেখতে ফোল্ডারের অন্যান্য উদাহরণগুলি পরীক্ষা করুন৷ (উল্লেখ্য যে xunits এবং yunits- কে সূক্ষ্ম নিয়ন্ত্রণের জন্য "পিক্সেল" হিসাবেও নির্দিষ্ট করা যেতে পারে।) আরও বিস্তারিত জানার জন্য, KML 2.2 রেফারেন্স দেখুন।

একটি নেটওয়ার্ক লিঙ্কে একটি <Href> (একটি হাইপারটেক্সট রেফারেন্স) সহ একটি <Link> উপাদান থাকে যা একটি ফাইল লোড করে। <href> একটি স্থানীয় ফাইল স্পেসিফিকেশন বা একটি সম্পূর্ণ URL হতে পারে। নাম থাকা সত্ত্বেও, একটি <NetworkLink> অগত্যা নেটওয়ার্ক থেকে ফাইল লোড করে না।

একটি লিঙ্কে <href> নিচের যেকোনো একটির অবস্থান নির্দিষ্ট করে:

  • আইকন শৈলী, গ্রাউন্ড ওভারলে এবং স্ক্রিন ওভারলেতে আইকন দ্বারা ব্যবহৃত একটি চিত্র ফাইল
  • <Model> উপাদানে ব্যবহৃত একটি মডেল ফাইল
  • একটি নেটওয়ার্ক লিঙ্ক দ্বারা লোড করা একটি KML বা KMZ ফাইল৷

নির্দিষ্ট ফাইলটি একটি স্থানীয় ফাইল বা দূরবর্তী সার্ভারের একটি ফাইল হতে পারে। তাদের সবচেয়ে সহজ আকারে, নেটওয়ার্ক লিঙ্কগুলি একই কম্পিউটারে একটি বড় KML ফাইলকে ছোট, আরও পরিচালনাযোগ্য ফাইলগুলিতে বিভক্ত করার একটি কার্যকর উপায়।

এখন পর্যন্ত, আমাদের সমস্ত উদাহরণের জন্য স্থানীয় মেশিন থেকে KML কোড Google Earth-এ বিতরণ করা প্রয়োজন। নেটওয়ার্ক লিঙ্কগুলি আপনাকে একটি দূরবর্তী অবস্থান থেকে সামগ্রী পরিবেশন করার ক্ষমতা দেয় এবং সাধারণত বিপুল সংখ্যক ব্যবহারকারীর কাছে ডেটা বিতরণ করতে ব্যবহৃত হয়। এইভাবে, যদি ডেটা সংশোধন করার প্রয়োজন হয় তবে এটি শুধুমাত্র উত্স অবস্থানে পরিবর্তন করতে হবে এবং সমস্ত ব্যবহারকারী স্বয়ংক্রিয়ভাবে আপডেট হওয়া ডেটা গ্রহণ করবে।

KML এর জন্য CGI স্ক্রিপ্টিং

স্ট্যাটিক ডেটা সম্বলিত ফাইলগুলির দিকে নির্দেশ করার পাশাপাশি, একটি নেটওয়ার্ক লিঙ্কের <href> গতিশীলভাবে তৈরি করা ডেটা নির্দেশ করতে পারে-উদাহরণস্বরূপ, একটি নেটওয়ার্ক সার্ভারে অবস্থিত একটি CGI স্ক্রিপ্ট দ্বারা। পিএইচপি, পাইথন বা পার্লের মতো স্ক্রিপ্টিং ভাষার কিছু জ্ঞানের সাথে, আপনি একটি স্ক্রিপ্ট তৈরি করতে পারেন যা প্রতিটি নেটওয়ার্ক লিঙ্কে KML ডেটার একটি স্ট্রিম (বা ফাইল) সরবরাহ করে।

একটি নেটওয়ার্ক CGI এর মাধ্যমে KML প্রদানের জন্য দুটি জিনিস প্রয়োজনীয়:

যখন ক্লায়েন্ট (গুগল আর্থ) থেকে সার্ভারে একটি কল করা হয়, তখন সার্ভারকে অবশ্যই (1) HTTP 200-এর একটি প্রতিক্রিয়া কোড ফেরত দিতে হবে এবং (2) প্রতিক্রিয়ার বিষয়বস্তুর ধরণটিকে text/plain বা application/vnd.google-earth.kml+xml. এ সেট করতে হবে। application/vnd.google-earth.kml+xml.

প্রতিক্রিয়া অবশ্যই বৈধ KML হতে হবে৷ জটিল অ্যাপ্লিকেশনের জন্য, সঠিক ত্রুটি হ্যান্ডলিং খুবই গুরুত্বপূর্ণ।

টিপ: ত্রুটিগুলি পরিচালনা করার একটি সহজ উপায় হল সার্ভারের ত্রুটিটিকে ফোল্ডার নামের পাঠ্য হিসাবে পার্স করা৷ উদাহরণস্বরূপ, আপনি একটি স্ট্রিং হিসাবে সার্ভার ফেরত <Folder><name>database inaccessible</name></Folder> থাকতে পারে। সংযোগটি বাদ দেওয়ার চেয়ে এটি আরও তথ্যপূর্ণ (এবং আরও ব্যবহারকারী-বান্ধব)।

নিম্নলিখিত উদাহরণগুলি পাইথন ব্যবহার করে, তবে সেগুলি অন্য কোনও স্ক্রিপ্টিং ভাষায় সমানভাবে বৈধ।

একটি র্যান্ডম প্লেসমার্ক তৈরি করা হচ্ছে

নিম্নলিখিত পাইথন স্ক্রিপ্ট অক্ষাংশ এবং দ্রাঘিমাংশের জন্য এলোমেলো পূর্ণসংখ্যার মান তৈরি করে এবং তারপর সেই মানগুলিকে <বিন্দু> এর <কোঅর্ডিনেট> উপাদানে সন্নিবেশিত করে। যখনই নেটওয়ার্ক লিঙ্ক রিফ্রেশ করা হয়, পাইথন স্ক্রিপ্টটি আবার চলে এবং নতুন অক্ষাংশ এবং দ্রাঘিমাংশ মান সহ KML তৈরি করে।

#!/usr/bin/python

import random

latitude = random.randrange(-90, 90)
longitude = random.randrange(-180, 180)
kml = (
   '<?xml version="1.0" encoding="UTF-8"?>\n'
   '<kml xmlns="http://www.opengis.net/kml/2.2">\n'
   '<Placemark>\n'
   '<name>Random Placemark</name>\n'
   '<Point>\n'
   '<coordinates>%d,%d</coordinates>\n'
   '</Point>\n'
   '</Placemark>\n'
   '</kml>'
   ) %(longitude, latitude)
print 'Content-Type: application/vnd.google-earth.kml+xml\n'
print kml

এই পাইথন স্ক্রিপ্টটি লোড করে এমন একটি নেটওয়ার্ক লিঙ্ক ধারণকারী KML ফাইলের একটি উদাহরণ এখানে দেওয়া হল:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 1</description>
<NetworkLink>
<name>Random Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>A simple server-side script that generates a new random
placemark on each call</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/randomPlacemark.py</href>
</Link>
</NetworkLink>
</Folder>
</kml>

ভিউ-ভিত্তিক রিফ্রেশ কোয়েরি

একটি স্ট্যান্ডার্ড নেটওয়ার্ক লিঙ্ক হল একটি ইউনি-ডিরেকশনাল লিঙ্ক: ডেটা শুধুমাত্র সার্ভার থেকে Google Earth এ প্রবাহিত হয়। ভিউ-ভিত্তিক রিফ্রেশ দ্বি-মুখী যোগাযোগ সক্ষম করে। যখন ভিউ-ভিত্তিক রিফ্রেশ সক্রিয় থাকে, তখন Google আর্থ একটি নির্দিষ্ট সময়ে সার্ভারে ভিউ কোঅর্ডিনেট ফিরিয়ে দেয়। এটি প্রতি এন সেকেন্ড, মিনিট বা ঘন্টা হতে পারে বা একবার একটি নির্দিষ্ট সময় অতিবাহিত হওয়ার পর থেকে দৃশ্যটি সরানো বন্ধ হয়ে গেছে। KML 2.2 রেফারেন্সে <viewRefreshMode> দেখুন।

স্থানাঙ্কগুলিকে HTTP GET এর মাধ্যমে সার্ভারে ফেরত দেওয়া হয় যা নিম্নরূপ স্থানাঙ্কগুলিকে যুক্ত করে (এটি ডিফল্ট বাউন্ডিং বক্স তথ্য):

GET /path/to/server/script/query?BBOX=[longitude_west, latitude_south, longitude_east, latitude_north] HTTP/1.1

ব্যবহারকারী সান ফ্রান্সিসকোর দিকে তাকিয়ে থাকার সময় অনুরোধটি করা হলে, স্থানাঙ্কগুলি নিম্নরূপ দেখতে পারে:

GET /path/to/server/script/query?BBOX=-122.497790,37.730385,-122.380087,37.812331 HTTP/1.1

এই বৈশিষ্ট্যটি কিছু খুব সৃজনশীল অ্যাপ্লিকেশনের জন্য ব্যবহার করা যেতে পারে, তবে আপনাকে শুরু করতে, একটি সাধারণ উদাহরণ নীচে উপস্থাপন করা হয়েছে।

আপনার দৃশ্যের অধীনে সরাসরি একটি পয়েন্ট ট্র্যাকিং

নিম্নলিখিত সার্ভার-সাইড পাইথন স্ক্রিপ্টটি Google আর্থ দ্বারা প্রেরিত ফিরতি বার্তাকে পার্স করে এবং স্ক্রিনের কেন্দ্রে একটি স্থানচিহ্ন দিয়ে প্রতিক্রিয়া জানায়। প্রতিবার নেটওয়ার্ক লিংক রিফ্রেশ করা হলে, একটি নতুন প্লেসমার্ক তৈরি হয়।

#!/usr/bin/python

import cgi

url = cgi.FieldStorage()
bbox = url['BBOX'].value
bbox = bbox.split(',')
west = float(bbox[0])
south = float(bbox[1])
east = float(bbox[2])
north = float(bbox[3])

center_lng = ((east - west) / 2) + west
center_lat = ((north - south) / 2) + south

kml = ( 
   '<?xml version="1.0" encoding="UTF-8"?>\n'
   '<kml xmlns="http://www.opengis.net/kml/2.2">\n'
   '<Placemark>\n'
   '<name>View-centered placemark</name>\n'
   '<Point>\n'
   '<coordinates>%.6f,%.6f</coordinates>\n'
   '</Point>\n'
   '</Placemark>\n'
   '</kml>'
   ) %(center_lng, center_lat)

print 'Content-Type: application/vnd.google-earth.kml+xml\n'
print kml

এবং এখানে নেটওয়ার্ক লিঙ্কের জন্য KML যা পাইথন স্ক্রিপ্ট লোড করে:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>0</visibility>
<open>0</open>
<description>Network link example 2</description>
<NetworkLink>
<name>View Centered Placemark</name>
<visibility>0</visibility>
<open>0</open>
<description>The view-based refresh allows the remote server to calculate
the center of your screen and return a placemark.</description>
<refreshVisibility>0</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href>http://yourserver.com/cgi-bin/viewCenteredPlacemark.py</href>

<refreshInterval>2</refreshInterval>
<viewRefreshMode>onStop</viewRefreshMode>
<viewRefreshTime>1</viewRefreshTime>
</Link>
</NetworkLink>
</Folder>
</kml>

এই উদাহরণে চিত্রিত নীতি কিছু খুব জটিল অ্যাপ্লিকেশনের জন্য ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, যদি আপনার কাছে ভৌগলিক তথ্যের একটি ডাটাবেস থাকে, তাহলে আপনি দর্শকের স্থানাঙ্কগুলি বের করতে পারেন, দৃশ্যের জন্য নির্দিষ্ট ডেটার জন্য ডাটাবেসে একটি কল করতে পারেন এবং এটিকে KML হিসাবে Google Earth-এ ফেরত দিতে পারেন৷

3 KML MIME প্রকার

Google আর্থ (বা যেকোনো আর্থ ব্রাউজার) থেকে একটি অনুরোধে সাড়া দেওয়ার সময়, একটি KML সার্ভারকে অবশ্যই একটি নির্দিষ্ট নিয়ম অনুসরণ করতে হবে যাতে Google আর্থ তার প্রতিক্রিয়াগুলিকে সঠিকভাবে ব্যাখ্যা করতে পারে।

সাফল্যের পরে, সার্ভারকে অবশ্যই HTTP 200 এর একটি প্রতিক্রিয়া কোড ফেরত দিতে হবে এবং প্রতিক্রিয়ার বিষয়বস্তু-টাইপকে একটি উপযুক্ত MIME প্রকারে সেট করতে হবে, যেমন এখানে বর্ণনা করা হয়েছে।

গুগল আর্থ KML এবং KMZ ফাইল পড়ে। KML ফাইলের জন্য MIME প্রকার

  • application/vnd.google-earth.kml+xml

KMZ ফাইলের জন্য MIME প্রকার

  • application/vnd.google-earth.kmz

Apache এর জন্য, httpd.conf ফাইলে এই লাইনগুলি যোগ করুন:

  • AddType application/vnd.google-earth.kml+xml .kml
  • AddType application/vnd.google-earth.kmz .kmz

Microsoft এর IIS-এ MIME প্রকার সেট আপ করার বিষয়ে বিস্তারিত জানার জন্য Microsoft ডকুমেন্টেশন দেখুন।

প্রতিক্রিয়ার মূল অংশে অবশ্যই বৈধ KML ডেটা থাকতে হবে, যার মধ্যে XML ঘোষণা ( <?xml version="1.0" encoding="UTF-8"?> ) অন্তর্ভুক্ত রয়েছে। যদি সার্ভারটি অবৈধ KML ফেরত দেয়, তাহলে নেটওয়ার্ক লিঙ্কটি থামবে, নিষ্ক্রিয় করবে এবং একটি ত্রুটি বার্তা আউটপুট করবে।

এরপর কি?

আরো জন্য প্রস্তুত? বিকাশকারীর নির্দেশিকা দেখুন, যা মূল KML বৈশিষ্ট্যগুলি বর্ণনা করে৷ এছাড়াও, নির্দিষ্ট উপাদানের তথ্যের জন্য KML রেফারেন্স ব্রাউজ করুন।