Hacker News new | past | comments | ask | show | jobs | submit login
Mapcode – A short address for any location on Earth (mapcode.com)
203 points by beseku on July 18, 2014 | hide | past | web | favorite | 119 comments



I'm a little confused about what this replaces, but it's definitely not postcodes.

* Postcodes have a specific meaning: they're both a geographical area and a mail delivery zone (at least in the US). Replacing one short code with another, which requires a different and less reliable third-party service to correctly decode, doesn't seem like a good idea.

* Latitudes and longitudes are unambiguous, well-understood, and don't require a third-party service to be online in order to correctly decode. So it doesn't seem like this can replace latitudes/longitudes, unless we're talking about shortening their representation.

* Broadly speaking, while addresses have a lot of problems, they're unambiguous with human context. So this doesn't seem like it really replace addresses either.

* For things like a loose description that might not be associated with a single point (e.g. "Central Park"), I could see mapcodes being useful -- you can provide the precise boundaries of the park, where it's located, associate metadata with the mapcode like what hours the park is open, etc. That might be very helpful.

Also, won't there be multiple mapcodes for a single spot and won't that require cross-association of the respective metadata? For example, consider that Central Park is also in Manhattan, also part of NYC, also in Midtown in NYC, etc.

I guess that's not necessarily a problem, but it could lead to a lot of expensive processing for frequently updated locations/boundaries (e.g. a beach, a suburban development in progress, etc.).


> "Latitudes and longitudes are unambiguous..."

This is a tangent, but actually, they're not.

There have been (oil) wells fail because someone gave a lat/long without specifying the datum, and someone else assumed it was in a different datum.

Without a datum defined, latitude/longitude (no matter how precise) only gets you to within ~1km of an actual location.

The Earth is not a sphere (or even an ellipsoid). Therefore, we need models of the the absolute shape of "sea level" (i.e. an equipotential surface - varies due to density variations in the Earth) to go from a spherical coordinate system to an actual point on the Earth's surface. These are referred to as a datum.

Because our knowledge of the absolute shape of the Earth has changed over time, there are many different datums (ranging from spheres to ellipsoids to detailed gridded surfaces).

There are a large number of datums that are still in common use. WGS84 is the most common (and very accurate), but NAD83 and NAD27 are also very, very common, as well as many others. If someone gives you a lat/long in NAD27 (e.g. read off of a printed map) and you assume it's WGS84, you can wind up over a kilometer away from the original location. (NAD27 is reasonably accurate for the US, but is very inaccurate elsewhere on the planet. I regularly see it used for data everywhere, though.)


Thanks for teaching me about datums: http://en.wikipedia.org/wiki/Datum_(geodesy)


You're absolutely right, and I should have said that!

I was trying to contrast to the case of just typing it into some kind of map service, i.e. MapCodes. A lat/long pair unambiguously resolves to a single point in that service.


> latitudes/longitudes, unless we're talking about shortening their representation.

That's a much smarter idea than this mapcode system. It would make sense to replace the base-10 representation with base 36.... at least in the Roman alphabet. It would probably be smarter to pick a base that works with the world's alphabets. Oh yeah, not all the world uses alphabets!

But even then, it's not that huge of an improvement, really! Every two digits of base 36 replace three digits of base 10. (36^2 = 1296). The b36 digits replace only 4 (or 4.5) base 10 digits. 4x b36 digits replace 6 base 10 digits.

I think this may actually just be the Ham radio grid system I mentioned elsewhere.

> For things like a loose description that might not be associated with a single point (e.g. "Central Park"). Here, I could see mapcodes being useful -- you can provide the precise boundaries of the park, where it's located, associate metadata with the mapcode like what hours the park is open, etc.

Heh, at this point, I'm just thinking "URL". After all, it's a Universal resource locator. How about mapcode://CentralPark/my_favorite_bench.


From their developers' doc:

> Mapcodes can be easily translated between several different alphabets. The default system is based on the roman alphabet. Mapcodes in other alphabets are generated by character substitution.

And it's not based on representation of lat/lng, which is why it's more of an improvement:

> As explained in the previous section, by reserving short codes for the most densely populated areas, mapcodes for addresses (i.e. places that people need to visit) are on average as short as theoretically possible, within the limits we set for ourselves. One such limit is to use only rectangular areas in our definitions. Another is to limit the size of the “context” data table to about 16,000 records. Probably the most relevant design choice was the choice of character set. For example, had we allowed both capital and lowercase letters, 3 times as many people could have 5-letter codes instead of 6-letter codes.

> The mapcode system allows about 100 km2 of a territory to be covered by 4-letter mapcodes. These are usually reserved for the capital city. About 6,000 km2 can be covered by 5-letter mapcodes . Roughly 250,000 km2 can be covered by 6-letter mapcodes. If a territory is larger than that, the remainder requires 7 letters. A few territories on Earth (notably, Australia, Brazil, Canada, China, India, Mexico, Russia and the USA) are large enough to merit 8 letters, but these actually consist of sub-contexts, i.e. people there live in a state, republic or oblast much like people elsewhere live in a country. Within such a sub-context, mapcodes are shorter.


Between this, and discussion of hardcoded magic values in lookup tables in the code, I wonder about how future population/geography shifts will be handled. It's not a dealbreaker, but it seems like a technical cost of interpreting mapcodes would be periodic required updates of the translation codes.


Their own website is displaying/using MapCode's incorrectly.

For example, they have 0C.T4 and they say it's in Ireland and appears to be some bench in the picture.

However, if you use that MapCode, you will see it's the middle of some river in Amsterdam.

0C.T4 == 52.369764, 4.868898

Another:

81.J4W They seem to claim it's in Alaska, appears to be some road. However, it's another river in Amsterdam.

81.J4W == 52.508957, 4.769173


Mapcodes also have to be combined with some context. In most places it's just the country name, but in large countries it also requires the state (or equivalent).

So if you go to the interactive map on the mapcodes site, there's a little link marked context and you need to change that to Ireland. Results in this:

http://www.mapcode.com/getcoords.html?iso3=125&mapcode=0C.T4...


So, they want to throw out the old coordinates system (which was absolute location regardless of any "context"), with a system that if you loose the context information, or misinterpret it, you can wind up in a very wrong location?

I've written a fairly extensive GPS library for some embedded device projects in the past, and I can attest to the computer not caring about the long coordinate system, they are just floating points really.


The shorter MapCodes are within the context of a specific country, but the "I have a MapCode" box defaults to the Netherlands. If you change that to Ireland, it's 0C.T4 is in the middle of a park near Dublin.


I think you need to change your "context" country. If I look for 0C.T4 in Ireland, I see green (implying a bench).

It looks like the mapcodes are country specific, and two countries can have the same mapcode.


Actually it's that those MapCodes are incomplete. They're missing the country/state designation. If you look up "Ireland 0C.T4" or "US-AK 0C.T4" you should get the correct results.

I'll cite a .doc file here, it's also available on the Developers page:

> 1. Codes only need to be accurate enough for public, every-day use. At the human scale, when you are within a few meters of a destination, you are “there”.

> 4. People live within a “country context”. Addresses seldom include a country name. Unless clearly stated otherwise, they can safely be assumed to be in “this” country. Codes that are known to be within a particular territory can be designed to be much shorter. For example, every location in The Netherlands can be uniquely specified with at most 6 letters . Even in a large country like India, at most 7 letters are needed.

> 6. Short codes are reserved for areas where the population density is high. For example, every locations in The Netherlands can be represented by a unique 6-letter mapcode. However, the majority of the population is concentrated in a dozen urban areas totaling less than 3,000 km2 (1,800 square miles). By reserving the 5-letter mapcodes for these areas, half the population of The Netherlands can be found using 5-letter codes. On average, mapcodes for relevant locations in The Netherlands are thus closer to 5 letters than to 6 letters. In fact, a significant percentage of the population can be found in 100 km2 of city centers, which can be covered by 4-letter mapcodes.

> Based on these ideas, we envisaged a system that would work anywhere on Earth, and would (on average) provide the shortest possible codes to everybody. By using massive amounts of data gathered over the past 30 years by mapping company Tele Atlas (merged into the TomTom Group in 2008), a data table was constructed ...

> Finally, on top of any and all national mapcodes a location may have, it also always has a 9-letter, context-less map code.

> To understand mapcode accuracy, you need to understand that a specific mapcode defines a specific location X, but represents all the locations within a certain distance meters of X. For example, the Dutch mapcode “49.4V” decodes into coordinate 52.376514, 4.908542. This does not only mean that coordinate 52.376514,4.908542 can be represented by mapcode 49.4V, but that all coordinates within roughly 5 meters of that coordinate can also be represented by mapcode 49.4V.

(it continues to describe "high-precision mapcodes")

Why did they make it?

> The mapcode system was revived and worked out in 2006 when TomTom decided to expand their operations to countries like India and China. It was difficult to sell navigation devices in these countries, among other things because a significant part of the population lives without address, lacking not just house numbers but often even street names, which often made it hard or even impossible to enter a destination. It was thought that the introduction of a simple and ubiquitous system for representing locations (and hence destinations) would in due time make navigation devices as welcome there as anywhere else.


> Actually it's that those MapCodes are incomplete. They're missing the country/state designation. If you look up "Ireland 0C.T4" or "US-AK 0C.T4" you should get the correct results.

Imagine if a URL resolved to different addresses in each country you were in. Would that be a better system than what we have now, or a worse one? I think it would self-evidently be worse.

I'm surprised they didn't make mapcodes a globally-unique identifier.


Globally-unique identifiers make sense on the web, where "going" to a website being served from the other side of the world is as easy as one served from across the street.

That's not true for navigation in the physical world. If you're sitting in Nebraska, how often do you have to navigate to a location in Mongolia? Approximately never! Map codes are optimized for the common case, where you want to go to a location that's nearby.

In fact, it's even more clever than that, since it defines "nearby" as a political unit. Borders may be artificial, but they're real, and crossing them has practical implications. If you're planning to buy something in another jurisdiction, there might be tax implications. You may need your passport to cross the border. You may not speak the language of that area. All of this means that having the political unit as a human-readable part of the map code is useful.

Finally, consider that some URLs do resolve differently depending on where you are. They're called relative URLs. They're very handy and very common. I'd guess that the vast majority of URLs on the web are relative. MapCodes work the same way. The code "Ireland 0C.T4" is globally unique. If you're already in Ireland, you can omit the territory, much as you would omit the country when inviting a friend to your house for dinner.

For cases where you really do have to travel to the other side of the planet, is it really so onerous to specify "Mongolia 0C.t4"?


They did, it just doesn't suit the purpose they had: quick entry into GPS systems; it's true URLs or QR codes would work too, though nothing's stopping such a resolver service from popping up, except of course that non-phone GPS systems probably don't have cameras yet.

> Finally, on top of any and all national mapcodes a location may have, it also always has a 9-letter, context-less map code.

But that's too long to use every day... It would be like requiring all streets to have globally unique names. Because they're qualified by location, you could, if you wanted to, enumerate all matches in order of distance, and in 90% of cases, that would be the location you're looking for. Better here, since many cities will have the same street names in multiple places ;-)


Phone numbers are very similar. They have a short and long representation and the short is often duplicated in different countries. Imperfect but a very human solution: works because it's easy and 99% of the time we call the right number.


Any reference to how they came up with any given Map Code? Like how 52.508957, 4.769173 became US-AK 81.J4W?

I see they have come up with them for all locations, but how can I take a given coordinate and surmise it's MapCode, or the reverse (without their API or website)?


Goal #3 on their list was:

> A conversion need not just be based on formulae. A respectable amount of data may be used as part of an algorithm.

Which is why when you go to the downloads page, you'll find sources in C, JavaScript and Java, but they all include "data tables".

There are a few other restrictions, though it's somewhat unclear how relevant they are here without inspecting the tables closer:

> One such limit is to use only rectangular areas in our definitions. Another is to limit the size of the “context” data table to about 16,000 records.

So it's not something you can do without the data tables. And for ease of use, they have disambiguation routines for country/state input.


Hmm, I just took a look at their Java SDK... (clearly just sample code, but intended for embedding into your project to get going quickly)

They make a lot of assumptions, and a lot of hard-coded values.

For example, they seem to have lots of city names and country names hard-coded into a giant String array. ISO country codes are hard-coded (probably a safe assumption so-long as new countries are not added), many "magic numbers".

Overall, I think these things are acceptable... but I don't necessarily like relying on the assumptions that "things today should be the same tomorrow". With plain old coordinates, my software would never care if the ISO added new country codes or what-have-you.

I see they intent this to be mainly for human consumption -- but is US-AK 81.J4W really any more memorable than 52.508957, 4.769173? I'd probably end up writing both down personally, which means the coordinates would suit me just fine.


81.JW4 is a lot easier to tell someone over the phone or transcribe from a business card or billboard, and it's pretty unlikely that the US-AK part would be ambiguous in those contexts. And if it is, a simple "which 81.JW4 did you mean?" would probably disambiguate pretty effectively.


Well, phonetically, pure numbers are better.

It's much harder to hear "eight" and mistake it for another number, but "P" and "T" are commonly confused (presumably people would read it as "Papa" and "Tango" to avoid confusion). What about "O" and "0", "I", "l", "1", etc. Now we have ambiguities that may not be interpreted correctly, even with phonetics.


FWIW they left O and I out of the list of possible letters for just that reason.

One could argue either way about fully-numeric versus alphanumeric codes. They're a bit harder to communicate but more than three times shorter, on average.

Edit: math is hard. One and a half times shorter, on average.


From the Mapcode System Reference Document:

http://www.mapcode.com/downloads.html

'Unfortunately, a large part of the world population has no address. In India alone, well over half a billion people live in houses that have no street name. Millions of man-hours are lost every day trying to locate or deliver goods to people and businesses based on business cards like this:

------------------------------------------------------

Amri Patel, consultant New Sun Technologies, District 14, Pune Tel. +23984982217

Three miles east along the airport road, take second left past the golden statue, in the fourth street left ask final directions at baker across from white house.

Figure 1. Typical Indian Business Card

------------------------------------------------------

As we all know, even having an address is only an initial step in locating a position. Knowing someone lives on Queens’ Road 123 in Brunnock still requires you to find out where Brunnock is, and where the Queen’s Road is, and where number 123 is.

The mapcode system was designed as a free, brand-less, international standard that allows any location on the surface of the Earth to be represented by a short, easy to recognize and remember “code”, usually consisting of between 4 and 7 letters and digits.'

So, your point number 2 seems closest to what they're aiming for. Indeed, later in the document, they state:

'The longer a code gets, the more awkward it becomes to use, the more difficult to remember, the more easy to make mistakes in copying or using, the less benefit it offers over more elaborate descriptions. Many other benefits depend on mapcodes being short. If length was not a problem, we might as well put our longitude and latitude on business cards and address labels.'

> Also, won't there be multiple mapcodes for a single spot and won't that require cross-association of the respective metadata?

It seems like this corresponds to a coordinate system. You say what country you're in and then this gives you an aim point. I don't think you need to say 'it's in This, which is in This which...' :/


Yep. Swedish post codes define mail delivery areas as well.

You can effectively sort on partials and get high accuracy.

For instance, the office I used to work in handled all of 421xx, 426xx and 436xx, as well as a few of the 430xx range.

Sorting was done by bucket sort (literally) on the top 3 digits in a central distribution location (all 5 for those like 430xx that was handled out of several offices), then distribution to each mail office, then another bucket sort on the full five digits, followed by another bucket sort on (roughly) street address, followed by a final sort on route.

This appears to lose all of that functionality.


The TomTom founders definitely didn't "just kill the postcode."

> Mapcodes were developed in 2001 by Pieter Geelen and Harold Goddijn, soon after the GPS satellite signals were opened up for civilian use. It was decided to donate the mapcode system to the public domain in 2008.

Can we get an update to the click-baity title?


GPS was always available for civilian use since day one. Perhaps they meant when GPS's Selective Availability (degregration of accuracy civilians) was turned off, which was in 2000.


Honestly, I don't like it. At first I thought it was a short, sort of binary (at least machine-readable) representation of coordinates. A,A might be (0,0) in our coordinate system. Turns out it's not. It's not even global but country (or in the US, state) specific.

This means that the locations are controlled by a single entity together with country codes. Sure, postal codes are controlled by a single entity too, but at least they are regulated by the government using tax money instead of an arbitrary self-appointed committee.

I know it's meant to replace postal codes and not coordinates, but I'd like to see something that actually represents a place instead of an arbitrarily shaped region. OpenStreetMap's homepage happens to do this for their short URLs: http://osm.org/go/0GFeWn2RJ

Try moving on the OpenStreetMap map with the share menu opened and the short URL option selected. You'll see how it influences the short URL.

But anyway, back to replacing postal codes: the main advantage of this is that it'd be a universal and short code. In The Netherlands you could specify: NL 6114HT 41 and you'd have house number 41 at the Marktstraat (market street) in Susteren (city). Not much longer. And with this new system you'd still need to look up country-specific codes so I don't see much of an advantage.


Mapcodes are coordinates within a rectangular region, you define the region, then the code(or if you're IN the region, you don't need to worry about defining it).

One of the available regions is "Earth", which offers global coordinates(they're a bit longer, four or five characters on each side of the dot).

The upside of this is that it is possible to implement it completely offline, you don't need to query the regions from a database, because they're already defined. You just run the algorithm to project the local coordinates onto global coordinates, and your GPS system will handle that.


One of the available regions is "Earth", which offers global coordinates(they're a bit longer, four or five characters on each side of the dot).

Why not just use lat, lon, which can be shorter too?

Central park, NY - 40.78 -73.97

Hyde Park, LON - 51.51, -0.17


Those coordinates are obviously less accurate than the mapcode, and not at all any smaller.


Objections:

1. This mapcode is country specific (!)

2. Many locations need altitude or fine lat,lon differences to differentiate them (e.g. blocks of flats, offices).

3. What's wrong with altitude, lat and lon on a given projection which can be as precise/imprecise as you want?

IMO it'd be better to have a hash of lat,lon,altitude which was globally unique for each level of precision.

A system like this needs to be globally unique without specifying country, or you may as well use a postcode. The only advantage over postcodes at present is it's slightly shorter.


There exists a hash of lat, long globally unique for each level of precision, a geohash [1]. One common application utilizes a space filling Hilbert curve to define an arbitrary precision bounding box around a set of coordinates. You can see an example hash [2].

[1] http://en.wikipedia.org/wiki/Geohash [2] http://geohash.org/9q8yyvfekk8h


I'm pretty certain one could make a geohash compatible partly human readable hybrid that performs way better than this proprietary obscurity.

Something like DE.BERLIN.2.1H

First, human readable part defines a look-up to defined geohash of center of region on a given level.

So DE.BERLIN could resolve to u33, u33d or u33db (length/level 5) the last one seems reasonable, since a few multiples of the area cover the whole city of Berlin

http://geohash.2ch.to/u33db

Second, optional, part encodes offset of Z-Curve index of location at same zoom level.

Z-Curve on globe: http://www.bigdatamodeling.org/2013/01/intuitive-geohash.htm...

This enables global coverage at any level if needed, and makes the code robust to administrative changes that affect the area of the given region! The offset part could start at 1 and alternate the sign with each increment.

isOdd(offsetPart) ? -(offsetPart-1)/2 : offsetPart/2;

1 → 0, 2 → 1, 3 → -1, 4 → 2

An offset part of 1 equals an offset of 0 and could be omitted.

The third part adds to the precision of that given cell.

Brandenburg Gate, within area of origin cell of region part. could be written as DE.BERLIN.1.2M3 or short DE.BERLIN.2M3

http://geohash.2ch.to/u33db2m3

DE.Berlin.2.1H would be the area and center point of the Berliner Fernsehturm with sufficient accuracy u33db + 1 = u33dc

http://geohash.2ch.to/u33dc1h

This example uses base 32 to comply with geohash but other more error robust encodings and variations (e.g. second part as base ten numerals) could be used as well.

Add optional checksum part based on unshortened geohash if needed to verify integrity.

Variants: since geohash, covers a varying amount of area depending on the latitude. A similiar approach could be realized on a UTM based grid like MGRS if a precise area is required (https://en.wikipedia.org/wiki/MGRS)


If you'll pardon the reckless self-promotion, there's a few Java implementations to do Geohash calculations: https://code.google.com/p/simplelatlng/


I reckon you need to include latitude as well, or it's not really going to be useful for specifying position in cities.


It's a bit buried, but only some of the mapcodes are country-specific. "Every location on Earth has an "international" mapcode, completely independent of territorial borders. So any location that has a national mapcode also has an international mapcode." http://www.mapcode.com/popup_alts.html


So what's the upside of this vs Geohash?

http://en.wikipedia.org/wiki/Geohash


patents and ambiguity where you have to also mention the country and sometimes, but just sometimes, the state.


Pros of MapCodes vs. Geohashes:

* MapCodes are shorter by 200-300% for a given accuracy level, assuming each MapCode is prefixed by a two-letter country code for clarity.

Cons of MapCodes vs. Geohashes:

* MapCodes only offer one accuracy level, of apprx. 100 m^2 regions, whereas a Geohash can be arbitrarily accurate.

* MapCodes do not guarantee persistence. They can be redefined at any time, for any reason, at the sole discretion of the project designer, leaving you with a nonreferential or falsely referential code.

* MapCodes do not encode location data within the code, so access to the server is required at all times. If you lack internet access, or if the service is DDoSed, hacked, goes out of business, etc. your codes become useless.


> The mapcode foundation reserves the right to change the country list and population density maps, at which point existing codes will point to different places or be invalid

Nope.jpg


From the docs:

"[This] issue should be prevented at all costs. The second [adding new countries] may be necessitated by changes to the world order, i.e. new countries coming into being. But unless changes are made by a single central authority, the first issue will quickly come to be."


I don't like this. From what little I have read, mapcodes appear to be proprietary, despite advertising a "free, open standard".

>Mapcodes are free. They can be used by anyone, and may be supported, provided or generated by anyone, as long as this is done free of charge, conditions or restrictions

Why can't someone charge money for a service that generates mapcodes?

>The mapcode algorithms and data tables may not be altered in any way that would result in the production of different (and thus incompatible) mapcodes. The mapcode algorithms and data tables may not be used in any way to generate a different system that produces codes to represent locations.

I think this means that the source code they are distributing is proprietary, because we cannot use it for any purpose.


Certainly not compatible with Debian free software guidelines.


There's quite a bit of territory between "proprietary" and "free software, as approved by the FSF". If the MapCode sources are free for any purpose except confusing people, I'm fine with that.


This is neat, but I am confused why you wouldn't want to just tie location to geography and not country (aka nationality, a squishy and shifting idea). Why not just use UTM?

https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_...


I'm curious about what happens when a geographical location changes country. If Catalunya gains independence from Spain, will the MapCode associated with my house here in Barcelona change? Will the old "Spanish" MapCode still be valid?

Speaking of current events, do Isreal and Palestine have separate MapCodes and what happens when borders shift?


I, for one, really like this.

* It doesn't use postal codes, which aren't really intended for use for anything but mail delivery and occasionally make that painfully apparent (such as when the boundaries are changed)

* It doesn't depend on street addresses, so it works in countries where the streets aren't reliably or intelligibly named/numbered. It also works in places where there are no streets.

* It's smarter about allocating code space than something like a 10:10 code, since e.g. not a lot of people live in the middle of the ocean (and they can always use a "fully-qualified" MapCode).

* It's super easy to read to someone over the phone, or type in from a business card, or transcribe from a sign.

A couple of uses immediately spring to mind:

* Telling an Uber/Taxi/rideshare where to pick you up when you don't have GPS/data.

* Telling a delivery drone where to deliver your package (without having to correctly remember dozens of digits of lat/long).

* And of course what it was designed for, entering a navigation location quickly.

I'm sure there are some implementation flaws, which may or may not be fatal, but I think it's pretty great.


One more use case: When an address doesn't reliably geocode across mapping providers. I've run into this with things like campgrounds or tourist attractions in rural areas in the US and Canada, even with Google Maps but especially Apple Maps in the early days.


No, they didn't. They "killed" parts of addresses.

Also, these are still hard to remember. Personally, I'm a fan of http://what3words.com/

I'm currently here: http://w3w.co/lives.fend.spent


I like what3words also.

What I'd really like is a hierarchy so that given

>lives.fend.spent

when you saw the words

>lives.fend.rabbi

you knew it was nearby, within the "fend" place or that

>lives.gopher.spoon

was within the "lives" places


Sounds like usa.newyork.brooklyn would be a smart extension. Quick, let me patent it and trademark the term "3 or more words that describe a location in hierarchical order". Or maybe I will just call it "backwaddress". :P


Hey, that is a cool idea. It's basically a less verbose address system isn't it?


I started work on something pretty much like this about 5 years ago but never pursued it for various reasons.

I still have one of the registered domains with nothing to show for my preliminary work: www.tinynav.co.uk

I got as far as designing the encoding scheme, including a database of point types (house, utility pole, ancient monument, park, private event etc..), together with special codes for corporates to use for all their shops, fast food outlets etc.

I had the database tables worked out, populated the locations table with open source/public domain data such as civil and commercial airports and some other stuff. There was a front end that allowed for time-limited one-offs for things like 'Jo's birthday party', but then life took over!


That sounds really great. I like the time limited parts. Things like concerts or art fairs always much up foursquare locations.


" A short address for any location on Earth"

It doesn't check out:

Surface Area of Earth: 510.1 * 10^6 km^2

Distinct map codes: 36^5 = 60.466176 * 10 ^6

Area of 1 map code = 8.4 km^2

Oh! It's narrowed by country... so it doesn't address any location on Earth. Only populated areas.

If you want to actually refer to ANY location on Earth, there's another system, Ham Radio grids. It uses four to six digits and refers to either 70x100 or 3x4 miles squared. Probably useless for the business purposes, but at least it truthfully refers to any location on Earth.


It is actually every area, and the length of the codes varies. I'm guessing that the most popular/populated places get the shortest codes and those further away get the longer codes.

For example a location somewhere in the Atlantic off the coast of Gran Canaria is International QFLQV.29KM while some place in the el Poble Sec district in Barcelona is Spain SG.YB.


Its technically called the "Maidenhead Locater" and the specific format can be seen on the wikipedia page:

http://en.wikipedia.org/wiki/Maidenhead_Locator_System


My first instinct was: bad idea.

But then when I thought about it is actualy something that has troubled my quite some times.

Lat and longitudes are perfectly fine but in general they are to "simple" for people to use.

When I think of a location in the world I generally think of the country cause I know to some extent where most country's are located.

For example I would to describe some place in Miami I would describe it as in the lower right side of US and continue to work downwards from that.


There is still a special place in my heart for UTM [0].

MapCodes seem to be based on a similar concept (grid, sub grid, sub-subgrid), but with a bit shorter representation. The thing that worries me about using mapcodes, however, is what seem to be the arbitrary borders, order of girds, and the up-keep required for usage. [1]

There is nothing to stop us from creating shorter UTM Codes, though.

Assume 0->33 represented by

    0         0         0         0
    ABCDEFGHJKLMNPQRSTUVWXYZ0123456789
Same as Map Codes [2]

The CN Tower is at

* WGS84: 43°38′33.24″N 79°23′13.7″W, (26 chars)

* UTM: 17N 630084 4833438 (18 chars)

* "Shortened" UTM: T.N.SBB6.DW9F8 (13 chars)

* Map Code: CAN PYLK.XY8P [3] (13 chars)

So I guess the utility of such a complex system is lost on me when something like UTM, that can be decoded with minimal effort, is just as good.

[0]: http://en.wikipedia.org/wiki/Universal_Transverse_Mercator_c...

[1]: http://www.mapcode.com/mapcode_documentation.doc

[2]: http://www.mapcode.com/alphabets.html

[3]: http://www.mapcode.com/getcoords.html?iso3=112&ifrom=aboutmc


If you use CAN-ON it's only 12 chars. But if you already know you're in Ontario it's only 5 including the dot.

So that makes the difference between saying it to someone and having to write it down. Mapcode is massively shorter for local locations which is exactly what sat-nav is for.

The "grids" for mapcode are human-understandable - country and state.

I think a lot of HNers are thinking too much like programmers and forgetting that people need to tell each other locations and write them down. That's where mapcode is good.


The CN Tower is at M5V2T6 - 6 chars

This is unique within Canada and the physical area is small enough to be sufficiently useful for navigation. Add country code and it gets you to 9 or 10 chars.

UK has similarly useful alphanumeric postcodes and specifying them for satnav is the norm.


Having traveled to several countries without formal addresses, this looks like a godsend for navigation. It has no regional segmentation (i.e. no drill-down reference like country-state-zip-city levels), however, so it's useless as a cultural reference.

Slightly off topic, but I'm stupefied at how much faster TomTom's maps (and Bing, apparently!) are than GoogleMaps.


I hereby invoke Betteridge's law of headlines.

(unless they can convince every postal service in the world to throw away hundreds of years of dogma)


> Areas claimed by two countries are simply included in both contexts.

If I understand this correctly, it means that any address in a disputed territory has multiple mapcodes, one for each claimant, and therefore whichever one you use you are implicitly backing one political claim over the others.

If so, this is a potential can of worms that many people won't want to open.


Overall, this looks pretty interesting, assuming your goal is to communicate physical locations with an accuracy of a couple of meters using a format that fits on a business card. It can also be used without country names, if you prefer it that way (just select "International" when generating the code.)

Developer downloads here: http://www.mapcode.com/downloads.html?iso3=112&mapcode=49.4V

This is patented, with an ISO standard in progress, and the following licensing terms (from their developer page):

    The mapcode algorithms and data tables may not be
    altered in any way that would result in the production
    of different (and thus incompatible) mapcodes. The
    mapcode algorithms and data tables may not be used in
    any way to generate a different system that produces
    codes to represent locations. In order to prevent
    misuse, unauthorised alterations, copying or commercial
    exploitation, please note that the ideas and algorithms
    behind the mapcode system have been patented and that
    the term "mapcode" is a registered trademark of the
    Stichting Mapcode Foundation.
Part of the motivation is the lack of usable postcodes in many countries:

Unfortunately, a large part of the world population has no address. In India alone, well over half a billion people live in houses that have no street name.

They play some interesting tricks with population density and country "contexts" to shorten codes:

4. People live within a “country context”. Addresses seldom include a country name. Unless clearly stated otherwise, they can safely be assumed to be in “this” country. Codes that are known to be within a particular territory can be designed to be much shorter.

6. Short codes are reserved for areas where the population density is high.


They call it

  ...a free, open way to make every house ...
and then they say

  The mapcode algorithms and data tables may not be
  altered in any way
not very open


No, because postcodes aren't primarily geographical references. They just happen to be really useful for that. UK postcodes are arranged so that each one handles a similar amount of mail. This means that a residential street may share one or two postcodes, but a large organisation may have several postcodes to itself.


It's hard to get an understanding of the precise algorithm that's being used to generate the code. If it were a competitor of the postcode it would have to be possible to identify whether two places are close to eachother just by looking at the code right?

From the patent I get the feeling that it's a bit like a C-ary space partitioning, where C is 36 (alphabet+numbers). So the first character divides the earth in 36 regions, the second character divides that region in 36 regions, and so on.

With that in mind, I think once people would be a bit familiar with the general numbers for regions it would be pretty easy to identify what general region a mapcode would be in. So it might be a pretty good replacement of postcodes.

Or am I missing some other fundamental property of postcodes?


I think that postcodes divide a country not evenly but are chosen by population density and the distribution structure of the post provider. Look at http://upload.wikimedia.org/wikipedia/commons/8/8e/Karte_Bri... for example, each distribution center is responsible for one or two double digit prefixes, the first digit roughly indicates the region. Areas with high population density have a much finer coverage. I don't think there would be any benefit from switching to Map Codes, as they have to be mapped to something like post codes anyways and they are not precise enough to serve as residential addresses.


No. They serve entirely different purposes.


Yep, if this were feasible as a postcode then we'd have switched to lat/long addresses ages ago.


There is already a service like this that uses 3 words instead of that weird string: http://what3words.com


Come find me at premium.gravely.pies.


Wouldn't this change the entire address and number? The problem is, you can't find a place without a GPS (or another digital device) :-(


You are correct. This is the real problem. (They even use an Indian business card as an example...)


The choice of Cyrillic translations seems arbitrary to me. There is a well known Morse code convention (Q=Щ, V=Ж, W=В, X=Ь, Y=Ы).


The problem with e.g. W=В or X=Ь is that they want glyph matching; so the roman alphabet B and the cyrillic alphabet В (even though they are different letters) map to each other, to avoid having same-looking codes map to different locations. They're solving a slightly different problem than the Morse convention was trying to solve.


Another interesting similar idea - http://what3words.com/ .


  Mapcodes are a free, open way to make every house or location on Earth 
  addressable by a short code. With nothing else except your mapcode, 
  for instance, a navigation system will bring someone to within meters 
  of your front door.
So what happens if you live in a multi-story block of flats?


I think this is to improve on postal codes, not address multiple-person dwellings. The flat/apt/suite number would take care of that.


Presumably, for car navigation, that doesn't matter (that's what the address is for).


It gave me a map code that was longer than my postcode. I'm not sure how postcodes work everywere else in the world, but in the uk they point to a specific road, so it's pretty good for navigating to a place with.

I do know that in belgium they point to an area, so they're not as good as a navigation aid.


I live in quite a big block of maisonettes. At the maximum map zoom level, trying to pin down the exact location of my particular house gave me about three options to choose from –just by moving the cursor a few mm in any direction. So what happens then? Do I pick the mapcode I like best? Does some central body decide which is my 'official' mapcode?

Living in the UK, I don't see what this offers over my postcode, which identifies my location to within a couple of houses. The houses across the street have a different postcode to me as do my neighbours three doors away. Theoretically* all anyone needs to find me is my house number and postcode. Try it. Send me a postcard:

madra 84A <----- house no. M15 6FD <----- postcode England

*Actually, it's not theoretical. I have as an experiment in the past sent someone a letter addressed just to their house number and postcode and it got there. In spite of that I do tend to write out fuller addresses though. It just seems a bit too 'minimalist' relying on only the postcode.


ISTR that UK postcodes narrow things down to around 15 properties.


I'm reminded of http://xkcd.com/927/.


Or the artificial Swatch time, which doesn't solve anything. We already have an international time, Coordinated Universal Time. It only takes to know your offset and some basic addition to convert.

Converting longitude and latitude to some other character base, like someone suggested would be better.


It's unfortunate that their map-encoding solution appears to be based on TomTom's dataset, instead of Google Maps. It therefore thinks my house is my neighbor's house.

Open Street Map is, sadly, no better, thinking my house is a different neighbor's house.


If OpenStreetMap being wrong really bothers you, you can fix it. I mean to point that out in an abstract sense more than I mean to implore you to do so.

As a rule, address data in OSM is very incomplete and the Nominatim instance on osm.org falls back to things like TIGER data to do geocoding. If you are in a region where there are a lot of addresses present in the OSM data, it would be great if you could at least drop a note nearby stating that the addresses in the area have problems (it's the button shaped like a cartoon word balloon, on the right hand side of the page).

(Housenumbers show up when zoomed in, if they aren't showing, then the OpenStreetMap website is showing you results based on some fallback data.)


Bearing in mind that google paid people to sit at a desk adjusting house addresses to point at actual houses correctly before they recently invented their machine learning brain thing


Maybe in many places. Or maybe for some uses. Around here, Google Maps has a block level understanding of addresses and just shows a calculated point for a given house number (you can feed in non houses and it shows them down the street from real addresses).

My understanding is that they have acquired building data from many municipalities and will absolutely use that when they have it, not that they have spent a lot of time refining it.


Done. Thank you for the tip.


OpenStreetMap's better in that you can correct it yourself or leave a note for someone else to fix


That's possible with Google Maps also (http://www.google.com/mapmaker)

But thank you for noting that I can do the same with OSM. After making an account and logging in, I've created a feature-point for my address, but I don't see a way to correct or suppress the incorrect information from OpenStreetMap Nominatim. shrug Problem for another day.


Hmm, I think that Nominatim gets updated with a bit of lag (minutes to an hour), so the address should be there now? Assuming you changed the information from the map, it should update it within Nominatim, as it get's it's info from the map

If not, you can leave a note http://www.openstreetmap.org/note/new and someone can take a look at it. I've been contributing for a while now and still like using Notes to let people with more techy experience or local knowledge help.


Looks like it's updated. Thank you for the tip!


> What is a mapcode? [...] They are precise to a few meters, which is good enough for every-day use.

Yeah, but so are the British post codes. 6-7 symbols and you're down to meters usually. At least for the cities. They definitely bring you close to the front doors.


https://www.waytag.com/ is a ZA startup that's been around for a few years. On a cursory glance, this seem quite similar? I don't think WayTag ever gained much traction.


I guess today is the day for talking about encoding locations on earth on HN: https://news.ycombinator.com/item?id=8053032


The associated patent application: http://www.google.com/patents/WO2013057221A1?cl=en


According to <http://www.mapcode.com/downloads.html>:

> The mapcode system is a free, open standard.

Which is it, open or patent-encumbered? It can't be both.


There are already a dozen of these lat/lon encoding schemes. Please go support/evangelize one of the existing ones before making a fourteenth incarnation.


I'll use my mapcode to tell my friends where to meet me. I'll use swatch internet time to tell them when to meet me. It's about as useful.



Nice idea to include a check digit. Mapcode doesn't have that (though they recommend specifying the country separately). On the other hand, with only 4 characters, Mapcode should be easy enough to remember.


ZIP code is also used in astronomy: http://healpix.sourceforge.net/


Seems very similar to the NAC: http://www.nacgeo.com/nacsite/


why not use already-established grid systems instead of making a new one? MGRS is commonly used in the US military and does the same thing.


Seems similar to Naymit: http://www.naymit.com/


It doesn't replace the post code by any means, but it's definitely a nice way to program a GPS.


A lot to do about their map design. But it is quite quick in finding locations.


startup based on similar idea ( Based in Hyderabad / India ) http://zip.pr/


What problem does this solve, exactly?


From their reference doc:

> The mapcode system was revived and worked out in 2006 when TomTom decided to expand their operations to countries like India and China. It was difficult to sell navigation devices in these countries, among other things because a significant part of the population lives without address, lacking not just house numbers but often even street names, which often made it hard or even impossible to enter a destination. It was thought that the introduction of a simple and ubiquitous system for representing locations (and hence destinations) would in due time make navigation devices as welcome there as anywhere else.


No.


Terrible site design



It's against the HN guidelines to editorialize in titles, even when the editorialization was done by somebody else.

This one was particularly bad because the submitted title ("Did TomTom founders just kill the postcode?") caused the post to receive a barrage of user flags.


Ah. That makes the title+link less obnoxiously self-Betteridged, but still obnoxiously Betteridged.




Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: