import folium # Koordinaten für den Kartenmittelpunkt latitude = 48.2082 longitude = 16.3738 # Karte erstellen map_osm = folium.Map(location=[latitude, longitude], zoom_start=12) # Marker hinzufügen folium.Marker([latitude, longitude], popup='Wien').add_to(map_osm) # Karte anzeigen map_osm.save('map.html')
import folium import overpy # Koordinaten für den Kartenmittelpunkt latitude = 48.2082 longitude = 16.3738 # Overpass API-Abfrage erstellen api = overpy.Overpass() # Overpass API-Abfrage ausführen result = api.query(f'node(around:2000, {latitude}, {longitude})["highway"];out;') # Karte erstellen map_osm = folium.Map(location=[latitude, longitude], zoom_start=14) # Straßennamen hinzufügen for node in result.nodes: if 'name' in node.tags: folium.Marker([node.lat, node.lon], popup=node.tags['name']).add_to(map_osm) # Karte anzeigen map_osm.save('map.html')
import requests # Overpass API-Abfrage für Straßen in Wien overpass_url = "http://overpass-api.de/api/interpreter" query = ''' [out:xml]; area["name"="Wien"]->.a; way(area.a)["highway"]; out; ''' response = requests.get(overpass_url, params={'data': query}) # Daten lokal speichern with open('wien_streets.osm', 'wb') as file: file.write(response.content)
import folium import xml.etree.ElementTree as ET # XML-Daten laden tree = ET.parse('wien_streets.osm') root = tree.getroot() # Koordinaten für den Kartenmittelpunkt latitude = 48.2082 longitude = 16.3738 # Karte erstellen map_osm = folium.Map(location=[latitude, longitude], zoom_start=14) # Straßennamen hinzufügen for way in root.findall(".//way"): street_name = None coords = [] for tag in way.findall(".//tag"): if tag.get('k') == 'name': street_name = tag.get('v') break if street_name: for nd in way.findall(".//nd"): ref = nd.get('ref') node = root.find(f".//node[@id='{ref}']") if node is not None: lat = float(node.get('lat')) lon = float(node.get('lon')) coords.append([lat, lon]) if coords: folium.PolyLine(coords, color="blue", weight=2, popup=street_name).add_to(map_osm) # Karte anzeigen map_osm.save('map.html')