Have ideas to improve npm?Join in the discussion! »

    great-circle

    0.2.8 • Public • Published

    GreatCircle

    A set of three functions, useful in geographical calculations of different sorts. Available for PHP, Python, Javascript and Ruby.

    Live demo of the JavaScript implementation.

    Usage with node.js

    Install npm module great-circle

    npm install great-circle
    

    Usage in node.js or with browserify

    var GreatCircle = require('great-circle')

    Distance

    Takes two sets of geographic coordinates in decimal degrees and produces distance along the great circle line. Output in kilometers by default.

    PHP:

    // Distance from London to Paris
    echo GreatCircle::distance(51.507222, -0.1275, 48.8567, 2.3508);
    // Output: 343.46748684413

    Python:

    print( GreatCircle.distance(51.507222-0.127548.85672.3508) )

    JavaScript:

    document.write ( GreatCircle.distance(51.507222, -0.1275, 48.8567, 2.3508) );

    Ruby

    puts GreatCircle.distance(51.507222, -0.1275, 48.8567, 2.3508)

    Optional fifth argument allows to specify desired units:

    • M - meters
    • KM - kilometers
    • MI - miles
    • NM - nautical miles
    • YD - yards
    • FT - feet
    // Distance from JFK airport to La Guardia airport in feet
    echo GreatCircle::distance(40.63980103, -73.77890015, 40.77719879, -73.87259674, "FT");
    // Output: 56425.612628758

    The optional argument can also be passed in form of planet radius in any unit, to produce output in this unit.

    // Distance between North and South poles on Mars (3389.5 is mean radius of Mars in kilometers)
    echo GreatCircle::distance(90, 0, -90, 0, 3389.5);
    // Output: 10648.428299343
    // Distance between Moscow and New York in furlongs (31670.092 is Earth radius in furlongs)
    echo GreatCircle::distance(55.75, 37.616667, 40.7127, -74.0059, 31670.092);
    // Output: 37335.295755141

    Bearing

    Takes two sets of geographic coordinates in decimal degrees and produces bearing (azimuth) from the first set of coordinates to the second set.

    // Bearing from Paris to London in decimal degrees
    echo GreatCircle::bearing(48.8567, 2.3508, 51.507222, -0.1275);
    // Output: 330.03509575101

    Destination

    Takes one set of geographic coordinates in decimal degrees, azimuth and distance to produce a new set of coordinates, specified distance and bearing away from original.

    // Coordinates of a location 100 KM away from Paris, traveling in the direction of London
    $dest = GreatCircle::destination(48.8567, 2.3508, 330.035, 100);
    printf("Latitude: %f, Longitude: %f", $dest["LAT"], $dest["LON"]);
    // Output: Latitude: 49.633753, Longitude: 1.657274

    Just like Distance, Destination assumes entered distance is in kilometers, but takes an optional argument to specify desired unit.

    // Coordinates of a location 500 nautical miles away from Paris, traveling in the direction of New York
    $brg = GreatCircle::bearing(48.8567, 2.3508, 40.7127, -74.0059);
    $dest = GreatCircle::destination(48.8567, 2.3508, $brg, 500, "NM");
    printf("Latitude: %f, Longitude: %f", $dest["LAT"], $dest["LON"]);
    // Output: Latitude: 51.306719, Longitude: -10.071875

    Install

    npm i great-circle

    DownloadsWeekly Downloads

    78

    Version

    0.2.8

    License

    MIT

    Last publish

    Collaborators

    • avatar