def __init__(self, arg, ext=-1): """TODO""" if ext >= 0: fields = FileFormat.__search_fmt_from_ext_or_name( FileFormat.TRACK_FILE_FORMAT, arg, ext) self.name = fields[0].strip() self.id_E = int(fields[2].strip()) self.id_N = int(fields[3].strip()) self.id_U = int(fields[4].strip()) self.id_T = int(fields[5].strip()) self.DateIni = fields[6].strip() self.separator = fields[7].strip() self.h = int(fields[8].strip()) self.com = fields[9].strip() self.no_data_value = float(fields[10].strip()) self.srid = fields[11].strip() self.read_all = fields[13].strip().upper() == "TRUE" self.time_fmt = fields[12].strip() self.separator = self.separator.replace("b", " ") self.separator = self.separator.replace("c", ",") self.separator = self.separator.replace("s", ";") if self.DateIni == "-1": self.DateIni = -1 else: fmt_temp = GPSTime.getReadFormat() GPSTime.setReadFormat(self.time_fmt) self.DateIni = GPSTime(self.DateIni) GPSTime.setReadFormat(fmt_temp) else: self.id_E = -1 self.id_N = -1 self.id_U = -1 self.id_T = -1 self.DateIni = -1 self.separator = "," self.h = 0 self.com = "#" self.no_data_value = -999999 self.srid = "ENUCoords" self.read_all = False self.time_fmt = GPSTime.getReadFormat()
def readFromGpx(path, srid="GEO"): """ Reads (multiple) tracks in .gpx file """ tracks = TrackCollection() format_old = GPSTime.getReadFormat() GPSTime.setReadFormat("4Y-2M-2D 2h:2m:2s") doc = minidom.parse(path) trks = doc.getElementsByTagName("trk") for trk in trks: trace = t.Track() trkpts = trk.getElementsByTagName("trkpt") for trkpt in trkpts: lon = float(trkpt.attributes["lon"].value) lat = float(trkpt.attributes["lat"].value) hgt = utils.NAN eles = trkpt.getElementsByTagName("ele") if eles.length > 0: hgt = float(eles[0].firstChild.data) time = "" times = trkpt.getElementsByTagName("time") if times.length > 0: time = GPSTime(times[0].firstChild.data) else: time = GPSTime() point = Obs(utils.makeCoords(lon, lat, hgt, srid), time) trace.addObs(point) tracks.addTrack(trace) # pourquoi ? # --> pour remettre le format comme il etait avant la lectre :) GPSTime.setReadFormat(format_old) collection = TrackCollection(tracks) return collection