def keyPressEvent(self, event): """ Handle key press events - '-' to zoom out - '+'/'=' to zoom in - 'n' to use next map provider - 'p' to use previous map provider - 'r' to refresh map - 'q' to quit """ key = event.key() if key == QtCore.Qt.Key_Minus: self.map.zoom -= 1 self.refresh_map.set() elif key == QtCore.Qt.Key_Plus or key == QtCore.Qt.Key_Equal: self.map.zoom += 1 self.refresh_map.set() elif key == QtCore.Qt.Key_Q: loop.stop() elif key == QtCore.Qt.Key_N: self.providers.rotate(-1) p = self.providers[0] self.map.provider = geotiler.find_provider(p) self.refresh_map.set() elif key == QtCore.Qt.Key_P: self.providers.rotate(1) p = self.providers[0] self.map.provider = geotiler.find_provider(p) self.refresh_map.set() elif key == QtCore.Qt.Key_R: self.refresh_map.set()
# bind Qt application with Python asyncio loop app = QApplication(sys.argv) loop = QEventLoop(app) asyncio.set_event_loop(loop) g = app.desktop().screenGeometry() size = g.width() + 256 * 2, g.height() + 256 * 2 pos = (0, 0) if len(sys.argv) == 3: pos = float(sys.argv[1]), float(sys.argv[2]) provider = geotiler.find_provider('osm') mm = geotiler.Map(size=size, center=pos, zoom=18, provider=provider) window = MapWindow(mm) window.show() queue = asyncio.Queue() t1 = read_gps(queue) t2 = locate(window, queue) t3 = refresh_map(window) task = asyncio.gather(t1, t2, t3) window.refresh_map.set() loop.run_until_complete(task) # vim: sw=4:et:ai
vec[loc] += 1 vec /= np.sum(vec) return {key:vec[val] for key, val in nbrhood_keys.items()} if __name__ == '__main__': polys, nbrhoods = GetPolysNbrhoods('../data/neighborhoods_Manhattan.geojson') nbrhood_keys = ReadKeys('../processed_data/taxi/neighborhood_keys.pkl') seqs = GetSeqs('../processed_data/taxi/manhattan-year-seqs.txt') bbox = GetBBox(polys) alpha_map = AlphaMap(seqs, nbrhood_keys) # Display the image fig = plt.figure() ax = fig.gca() toner = geotiler.find_provider('stamen-toner-lite') mm = geotiler.Map(extent=bbox, zoom=12, provider=toner) img = geotiler.render_map(mm) ax.imshow(img) ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) for poly, nbrhood in zip(polys, nbrhoods): coords = poly['coordinates'][0] poly['coordinates'][0] = [mm.rev_geocode(p) for p in coords] patch = PolygonPatch(poly, alpha=-1.0 / np.log(alpha_map[nbrhood])) ax.add_patch(patch) # Increase the dpi to save better quality figures. For some reason, # matplotlib cannot save the rendered map as a vectorized image. plt.savefig('taxi-distribution.png', dpi=200, bbox_inches='tight')