def getgeo(self, x, y, z): """ Given (x, y, z) Cartesian coordinates, convert them to latitude, longitude, and altitude based on the configured reference point and scale. :param x: x value :param y: y value :param z: z value :return: lat, lon, alt values for provided coordinates :rtype: tuple """ # shift (x,y,z) over to reference point (x,y,z) x -= self.refxyz[0] y = -(y - self.refxyz[1]) if z is None: z = self.refxyz[2] else: z -= self.refxyz[2] # use UTM coordinates since unit is meters zone = self.refutm[0] if zone == "": raise ValueError("reference point not configured") e = self.refutm[1] + self.px2m(x) n = self.refutm[2] + self.px2m(y) alt = self.refutm[3] + self.px2m(z) (e, n, zone) = self.getutmzoneshift(e, n) try: lat, lon = utm.to_latlon(e, n, zone[0], zone[1]) except utm.OutOfRangeError: logging.exception("UTM out of range error for n=%s zone=%s xyz=(%s,%s,%s)", n, zone, x, y, z) lat, lon = self.refgeo[:2] # self.info("getgeo(%s,%s,%s) e=%s n=%s zone=%s lat,lon,alt=" \ # "%.3f,%.3f,%.3f" % (x, y, z, e, n, zone, lat, lon, alt)) return lat, lon, alt
def getgeo(self, x, y, z): ''' Given (x, y, z) Cartesian coordinates, convert them to latitude, longitude, and altitude based on the configured reference point and scale. ''' # shift (x,y,z) over to reference point (x,y,z) x = x - self.refxyz[0] y = -(y - self.refxyz[1]) if z is None: z = self.refxyz[2] else: z = z - self.refxyz[2] # use UTM coordinates since unit is meters zone = self.refutm[0] if zone == "": raise ValueError, "reference point not configured" e = self.refutm[1] + self.px2m(x) n = self.refutm[2] + self.px2m(y) alt = self.refutm[3] + self.px2m(z) (e, n, zone) = self.getutmzoneshift(e, n) try: lat, lon = utm.to_latlon(e, n, zone[0], zone[1]) except utm.OutOfRangeError: self.info("UTM out of range error for e=%s n=%s zone=%s" \ "xyz=(%s,%s,%s)" % (e, n, zone, x, y, z)) (lat, lon) = self.refgeo[:2] #self.info("getgeo(%s,%s,%s) e=%s n=%s zone=%s lat,lon,alt=" \ # "%.3f,%.3f,%.3f" % (x, y, z, e, n, zone, lat, lon, alt)) return (lat, lon, alt)
def getgeo(self, x, y, z): ''' Given (x, y, z) Cartesian coordinates, convert them to latitude, longitude, and altitude based on the configured reference point and scale. ''' # shift (x,y,z) over to reference point (x,y,z) x = x - self.refxyz[0] y = -(y - self.refxyz[1]) if z is None: z = self.refxyz[2] else: z = z - self.refxyz[2] # use UTM coordinates since unit is meters zone = self.refutm[0] if zone == "": raise ValueError("reference point not configured") e = self.refutm[1] + self.px2m(x) n = self.refutm[2] + self.px2m(y) alt = self.refutm[3] + self.px2m(z) (e, n, zone) = self.getutmzoneshift(e, n) try: lat, lon = utm.to_latlon(e, n, zone[0], zone[1]) except utm.OutOfRangeError: self.info("UTM out of range error for e=%s n=%s zone=%s" \ "xyz=(%s,%s,%s)" % (e, n, zone, x, y, z)) (lat, lon) = self.refgeo[:2] #self.info("getgeo(%s,%s,%s) e=%s n=%s zone=%s lat,lon,alt=" \ # "%.3f,%.3f,%.3f" % (x, y, z, e, n, zone, lat, lon, alt)) return (lat, lon, alt)
def getgeo(self, x, y, z): """ Given (x, y, z) Cartesian coordinates, convert them to latitude, longitude, and altitude based on the configured reference point and scale. :param x: x value :param y: y value :param z: z value :return: lat, lon, alt values for provided coordinates :rtype: tuple """ # shift (x,y,z) over to reference point (x,y,z) x -= self.refxyz[0] y = -(y - self.refxyz[1]) if z is None: z = self.refxyz[2] else: z -= self.refxyz[2] # use UTM coordinates since unit is meters zone = self.refutm[0] if zone == "": raise ValueError("reference point not configured") e = self.refutm[1] + self.px2m(x) n = self.refutm[2] + self.px2m(y) alt = self.refutm[3] + self.px2m(z) (e, n, zone) = self.getutmzoneshift(e, n) try: lat, lon = utm.to_latlon(e, n, zone[0], zone[1]) except utm.OutOfRangeError: logger.exception("UTM out of range error for n=%s zone=%s xyz=(%s,%s,%s)", n, zone, x, y, z) lat, lon = self.refgeo[:2] # self.info("getgeo(%s,%s,%s) e=%s n=%s zone=%s lat,lon,alt=" \ # "%.3f,%.3f,%.3f" % (x, y, z, e, n, zone, lat, lon, alt)) return lat, lon, alt