def _draw_geo_rect(self, rect_geo, view_offset, painter): x0,y0 = view_offset sw_geo = rect_geo.topLeft() ne_geo = rect_geo.bottomRight() sw_xy = gps.mercator.gps2xy(gps.gpspos(sw_geo.x()/1e7, sw_geo.y()/1e7), self.zoom) ne_xy = gps.mercator.gps2xy(gps.gpspos(ne_geo.x()/1e7, ne_geo.y()/1e7), self.zoom) painter.drawRect(QtCore.QRectF(QtCore.QPointF(sw_xy[0]+x0, ne_xy[1]+y0), QtCore.QPointF(ne_xy[0]+x0, sw_xy[1]+y0)))
def process_raw_edges(edges): 'Vrati zoznam hran a najmensi stvorec obsahujuci vsetky hrany.' d = [] for e in edges: s = e[0] t = e[1] s_gps = gps.gpspos(s[0]/float(1e5), s[1]/float(1e5)) t_gps = gps.gpspos(t[0]/float(1e5), t[1]/float(1e5)) if s_gps.is_valid() and t_gps.is_valid(): d.append((s_gps, t_gps)) return d
def _draw_geo_rect(self, rect_geo, view_offset, painter): x0,y0 = view_offset sw_geo = rect_geo.bottomLeft() ne_geo = rect_geo.topRight() sw_xy = gps.mercator.gps2xy(gps.gpspos(sw_geo.x(), sw_geo.y()), self.zoom) ne_xy = gps.mercator.gps2xy(gps.gpspos(ne_geo.x(), ne_geo.y()), self.zoom) painter.drawRect(QtCore.QRectF(QtCore.QPointF(sw_xy[0]+x0, ne_xy[1]+y0), QtCore.QPoint(ne_xy[0]+x0, sw_xy[1]+y0))) bounds_geo = QtCore.QRectF(ne_geo, sw_geo) center_geo = bounds_geo.center() center_xy = self._geo_point_to_xy_drawable_point(center_geo, view_offset) painter.drawEllipse(center_xy, 5, 5)
def paint(self, painter, view_offset): t = time.clock() if drawable_settings['graph']: old_pen = painter.pen() painter.setPen(QtCore.Qt.black) self.paint_edges(self.drawable_fwd, self.qtree_fwd, view_offset, painter, 'forward') painter.setPen(QtCore.Qt.gray) self.paint_edges(self.drawable_bwd, self.qtree_bwd, view_offset, painter, 'backward') painter.setPen(self.pen_avoids) self.paint_edges(self.drawable_avoids, self.qtree_avoids, view_offset, painter, 'avoids') painter.setPen(self.pen_path) self.paint_edges(self.drawable_path, self.qtree_path, view_offset, painter, 'path') painter.setPen(old_pen) print 'view_offset: %d, %d' % view_offset view_geo = self.view_geo_rect(view_offset, self.zoom) center_geo = view_geo.center() center_xy = gps.mercator.gps2xy( gps.gpspos(center_geo.x(), center_geo.y()), self.zoom) print 'view_offset center (from geo view): %d, %d' % center_xy data_geo = self.forward[1] data_cen_geo = data_geo.center() data_cen_xy = gps.mercator.gps2xy( gps.gpspos(data_cen_geo.x(), data_cen_geo.y()), self.zoom) print 'data-geo: %g, %g, %g, %g' % ( data_geo.bottomRight().x(), data_geo.bottomLeft().y(), data_geo.topLeft().x(), data_geo.topRight().y()) print 'data-geo center: %g, %g' % (data_cen_geo.x(), data_cen_geo.y()) print 'data center: %d, %d' % data_cen_xy self._draw_geo_rect(self.forward[1], view_offset, painter) dt = time.clock() - t self.debug(' #edge_layer.paint(): %f s' % (dt, ))
def process_raw_edges(edges): d = [] r = QtCore.QRectF(0, 0, 0, 0) for e in edges: s = e[0] t = e[1] cost = e[2] s_gps = gps.gpspos(s[0]/float(1e5), s[1]/float(1e5)) t_gps = gps.gpspos(t[0]/float(1e5), t[1]/float(1e5)) if s_gps.is_valid() and t_gps.is_valid(): d.append((s_gps, t_gps, cost)) r = r.unite(to_rect(s_gps, t_gps)) else: print('edge ignored') # zvecsim ju o 10%, aby do nej padli vsetky body r.adjust(-r.width()/20.0, -r.height()/20.0, r.width()/20.0, r.height()/20.0) return (d, r)
def to_drawable_mark(vprop, zoom): vpos = [vprop.position.lat/float(1e7), vprop.position.lon/float(1e7)] vpos_xy = gps.mercator.gps2xy(gps.gpspos(vpos[0], vpos[1]), zoom) return drawable_mark(vpos_xy, 5)
def to_drawable_edge(vprop, wprop, zoom): vpos = [vprop.position.lat/float(1e7), vprop.position.lon/float(1e7)] wpos = [wprop.position.lat/float(1e7), wprop.position.lon/float(1e7)] vpos_xy = gps.mercator.gps2xy(gps.gpspos(vpos[0], vpos[1]), zoom) wpos_xy = gps.mercator.gps2xy(gps.gpspos(wpos[0], wpos[1]), zoom) return drawable_edge(vpos_xy, wpos_xy);
def _graph_gps_bounds(self): b = self._graph_bounds() sw = gps.gpspos(b.sw.lat/float(1e7), b.sw.lon/float(1e7)) ne = gps.gpspos(b.ne.lat/float(1e7), b.ne.lon/float(1e7)) assert valid_bounds(b), 'invalid bounds' return gps.georect(sw, ne)
def to_xy_drawable(coord_geo, view_offset, zoom): p = coord_geo x0,y0 = view_offset p_xy = gps.mercator.gps2xy(gps.gpspos(p[0], p[1]), zoom) return (p_xy[0]+x0, p_xy[1]+y0)
def qrect_to_grect(qrect): 'skonvertuje qtrect na gps.georect' r = qrect sw = r.topLeft() ne = r.bottomRight() return gps.georect(gps.gpspos(sw.x(), sw.y()), gps.gpspos(ne.x(), ne.y()))
def prepare_drawable_data(self): self.drawable = [drawable_stop(gps.mercator.gps2xy( gps.gpspos(stop[0], stop[1]), self.zoom)) for stop in self.stops]
def _geo_point_to_xy_drawable_point(self, point_geo, view_offset): p = point_geo x0,y0 = view_offset p_xy = gps.mercator.gps2xy(gps.gpspos(p.x(), p.y()), self.zoom) return QtCore.QPointF(p_xy[0]+x0, p_xy[1]+y0)