Globe wireframe visualizations in Golang backed by pinhole.
Install globe
with
$ go get -u github.com/mmcloughlin/globe
Start with a blank globe with a graticule at 10 degree intervals.
g := globe.New()
g.DrawGraticule(10.0)
g.SavePNG("graticule.png", 400)
Add some land boundaries and center it on a point. Alternatively
DrawCountryBoundaries
will give you countries.
g := globe.New()
g.DrawGraticule(10.0)
g.DrawLandBoundaries()
g.CenterOn(51.453349, -2.588323)
g.SavePNG("land.png", 400)
Here's all the Starbucks locations.
shops, err := LoadCoffeeShops("./starbucks.json")
if err != nil {
log.Fatal(err)
}
green := color.NRGBA{0x00, 0x64, 0x3c, 192}
g := globe.New()
g.DrawGraticule(10.0)
for _, s := range shops {
g.DrawDot(s.Lat, s.Lng, 0.05, globe.Color(green))
}
g.CenterOn(40.645423, -73.903879)
err = g.SavePNG("starbucks.png", 400)
if err != nil {
log.Fatal(err)
}
You can also do lines along great circles.
g := globe.New()
g.DrawGraticule(10.0)
g.DrawLandBoundaries()
g.DrawLine(
51.453349, -2.588323,
40.645423, -73.903879,
globe.Color(color.NRGBA{255, 0, 0, 255}),
)
g.CenterOn(50.244440, -37.207949)
g.SavePNG("line.png", 400)
Also rectangles.
g := globe.New()
g.DrawGraticule(10.0)
g.DrawLandBoundaries()
g.DrawRect(
41.897209, 12.500285,
55.782693, 37.615993,
globe.Color(color.NRGBA{255, 0, 0, 255}),
)
g.CenterOn(48, 25)
g.SavePNG("rect.png", 400)
See examples and godoc for more.
globe
is available under the ISC License.