Jeg har allerede demonstreret forskellige muligheder for geokodning af geodata i form af by- eller placeringsnavne i R ved hjælp af API’er som den, der leveres af Open Street Map.
I dette indlæg vil jeg demonstrere muligheden for geokodning af placeringsnavne i Python ved hjælp af Geopy. Geopy er et Python-modul, der tillader geokodning af strenge ved at give adgang til forskellige geokodningstjenester.
Nedenfor importerer jeg Geopy (understøtter pip install-kommando) og bruger den til geokodning af en liste over bynavne ved hjælp af Nominatim-tjenesten. Dette er en service baseret på Open Street Map.
# importer Geopy import geopy # få en reference til Nominatim tjenesteobjekt service = geopy.Nominatim(user_agent = "myGeocoder") # geokode et bynavn ved hjælp af Nominatim (dvs. OSM)-tjenesten service.geocode("Berlin, Germany")
Location(Berlin, Deutschland, (52.5170365, 13.3888599, 0.0))
Funktionen geocode() returnerer en speciel datatype for typeplacering. Et placeringsobjekt har forskellige attributter:
# opretter et andet placeringsobjekt ved geokodning af Berlin bynavn i Tyskland ved hjælp af Nominatim-tjenesten locationObj = service.geocode("Berlin, Germany") # breddegrad print(locationObj.latitude) # længdegrad print(locationObj.longitude)
52.5170365 13.3888599
Ved at bruge disse bredde- og længdegradskoordinater kan man f.eks. placer en markør på et kort ved hjælp af Folium-modulet i Python, i kombination med Geopy:
# importer folium import folium # opret et basiskort centreret omkring Berlin mapObj = folium.Map(location = [locationObj.latitude,locationObj.longitude], zoom_start = 5) # opret markørobjekt til Berlin markerObj = folium.Marker(location = [locationObj.latitude,locationObj.longitude]) # tilføj markør til kort markerObj.add_to(mapObj) # vis kort mapObj
Industriingeniør som gerne beskæftiger sig med optimering, simulation og matematisk modellering i R, SQL, VBA og Python
Leave a Reply