Not your typical map: “Where is all the poop on the moon?”

Ever wondered what the astronauts that landed on the moon did with their waste? Well, they ditched them on the moon itself.

It’s been nearly 50 years since the Apollo 11 moon landing. Neil Armstrong’s iconic footprint is still there, undisturbed; there’s no atmosphere, no wind on the moon to blow it away.

But the bigger human footprint on the moon is, arguably, the 96 bags of human waste left behind by the six Apollo missions that landed there.

Yes, our brave astronauts took dumps on their way to the moon, perhaps even on the moon, and they left behind their diapers in baggies, on humanity’s doorstep to the greater cosmos.

Just look at the big white bag right underneath the lunar lander:

💩💩

Apollo astronauts left their poop on the moon. We gotta go back for that shit. →

👨‍🚀 That’s not all what’s been left on the moon. If you were to land on the moon, you’d also find Hammers, Earplugs, Batteries, Camera Systems, etc. Check out the full Catalogue of Manmade Material on the Moon (PDF) (with coordinates) if you’re interested. The catalogue is from 2012, so SpaceIL’s crashed Beresheet Lander is not included on it.

what3words – The addressing system to uniquely identify locations using just three words

what3words is a really simple way to talk about location. We have divided the world into a grid of 3m x 3m squares and assigned each one a unique 3 word address. It means anyone can accurately find any location and share it more quickly, easily and with less ambiguity than any other system.

The service can be used via the free mobile app or online map. It can also be built into any other app, platform or website, with just a few lines of code.

For example, the torch of the Statue of Liberty is located at toned.melt.ship. This combination is unique, no other location across the globe has it. Easier to remember than WGS84 coordinates, and still very precise.

what3words Online Map →
what3words Website →
what3words: toned.melt.ship

GeoPuzzle

Oh I have a weak for this kind of puzzles, especially since it exposes the problem our maps have due to the Mercator Projection. Could spend all day with this.

In the Puzzle you need to drag the shape of the territory to the right place. Just like in childhood we collected pictures piece by piece, so here you can collect a country from regions or whole continents from countries!

Think of it as the the Mercator Puzzle I created a long time ago with a fixed assignment. Next to this selection of countries you can also puzzle with countries per continent or regions.

Furthermore they also provide quizzes:

In the Quiz you need find the country by flag, emblem or the capital. Did you know that Monaco and Indonesia have the same flags? And that the flags of the United States and Liberia differ only in the number of stars? So, these and other interesting things can be learned and remembered after brainstorming right now!

GeoPuzzle (Easy) →
GeoPuzzle (All Countries) →

🌍 If you’re new to mapping & projections, or have no clue why the Mercator projection is long overdue, this video from Vox sums it up quite nicely:

MySQL ST_Distance_Sphere Polyfill

One of the cool things about MySQL 5.7 is the fact that it sports a few spatial convenience functions (since 5.7.6), allowing one to do operations on geometric values.

One of those convenience functions is ST_Distance_Sphere, which allows one to calculate the (spherical) distance between two points.

Recently I was working an project where I needed said function, yet unfortunately they were running some version of MySQL 5.6 … on which ST_Distance_Sphere isn’t available.

Instead of requesting to upgrade the MySQL server, I decided to polyfill ST_Distance_Sphere instead. It’s really easy since it’s a function, and it basically is nothing more than the Haversine Formula which I, as a mapping aficionado, know how to juggle.

DELIMITER $$

DROP FUNCTION IF EXISTS `ST_Distance_Sphere`$$

CREATE FUNCTION `ST_Distance_Sphere` (point1 POINT, point2 POINT)

	RETURNS FLOAT
	no sql deterministic
	BEGIN
		declare R INTEGER DEFAULT 6371000;
		declare `φ1` float;
		declare `φ2` float;
		declare `Δφ` float;
		declare `Δλ` float;
		declare a float;
		declare c float;
		set `φ1` = radians(y(point1));
		set `φ2` = radians(y(point2));
		set `Δφ` = radians(y(point2) - y(point1));
		set `Δλ` = radians(x(point2) - x(point1));

		set a = sin(`Δφ` / 2) * sin(`Δφ` / 2) + cos(`φ1`) * cos(`φ2`) * sin(`Δλ` / 2) * sin(`Δλ` / 2);
		set c = 2 * atan2(sqrt(a), sqrt(1-a));

		return R * c;
	END$$

DELIMITER ;

Run the little snippet above on your server after having selected a database first. Once executed it’ll persistently be available (just like a Stored Procedure) for you to use. Usage is the same as if it were natively available:

SELECT ST_Distance_Sphere(
  POINT(-87.6770458, 41.9631174),
  POINT(-73.9898293, 40.7628267)
);

// ~> 1148978.6738241839 (in metres)

Happy Mapping! 🙂

Did this help you out? Like what you see?
Thank me with a coffee.

I don't do this for profit but a small one-time donation would surely put a smile on my face. Thanks!

☕️ Buy me a Coffee (€4)

To stay in the loop you can follow @bramus or follow @bramusblog on Twitter.

Spy Viewer – View Historic Mapping within a Spyglass Circle

Ooh I like this: The National Library of Scotland has released Spy Viewer, a tool showcasing a set of historic which maps have been georeferenced so that they line up perfectly on top of the current maps. Using a circular spyglass interface you can watch the old maps peek through.

Pictured below is a historic glance at London’s Tower Bridge:

Don’t let the fact that it’s a tool by the National Library of Scotland fool you: other maps of other parts of the world are also available (select yours using the category dropdown)

Spy Viewer →

SEDAC Population Estimator

The Population Estimation Service is a Web-based service for estimating population totals and related statistics within a user-defined region. It enables users of a wide variety of map clients and tools to quickly obtain estimates of the number of people residing in specific areas without having to download and analyze large amounts of spatial data.

Tested it by drawing a (rough) polygon around Belgium and it yielded a number of nearly 12 million which is quite correct 🙂

SEDAC Population Estimation Service →
SEDAC Population Estimator Web App →

How far ahead of Apple Maps is Google Maps?

In succession to Google Maps’s Quiet Transformation, a new – and very extensive and highly interesting – comparison by the same author. He start off by taking a look at the level of detail when it comes to buildings.

But these buildings are more than just a pretty detail—they appear to be the foundation for one of Google Maps’s newest features…

The fun part begins when you start combining these building shapes with places (such as restaurants, coffee shops, etc.) to create “Areas of Interest” which represent commercial corridors. These AOIs are coloured differently on a map, allowing you to quickly recognise ‘m by just glancing at the map.

What about Apple Maps?

With “Areas of Interest”, Google has a feature that Apple doesn’t have. But it’s unclear if Apple could add this feature to its map in the near future.

The challenge for Apple is that AOIs aren’t collected—they’re created. And Apple appears to be missing the ingredients to create AOIs at the same quality, coverage, and scale as Google.

And “Areas of Interest” is just one of the things the author covers …

Google Maps’s Moat →

Getting started with Mapbox GL JS

Good intro by Arden de Raaij on setting up a basic Mapbox GL JS map with clickable markers that zoom upon getting clicked.

Mapbox GL JS is a JavaScript library that uses WebGL to render interactive maps from vector tiles and Mapbox styles. It’s my favorite alternative to Google’s service and in this article I’ll tell you why. I will also give you a quick introduction to setting up Mapbox.

Getting started with Mapbox GL JS →

Strava Global Heatmap

Strava has released a Global Heatmap powered by Mapbox GL, plotting all locations where their users go run / go cycle / do water activities / do winter activities.

The raw input activity streams data comes from a Spark/S3/Parquet data warehouse. This data includes every one of the 3 trillion GPS points ever uploaded to Strava. Several algorithms clean up and filter this data.

[…]

The full global heatmap was built across several hundred machines in just a few hours, with a total compute cost of only a few hundred dollars.

I like the fact that it’s possible to filter on activity type, revealing some hotspots like Wielercentrum Eddy Merckx for cycling, and the adjacent Watersportbaan and Blaarmeersen for running in Gent.

Strava Global Heatmap →
Strava Engineering: The Global Heatmap, Now 6x Hotter →

react-native-maps-directions – Directions/Routing component for react-native-maps

One of the things I found missing in the aforementioned react-native-maps was the ability to route between to coordinates.

Combining the feedback from the related issues on GitHub (#52, #778, and #929) I’ve created a standalone component that does exactly that.

The MapViewDirections component can route between an origin and destination coordinate. As routing is handled by the Google Maps Directions API, an apikey for use with Google Maps is also required:

<MapView initialRegion={…}>
  <MapView.Marker coordinate={origin} />
  <MapView.Marker coordinate={destination} />
  <MapViewDirections
    origin={origin}
    destination={destination}
    apikey={GOOGLE_MAPS_APIKEY}
  />
</MapView>

Once the directions in between both coordinates has been fetched, a MapView.Polyline between the two will be drawn. Therefore all MapView.Polyline props – except for coordinates – are also accepted.

Installation per npm/yarn:

yarn add react-native-maps-directions

react-native-maps-directions (GitHub) →

Did this help you out? Like what you see?
Consider donating.

I don’t run ads on my blog nor do I do this for profit. A donation however would always put a smile on my face though. Thanks!

☕️ Buy me a Coffee ($3)