GOPHERSPACE.DE - P H O X Y
gophering on hngopher.com
HN Gopher Feed (2017-07-07) - page 1 of 10
 
___________________________________________________________________
Show HN: Globe visualizations in Golang
182 points by mmcloughlin
https://github.com/mmcloughlin/globe
___________________________________________________________________
 
warent - 8 hours ago
It's always nice seeing unique projects in Golang appear like this.
Also worth noting that this includes the ability to upload directly
to imgur via the github.com/mattn/imgur tool. Once thing that I
particularly love about Go is the built-in testing suite which
mmcloughlin makes good use of.The only critique I have here is to
see some benchmarks! :)
 
  mmcloughlin - 8 hours ago
  Thanks! I was really glad to find that imgur tool. I wanted to
  make sure the images in the README were kept in sync with the
  code.Also credit has to go to https://github.com/tidwall/pinhole
  where all the actual rendering happens!
 
  deckarep - 8 hours ago
  Hence the power of open source.
 
ivanbakel - 8 hours ago
The map in the readme is puzzling me. It's almost like a riddle:
what is there a lot of in the UK, east America, Portugal, and
barely any of in Norway, Spain, and Belgium? It looks country-
related, since you can see the borders defined pretty well. Is it
the Starbucks data? It would explain why Finland appears to have a
few, compared to its neighbours.
 
  filleokus - 8 hours ago
  Probably not Starbucks, way to many mapped in Sweden. Starbucks
  is not that widely spread here.
 
    mmcloughlin - 8 hours ago
    Yes the top image in the README is cities. The Starbucks image
    is lower down in their distinctive green color.
 
  ucarion - 8 hours ago
  There's a cities.go file in the examples, maybe it's that? But
  the relevant cities.json is not in this repo.
 
  mbel - 8 hours ago
  Judging by used color, the picture might be a result of this
  demo:
  https://github.com/mmcloughlin/globe/blob/master/examples/ci...I
  have no idea what kind of cities might be listed in
  'cities.json'.
 
    mmcloughlin - 8 hours ago
    Yes, the first image in the README is from cities.go. The data
    file is too big so I didn't include it in the repo, but the
    Makefile will fetch it.https://github.com/mmcloughlin/globe/blo
    b/master/examples/Ma...It came from this node
    packagehttps://www.npmjs.com/package/cities.json/It looks like
    the dataset has more cities in some countries than others.
 
elcapitan - 7 hours ago
Looks great!Was there a particular reason why you chose Go to
implement this? (strong side of the language or sth like that)
 
  mmcloughlin - 6 hours ago
  Thanks!I guess I wanted to use it to visualize data coming from
  other Go projects I was working on, so it made sense. A tiny
  example of this is https://github.com/mmcloughlin/spherand which
  correctly generates random points on a sphere. I also had seen
  pinhole (https://github.com/tidwall/pinhole) and thought it would
  be fun to play around with.
 
goblin89 - 7 hours ago
Does anyone know why isn?t it possible to get the same perspective
(preserving scale, distances, areas) in Google Earth Web?For
example, you wouldn?t be able to get the shapes of continents along
with the size of the whole globe in Google Earth visually match the
projection under ?line? example in README.[0]
https://earth.google.com/web/@54.45747286,-25.48168721,-8084...
 
Scirra_Tom - 7 hours ago
This looks really cool!  One comment, in this picture:
https://camo.githubusercontent.com/16434461a69346de4ee07b950...The
left and right side of the rectangle are correctly bent around the
shape of the globe.  However, the top and bottom sides of the
rectangle are not.  Is this intention (or am I being stupid?)
 
  panic - 7 hours ago
  The red lines are the shortest paths between the corners of the
  rectangle, not lines of constant latitude (which would follow the
  latitude lines drawn on the globe).
 
fogleman - 7 hours ago
Glad to see more graphics work being done in Go. This is built on
`pinhole`, which is built on `gg`, a 2D rendering library that I
wrote. How many layers deep can we get?
:)https://github.com/fogleman/gg
 
  shurcooL - 1 hours ago
  > How many layers deep can we get? :)Layers,
  visualized:https://godoc.org/github.com/mmcloughlin/globe?import-
  graph&...
 
  mmcloughlin - 6 hours ago
  Standing on the shoulders of giants :)gg and pinhole made this
  easy to write. The globe package really just deals with mapping
  (lat, lng) space to cartestian coordinates (and also includes
  some land/country datasets).
 
    tidwall - 4 hours ago
    Looks so good. The detail is just amazing!This may or may not
    be useful, but here's a Go package containing a bunch of city
    data. It might be a good fit for people using your
    project.https://github.com/tidwall/cities
 
      mmcloughlin - 2 hours ago
      Oh nice! Should have used this for the cities example herehtt
      ps://github.com/mmcloughlin/globe/blob/master/examples/ci...I
      n fact I might switch it, since the cities json file I used
      has some oddities.
 
    tidwall - 3 hours ago
    fwiw, I also created a javascript port of pinhole a few weeks
    back. https://github.com/tidwall/pinhole-js
 
  eternalban - 7 hours ago
  That looks great.
 
sxv - 5 hours ago
How possible / appropriate would it be to utilize this library to
create an interactive version similar to this example using d3:
https://www.jasondavies.com/maps/rotate/
 
  mmcloughlin - 2 hours ago
  Jason Davies has some beautiful maps!Interactive would be hard.
  It would be relatively simple to output an animated gif though,
  as the pinhole library does herehttps://github.com/tidwall/pinhol
  e/blob/master/examples/eart...I'm planning to add this feature.
 
newtem0 - 5 hours ago
I need to learn go
 
  kmicklas - 2 hours ago
  No you don't, it has no benefits relative to languages in its
  space of competition (Rust, D, various JVM/.NET languages,
  Haskell, ML, Nim, etc.).
 
    xyproto - 18 minutes ago
    Team friendlyness, simplicity, readability, tooling, native
    compilation, built in syntax for concurrency and really fast
    compilation times for large projects.
 
AYBABTME - 53 minutes ago
That's pretty cool! It would be nice if the API allowed writing to
io.Writer instead of taking filenames.