Exemplo n.º 1
0
    def __init__(self, year, month, day, hour, minute, longitude, latitude, az_offset=0, dec_offset=0, cache=None):
        self.utc = datetime(year, month, day, hour, minute)
        self.reference_lonlat = LonLat(longitude, latitude)
        self.azalt_offsets = AzAlt(az_offset, dec_offset)

        self.projector = AzAltProjector(self.utc, self.reference_lonlat, self.azalt_offsets)
        self.cache = cache
Exemplo n.º 2
0
    def load_from_file(self):
        stars, lines = _CsvSource.load_from_file(self)

        utc = datetime(self.year, self.month, self.day, self.hour, self.minute)
        projector = AzAltProjector(utc, LonLat(self.longitude, self.latitude))
        projected_stars = []
        for star in stars:
            azalt = projector.project(star.radec)
            projected_stars.append(Star(star.id, star.name, azalt, star.mag))

        projected_lines = []
        for line in lines:
            point1 = projector.project(line.point1)
            point2 = projector.project(line.point2)
            projected_lines.append(Line(point1, point2))

        return projected_stars, projected_lines
Exemplo n.º 3
0
class IndexedSource(object):
    def __init__(self, year, month, day, hour, minute, longitude, latitude, az_offset=0, dec_offset=0, cache=None):
        self.utc = datetime(year, month, day, hour, minute)
        self.reference_lonlat = LonLat(longitude, latitude)
        self.azalt_offsets = AzAlt(az_offset, dec_offset)

        self.projector = AzAltProjector(self.utc, self.reference_lonlat, self.azalt_offsets)
        self.cache = cache


    def get_coords(self, zoom, x, y):
        bounds = calculate_bounds(zoom, x, y)
        az1, dec1, az2, dec2 = bounds

        mid_az = (az2 - az1) / 2.0 + az1
        mid_dec = (dec1 - dec2) / 2.0 + dec2
        assert get_tile_coords((mid_az, mid_dec), zoom) == (x, y), get_tile_coords((mid_az, mid_dec), zoom)

        radec = self.projector.unproject(AzAlt(mid_az, mid_dec))
        #assert self.projector.project(radec) == AzAlt(mid_az, mid_dec), (self.projector.project(radec), AzAlt(mid_az, mid_dec))

        cx, cy = get_tile_coords(radec, zoom)

        return cx, cy, az1, az2, bounds, radec

    def get_sky_objects(self, zoom, x, y):
        cx, cy, az1, az2, bounds, radec = self.get_coords(zoom, x, y)

        objects = load_tile(zoom, cx, cy, cache=self.cache)
        #objects.append(("#center", radec[0], radec[1], 1))
        projected = perform_star_projections(objects, self.projector, (az1, az2))

        return bounds, projected


    def get_constellation_lines(self, zoom, x, y):
        cx, cy, az1, az2, bounds, radec = self.get_coords(zoom, x, y)
        objects = load_line_tile(zoom, cx, cy, self.cache)
        projected = perform_line_projections(objects, self.projector, (az1, az2))

        return bounds, projected


    def get_labels(self, zoom, x, y):
        cx, cy, az1, az2, bounds, radec = self.get_coords(zoom, x, y)

        objects = load_label_tile(zoom, cx, cy, cache=self.cache)
        projected = perform_label_projections(objects, self.projector, (az1, az2))

        return bounds, projected


    def get_star(self, az, alt):
        radec = self.projector.unproject(AzAlt(az, alt))
        zoom = 6
        cx, cy = get_tile_coords(radec, zoom)
        objects = load_tile(zoom, cx, cy, cache=self.cache)
        nearest = None
        nearest_d = None
        for id, ra, dec, mag in objects:
            object_azalt = self.projector.project(RaDec(ra, dec))
            distance = threed_distance(AzAlt(az, alt), object_azalt)
            if (not nearest) or (nearest_d > distance):
                nearest = (id, object_azalt)
                nearest_d = distance

        return nearest