📝 Bronze Bovine Blog

Explaining PHP Haversine Distance Calculation

Purpose:

The provided PHP code calculates the haversine distance between two sets of latitude and longitude coordinates. The haversine formula is commonly used to measure the shortest distance between two points on the surface of a sphere, which is particularly useful in geospatial applications. In this case, the calculated distance is initially in feet and can be converted to miles by dividing the result by 5280.

Use Cases:

  1. Geolocation Services:

    • This code can be employed in geolocation services to determine the distance between a user's current location and a set of predefined points of interest. For instance, it can be used to find nearby restaurants, hotels, or other attractions.
  2. Distance-based Filtering:

    • E-commerce platforms can utilize this code to filter products or services based on the proximity of a user to available sellers or physical stores. This allows users to find options that are closer to their location.
  3. Route Optimization:

    • Delivery services and logistics companies can integrate this code into their systems to optimize routes. By calculating distances between multiple delivery points, the most efficient delivery sequence can be determined.
  4. Location-based Notifications:

    • Mobile applications can use this code to send location-based notifications. For example, users could receive alerts when they are within a certain distance of a specified location.
  5. Fitness and Activity Tracking:

    • Fitness apps can employ this code to measure the distance covered during outdoor activities like walking, running, or cycling. It helps users track their workout progress accurately.
  6. Event Planning:

    • Event management systems can utilize this code to provide attendees with information about the distance between event venues, hotels, and other relevant locations.

How to Use:

To calculate the haversine distance, call the haversine_distance function and provide the latitude and longitude coordinates of the two points. The result will be the distance in feet. If needed, you can convert the distance to miles by dividing it by 5280.

By understanding this code, developers can enhance location-aware applications and services, providing users with more accurate and relevant information based on geographical proximity.

<?php

// Calculate the distance in feet between two latitude and longitude coordinates (in decimal format)
// Divide the returned value by 5280 to get the distance in miles

function haversine_distance($lat1, $lon1, $lat2, $lon2) {
    // Earth's radius in feet
    $earth_radius = 20902231.98;

    // Convert degrees to radians
    $lat1 = deg2rad($lat1);
    $lon1 = deg2rad($lon1);
    $lat2 = deg2rad($lat2);
    $lon2 = deg2rad($lon2);

    // Calculate differences in latitude and longitude
    $dlat = $lat2 - $lat1;
    $dlon = $lon2 - $lon1;

    // Calculate haversine of half angles
    $hav_lat = sin($dlat / 2) * sin($dlat / 2);
    $hav_lon = sin($dlon / 2) * sin($dlon / 2);

    // Calculate haversine of central angle
    $hav_cen = 2 * asin(sqrt($hav_lat + cos($lat1) * cos($lat2) * $hav_lon));

    // Calculate distance using haversine formula
    $distance = $earth_radius * $hav_cen;

    return $distance;
}