Forum » Kaj kupiti » GPS za najbolj natančno logiranje poti
GPS za najbolj natančno logiranje poti
jez23 ::
Pozdravljeni,
kot že sam naslov pove iščem napravo, ročni gps, ali kaj podobnega, za čimnatančnejše logiranje poti.
Kot drugo vprašanje pa navajam, software. Katerega izbrati z obdelavo podatkov, risanje profila poti,...
Stvar pa je takšna: V našem okolišu se bo v kratkem postavljalo določeno število kolesarskih poti (MTB). Radi bi naredili uporabnikom čimbolj prijazne in natančne preglede poti, kar pomeni, da potrebujemo .gpx ali katerikoli drug format sledi poti, ki ga je potem potrebno seveda še obdelati. Katere naprave, ter kateri software priporočate?
Sam poznam Garminove Dakote ter Oregone, delo s Geopedio ter seveda Garminovimi orodji. ALi obstajajo boljše alternative?
kot že sam naslov pove iščem napravo, ročni gps, ali kaj podobnega, za čimnatančnejše logiranje poti.
Kot drugo vprašanje pa navajam, software. Katerega izbrati z obdelavo podatkov, risanje profila poti,...
Stvar pa je takšna: V našem okolišu se bo v kratkem postavljalo določeno število kolesarskih poti (MTB). Radi bi naredili uporabnikom čimbolj prijazne in natančne preglede poti, kar pomeni, da potrebujemo .gpx ali katerikoli drug format sledi poti, ki ga je potem potrebno seveda še obdelati. Katere naprave, ter kateri software priporočate?
Sam poznam Garminove Dakote ter Oregone, delo s Geopedio ter seveda Garminovimi orodji. ALi obstajajo boljše alternative?
jype ::
Če boljše, ne vem, zagotovo pa fleksibilnejše. Bluetooth GPS sprejemnik s serijskim vmesnikom (rfcomm) imam naselotejpan na čelado, naredim nmea dump na telefonu, uporabim gpsbabel in python za risanje slik.
V par deset vrsticah kode recimo lahko narediš marsikaj. Ker sem blazno zabasan z delom še nimam končnega izdelka, ampak tole pa lahko že pokažem (spodaj je koda, ki izriše napise v video, v delu je pa še map tracking view s pomočjo google maps/earth oz. geopedije in analiza podatkov iz bluetooth heart rate monitorja, manjka mi pa še sinhronizacija z merilnikom kadence, ki bo malce trši oreh.
V par deset vrsticah kode recimo lahko narediš marsikaj. Ker sem blazno zabasan z delom še nimam končnega izdelka, ampak tole pa lahko že pokažem (spodaj je koda, ki izriše napise v video, v delu je pa še map tracking view s pomočjo google maps/earth oz. geopedije in analiza podatkov iz bluetooth heart rate monitorja, manjka mi pa še sinhronizacija z merilnikom kadence, ki bo malce trši oreh.
#!/usr/bin/python import cv, sys, os, pyexif, datetime, time, calendar from lxml import html kml = html.parse(sys.argv[2]) offset = int(sys.argv[3]) tsdata = list() for x in kml.iter('placemark'): if x.getchildren()[0].tag != 'name': continue try: data = list(x.iter('td')) if not data: continue lon = data[0].text.split(':',1)[1].replace(' ', '') lat = data[1].text.split(':',1)[1].replace(' ', '') if lon.startswith('-'): lon='W'+lon else: lon='E'+lon if lat.startswith('-'): lat='S'+lat else: lat='N'+lat alt = '%d m' % int(round(float(data[2].text.split(':',1)[1].strip().split(' ', 1)[0]))) spd = data[3].text.split(':',1)[1] if 'km/hour' in spd: spd = '%4.1f km/h' % float(spd.strip().split(' ', 1)[0]) else: spd = '%4.1f km/h' % 0.0 hdg = '%d degrees' % int(round(float(data[4].text.split(':',1)[1].replace(' ', '')))) gpsclk = data[5].text.split(':',1)[1].replace(' ', '') try: ts = calendar.timegm(datetime.datetime.strptime(gpsclk, '%Y-%m-%dT%H:%M:%SZ').timetuple()) except: ts = calendar.timegm(datetime.datetime.strptime(gpsclk, '%Y-%m-%dT%H:%M:%S.%fZ').timetuple()) tsdata.append(dict(ts=ts, hdg=hdg, alt=alt, spd=spd, gpsclk=gpsclk, lat=lat, lon=lon)) except Exception, m: raise print m exif = pyexif.ExifEditor(sys.argv[1]) start = int(time.mktime(datetime.datetime.strptime(exif.getTag('CreateDate'), '%Y:%m:%d %H:%M:%S').timetuple())) duration = exif.getTag('Duration') dur = 0 i = 0 for chunk in reversed(duration.split(':')): dur += int(chunk) * 60**i i += 1 capture = cv.CaptureFromFile(sys.argv[1]) fps = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FPS) height = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT)) width = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH)) print duration, dur, fps cv.NamedWindow('title', cv.CV_WINDOW_AUTOSIZE) c = 0 font1 = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 2, cv.CV_AA) font2 = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 5, cv.CV_AA) data = dict(ts='unknown',hdg='unknown',alt='unknown',spd='unknown',lat='unknown',lon='unknown',gpsclk='unknown',) color1 = cv.CV_RGB(255, 20, 20) color2 = cv.CV_RGB(10, 10, 10) if len(sys.argv) == 5: writer = cv.CreateVideoWriter( filename=sys.argv[4], fourcc=cv.CV_FOURCC('F','M','P','4'), fps=fps, frame_size=(width,height), is_color=1) else: writer = None def txt(img, text, x, y): cv.PutText(img, text, (x, y), font2, color2) cv.PutText(img, text, (x, y), font1, color1) while True: ts = start + c / fps if tsdata and tsdata[0]['ts'] < ts + offset: data = tsdata.pop(0) img = cv.QueryFrame(capture) if not img: break txt(img, 'heading: %(hdg)s' % data, 10, 30) txt(img, 'pos: %(lat)s' % data, 10, 60) txt(img, ' %(lon)s' % data, 10, 90) txt(img, 'alt: %(alt)s' % data, 10, 120) txt(img, 'speed: %(spd)s' % data, 10, 150) txt(img, 'gps clock: %(gpsclk)s' % data, 10, height-30) txt(img, 'cam clock: %s' % time.asctime(time.localtime(ts)), 630, height-30) #cv.SaveImage('img%05d.jpg' % c, img) if writer: cv.WriteFrame(writer, img) else: cv.ShowImage('title', img) key = cv.WaitKey(1) if key == ord('q'): break c+=1 print dur - (ts - start)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Bolha parser/pajek - prejemanje obvestil o novih oglasihOddelek: Programiranje | 4368 (3366) | rokko |
» | [Python3] Izvajanje ukazov po določenem časuOddelek: Programiranje | 1459 (1069) | noraguta |
» | Beleženje udeležbe v prometu (strani: 1 2 )Oddelek: Loža | 10925 (8056) | SeMiNeSanja |
» | Python - problemOddelek: Programiranje | 2792 (2522) | slevin |
» | Program za dopis avtorja slikeOddelek: Programska oprema | 1498 (1350) | MihaFirst |