window.clear() polys.draw() paths.draw() Albers = ConicEqualArea(scale=2 * 1285, parallels=(29.5, 45.5), rotate=(96, 0), translate=(0, 0), center=(0.38, -0.41)) transform = PanZoom(OrthographicProjection(Albers(Position()), aspect=1)) paths = PathCollection("agg+", transform=transform, linewidth='shared', color="shared") polys = PolygonCollection("raw", transform=transform, color="shared") with open(data.get("us.json"), 'r') as file: topology = json.load(file) scale = topology['transform']['scale'] translate = topology['transform']['translate'] arcs = topology["arcs"] linewidth = 2.5 color = 0.0, 0.0, 0.0, 1.0 land = topology["objects"]["land"] for coords in geometry(land, arcs, scale, translate)["coordinates"]: for path in coords: V = np.zeros((len(path), 3)) V[:, :2] = np.array(path)
gl.glEnable(gl.GL_DEPTH_TEST) @window.event def on_key_press(key, modifiers): if key == app.window.key.SPACE: transform.reset() transform = PanZoom(OrthographicProjection(Position(), yinvert=True), aspect=None) paths = PathCollection("agg+", transform=transform, linewidth='shared', color="shared") polygons = PolygonCollection("agg", transform=transform) z = 0 for path in tiger.paths: for vertices, closed in path.vertices: if len(vertices) < 3: continue if path.style.stroke is not None: vertices[:, 2] = z + 0.5 if path.style.stroke_width: stroke_width = path.style.stroke_width.value else: stroke_width = 2.0 paths.append(vertices, closed=closed, color=path.style.stroke.rgba,
@window.event def on_mouse_release(x, y, button): global P if len(paths) > 0: del paths[0] if len(polys) > 0: del polys[0] if len(P): paths.append(np.array(P), closed=True) polys.append(np.array(P)) @window.event def on_mouse_drag(x, y, dx, dy, button): global P P.append((x, window.height - y, 0)) if len(paths) > 0: del paths[0] paths.append(np.array(P), closed=False) transform = OrthographicProjection(Position()) paths = PathCollection(mode="agg", transform=transform) polys = PolygonCollection(mode="agg", transform=transform, color="global") paths["linewidth"] = 1.0 paths["color"] = 0.0, 0.0, 0.0, 1.00 polys["color"] = 0.0, 0.0, 0.0, 0.10 window.attach(paths["transform"]) window.attach(paths["viewport"]) app.run()