package geo

import "github.com/paulmach/orb/geo"

Package geo computes properties on geometries assuming they are lon/lat data.

Index

Examples

Functions

func Area

func Area(g orb.Geometry) float64

Area returns the area of the geometry on the earth.

Example

Code:play 

package main

import (
	"fmt"

	"github.com/paulmach/orb"
	"github.com/paulmach/orb/geo"
)

func main() {
	poly := orb.Polygon{
		{
			{-122.4163816, 37.7792782},
			{-122.4162786, 37.7787626},
			{-122.4151027, 37.7789118},
			{-122.4152143, 37.7794274},
			{-122.4163816, 37.7792782},
		},
	}
	a := geo.Area(poly)

	fmt.Printf("%f m^2", a)
}

Output:

6073.368008 m^2

func Bearing

func Bearing(from, to orb.Point) float64

Bearing computes the direction one must start traveling on earth to be heading from, to the given points.

func BoundHeight

func BoundHeight(b orb.Bound) float64

BoundHeight returns the approximate height in meters.

func BoundPad

func BoundPad(b orb.Bound, meters float64) orb.Bound

BoundPad expands the bound in all directions by the given amount of meters.

func BoundWidth

func BoundWidth(b orb.Bound) float64

BoundWidth returns the approximate width in meters of the center of the bound.

func Distance

func Distance(p1, p2 orb.Point) float64

Distance returns the distance between two points on the earth.

Example

Code:play 

package main

import (
	"fmt"

	"github.com/paulmach/orb"
	"github.com/paulmach/orb/geo"
)

func main() {
	oakland := orb.Point{-122.270833, 37.804444}
	sf := orb.Point{-122.416667, 37.783333}

	d := geo.Distance(oakland, sf)

	fmt.Printf("%0.3f meters", d)
}

Output:

13042.047 meters

func DistanceHaversine

func DistanceHaversine(p1, p2 orb.Point) float64

DistanceHaversine computes the distance on the earth using the more accurate haversine formula.

func Length

func Length(g orb.Geometry) float64

Length returns the length of the boundary of the geometry using the geo distance function.

Example

Code:play 

package main

import (
	"fmt"

	"github.com/paulmach/orb"
	"github.com/paulmach/orb/geo"
)

func main() {

	poly := orb.Polygon{
		{
			{-122.4163816, 37.7792782},
			{-122.4162786, 37.7787626},
			{-122.4151027, 37.7789118},
			{-122.4152143, 37.7794274},
			{-122.4163816, 37.7792782},
		},
	}
	l := geo.Length(poly)

	fmt.Printf("%0.0f meters", l)
}

Output:

325 meters

func LengthHaversign

func LengthHaversign(g orb.Geometry) float64

LengthHaversign returns the length of the boundary of the geometry using the geo haversine formula

Deprecated: misspelled, use correctly spelled `LengthHaversine` instead.

func LengthHaversine

func LengthHaversine(g orb.Geometry) float64

LengthHaversine returns the length of the boundary of the geometry using the geo haversine formula

func Midpoint

func Midpoint(p, p2 orb.Point) orb.Point

Midpoint returns the half-way point along a great circle path between the two points.

func NewBoundAroundPoint

func NewBoundAroundPoint(center orb.Point, distance float64) orb.Bound

NewBoundAroundPoint creates a new bound given a center point, and a distance from the center point in meters.

func PointAtBearingAndDistance

func PointAtBearingAndDistance(p orb.Point, bearing, distance float64) orb.Point

PointAtBearingAndDistance returns the point at the given bearing and distance in meters from the point

func PointAtDistanceAlongLine

func PointAtDistanceAlongLine(ls orb.LineString, distance float64) (orb.Point, float64)

func SignedArea

func SignedArea(r orb.Ring) float64

SignedArea will return the signed area of the ring. Will return negative if the ring is in the clockwise direction. Will implicitly close the ring.

Source Files

area.go bound.go distance.go length.go

Version
v0.11.1 (latest)
Published
Jan 29, 2024
Platform
js/wasm
Imports
4 packages
Last checked
1 day ago

Tools for package owners.