Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating GeoJSON-T & writing a specification #3

kgeographer opened this issue Sep 10, 2020 · 0 comments

Updating GeoJSON-T & writing a specification #3

kgeographer opened this issue Sep 10, 2020 · 0 comments


Copy link

kgeographer commented Sep 10, 2020

Some projects have begun implementing GeoJSON-T or variations of it, (e.g. Linked Places format), or are considering adopting it. Therefore the draft "spec" in the README file should be transformed into an actual versioned specification soon. This issue begins discussion towards that end.

We need to answer the questions, “what should a valid GeoJSON-T parser interpret and render,” and "which elements are required? which are optional?" In practice, apps and libraries supporting core GeoJSON itself vary in how completely they do, for various reasons. For example, the GeometryCollection in QGIS vs. Leaflet/Mapbox vs., etc.).

The current spec was intended to meet several use cases, so its structure will seem like a burden to those with simple requirements. Here is the "why" of what is there so far:

Elements of a "when" object in GeoJSON-T

"timespans": [ ]

  • This is an array because the temporal extent of a feature can be punctuated, or intermittent (a feature had g geometry and p properties during or throughout multiple intervals)

  • A timespan can have between 1 and 4 'parts', allowing start and end to be intervals, not only points in time, i.e. earliest_start, start, end, latest_end. This allows expression of one type of uncertainty.

  • The form "start": { "in": "nnnn-nn" } expresses something like "sometime within."

"periods": [ ]

  • This element accomodates 1 or more named periods as published in for example the PeriodO or ChronOntology temporal gazetteers.

"duration": ""

  • Allows expressing "for 100 years during the timespan of this when" (P100Y). P = Period. Derived from an early draft of EDTF (ISO8601-2)?

  • Arguably, few datasets will specify this, but timeline visualizations can be misleading as a result. E.g. a month-long journey some unknown time during a year.

"follows": ""

  • This can be used to describe a sequence of 'event-like features', e.g. of waypoints in a journey, when the dates are unknown.

"label": ""

  • Supports a natural language labeling of a timespan/period in graphical interfaces.

Proposed changes

Please comment here and/or create separate issues to express concerns, suggestions, use cases, etc.

Simpler structure of "when"

when becomes (optionally?) a timespan object only (or object array), with 4 possible attributes and only 1 required, e.g.

    "when": {

Alternate time interval syntax per ISO 8601-2 (EDTF Level 0)

"when": {
    "timespans": [

Eliminate "duration" and/or "follows" elements

Are the cases they support too unusual?

Include some ISO 8601-2 (EDTF Level 1) features

See specification for details. Support can be specified as e.g. "Level 0 is supported, and in addition the following features of level 1 are supported (list features)."

  • Letter-prefixed calender year when year exceeds 4 digits, e.g.

    e.g. 'Y-100000' is the year -100000

  • Seasons: 21, 22, 23, 24 may be used used to signify ' Spring', 'Summer', 'Autumn', 'Winter'

    e.g. '2001-21' is Spring, 2001

  • Qualification of a date: '?', '~' and '%' are used to mean "uncertain", "approximate", and "uncertain as well as approximate"

    e.g. '2004-06~'' is an approximate year-month

  • Shorthand intervals using 'X' in right-most digits

    e.g. '192X' indicates "the 1920s"; '19XX', the 20th century

  • Open end time intervals

    e.g. ‘1985-04/..’ is "starting in April, 1985; '../1985-04' is "until April, 1985"

  • Unknown starts and ends

    e.g. '‘1985/’ is "starting in 1985, end unknown"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet

No branches or pull requests

1 participant