Cited GeoJSON 0.1#
Status: draft. Profile identifier: https://www.openhistorymap.org/cited-geojson/0.1
Cited GeoJSON is a profile of GeoJSON (RFC 7946) for sharing map features together with the evidence behind them: the sources a feature was drawn, transcribed or inferred from, the exact place in each source, and how scanned maps were fitted to the earth. A Cited GeoJSON file is still an ordinary GeoJSON file — QGIS, MapLibre or any other GeoJSON reader opens it and ignores what it does not understand — while profile-aware tools can show, check and exchange the citations.
It is maintained by OpenHistoryMap and is designed to be generic: the same structure serves real history (OpenHistoryMap) and invented worlds (Open Fantasy Maps).
The key words MUST, MUST NOT, SHOULD, SHOULD NOT and MAY are to be interpreted as described in RFC 2119.
1. Design#
Cited GeoJSON adds only foreign members, which RFC 7946 explicitly allows, and reuses existing standards wherever one exists:
| Need | Reused from |
|---|---|
| Declaring the profile | conformsTo, as in OGC JSON-FG |
| Dates, including uncertain ones | when, from the Linked Places Format (World Historical Gazetteer) |
| Pointing into a source (quote, page, section, image region) | Selectors from the W3C Web Annotation model and ontorag-provenance |
| Fitting scanned maps to the earth | Allmaps Georeference Annotations (IIIF georeference extension) |
| Linked-data reading of the file | A JSON-LD 1.1 context mapping onto W3C PROV-O, Web Annotation and ontorag-provenance |
The profile adds three things of its own: a per-file source list, per-feature citations, and two small vocabularies, supports (which part of a feature a citation backs) and method (how the feature was obtained from the source).
2. Feature collection#
A Cited GeoJSON document MUST be a GeoJSON FeatureCollection and MUST contain:
conformsTo— an array of IRIs that includeshttps://www.openhistorymap.org/cited-geojson/0.1.sources— an object whose keys are source IRIs and whose values are Source objects. Every source cited anywhere in the file MUST be listed here, once.
It SHOULD contain:
@context—https://www.openhistorymap.org/cited-geojson/0.1/context.jsonld, so that the file is also valid JSON-LD (see §8).
It MAY contain:
calendar— the calendar in which everywhenvalue in the file is expressed (see §5).georeferences— an array of georeference annotations for scanned maps used by the file's citations.name,description,license,creator,created,modified— descriptive metadata for the file as a whole, with their Dublin Core meanings.
3. Sources#
A source is a published work that evidence is taken from: a book, an archival document, a scanned
map, a dataset, a web page, a piece of software that generated data. The key of each entry in
sources is the source's IRI. It SHOULD resolve, and it SHOULD come from a shared registry when one
exists — for OpenHistoryMap that is the
OHM Zotero library, whose item IRIs have the
form https://www.zotero.org/groups/3757017/items/<KEY>.
A Source object:
| Member | Required | Meaning |
|---|---|---|
title |
MUST | Title of the work. |
type |
SHOULD | One of text, map, dataset, image, webpage, software, other. |
creator |
MAY | Author(s), as a string or array of strings. |
issued |
MAY | Publication date or year (ISO 8601 / EDTF string). |
publisher |
MAY | Publisher. |
identifier |
MAY | Other identifiers (ISBN, DOI, catalogue number), as a string or array. |
license |
SHOULD | Licence IRI, e.g. https://creativecommons.org/licenses/by/4.0/. |
url |
MAY | Landing page, if different from the source IRI. |
files |
MAY | Array of File objects: the concrete files that selectors point into. |
derivedFrom |
MAY | Array of source IRIs this source was itself built from. Each MUST also appear in sources. |
derivedFrom records lineage between sources — for example a modern dataset compiled from a
cadastral survey and a 19th-century guidebook — without claiming that a particular feature appears in
the older works. Claims about a feature are made only by its own citations.
3.1 Files#
A source can exist as several files (a PDF and its scan, several map sheets). Selectors point into a file, not into the abstract work, so page numbers and pixel coordinates are unambiguous.
| Member | Required | Meaning |
|---|---|---|
id |
MUST | Identifier of the file, unique within the document. An IRI, or a string used as a local key. |
checksum |
SHOULD | sha256:<hex> of the file's bytes. |
url |
MAY | Where the file can be retrieved. |
iiif |
MAY | IIIF Image API info.json URL, for images; image-region selectors are then IIIF-addressable. |
mediaType |
MAY | IANA media type, e.g. application/pdf, image/tiff. |
label |
MAY | Human label, e.g. "Sheet 3". |
4. Features#
Each Feature in the collection:
- MUST have an
idthat is stable: it identifies the same real (or imagined) thing across edits and releases, so that citations and external links keep pointing at it. Database row numbers are not stable identifiers; UUIDs are a good choice. - SHOULD have
@id, a resolvable IRI for the feature (for examplehttps://www.openhistorymap.org/id/<dataset>/<layer>/<id>). - MAY have
when(§5) andcitations(§4.1).
properties remain free-form, as in RFC 7946. Cited GeoJSON does not constrain them, but
supports can refer to them by name.
4.1 Citations#
citations is an array. Each citation says: this source, at this place, is evidence for these parts
of this feature, obtained by this method.
| Member | Required | Meaning |
|---|---|---|
source |
MUST | IRI of the cited source; MUST be a key of the collection's sources. |
file |
MAY | id of the file within that source that selector points into. RECOMMENDED when the source has more than one file. |
selector |
SHOULD | Array of selectors locating the evidence. Several selectors describe the same place in different ways (a quote and its page); they are not alternatives to choose between. Omit only when the whole source is the evidence (e.g. an imported dataset). |
supports |
MAY | Array of support terms. Default: ["existence"]. |
method |
SHOULD | One method term. |
label |
SHOULD | The citation formatted for a human reader, e.g. "Author, Title, vol. 2, p. 211". |
id |
MAY | IRI for the citation itself, so other documents can refer to it. |
confidence |
MAY | Number from 0 to 1: how strongly the cited evidence supports the claim. |
note |
MAY | Free-text remark (e.g. a disagreement between sources). |
created, creator |
MAY | When and by whom the citation was recorded. |
Several citations on one feature are cumulative; they MAY disagree, in which case note SHOULD say
how the feature resolves the disagreement.
4.2 Supports#
A support term names which part of the feature a citation is evidence for:
| Term | The citation supports… |
|---|---|
existence |
that the feature existed (or exists) at all |
geometry |
its shape and position |
name |
its name(s) |
when |
its dates |
properties.<key> |
the value of properties.<key>, e.g. properties.status |
The distinction matters: a chronicle may date a border without drawing it, and a map may draw a building without naming it.
4.3 Selectors#
Selectors are Web Annotation selectors in their JSON-LD serialisation, plus two from ontorag-provenance for paginated and structured documents:
type |
Members | Use |
|---|---|---|
TextQuoteSelector |
exact, optional prefix, suffix |
a quoted passage |
TextPositionSelector |
start, end (character offsets) |
a span in a plain-text file |
PageSelector |
pageStart, optional pageEnd, pageLabel, pageLabelEnd |
pages in a paginated file; pageStart is the 1-based position in the file, pageLabel the printed number a reader cites |
SectionSelector |
headingPath (array, outermost first), optional sectionTitle |
a section of a structured document |
FragmentSelector |
value, optional conformsTo |
a media fragment: xywh=x,y,w,h (pixel region of an image, Media Fragments), page=n (PDF, RFC 3778), or a IIIF region |
SvgSelector |
value (SVG markup) |
a non-rectangular region of an image, e.g. the traced outline itself |
Pixel coordinates in FragmentSelector and SvgSelector are in the full-resolution pixel space of
the cited file. Together with a georeference of that file, they tie the feature's
geometry back to the exact region of the scan it was traced from.
4.4 Methods#
| Term | The feature (or the supported part) was… |
|---|---|
traced |
drawn over a georeferenced map or image, by hand or with assistance |
transcribed |
taken from text (a description, a table, a gazetteer entry) |
surveyed |
measured in the field |
imported |
copied from another dataset, as is |
inferred |
reasoned from indirect evidence (e.g. placed between two attested points) |
generated |
produced by a model or procedural generator (the source is then the software, with its parameters) |
5. Time#
when follows the Linked Places Format
when object: timespans (each with start and/or end, each of which has in, or earliest
and/or latest), and optional periods, label and duration. Values are
ISO 8601-2 / EDTF strings, so years before the common era
and uncertain dates are expressible: "-0044", "1450~", "1047/1050".
A collection-level calendar states the calendar of all when values. It is an object with label
and optional id (IRI) and epoch. When absent, values are in the proleptic Gregorian calendar. Worlds
with their own calendars (the in-world Reckoning of Open Fantasy Maps' Claude world, for instance)
declare it here instead of pretending to be Gregorian.
6. Georeferences#
georeferences holds Georeference Annotations: Web
Annotations whose target is an image (or a region of it) and whose body is a GeoJSON
FeatureCollection of ground control points pairing pixel positions with geographic positions, plus
the transformation used. They are the output of georeferencing tools such as
Allmaps.
In Cited GeoJSON, each georeference's target MUST identify a file listed in sources (by the file's
id, url or iiif). A georeference MAY additionally carry accuracy:
| Member | Meaning |
|---|---|
rmse |
root-mean-square error of the control points after transformation |
unit |
unit of rmse: m (metres on the ground) or px (source pixels) |
method |
how it was estimated, e.g. residuals or leave-one-out |
controlPoints |
number of control points used |
Publishing accuracy lets readers judge how far a traced geometry can be trusted, independently of how carefully it was traced.
7. Conformance#
A document conforms to Cited GeoJSON 0.1 when:
- it is valid GeoJSON (RFC 7946);
- it validates against the JSON Schema;
- every citation's
sourceis a key ofsources, everyfileis theidof a file of that source, and everyderivedFromIRI is a key ofsources(these cross-references are not expressible in JSON Schema; the reference checker verifies them); - feature
ids are unique within the document.
Consumers MUST ignore members they do not understand, as RFC 7946 requires.
8. Linked-data reading#
With its @context, a Cited GeoJSON document is JSON-LD 1.1. The context maps:
- features to
geojson:Featurewith@id;geometry,propertiesandwhenare kept as JSON literals (@json), so they round-trip unchanged; - each citation to a
cg:Citationlinked from the feature bycg:citation; sourcetocg:citesSource,supportstocg:supports,methodtocg:method, and selectors to their Web Annotation and ontorag-provenance classes;- each source to a node with Dublin Core metadata, its files to nodes carrying
orp:checksum.
cg: is https://www.openhistorymap.org/cited-geojson/ns# (vocabulary). The direct reading
is deliberately loose: it attaches selectors to the citation and does not type sources.
The reference converter
(tools/to_orp.py)
produces the strict ontorag-provenance form, which validates
against its SHACL shapes:
- every source becomes an
orp:Sourcewith anorp:Packwhose named graph holds what that source says about the features, so sources can be composed or withheld one at a time; - a citation that locates a passage — at least one selector into a file with a
checksum— becomes anorp:Mention:oa:hasTargetanoa:SpecificResourcewhoseoa:hasSourceis theorp:SourceFileand whoseoa:hasSelectors are the selectors; - any other citation (a whole source, a whole file, or a file without checksum) becomes a
source-level
cg:Citation, and the feature getsorp:attestedInthe source.
Producers who want their citations to be full ontorag-provenance mentions should therefore record file checksums and selectors.
9. Serving#
Cited GeoJSON is a file format and a response format. Servers that also offer vector tiles SHOULD put
only the feature id and the number of citations in the tiles (nested citations do not fit the vector
tile model) and serve the full feature, with its citations, from a GeoJSON endpoint that clients call
when a feature is selected.
10. Changes#
- 0.1 — first draft.
Examples#
Every example is checked in CI: JSON Schema, cross-references, JSON-LD expansion, checksums and quotes against the cited files, and conversion to ontorag-provenance validated with its SHACL shapes.
Torre Asinelli, Bologna
Real open data from the Comune di Bologna. Two source-level citations (the dataset it was imported from, and the documentation page that names it) and the dataset's own lineage (derivedFrom the Catasto Gregoriano and Guidicini's Cose notabili). Download bologna-torre-asinelli.geojson.
Show the document
{
"@context": "https://www.openhistorymap.org/cited-geojson/0.1/context.jsonld",
"type": "FeatureCollection",
"conformsTo": [
"https://www.openhistorymap.org/cited-geojson/0.1"
],
"name": "Torre Asinelli, from Origine di Bologna",
"description": "A real feature from the Comune di Bologna's 'Origine di Bologna' open data (towers layer), expressed as Cited GeoJSON. The source dataset carries no dates, so the feature has no `when`. The feature id is a UUIDv5 of the dataset URL and the tower's name, because the dataset has no stable identifier of its own.",
"sources": {
"https://opendata.comune.bologna.it/explore/dataset/origini-di-bologna-torri/": {
"title": "Origini di Bologna - torri",
"type": "dataset",
"publisher": "Comune di Bologna",
"license": "https://creativecommons.org/licenses/by/4.0/",
"url": "https://opendata.comune.bologna.it/explore/dataset/origini-di-bologna-torri/information/",
"derivedFrom": [
"http://www.wikidata.org/entity/Q3663317",
"http://www.wikidata.org/entity/Q125554931"
]
},
"http://www.originebologna.com/torri/asinella-dall-o-asinelli": {
"title": "Asinella (dall'O, Asinelli) — Origine di Bologna",
"type": "webpage",
"publisher": "Origine di Bologna"
},
"http://www.wikidata.org/entity/Q3663317": {
"title": "Catasto Gregoriano",
"type": "map"
},
"http://www.wikidata.org/entity/Q125554931": {
"title": "Cose notabili della città di Bologna, ossia Storia cronologica de' suoi stabili sacri, pubblici e privati",
"type": "text",
"creator": "Giuseppe Guidicini",
"url": "https://archive.org/details/cosenotabilidell00guid"
}
},
"features": [
{
"type": "Feature",
"id": "91327a33-4fd8-5d07-8875-6cb42e3bfb7c",
"@id": "https://www.openhistorymap.org/id/origini-di-bologna/torri/91327a33-4fd8-5d07-8875-6cb42e3bfb7c",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
11.346691,
44.494152
],
[
11.346793,
44.494133
],
[
11.346825,
44.494198
],
[
11.346726,
44.494221
],
[
11.346691,
44.494152
]
]
]
},
"properties": {
"name": "Torre Asinelli",
"etichetta": "Torre",
"stato": "Esistente",
"numeromoderno": "2"
},
"citations": [
{
"source": "https://opendata.comune.bologna.it/explore/dataset/origini-di-bologna-torri/",
"method": "imported",
"supports": [
"existence",
"geometry",
"name",
"properties.stato",
"properties.numeromoderno"
],
"label": "Comune di Bologna, Origini di Bologna – torri (open data, CC BY 4.0)"
},
{
"source": "http://www.originebologna.com/torri/asinella-dall-o-asinelli",
"method": "transcribed",
"supports": [
"name"
],
"label": "Origine di Bologna, “Asinella (dall'O, Asinelli)”"
}
]
}
]
}
Wengnga, an invented realm
A realm of the Open Fantasy Maps world Claude: generated geometry cited to the generator's output, a date in the world's own calendar, and a quoted passage of the world guide, located by quote and section in a checksummed file. Download claude-wengnga.geojson.
Show the document
{
"@context": "https://www.openhistorymap.org/cited-geojson/0.1/context.jsonld",
"type": "FeatureCollection",
"conformsTo": [
"https://www.openhistorymap.org/cited-geojson/0.1"
],
"name": "Wengnga, from the Open Fantasy Maps world Claude",
"description": "An invented world's realm, expressed as Cited GeoJSON. The geometry is the realm's largest polygon, simplified (tolerance 1.2°) from the generated `politics` layer. Dates use the world's own calendar. The quote was checked against the cited file, whose checksum is recorded.",
"calendar": {
"label": "Years of the Reckoning (R.)",
"epoch": "Year 1 of the Reckoning, in the world Claude"
},
"sources": {
"https://fantasymaps.org/id/claude/source/worldgen": {
"title": "Claude world generator (seed 20260923)",
"type": "software",
"creator": "Open Fantasy Maps",
"identifier": "seed 20260923",
"files": [
{
"id": "politics",
"url": "https://staticfiles.fantasymaps.org/claude/raw/geojson/politics.geojson",
"checksum": "sha256:1920032ac9bff8117e5b818fb3c05acc1aaae731cfa8988d88fc5309fc304443",
"mediaType": "application/geo+json",
"label": "Generated politics layer"
}
]
},
"https://fantasymaps.org/id/claude/source/world-guide": {
"title": "Claude — World Guide",
"type": "text",
"creator": "Open Fantasy Maps",
"files": [
{
"id": "world-md",
"url": "https://staticfiles.fantasymaps.org/claude/WORLD.md",
"checksum": "sha256:142790145396472c107932cb088795b62ff52906925d4adeb62bef6d18732903",
"mediaType": "text/markdown"
}
]
}
},
"features": [
{
"type": "Feature",
"id": "c530d10e-5455-521f-ad85-921f7a9a2873",
"@id": "https://fantasymaps.org/id/claude/politics/c530d10e-5455-521f-ad85-921f7a9a2873",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-31.88,
27.53
],
[
-34.92,
19.66
],
[
-37.35,
20.52
],
[
-37.58,
24.49
],
[
-42.41,
18.77
],
[
-43.27,
20.12
],
[
-47.0,
19.16
],
[
-54.78,
10.77
],
[
-62.46,
11.65
],
[
-68.8,
16.0
],
[
-72.75,
10.95
],
[
-62.66,
-9.23
],
[
-56.22,
-4.77
],
[
-46.25,
-6.66
],
[
-44.0,
-1.83
],
[
-46.12,
2.16
],
[
-45.55,
1.97
],
[
-43.02,
-2.8
],
[
-41.76,
-7.95
],
[
-44.27,
-15.61
],
[
-50.25,
-24.66
],
[
-46.8,
-27.3
],
[
-45.97,
-30.45
],
[
-35.38,
-33.73
],
[
-31.5,
-32.56
],
[
-34.23,
-27.97
],
[
-32.75,
-21.88
],
[
-35.23,
-13.36
],
[
-34.25,
-11.67
],
[
-45.75,
3.91
],
[
-42.19,
7.35
],
[
-26.05,
9.53
],
[
-30.25,
10.94
],
[
-26.77,
23.08
],
[
-31.88,
27.53
]
]
]
},
"properties": {
"name": "Wengnga",
"class": "political",
"subclass": "city league",
"culture": "ilunga"
},
"when": {
"timespans": [
{
"start": {
"in": "1078"
}
}
],
"label": "from 1078 R."
},
"citations": [
{
"source": "https://fantasymaps.org/id/claude/source/worldgen",
"file": "politics",
"method": "generated",
"supports": [
"existence",
"geometry",
"properties.subclass",
"properties.culture"
],
"label": "Claude world generator, seed 20260923, politics layer"
},
{
"source": "https://fantasymaps.org/id/claude/source/world-guide",
"file": "world-md",
"method": "transcribed",
"supports": [
"name",
"when"
],
"selector": [
{
"type": "TextQuoteSelector",
"exact": "The old imperial cities, led by Ngendani, re-form as the **Wengnga City League**, the Imperium's rump and still the largest realm on the map"
},
{
"type": "SectionSelector",
"headingPath": [
"Claude — World Guide",
"History"
],
"sectionTitle": "History"
}
],
"label": "Claude — World Guide, History › 1078",
"note": "The guide and the generated layers were produced together; the guide is the world's canonical text."
}
]
}
]
}
A lake traced from a georeferenced image
Tracing provenance: the feature cites the pixel region of the image it was traced from, and the collection carries the image's georeference (25 control points, second-order polynomial) with its computed accuracy. Download traced-from-image.geojson.
Show the document
{
"@context": "https://www.openhistorymap.org/cited-geojson/0.1/context.jsonld",
"type": "FeatureCollection",
"conformsTo": [
"https://www.openhistorymap.org/cited-geojson/0.1"
],
"name": "A lake traced from a georeferenced image",
"description": "Demonstrates tracing provenance: a feature cites the pixel region of the image it was traced from, and the collection carries the image's georeference with its accuracy. The 'scan' here is a real rendered overview of the Claude world (an equirectangular image, so its georeference is known exactly); the lake outline was taken from the generated layer, so this file illustrates the structure rather than a manual tracing. Control points and the RMSE were computed, not estimated: a second-order polynomial from pixels to Web Mercator over this region leaves the stated residual (a first-order, affine fit would leave about 42 km, because it cannot follow the equirectangular-to-Mercator stretch).",
"sources": {
"https://fantasymaps.org/id/claude/source/overview-render": {
"title": "Claude world overview render",
"type": "image",
"creator": "Open Fantasy Maps",
"files": [
{
"id": "render",
"url": "https://staticfiles.fantasymaps.org/claude/raw/geojson/render.png",
"checksum": "sha256:5c87f07ddd4f87a1cb5184173f53615aa722892bf0588791057079aa3c2beba4",
"mediaType": "image/png",
"label": "2400 × 1733 px, equirectangular, lon -90.0…90.0, lat -60.0…70.0"
}
]
},
"https://fantasymaps.org/id/claude/source/world-guide": {
"title": "Claude — World Guide",
"type": "text",
"creator": "Open Fantasy Maps",
"files": [
{
"id": "world-md",
"url": "https://staticfiles.fantasymaps.org/claude/WORLD.md",
"checksum": "sha256:142790145396472c107932cb088795b62ff52906925d4adeb62bef6d18732903",
"mediaType": "text/markdown"
}
]
}
},
"georeferences": [
{
"id": "https://fantasymaps.org/id/claude/georef/overview-render",
"type": "Annotation",
"@context": "http://iiif.io/api/extension/georef/1/context.json",
"motivation": "georeferencing",
"target": {
"type": "SpecificResource",
"source": {
"id": "https://staticfiles.fantasymaps.org/claude/raw/geojson/render.png",
"type": "Image",
"width": 2400,
"height": 1733
}
},
"body": {
"type": "FeatureCollection",
"transformation": {
"type": "polynomial",
"options": {
"order": 2
}
},
"features": [
{
"type": "Feature",
"properties": {
"resourceCoords": [
1440.0,
199.96
]
},
"geometry": {
"type": "Point",
"coordinates": [
18.0,
55.0
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1506.67,
199.96
]
},
"geometry": {
"type": "Point",
"coordinates": [
23.0,
55.0
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1573.33,
199.96
]
},
"geometry": {
"type": "Point",
"coordinates": [
28.0,
55.0
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1640.0,
199.96
]
},
"geometry": {
"type": "Point",
"coordinates": [
33.0,
55.0
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1706.67,
199.96
]
},
"geometry": {
"type": "Point",
"coordinates": [
38.0,
55.0
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1440.0,
254.95
]
},
"geometry": {
"type": "Point",
"coordinates": [
18.0,
50.875
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1506.67,
254.95
]
},
"geometry": {
"type": "Point",
"coordinates": [
23.0,
50.875
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1573.33,
254.95
]
},
"geometry": {
"type": "Point",
"coordinates": [
28.0,
50.875
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1640.0,
254.95
]
},
"geometry": {
"type": "Point",
"coordinates": [
33.0,
50.875
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1706.67,
254.95
]
},
"geometry": {
"type": "Point",
"coordinates": [
38.0,
50.875
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1440.0,
309.94
]
},
"geometry": {
"type": "Point",
"coordinates": [
18.0,
46.75
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1506.67,
309.94
]
},
"geometry": {
"type": "Point",
"coordinates": [
23.0,
46.75
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1573.33,
309.94
]
},
"geometry": {
"type": "Point",
"coordinates": [
28.0,
46.75
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1640.0,
309.94
]
},
"geometry": {
"type": "Point",
"coordinates": [
33.0,
46.75
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1706.67,
309.94
]
},
"geometry": {
"type": "Point",
"coordinates": [
38.0,
46.75
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1440.0,
364.93
]
},
"geometry": {
"type": "Point",
"coordinates": [
18.0,
42.625
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1506.67,
364.93
]
},
"geometry": {
"type": "Point",
"coordinates": [
23.0,
42.625
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1573.33,
364.93
]
},
"geometry": {
"type": "Point",
"coordinates": [
28.0,
42.625
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1640.0,
364.93
]
},
"geometry": {
"type": "Point",
"coordinates": [
33.0,
42.625
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1706.67,
364.93
]
},
"geometry": {
"type": "Point",
"coordinates": [
38.0,
42.625
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1440.0,
419.92
]
},
"geometry": {
"type": "Point",
"coordinates": [
18.0,
38.5
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1506.67,
419.92
]
},
"geometry": {
"type": "Point",
"coordinates": [
23.0,
38.5
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1573.33,
419.92
]
},
"geometry": {
"type": "Point",
"coordinates": [
28.0,
38.5
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1640.0,
419.92
]
},
"geometry": {
"type": "Point",
"coordinates": [
33.0,
38.5
]
}
},
{
"type": "Feature",
"properties": {
"resourceCoords": [
1706.67,
419.92
]
},
"geometry": {
"type": "Point",
"coordinates": [
38.0,
38.5
]
}
}
]
},
"accuracy": {
"rmse": 3295.6,
"unit": "m",
"method": "residuals",
"controlPoints": 25
}
}
],
"features": [
{
"type": "Feature",
"id": "711e96cd-06ed-560c-a2b4-46f5a55b150a",
"@id": "https://fantasymaps.org/id/claude/internal_waters/711e96cd-06ed-560c-a2b4-46f5a55b150a",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
23.0,
54.453
],
[
22.273,
53.695
],
[
21.703,
51.125
],
[
20.32,
50.477
],
[
19.727,
49.383
],
[
18.383,
48.602
],
[
18.383,
47.523
],
[
19.984,
46.523
],
[
21.516,
46.523
],
[
22.719,
46.977
],
[
24.547,
45.383
],
[
27.375,
45.75
],
[
28.281,
45.25
],
[
29.898,
47.867
],
[
31.0,
47.953
],
[
31.75,
47.172
],
[
30.898,
46.867
],
[
30.047,
45.5
],
[
30.203,
43.547
],
[
28.547,
42.195
],
[
29.023,
40.648
],
[
30.43,
40.023
],
[
34.43,
39.477
],
[
35.422,
39.0
],
[
36.953,
39.547
],
[
37.242,
41.578
],
[
36.523,
43.461
],
[
36.703,
45.75
],
[
36.188,
46.227
],
[
34.133,
46.008
],
[
32.75,
46.422
],
[
34.875,
46.547
],
[
35.953,
47.875
],
[
35.977,
49.398
],
[
34.977,
52.18
],
[
32.164,
52.773
],
[
30.5,
54.203
],
[
28.75,
54.203
],
[
28.273,
53.648
],
[
28.453,
50.875
],
[
27.422,
50.523
],
[
25.023,
51.898
],
[
24.422,
54.367
],
[
23.0,
54.453
]
]
]
},
"properties": {
"name": "Lake Houyang",
"class": "lake",
"subclass": "salt"
},
"citations": [
{
"source": "https://fantasymaps.org/id/claude/source/overview-render",
"file": "render",
"method": "traced",
"supports": [
"geometry"
],
"selector": [
{
"type": "FragmentSelector",
"value": "xywh=1445,207,252,207",
"conformsTo": "http://www.w3.org/TR/media-frags/"
}
],
"label": "Claude world overview render, region 1445,207,252,207"
},
{
"source": "https://fantasymaps.org/id/claude/source/world-guide",
"file": "world-md",
"method": "transcribed",
"supports": [
"name",
"properties.subclass"
],
"selector": [
{
"type": "TextQuoteSelector",
"exact": "a 1.2-million-km² salt\ninland sea",
"prefix": "**Lake Houyang**, "
},
{
"type": "SectionSelector",
"headingPath": [
"Claude — World Guide",
"Geography"
],
"sectionTitle": "Geography"
}
],
"label": "Claude — World Guide, Geography › Deserts"
}
]
}
]
}