How to get Geolocation in Python?

Geolocation services in Python are essential for mapping applications and location-based features. The geopy library is the most popular tool for geocoding (converting addresses to coordinates) and reverse geocoding (converting coordinates to addresses).

Installation

First, install the geopy library using pip ?

pip install geopy

Basic Setup

Import the required modules from geopy ?

from geopy.geocoders import Nominatim
from geopy.point import Point

# Create a geolocator object with a user agent
geolocator = Nominatim(user_agent="my_geolocation_app")

Method 1: Get Coordinates from Address (Geocoding)

Convert a place name or address into latitude and longitude coordinates ?

from geopy.geocoders import Nominatim

# Initialize the geolocator
geolocator = Nominatim(user_agent="my_app")

# Geocode an address
location = geolocator.geocode("Times Square, New York")

if location:
    print("Address:", location.address)
    print("Latitude:", location.latitude)
    print("Longitude:", location.longitude)
else:
    print("Location not found")
Address: Times Square, Theater District, Manhattan, New York County, New York, 10036, United States
Latitude: 40.7589
Longitude: -73.9851

Method 2: Get Address from Coordinates (Reverse Geocoding)

Convert latitude and longitude coordinates back into a readable address ?

from geopy.geocoders import Nominatim

# Initialize the geolocator
geolocator = Nominatim(user_agent="my_app")

# Reverse geocode coordinates
coordinates = "40.7589, -73.9851"
location = geolocator.reverse(coordinates)

if location:
    print("Address:", location.address)
    print("Coordinates:", location.latitude, location.longitude)
else:
    print("Address not found for these coordinates")
Address: 1, Times Square, Theater District, Manhattan, New York County, New York, 10036, United States
Coordinates: 40.7589 -73.9851

Complete Example with Error Handling

A robust implementation that handles potential errors ?

from geopy.geocoders import Nominatim
from geopy.exc import GeocoderTimedOut

def get_location_info(place_name):
    try:
        geolocator = Nominatim(user_agent="location_finder")
        location = geolocator.geocode(place_name, timeout=10)
        
        if location:
            return {
                'address': location.address,
                'latitude': location.latitude,
                'longitude': location.longitude
            }
        else:
            return None
    except GeocoderTimedOut:
        return "Geocoding service timed out"

# Test the function
result = get_location_info("Eiffel Tower, Paris")
if result:
    print("Location found:")
    print(f"Address: {result['address']}")
    print(f"Coordinates: {result['latitude']}, {result['longitude']}")
Location found:
Address: Tour Eiffel, Avenue Gustave Eiffel, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France
Coordinates: 48.8582441, 2.2944813

Key Features

Feature Method Use Case
Geocoding geocode() Address ? Coordinates
Reverse Geocoding reverse() Coordinates ? Address
Distance Calculation distance() Calculate distance between points

Conclusion

The geopy library provides an easy way to work with geolocation data in Python. Use geocode() to convert addresses to coordinates and reverse() to convert coordinates back to addresses. Always include error handling for production applications.

Updated on: 2026-03-27T09:29:35+05:30

8K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements