हमारे हवाई वन्यजीव सर्वेक्षणों पर हम आमतौर पर दर्जनों GPX फाइलें उत्पन्न करते हैं, और आमतौर पर उनमें से अधिकांश को जीआईएस एप्लिकेशन में प्रदर्शन के लिए आकार-प्रकार में परिवर्तित करते हैं। GPX फाइलें आपके GPS डेटा के सभी (या लगभग सभी) को एक ही स्थान पर रखने का एक शानदार तरीका है - वे xml फाइलें हैं जो एक सुविधाजनक प्रारूप में ट्रैकलॉग, वेपॉइंट और रूट की जानकारी संग्रहीत करती हैं। वे एक Garmin से कई ट्रैक, यहां तक कि पुराने सहेजे गए ट्रैक संग्रहीत करते हैं।
मैं यह सब ट्रैक डेटा को एक स्थानिक डेटाबेस में संग्रहीत करना चाहता हूं, समानांतर में अन्य तालिकाओं के साथ समान सर्वेक्षण से बिंदु अवलोकन डेटा है।
ogr2ogr मुझे ट्रैक को एक स्थानिक डेटाबेस में बदलने देगा:
ogr2ogr -append -f "SQLite" -dsco SPATIALITE=yes # add to table with Spatialite filetype
-dsco INIT_WITH_EPSG=yes -t_srs epsg:4326 # using WGS84
SURVEYDATA.sqlite GPXFILE.gpx tracks -nln tracktable; # adding tracks to 'tracktable'
हालाँकि, यह प्रत्येक सहेजे गए ट्रैक को एक पंक्ति के रूप में आयात करता है - प्रत्येक ट्रैक बिंदु के लिए समय / स्थान की जानकारी खोना!
किसी को भी एक ट्रैकलॉग डेटाबेस के निर्माण के किसी भी चतुर तरीके के बारे में पता है जो उस जानकारी को संरक्षित करेगा?
संपादित करें :
ट्रैकलॉग केवल एक पंक्ति नहीं हैं - वे अनुक्रमिक बिंदुओं के संग्रह हैं, प्रत्येक एक ऊंचाई और समय विशेषता के साथ। प्रत्येक बिंदु एक ट्रैक खंड से संबंधित है, जो बदले में दिए गए ट्रैक से संबंधित है, और प्रत्येक ट्रैक सेगमेंट के भीतर अंक बिना किसी रुकावट के लिए गए थे और इसे लिंक किया जा सकता है। उदाहरण के लिए:
<trk><name>ACTIVE LOG</name>
<trkseg>
<trkpt lat="-13.471403" lon="31.382982"><ele>467.818725585938</ele><time>2009-09-09T03:53:38Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>468.780029296875</ele><time>2009-09-09T03:53:50Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>465.896118164063</ele><time>2009-09-09T03:54:43Z</time></trkpt>
</trkseg>
इस प्रकार, एक ट्रैकलॉग को बचाने के लिए आपको उनके संबद्ध डेटा के साथ अंकों के इस संग्रह को सहेजना होगा।
ट्रैक नाम, सेगमेंट, ऊंचाई और समय के लिए अतिरिक्त कॉलम के साथ, इन ट्रैक्स को पॉइंट के रूप में लोड करने का एक समाधान हो सकता है; मुझे नहीं लगता कि ogr पटरियों को बिंदुओं के रूप में बदलेगा, हालाँकि।
समाधान
धन्यवाद जो बताया @scruss को gpx2spatialite , जो मैं के साथ स्थापित (ओएस एक्स 10.9) sudo easy_install gpx2spatialite
। टूल का यह सेट 'ड्राइंगलाइफ़' प्रोजेक्ट के लिए डिज़ाइन किया गया है (और इस तरह कुछ 'शहर' की जानकारी है जो शायद हम में से अधिकांश के लिए अनावश्यक है); मुख्य gpx2spatialite पेज ज्यादा नहीं समझाता है, लेकिन ड्राइंग लाइफ विकी बेहतर है। फिर भी, बहुत सारी अनिर्दिष्ट विशेषताएं - जैसे डुप्लिकेट को हटाना!
GPX फ़ाइलों के लिए एक स्थानिक डेटाबेस बनाएँ, जो ट्रैक सेगमेंट, ट्रैक, ट्रैकपॉइंट और वेपॉइंट को पकड़ेगा। इसमें 'यूजर्स' भी सेट किए गए हैं (जो अजीब लगता है, क्योंकि साइक्लाइट कोई यूजर-एक्सेस सिस्टम नहीं है, लेकिन ड्राइंगलाइफ के लिए था) विभिन्न ट्रैक्स को लेबल करने के लिए बनाया गया है:
gpx2spatialite create_db MyGPXArchive.db
GPX फ़ाइलों का एक संपूर्ण फ़ोल्डर लोड करें, जिसमें सभी सबफ़ोल्डर्स शामिल हैं, रास्ते में डुप्लिकेट की जाँच और निकालना:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
विकल्प:
-s
अगर शहर के डेटाबेस में ट्रैकपॉइंट्स हैं तो जाँच न करें (इसे बहुत ऊपर करें)-d MyGPXArchive.db
= डेटाबेस का उपयोग करने के लिए;-u SL25
= उपयोगकर्ता SL25 जोड़ें (एकत्र किए गए पटरियों के सेट के लिए मैंने केवल एक लेबल का उपयोग किया था);Selous2013
= वह फ़ोल्डर (सबफ़ोल्डर के साथ) जिसमें वह ट्रैक है जिसकी मुझे दिलचस्पी है।
कीड़े:
यदि आपने किसी पुराने Garmin पर पटरियों को सहेजा है जो समय स्टाम्प जानकारी को हटाता है, तो यह आयात को क्रैश कर देगा (GPSU जैसी उपयोगिता का उपयोग करके उन सहेजे गए ट्रैक्स को हटा दें)। यदि आपके पास gpsbabel है , तो फ़ाइल को पहले कुछ इस तरह से फ़िल्टर करें:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x ट्रैक, प्रारंभ = 20000101 -o gpx -F [OUTPUT.gpx]