OpenStreetMap में संस्करण से निपटने के लिए कैसे?


11

अधिक सामान्य अर्थों में भू-स्थानिक डेटा के प्रबंधन का विषय यहां से पहले सामने आया है। संस्करण के विषय के रूप में अच्छी तरह से वहाँ उल्लेख किया गया था, लेकिन वास्तव में नहीं निपटा।

पारंपरिक भू-स्थानिक डेटा संग्रह और रखरखाव को केवल आंतरिक रूप से संस्करण से निपटने की आवश्यकता है, क्योंकि डेटाबेस केवल संगठन के भीतर से अपडेट किया गया है। यह OpenStreetMap की तरह भीड़ भू-डेटाबेस में मामला नहीं है। वहां, कोई भी साथ आ सकता है और वस्तुओं को जोड़, संशोधित या हटा सकता है। OpenStreetMap में यह एक अल्पविकसित तरीके से निपटा जाता है: प्रत्येक ऑब्जेक्ट में एक पूर्णांक संस्करण संख्या होती है, और केवल उच्चतम संस्करण वाली वस्तु लाइव डेटाबेस में उजागर होती है। डेटाबेस आशावादी लॉकिंग का उपयोग करता है, इसलिए उपयोगकर्ताओं को मैन्युअल रूप से योगदान अपलोड करते समय होने वाली सभी उलझनों को हल करना होगा।

यह सब यथोचित काम करता है जब तक कि संपादकों ( JOSM , Potlatch ) के माध्यम से मानव योगदान योगदान का एकमात्र तरीका है - लेकिन वे नहीं हैं। तेजी से, सार्वजनिक क्षेत्र के डेटा के आयात का संचालन किया जाता है। ये अधिक जटिल संस्करण मुद्दों के लिए बनाते हैं। इस परिदृश्य पर विचार करें:

  1. एक बिल्डिंग ऑब्जेक्ट को एक खुले सार्वजनिक क्षेत्र के डेटासेट से आयात किया जा रहा है
  2. इमारत को मानव योगदानकर्ताओं (गुण, ज्यामिति या दोनों) द्वारा कुछ संशोधन प्राप्त होते हैं
  3. सार्वजनिक क्षेत्र के डेटा का एक नया संस्करण उपलब्ध हो जाता है और इसे आयात किया जाता है।

वर्तमान में, चरण 3 में। मानव योगदान खो जाएगा, जब तक कि प्रत्येक इमारत जिसे सामुदायिक संशोधनों को प्राप्त नहीं किया गया है, उसे नए आयात के साथ मैन्युअल रूप से विलय कर दिया जाता है।

OpenStreetMap इस स्थिति से कैसे निपट सकता है? क्या हमें सॉफ्टवेयर विकास में वितरित संस्करण नियंत्रण को देखने की आवश्यकता है? डीवीसी के तरीकों को वितरित स्थानिक डेटा रखरखाव से निपटने के लिए कैसे अनुकूलित किया जा सकता है?

जवाबों:


5

मैंने जीआईएस डेटा के लिए गैर-विनाशकारी संपादन को लागू करने का सपना देखा है। यह गहन गणना है लेकिन आरडीबीएमएस में इसे लागू करना मुश्किल नहीं होना चाहिए।

डेटा के स्नैपशॉट से शुरू करें। कोई भी परिवर्तन संपादन के रूप में सहेजे जाते हैं, मूल डेटा अपरिवर्तित रहता है। आपके उदाहरण में, इमारतें शुरू में सार्वजनिक क्षेत्र के आंकड़ों से आती हैं। जब कोई उपयोगकर्ता एक संपादन करता है, तो परिवर्तन या अंतर एक अलग तालिका में सहेजा जाता है। जब कोई इस सुविधा को देखता है तो उन्हें मूल प्लस दिए गए किसी भी संपादन को दिया जाता है। बाद के संपादन नए फीचर आकार और मूल प्लस सभी पिछले संपादन के बीच गणना अंतर हैं।

यह आपको एक बढ़िया स्तर पर पूर्ववत करने की क्षमता देता है। यह अनिवार्य रूप से संस्करण नियंत्रण क्या करता है। गैर-विनाशकारी संपादन का एक अच्छा उदाहरण एप्पल का एपर्चर है। एपर्चर में आयातित डिजिटल छवियों को सीधे संशोधित नहीं किया जाता है। एक छवि के साथ काम करने पर स्तरों में परिवर्तन, तीक्ष्णता, धुंधलापन आदि को संपादन के रूप में संग्रहीत किया जाता है और मक्खी पर लगाया जाता है। किसी भी परिवर्तन को तुरंत हटाया जा सकता है।

बेशक, आप उत्पादन वातावरण में वितरण और उपयोग के लिए DB के स्नैपशॉट लेंगे। यह केवल विकास और संपादन के लिए होगा।

पर एक नजर डालें संशोधन PostGIS , pgVersion और पोस्ट कार्योत्तर विचारों और संभावित समाधानों के लिए। ये PostgreSQL डेटाबेस में लागू किए गए संस्करण नियंत्रण प्रणालियाँ हैं।


3

OSM Postgres और Postgis का उपयोग करता है जो डेटाबेस का एक स्नैपशॉट रखता है।

अपने सर्वर और डेटाबेस पर इसे लागू करने के लिए

http://wiki.openstreetmap.org/wiki/Databases#Choice_of_DBMS

डेटाबेस (plantet.osm) साप्ताहिक http://wiki.openstreetmap.org/wiki/Planet_dump अपडेट किया जाता है

ओसमोसिस का उपयोग किया जाता है"इसमें डेटाबेस से और फ़ाइल से पढ़ने के लिए घटक हैं, डेटाबेस के लिए लिखने और फ़ाइल करने के लिए घटक हैं, डेटा स्रोतों के लिए परिवर्तन सेट और प्राप्त करने के लिए घटक हैं"

http://wiki.openstreetmap.org/wiki/Osmosis

Changsets: http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#Changeset_Derivation_and_Merging


0

हालांकि मुझे इस समस्या का सामना करना पड़ा और इसका अंदाजा था, लेकिन इसका परीक्षण नहीं किया। यह काम हो सकता है:

Mercurial या Git जैसी संस्करण नियंत्रण प्रणाली का उपयोग करें। Mercurial आसान हो जाएगा, क्योंकि यह आसानी से अनाम शाखा बनाने की अनुमति देता है।

अब, प्रारंभिक संशोधन से सार्वजनिक डेटासेट आयात के लिए एक शाखा शुरू करते हैं। तो, 2 शाखाएँ होंगी:

  1. मेनलाइन (OSM)
  2. सार्वजनिक डेटासेट X

सार्वजनिक डेटासेट से एक आयात शाखा 2 में किया जाना चाहिए, फिर ओएसएम शाखा में विलय कर दिया जाना चाहिए।

आपका परिदृश्य इस तरह काम कर सकता है:

  • एक वस्तु मौजूद नहीं थी
  • तब इसे आयात किया जाता है और शाखा 1 में विलय कर दिया जाता है
  • फिर इसे मेनलाइन में संशोधित किया जाता है, जिसमें ज्यामिति भी शामिल है
  • इसे शाखा 2 में फिर से आयात किया गया है
  • जब इसे शाखा 1 में विलय कर दिया जाता है, तो केवल शाखा 2 में अद्यतन किया गया डेटा शाखा 1 में अद्यतन किया जाता है

इसके लिए डेटा को कई फ़ाइलों में विभाजित करने की आवश्यकता हो सकती है, एक वस्तु और संभवत: एक प्रारूप में जोसन की तरह, ताकि वीसीएस आसानी से अलग-अलग विशेषताओं में बदलाव से निपट सकें।

{
     id: 1357
     lat: 1,
     lon: 2,
     tags: {
          'building': 'entrance'
     }
     type: 'node',
}
{
     nodes: [
         1357,
         2468
     ],
     tags: {
         building: 'yes',
     }
     type: 'way',
}

मुझे पता है कि एक अरब फाइलों में सूचना का विभाजन किसी भी प्रणाली के लिए बहुत अधिक है। इसके बजाय वीसीएस के मूल का उपयोग किया जाना चाहिए और ओएसएम डेटा को संसाधित किया जाना चाहिए और एक संस्करण के रूप में वीसीएस में खिलाया जाना चाहिए। (या एक फाइलसिस्टम का मज़ाक उड़ाया जा सकता है)।

मैं गारंटी नहीं दे सकता कि यह काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.