GIS वेक्टर डेटा को KML में बदलना

मेनो मार्क्स, Google Geo API टीम
सितंबर 2009

उद्देश्य

यह ट्यूटोरियल, ओजीआर ओपन सोर्स लाइब्रेरी का इस्तेमाल करके, GIS वेक्टर डेटा को KML में बदलने की बुनियादी बातों के बारे में बताता है. हालांकि, ये लाइब्रेरी ज़्यादातर GIS फ़ाइलों के साथ इस्तेमाल की जा सकती हैं, लेकिन यह ट्यूटोरियल ESRI शेपफ़ाइल के साथ काम करने पर फ़ोकस करेगा.

सुविधा के बारे में जानकारी

भौगोलिक डेटा, वेब पर कई तरह से उपलब्ध है. KML सबसे लोकप्रिय फ़ाइल फ़ॉर्मैट में से एक है, लेकिन कई दूसरे फ़ाइल टाइप का भी इस्तेमाल किया जाता है. बड़ी कंपनियां, सरकारें, और गैर-सरकारी संगठन अपने मैप बनाने के लिए, भौगोलिक जानकारी के सिस्टम का इस्तेमाल करते हैं. साथ ही, वे इन फ़ाइल फ़ॉर्मैट का भी इस्तेमाल कर सकते हैं. इन ऐप्लिकेशन के लिए, अक्सर खास ट्रेनिंग की ज़रूरत होती है. इसके अलावा, इन्हें सीखने के लिए कम से कम काफ़ी समय की ज़रूरत होती है. हालांकि, प्रॉपर्टी का लेवल काफ़ी महंगा हो सकता है. दूसरी ओर, वे बहुत शक्तिशाली होते हैं और पेशेवर मैपर के लिए मैपिंग टूल का एक रिच सेट देते हैं.

कई सरकारी इकाइयां अपने GIS डेटा का कुछ भाग सार्वजनिक उपयोग के लिए रिलीज़ करती हैं. Data.gov, मैसाचुसेट्स जियोग्राफ़िक इन्फ़ॉर्मेशन सिस्टम और DataSF जैसे पोर्टल की मदद से, अपने समुदायों का डेटा ढूंढना आसान हो जाता है. इस लेख में वेक्टर डेटा—जिसे डेटा, पॉइंट, लाइन, और पॉलीगॉन जैसे आसान ज्यामिति से शामिल किया गया है—को KML में बदलने का तरीका बताया गया है. इससे आपको अलग-अलग तरह के डेटा का ऐक्सेस मिल जाएगा, जिसमें ये शामिल हैं:

  • पार्सल बनाने में इस्तेमाल होने वाले पार्सल की जानकारी
  • घटना का डेटा, जैसे कि अपराध की रिपोर्ट
  • सीमा डेटा, नगर पालिकाओं, राज्यों, काउंटी, प्रांतों, वगैरह के लिए.
  • सड़क के डेटा में, पहले से तय की गई सड़कें और मौजूदा सड़कें भी शामिल होती हैं
  • निर्माण से जुड़े परमिट, जहां परमिट जारी किए गए हैं
  • स्वास्थ्य से जुड़ा डेटा, जैसे कि यह बताना कि फ़्लू के फैलने की घटनाएं कहां हुई हैं

डेटा कन्वर्ज़न के लिए कई बेहतरीन ऐप्लिकेशन हैं. जैसे, Google Earth Pro, shp2KML, KML2KML, Arc2Earth, और कई अन्य. यह लेख कमांड लाइन से ओपन सोर्स जियोस्पेशल डेटा एब्स्ट्रक्शन लाइब्रेरी (GDAL) का इस्तेमाल करके, वेक्टर डेटा को KML या Google Earth में इस्तेमाल करने के लिए फ़ोकस करेगा. साथ ही, आपको उन लाइब्रेरी को अपने ऐप्लिकेशन में शामिल करने के लिए प्रेरित करेगा.

फ़ाइल टाइप के बारे में जानकारी

इस लेख में बताया गया है कि अगर ESRI आकार की फ़ाइलों को KML में बदला जाता है, तो GDAL का इस्तेमाल खास तौर पर OGR पर मौजूद फ़ाइल टाइप के साथ-साथ CSV, PostGRES/PostGIS डेटाबेस, और अन्य फ़ॉर्मैट में भी किया जा सकता है. आपके सामने आने वाले ज़्यादातर बड़े डेटा फ़ॉर्मैट पर काम किया जा सकता है. अगर आपको कोई ऐसा फ़ॉर्मैट मिलता है जो इस पर काम नहीं करता, तो आप OGR के लिए ड्राइवर लिख सकते हैं, क्योंकि यह एक ओपन सोर्स लाइब्रेरी है.

शेपफ़ाइल

ईएसआरआई का लोकप्रिय शेपफ़ाइल फ़ॉर्मैट, GIS डेटा के सबसे सामान्य फ़ॉर्मैट में से एक है. तकनीकी तौर पर, .shp एक्सटेंशन वाली शेपफ़ाइल एक फ़ाइल होती है. हालांकि, .shp को खुद से नहीं खोला जा सकता. फ़ाइल को डाउनलोड करने के लिए, कम से कम एक .dbf, और .shx फ़ाइल की ज़रूरत होती है. साथ ही, कई तरह के कामों के लिए, कई दूसरी फ़ाइलों की भी ज़रूरत होती है. इसलिए, जब आप किसी शेपफ़ाइल का रेफ़रंस देखते हैं, तो वह करीब-करीब हमेशा फ़ाइलों के कलेक्शन को दिखाती है. आम तौर पर, इसे एक साथ रखने के लिए, किसी तरह के ज़िप किए गए संग्रह में रखा जाता है. इस तरह, हम इस लेख के बाकी हिस्से के लिए, sizefile शब्द का इस्तेमाल करेंगे.

आकृति फ़ाइलों में बड़ी संख्या में उन भौगोलिक क्षेत्रों के बारे में जानकारी होती है जिनका वे वर्णन करते हैं. वे असल ज्यामिति, ज्यामिति के बारे में मेटाडेटा, और इस्तेमाल की गई जगह की जानकारी के बारे में जानकारी देते हैं. साथ ही, डेटा के दूसरे पहलुओं के बारे में भी बताया गया है. इस लेख में, आपको ज्यामिति, मेटाडेटा, और जगह के हिसाब से जानकारी के सिस्टम का ध्यान रखना होगा.

ज्यामिति और मेटाडेटा आसान कॉन्सेप्ट हैं. ज्यामिति बिंदु, रेखाएं, और पॉलीगॉन होते हैं और इन्हें आसानी से KML में दिखाया जा सकता है. मेटाडेटा उस डेटा से जुड़ा डेटा होता है जिसका इस्तेमाल अक्सर फ़िल्टर करने या क्वेरी करने के लिए किया जाता है. उदाहरण के लिए, किसी सड़क का वर्णन करने वाली पंक्ति में सड़क के प्रकार (नगरपालिका सड़क, राष्ट्रीय राजमार्ग, टर्नपाइक, वगैरह), गति सीमा, इसे कौन पूरा करता है, इसके आकार, वगैरह के बारे में मेटाडेटा हो सकता है.

स्पेशल रेफ़रंस सिस्टम (एसआरएस) का इस्तेमाल, निर्देशांक सिस्टम और प्रोजेक्शन की पहचान करने के लिए किया जाता है. ये वेक्टर डेटा बनाने में इस्तेमाल किए जाते हैं. KML में WGS84 निर्देशांक सिस्टम में अक्षांश और देशांतर का इस्तेमाल किया जाता है. हालांकि, मैप पर निर्देशांकों की पहचान करने के दूसरे तरीके भी हैं. इनमें सबसे लोकप्रिय हैं: Universal ट्रांसवर्स मरकेटर, ब्रिटिश नैशनल ग्रिड, और स्टेट प्लेन सिस्टम. डेटा को KML में बदलने के लिए, आपके लिए उस जानकारी की पहचान करना ज़रूरी हो सकता है. KML सिर्फ़ WGS84 पर काम करता है. आम तौर पर, शेपफ़ाइल उस जानकारी को अक्सर अपने पास .prj फ़ाइल में ले जाती हैं और OGR वहां से इसकी पहचान कर सकता है. हालांकि, कभी-कभी SRS की पहचान करना ज़रूरी होता है. कभी-कभी यह डेटा स्रोत से किसी न किसी रूप में, या तो उस पेज पर दिया जाता है, जहां से आप इसे डाउनलोड करते हैं या फिर डाउनलोड वाले किसी रीडमी दस्तावेज़ में या किसी दूसरे फ़ॉर्मैट में दिया जाता है. आम तौर पर, यह काफ़ी होता है. स्पेशल रेफ़रंस साइट में, एसआरएस के बारे में ज़्यादा जानकारी होती है. इस रेफ़रंस में, अलग-अलग रेफ़रंस सिस्टम को खोजने की सुविधा होती है.

Ogr2ogr

GDAL, वेक्टर डेटा के साथ काम करने के लिए लाइब्रेरी का एक बेहतर सेट देता है. खास तौर पर, डेटा कन्वर्ज़न के लिए ogr2ogr एक बेहतरीन सुविधा है. कई ऐप्लिकेशन में ऊपर बताए गए ऐप्लिकेशन के साथ-साथ, GDAL/OGR भी शामिल होता है.

शुरू करने के लिए, GDAL डाउनलोड और इंस्टॉल करें. फिर आपको शेपफ़ाइल की ज़रूरत पड़ेगी. इस ट्यूटोरियल के लिए, DataSF के टूल का इस्तेमाल करें. नीचे दिया गया उदाहरण realtor_neighborhoods शेपफ़ाइल का इस्तेमाल करता है, जिसे लाइसेंस के लिए सहमति देने के बाद यहां पाया जा सकता है. फ़ाइल डाउनलोड करने के बाद, उसे एक ऐसी डायरेक्ट्री में अनज़िप करें जिसे आप याद रखेंगे. कोई कमांड लाइन खोलें और उस डायरेक्ट्री पर जाएं जिसमें आपने डेटा डाला है. अब मस्ती के लिए.

ogr2ogr का इस्तेमाल कमांड लाइन से बहुत आसानी से किया जा सकता है. realtor_neighborhoods को शेपफ़ाइल से KML में बदलने का तरीका:

ogr2ogr -f "KML" -where "NBRHOOD='Telegraph Hill'" realtor_neighborhoods.kml realtor_neighborhoods.shp

यहां बताया गया है कि उस निर्देश से क्या होता है:

  • ogr2ogr. यह सबसे ज़रूरी निर्देश है.
  • -f "KML: इससे आउटपुट फ़ॉर्मैट को KML पर सेट कर दिया जाता है.
  • -where "NBRHOOD='Telegraph Hill'": यह एक वैकल्पिक where क्लॉज़ है, जैसे कि SQL. बुनियादी तौर पर यह आपको मेटाडेटा के आधार पर डेटा से क्वेरी करने की मंज़ूरी देती है. यह शेपफ़ाइल और ऐसे दूसरे फ़ाइल टाइप के साथ काम करता है जो क्वेरी करने की सुविधा देते हैं. इस मामले में, यह NBRHOOD फ़ील्ड के लिए क्वेरी कर रहा है, और केवल वे सुविधाएँ चुन रहा है जिनमें N बिना HOOD, टेलीग्राफ़ हिल है. अगर यह पैरामीटर बंद रहता है, तो ogr2ogr आस-पास के सभी पॉलीगॉन दिखाता है.
  • realtor_neighborhoods.kml: यह आउटपुट फ़ाइल का नाम है. आउटपुट फ़ाइल का नाम सबसे पहले आता है.
  • realtor_neighborhoods.shp: यह इनपुट फ़ाइल का नाम है. .shp फ़ाइल पूरी शेपफ़ाइल को दिखाती है.

बस इतना ही, बहुत आसान है. यह निर्देश ऐसी KML फ़ाइल बनाता है:

<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document><Folder><name>realtor_neighborhoods</name>
    <Schema name="realtor_neighborhoods" id="realtor_neighborhoods">
      <SimpleField name="Name" type="string"></SimpleField>
      <SimpleField name="Description" type="string"></SimpleField>
      <SimpleField name="OBJECTID" type="float"></SimpleField>
      <SimpleField name="NBRHOOD" type="string"></SimpleField>
      <SimpleField name="SFAR_DISTR" type="string"></SimpleField>
    </Schema>
    <Placemark>
      <ExtendedData><SchemaData schemaUrl="#realtor_neighborhoods">
        <SimpleData name="OBJECTID">81</SimpleData>
        <SimpleData name="NBRHOOD">Telegraph Hill</SimpleData>
        <SimpleData name="SFAR_DISTR">District 8 - Northeast</SimpleData>
      </SchemaData></ExtendedData>
      <Polygon><outerBoundaryIs><LinearRing><coordinates>-122.41041847319012,37.805924016582715,0 -122.407203813674,37.806324902060979,0 -122.40667792852096,37.803710121958744,0 -122.40348255423899,37.804117462290641,0 -122.40237202127015,37.798540648764529,0 -122.40876046662795,37.797723222540775,0 -122.41041847319012,37.805924016582715,0</coordinates></LinearRing></outerBoundaryIs></Polygon>
      <Style><LineStyle><color>ff0000ff</color></LineStyle>  <PolyStyle><fill>0</fill></PolyStyle></Style>
    </Placemark>
  </Folder></Document></kml>

आप देख सकते हैं कि शेपफ़ाइल के मेटाडेटा को Schema और SimpleData एलिमेंट में सुरक्षित रखा गया है. एक्सटेंडेड डेटा का इस्तेमाल करने और कस्टम डेटा की सुरक्षा के बारे में ज़्यादा जानकारी के लिए, कस्टम डेटा जोड़ना लेख पर, KML डेवलपर के गाइड सेक्शन को देखें.

आगे क्या करना है?

GDAL/OGR आपको ज़बरदस्त पावर देता है. सबसे आसान तरीके से, Google Earth, Maps या KML के साथ काम करने वाले दूसरे भौगोलिक ब्राउज़र में इस्तेमाल करने के लिए, अपने सभी डेटा को KML में बदला जा सकता है. इससे भी बेहतर, आप अपने ऐप्लिकेशन में GDAL/OGR लाइब्रेरी शामिल कर सकते हैं, जिससे आप GIS डेटा के KML में अपने आप काम करने की क्षमता रख सकते हैं, और उस कन्वर्ज़न के आउटपुट को नियंत्रित कर सकते हैं. इसे KML फ़ाइल के साथ ज़्यादा प्रोग्रामैटिक तरीके से कंट्रोल करने के लिए, libKML के साथ जोड़कर देखें.