Geokodning med Geopy i Python

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

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close

Meta