Modules@robinpath/geo
geo

@robinpath/geo

0.1.1Node.jsPublic

Geolocation utilities: distance, bearing, geocoding, bounding box, polygon containment, DMS conversion

Geo

Geolocation utilities: distance, bearing, geocoding, bounding box, polygon containment, DMS conversion

Package: @robinpath/geo | Category: Utility | Type: Utility

Authentication

No authentication required. All functions are available immediately.

Use Cases

Use the geo module when you need to:

  • Haversine distance between two points -- Use geo.distance to perform this operation
  • Bearing between two points -- Use geo.bearing to perform this operation
  • Midpoint between two coordinates -- Use geo.midpoint to perform this operation
  • Destination point given start, bearing, and distance -- Use geo.destination to perform this operation
  • Bounding box around a point -- Use geo.boundingBox to perform this operation

Quick Reference

FunctionDescriptionReturns
distanceHaversine distance between two pointsDistance
bearingBearing between two pointsBearing in degrees (0-360)
midpointMidpoint between two coordinates{lat, lon}
destinationDestination point given start, bearing, and distance{lat, lon}
boundingBoxBounding box around a point{north, south, east, west}
isInBoundingBoxCheck if point is inside bounding boxtrue if inside
toRadiansConvert degrees to radiansRadians
toDegreesConvert radians to degreesDegrees
toDMSConvert decimal degrees to DMS stringDMS string
fromDMSParse DMS string to decimal degreesDecimal degrees
geocodeForward geocode address to coordinates{lat, lon, displayName}
reverseGeocodeReverse geocode coordinates to address{address, displayName}
polygonCheck if point is inside polygontrue if inside
areaCalculate polygon area in sq kmArea in square km

Functions

distance

Haversine distance between two points

Module: geo | Returns: number -- Distance

geo.distance 40.7128 -74.0060 51.5074 -0.1278
ParameterTypeRequiredDescription
lat1numberYesLatitude 1
lon1numberYesLongitude 1
lat2numberYesLatitude 2
lon2numberYesLongitude 2
unitstringNokm

bearing

Bearing between two points

Module: geo | Returns: number -- Bearing in degrees (0-360)

geo.bearing 40.7128 -74.0060 51.5074 -0.1278
ParameterTypeRequiredDescription
lat1numberYesLatitude 1
lon1numberYesLongitude 1
lat2numberYesLatitude 2
lon2numberYesLongitude 2

midpoint

Midpoint between two coordinates

Module: geo | Returns: object -- {lat, lon}

geo.midpoint 40.7128 -74.0060 51.5074 -0.1278
ParameterTypeRequiredDescription
lat1numberYesLatitude 1
lon1numberYesLongitude 1
lat2numberYesLatitude 2
lon2numberYesLongitude 2

destination

Destination point given start, bearing, and distance

Module: geo | Returns: object -- {lat, lon}

geo.destination 40.7128 -74.0060 45 100
ParameterTypeRequiredDescription
latnumberYesStart latitude
lonnumberYesStart longitude
bearingnumberYesBearing in degrees
distancenumberYesDistance
unitstringNokm

boundingBox

Bounding box around a point

Module: geo | Returns: object -- {north, south, east, west}

geo.boundingBox 40.7128 -74.0060 10
ParameterTypeRequiredDescription
latnumberYesCenter latitude
lonnumberYesCenter longitude
radiusnumberYesRadius
unitstringNokm

isInBoundingBox

Check if point is inside bounding box

Module: geo | Returns: boolean -- true if inside

geo.isInBoundingBox 40.7128 -74.0060 $bbox
ParameterTypeRequiredDescription
latnumberYesLatitude
lonnumberYesLongitude
bboxobjectYes{north, south, east, west}

toRadians

Convert degrees to radians

Module: geo | Returns: number -- Radians

geo.toRadians 180
ParameterTypeRequiredDescription
degreesnumberYesDegrees

toDegrees

Convert radians to degrees

Module: geo | Returns: number -- Degrees

geo.toDegrees 3.14159
ParameterTypeRequiredDescription
radiansnumberYesRadians

toDMS

Convert decimal degrees to DMS string

Module: geo | Returns: string -- DMS string

geo.toDMS 40.7128 "lat"
ParameterTypeRequiredDescription
decimalnumberYesDecimal degrees
typestringNolat or lon

fromDMS

Parse DMS string to decimal degrees

Module: geo | Returns: number -- Decimal degrees

geo.fromDMS "40° 42' 46\" N"
ParameterTypeRequiredDescription
dmsstringYesDMS string

geocode

Forward geocode address to coordinates

Module: geo | Returns: object -- {lat, lon, displayName}

geo.geocode "New York, NY"
ParameterTypeRequiredDescription
addressstringYesAddress string

reverseGeocode

Reverse geocode coordinates to address

Module: geo | Returns: object -- {address, displayName}

geo.reverseGeocode 40.7128 -74.0060
ParameterTypeRequiredDescription
latnumberYesLatitude
lonnumberYesLongitude

polygon

Check if point is inside polygon

Module: geo | Returns: boolean -- true if inside

geo.polygon 40.7 -74.0 [[40.6,-74.1],[40.8,-74.1],[40.8,-73.9],[40.6,-73.9]]
ParameterTypeRequiredDescription
latnumberYesLatitude
lonnumberYesLongitude
polygonarrayYesArray of [lat, lon] vertices

area

Calculate polygon area in sq km

Module: geo | Returns: number -- Area in square km

geo.area [[40.6,-74.1],[40.8,-74.1],[40.8,-73.9],[40.6,-73.9]]
ParameterTypeRequiredDescription
polygonarrayYesArray of [lat, lon] vertices

Error Handling

All functions throw on failure. Common errors:

ErrorCause
(standard errors)Check function parameters and authentication
@desc "Distance and validate result"
do
  set $result as geo.distance 40.7128 -74.0060 51.5074 -0.1278
  if $result != null
    print "Success"
  else
    print "No result"
  end
enddo

Recipes

1. Multi-step Geo workflow

Chain multiple geo operations together.

@desc "Distance, bearing, and more"
do
  set $r_distance as geo.distance 40.7128 -74.0060 51.5074 -0.1278
  set $r_bearing as geo.bearing 40.7128 -74.0060 51.5074 -0.1278
  set $r_midpoint as geo.midpoint 40.7128 -74.0060 51.5074 -0.1278
  print "All operations complete"
enddo

2. Safe distance with validation

Check results before proceeding.

@desc "Distance and validate result"
do
  set $result as geo.distance 40.7128 -74.0060 51.5074 -0.1278
  if $result != null
    print "Success: " + $result
  else
    print "Operation returned no data"
  end
enddo

Related Modules

  • json -- JSON module for complementary functionality

Versions (1)

VersionTagPublished
0.1.1latest1 months ago
Install
$ robinpath add @robinpath/geo

Collaborators

Dumitru Balaban
Dumitru Balaban
@dumitru
View all @robinpath modules
Version0.1.1
LicenseMIT
Unpacked Size5.8 KB
Versions1
Weekly Downloads26
Total Downloads26
Stars0
Last Publish1 months ago
Created1 months ago

Keywords

Category

utilities