# Plan de circulation d'après des données geojson # Python 3.5.3 / pip 9.0.1 / geojson 2.5.0 / staticmap 0.5.5 # Debian 9.5 @ kirin / 20210531 import geojson from staticmap import StaticMap, CircleMarker, Line m = StaticMap(3390, 2362, url_template='http://a.tile.stamen.com/toner-lite/{z}/{x}/{y}.png') with open("./quimper.geojson") as f: data = geojson.load(f) points = {} # créer un dictionnaire contenant les points for feature in data['features']: nom = feature['properties']['name'] lon = feature['geometry']['coordinates'][0] lat = feature['geometry']['coordinates'][1] points[nom] = [lon, lat] # placer le point dans le dictionnaire # Les chemins relient les points chemins = [ [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7] ] # Tracer les contours de marqueurs et de chemins for key, value in points.items(): marker_outline = CircleMarker((value[0], value[1]), 'white', 42) m.add_marker(marker_outline) for chemin in chemins: if chemin[0] == int(key) or chemin[1] == int(key): point1 = str(chemin[0]) point2 = str(chemin[1]) coordinates = [points[point1], points[point2]] line_outline = Line(coordinates, 'white', 24) m.add_line(line_outline) # Tracer les chemins for key, value in points.items(): for chemin in chemins: if chemin[0] == int(key) or chemin[1] == int(key): point1 = str(chemin[0]) point2 = str(chemin[1]) coordinates = [points[point1], points[point2]] line = Line(coordinates, '#0036FF', 12) m.add_line(line) # Tracer les marqueurs for key, value in points.items(): marker = CircleMarker((value[0], value[1]), '#0036FF', 24) m.add_marker(marker) image = m.render(zoom=16) image.save('fond_de_carte_quimper.png')