GPS लॉग्स का भौगोलिक डेटाबेस कैसे बनाएं?


13

हमारे हवाई वन्यजीव सर्वेक्षणों पर हम आमतौर पर दर्जनों 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]


हम FME safe.com/fme/fme-technology/fme-desktop/features का उपयोग करते हैं और यह उन सभी अटेंशन को बनाए रखता है जो आप Oracle डेटाबेस में चाहते हैं
Mapperz

1
@ मैपरज़ - क्या FME में GPX फ़ाइलों को सहेजने की एक विशिष्ट विधि है? मैं वास्तव में एक FOSS समाधान के बाद कर रहा हूँ।
सिंबांगु

जवाबों:


6

ptrv / gpx2spatialite यह उल्लेखनीय रूप से अच्छी तरह से करता है, सभी बिंदुओं के लिए टाइमस्टैम्प की बचत करता है और पटरियों पर गति और लंबाई डेटा प्राप्त करता है। यह डुप्लिकेट पटरियों को भी आयात नहीं करेगा, इसलिए आप इसे GPX फ़ाइलों के लिए एक बड़ा ढेर फ़ीड कर सकते हैं और यह उन्हें उचित रूप से काटा जाएगा।

अद्यतन : अनुरोध के अनुसार उपयोग उदाहरण,

नया डेटाबेस शुरू करें:

gpx2spatialite_create_db db.sqlite

एकल gpx फ़ाइल जोड़ें:

gpx2spatialite -d db.sqlite -u user file.gpx

(उपयोगकर्ता नाम तो उपयोगकर्ता डेटाबेस में मौजूद नहीं है, यदि आप इसे बनाना चाहते हैं क्वेरी करेगा। डेटाबेस पटरियों / वेपोइंट / एक या अधिक उपयोगकर्ताओं को सौंपा मार्गों के साथ बनाया गया है।)

फ़ोल्डर में सभी gpx फाइलों को जोड़ें / :

gpx2spatialite -d db.sqlite -u user folder/

उपयोग: यह एक स्थानिक डेटाबेस है, मेज के साथ tracklines पोलीलाइंस, के रूप में ट्रैक हैं ट्रैकपाइंट (के साथ समय, ऊंचाई, आदि) अलग-अलग अंक युक्त, और वेपोइंट किसी भी परिभाषित वेपोइंट के लिए। वहाँ भी कई सूचकांकों, कुछ विश्व शहर की परिभाषाएं हैं और संभवतः एसएलडी स्टाइलिंग जानकारी भी एम्बेडेड है जिसे मैंने अभी तक पता नहीं लगाया है। एक तुच्छ उदाहरण के रूप में, ~ 7 साल के ट्रैक लॉग के माध्यम से मेरे गृहनगर (टोरंटो) को कैसे परिभाषित किया गया है, इसका एक नक्शा यहाँ दिया गया है:

टोरंटो जीपीएस लॉग

75% पारदर्शिता पर लाइनों का उपयोग करके, सबसे अधिक बार-यात्रा किए गए मार्ग गहरे हो जाते हैं।


अहा, यह एहसास नहीं था कि easy_install gpx2spatialiteवास्तव में इसे कमांड लाइन से सुलभ स्क्रिप्ट के रूप में स्थापित किया जाएगा ! userविकल्प भी भ्रामक था, वे मुख्य पृष्ठ पर यह व्याख्या नहीं करते, और spatialite एक गैर एक्सेस-प्रतिबंधित प्रणाली है।
सिमबंगु

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

1
FYI करें, gpx2spatialite सिंटैक्स बदल गया है। सामान्य आयात आदेश अब हैgpx2spatialite import -u user -s -d db.spatialite file1.gpx …
scruss

3

अपनी टिप्पणी को आगे बढ़ाने के लिए - "क्या FME में GPX फ़ाइलों को सहेजने के लिए एक विशिष्ट विधि है?"

हाँ, आपके पास मार्गों, रास्ते, पटरियों और मेटाडेटा पर पूर्ण नियंत्रण है यहाँ छवि विवरण दर्ज करें

एफएमई जीआईएस डेटा और गैर-स्थानिक डेटा को एक साथ हेरफेर करने के लिए एक बहुत ही योग्य और शक्तिशाली उपकरण है।

अधिक जानकारी के लिए देखें http://evangelism.safe.com/fmeevangelist26/


2

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


1

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


-1

जोड़ने का प्रयास करें

-lco GPS_USE_EXTENSIONS=YES

अपने ogr2ogr कमांड के लिए


मैंने एक नई मेज पर यह कोशिश की - जिसके परिणामस्वरूप खेतों या डेटा पर कोई प्रभाव नहीं पड़ा। आप इसे करने के लिए क्या उम्मीद कर रहे हैं?
Simbamangu

मैं विस्तारित विशेषताओं को प्राप्त करने की उम्मीद कर रहा था। आपके प्रश्न का उत्तर देते हुए, मुझे नहीं लगता कि ट्रैक को निर्यात करने के अलावा प्रत्येक व्यक्तिगत ट्रैक पॉइंट बार को खुद पॉइंट्स के रूप में प्राप्त करना है।
मीका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.