Marker corpus

The coordinates behind Nowhere in Particular, published under the Open Database License. Take them, use them, build something else with them.


Download

markers.json.gz — the complete corpus, gzipped JSON, one record per marker. 682,560 records, 13.7 MB compressed, 122.7 MB expanded.

It is gzipped because it outgrew what the host will serve as a single file, not to make it awkward. gunzip markers.json.gz, or read it in place — Python's gzip.open, zcat and curl --compressed all handle it without unpacking to disk first.

Each record carries:

  • id — stable identifier, prefixed by source
  • name — the marker's name, used for triage rather than shown in the game
  • latitude / longitude
  • source — where the coordinate came from (see below). ngs (613,497), nrhp (67,141), osm (1,922).
  • kind — what sort of thing it is. Ten values, and here is the whole list with its counts in this file, because a partial vocabulary is how a consumer writes a parser that silently drops a fifth of the data: survey (576,576), place (58,088), infrastructure (19,667), structure (17,766), monument (7,109), district (2,701), art (418), view (126), water (72), nature (37).
  • access — how reachable it looks, where it is known at all. It is known for 125,849 of the 682,560 records — 18.44%. On the other 81.56% the key is not merely empty, it is absent, and absence means nobody has classified it, never that it is safe. Where present the values are roadside (42,715), parking (37,349), nostop (24,705), remote (12,572) and private (8,508) — computed from OpenStreetMap road, parking and landuse context, except nostop, which is taken from the NGS setting code and means the object is set in a bridge abutment or pier, or in a street pavement or curb.
  • marker_code — the source's own object code, carried through unchanged rather than reinterpreted. For ngs records this is the NGS monument/structure code (DB disk in bedrock, DD disk in a structure, I metal rod, and so on); 106 distinct values appear.
  • last_cond — the NGS condition from the most recent recovery report: GOOD (398,493), MONUMENTED (180,138), FIRST OBSERVED (16,709), POOR (11,279), SEE DESCRIPTION (6,878), and absent on the 69,063 non-NGS records. It is a report of what somebody found on the day they looked, sometimes decades ago, not a promise about today.
  • verified — whether a human has actually laid eyes on it
  • listed — the National Register listing date, on all 67,141 nrhp records and absent on every other source.
  • coord_suspect5,465 records whose published coordinate disagrees with their own published address by more than the applicable threshold and could not be resolved. The flag stays on the record and the game refuses the pin rather than moving it.
  • not_extant499 records NPS itself marks IS_EXTANT = False. Kept in the file with the flag rather than dropped, so you can decide for yourself.

That is the whole key: thirteen fields, and the three above are the ones a parser needs and earlier versions of this page described only in prose.

Licence

The corpus is published under the Open Database License (ODbL) v1.0.

Part of it is extracted from OpenStreetMap, which is ODbL and share-alike on derived databases. This file is a database of records extracted from OSM rather than a rendered map, so under any honest reading it is a derivative database and share-alike attaches. We did not go looking for a reading that avoided it.

The corpus was never the point. The game is an instrument — a bearing, a range, a sound, and a deliberate refusal to route you. Publishing the pointer costs nothing that matters and settles the question permanently.

The application source is not covered by this license. ODbL governs the database; the app is a separate work.

Sources

Three, and these are the counts in the file you can download above.

  • OpenStreetMap (osm) — 1,922 records. Map data © OpenStreetMap contributors, ODbL. The smallest count here and the one that sets the licence for the whole file: the access classification is computed against OSM road, parking and landuse geometry, and it is present on 101,144 of the 105,984 non-survey records — 95.4%, spread across every kind and both other sources rather than confined to a separable subset. The database is therefore OSM-derived as a database, and ODbL attaches to all of it, not to 1,922 rows of it. What that does not mean: that every record carries the field. Over the whole 682,560 it is present on 125,849 — 18.44% — because the 576,576 survey marks are almost all unclassified (4.3%); the honest figure is stated again where the field is documented above and where its coverage is discussed below.
  • NOAA National Geodetic Survey (ngs) survey marks — 613,497 records, US public domain
  • National Register of Historic Places (nrhp), National Park Service — 67,141 records, US public domain

This list is what is in the file, not what the pipeline can read. Wikidata (CC0) now matters here, and this paragraph used to say it did not. It said the Wikidata query was scoped to Ohio and contributed nothing. Since 13 August 2026 it is a national pull — 60,034 coordinates against 66,048 reference numbers — and it is the evidence that decides which NRHP coordinates survive in this file. No Wikidata coordinate is published here: every point in this file is still either NPS’s own or a US Census geocode of NPS’s own address. Wikidata is the judge, not a source, which is why it does not appear in the source list above. It earns that role by answering a different question from a geocoder: a geocoder interpolates where is this street number, and Wikidata carries a point somebody put on the building.

1,045 NRHP coordinates in this file are ours, not NPS's, and here is exactly why. NPS publishes every NRHP point with BND_TYPE = "Arbitrary point" and a mapping method that reads, verbatim, “processed from assumed coordinate systems based upon location and CERTDATE”. Most land fine. Some do not: the Great Southern Hotel and Theatre, which stands at S. High and E. Main in Columbus, was published 780.1 m east of there — far enough to send someone to a car park on a different street. That figure is moved_m on record nrhp-82001458 in the receipt below, so this page and the file it offers as proof now agree; the 712 m this sentence carried until 16 August 2026 was a remembered number, not a measured one.

So each NRHP point that publishes a street address we can resolve was measured against NRHP’s own published street address for the same record, geocoded through the US Census geocoder. Of 28,544 records with an address clean enough to check: median error 59 m, and 7.8% beyond 402 m. Where the disagreement was large, the match unambiguous and an independent witness agreed, the coordinate was corrected; everything else is flagged coord_suspect (5,465) and the game declines to send anyone there. A further 499 carry not_extant, which is NPS’s own IS_EXTANT = False — buildings it records as demolished. 5,917 records carry one flag or the other (47 carry both), and all of them stay in this file with the flag attached rather than being dropped.

Below the threshold nothing is changed, deliberately — and the threshold is geography, not one number. In open country it is 402 m, and 22.9% of records sit between 100 m and 402 m — better than one in five — every one of them left alone. In built-up ground it is 120 m instead: a record with 8 or more other corpus markers within 500 m is treated as a street grid, where the sightline ends at the block and a smaller error is still a total miss. 408 of the 1,045 corrections cleared the dense threshold, 346 of them in the 120–402 m band that open country leaves untouched — so if you compare this file against a single 402 m rule, those 346 will look like violations of a rule that was never the rule. Every correction below records the band it cleared and the threshold_m it was held to. One honest limit on that, so it is not read as more than it is: the neighbour count was computed against the 105,984-record Register-and-landmark tier, not the full 682,560-record corpus this page publishes — the 576,576 survey marks were invisible to it, and they concentrate on exactly the built-up ground the dense band exists to detect. That tier is not a separate dataset you have to take on trust: filter the file below to kind != "survey" and you have it exactly — 105,984 records, the same ids, the same coordinates. And it still does not fully reproduce. Re-running the estimator over all 1,045 corrections against that exact tier reproduces 1,042 of the 1,045 thresholds but only 952 of the 1,045 neighbour counts, so neighbours_500m is a snapshot of an intermediate corpus state that no file published here reproduces, and this page will not claim otherwise. Three records change band against their own tier, and two of the three then fall under the bar they would be held to: nrhp-06000048 (moved 320.5 m; 7 neighbours against the tier rather than the 8 recorded, so a 402 m bar it does not clear) and nrhp-07000982 (moved 194.1 m; the same 7-for-8, the same outcome). The third, nrhp-84003376, flips the other way and stays valid at 994.2 m against a stricter bar. Recomputed against the full published corpus instead, 26 records land in a different band; 25 move to the stricter bar and stay valid, and one — nrhp-06000048 again — would not qualify. The survey marks are not why that one fails. It has 7 neighbours against the tier and 7 against the published corpus, so adding the survey marks changes nothing for it; the 8 in its receipt row is not reproducible from either file. Pointing the estimator at the published corpus is still the fix, and until it lands this paragraph is the disclosure. At open-country distances a geocoder’s own street-interpolation error is about the same size as the disagreement being “fixed”, so correcting them would swap one uncertain point for another while inflating the number of coordinates we claim to have improved. The restraint is what makes the corrections above defensible. It is not indifference to the band.

Rebuilt on 13 August 2026, because the corrections were doing net harm. This page previously reported 2,242 corrections. It is now 1,045, and the reason is the most important thing on this page: we measured our own corrections against an independent source and 58.4% of them had moved the pin further from the truth than the NPS point they replaced — 1,629 of the 2,788 corrections Wikidata was able to judge. An audit that makes a dataset worse while reporting a rate of improvement is worse than no audit, and we were shipping one.

The cause needed no witness to find. The 402 m figure above was only ever a threshold for declining to trust a point. Nothing anywhere capped how far a correction was permitted to MOVE one, so relocations of up to 19,998 m were written into this file as corrections. The furthest move now permitted is 1,999 m.

The rule that now governs every coordinate here: one witness may refuse, two witnesses may move. A single independent source disagreeing with a point is enough to say something is wrong here — the cost of being wrong is one marker nobody is sent to. It is not enough to say and the answer is over there, which is what moving a pin claims. So a correction now ships only where Census and an independent second witness agree it is closer than what NPS published; where they do not, the record keeps NPS’s coordinate and carries a flag. Silence is not consent.

Naming the second witness, because it is not always the same one and the difference matters. Of the 1,045 corrections here, 961 were adjudicated by Wikidata and 84 by Nominatim, the fallback used where Wikidata carries no point for the place. That distinction is worth stating plainly rather than hiding behind the phrase “independent”: the argument above for why Wikidata is a competent judge is precisely that it is not a geocoder — and Nominatim is one. For those 84 records the second witness answers the same question by the same method as the first, so their independence is weaker than the reasoning that recommends the rule. They are a small fraction, they cleared the same distance thresholds as everything else, and they are counted here rather than rounded away.

That is why the refusal counts on this page went up by roughly a factor of three while the correction count more than halved. The corpus did not get worse; the claims about it got honest. 1,757 points we had previously moved were restored to NPS’s own coordinate after an independent witness sided with NPS — including one Columbus church we had moved 173 m onto a different property across an uncrossable freeway, where NPS had been standing on the building all along.

The three faults corrected on 12 August 2026 are kept here because the trail matters, and two of the three are cleanly closed — with the third carrying a measured residue named below: 163 “corrections” built from boundary prose that merely mentioned two streets rather than naming a corner (the worst moved a point 19,982 m); 1,093 records with decorated ids (-2, -3) that the safety check looked up under the undecorated number and never saw at all; and every corrected coordinate carrying twelve decimal places, asserting a precision no street geocode has, now written to six. The page before that reported 2,405 corrections and 1,226 refusals, and was also wrong.

The residue on the first of those three, stated because a universal claim is what a reader checks against. The boundary-prose filter leaks: nrhp-78002497, Charleston Historic District, ships with the address “Incorporates most of area S of Bee, Morris, and Mary Sts. to Waterfront” — boundary prose naming three streets and a waterfront, not a corner — geocoded to an intersection inside the district and written here as a 1,327.3 m correction. It cleared the two-witness rule, so this is a filter leak rather than the 163-record failure returning, and it is one record in 1,045. It is also the worst possible subject for a point correction: a historic district is an area, so an intersection inside it is not a better point than the one NPS published — only a different one. Extending the refusal to catch the “incorporates… area… to” form is the fix.

Nothing was silently overwritten. nrhp_corrections.json lists every correction with the original NPS point, the corrected point, the address that produced it, the match tier and the distance moved — so you can check our work or throw it out. Census, not a commercial geocoder, was the deliberate choice: its output is a US government work in the public domain, so a corrected coordinate can be republished under this file’s licence. A proprietary geocoder’s terms would have made these corrections unpublishable, and the file would have had to ship the errors instead.

HMdb.org is deliberately not in this pipeline. It has the best roadside-marker corpus in existence and restricts commercial use without written permission, so none of its content has been used. The ref:hmdb tag appears on some OpenStreetMap records; that tag is OSM's, not HMdb's content.

What is not here, and why

No marker text. Not an omission — the whole design. Supply the inscription and the destination becomes redundant: why drive there if the phone already told you? The words are already deployed in the world, bolted to a post, in fifty states, at public expense. The game is a pointer at them.

No observed data. Which markers turned out to be gone, fenced off, or impossible to stop for — plus verifications, photographs and per-marker difficulty — is collected by actually driving to them, and it lives in a separate database that is not published here. This file is the input; that one is the work.

No warranty of any kind. These are coordinates, not directions. Some point at private land, some at things that no longer exist, and some at places with nowhere safe to stop. Use your judgement, and do not trespass.

Nothing is filtered out for safety. The game refuses to send anyone to a marker flagged private or nostop, and those records are still here — a general-purpose corpus that silently dropped records to suit one game's safety rule would be lying by omission to everyone else, and a surveyor is exactly the person who wants the bridge marks.

But do not read that as a safety classification you can rely on. In this file the game's refusal has 33,213 records to act on out of 682,560 — 8,508 private and 24,705 nostop — plus 3,360 aids to navigation refused separately, on their object code, because a daybeacon on a piling stands in open water and no road reaches it. The classification is in the data for 18.44% of it. For the other 81.56% there is no judgment recorded either way, and treating a missing access key as a clean bill of health gets it exactly backwards. The decision is yours, and on four records in five it is yours without help.

The one thing that is excluded at ingest: NGS marks whose last recovery report says MARK NOT FOUND. Somebody went and looked and it was gone. That is roughly 22% of the marks in a given state.

The survey marks are now here. 576,576 NGS marks — brass disks, rivets and chiselled squares set flush in the ground — were withheld from the first release for bundle size, and that reason is gone: the app now reads a packed binary corpus and carries all 682,560 records in 34 MB. The previous version of this page said they would return in a later release. This is that release.

They arrive with their safety classification already attached, which is why the nostop count above went from zero to 24,705 — survey marks concentrate on bridge abutments and pavements far more than any other source, and that was always the field's real subject.

Nothing is withheld at all. This file is the database the app ships, exported from the bundle itself rather than assembled alongside it, so there is no version of the corpus that the app has and you do not. All 1,922 OSM-derived records are here, and so is everything else.

And if survey marks are what you came for, the source still beats us: NOAA publishes the complete dataset as monthly per-state shapefiles at geodesy.noaa.gov/pub/DS_ARCHIVE/ShapeFiles/<ST>.zip, carrying the recovery history and datasheet text this project deliberately discards.

Corrections

Found a marker that is wrong, gone, or somewhere dangerous? Email [email protected]. Corrections to the underlying map data are better made upstream at OpenStreetMap, where everyone gets them.