Beispiel #1
0
    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()
Beispiel #2
0
    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()
Beispiel #3
0


# 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')