Description
The Spec
This issue is to track adding full support for the OGC API - Features spec as well as any discussion around the process.
The spec currently includes 5 parts with parts 4 and 5 currently under draft. The initial plan will be to support Part 1: Core with others as follow up tasks. I currently do not expect us to support Part 2 which adds CRSs which Cesium already does not do much work with.
- OGC API - Features - Part 1: Core corrigendum, version 1.0.1 standard
- OGC API - Features - Part 2: Coordinate Reference Systems by Reference corrigendum, version 1.0.1 standard
- OGC API - Features - Part 3: Filtering, version 1.0.0
- OGC API - Features - Part 4: Create, Replace, Update and Delete draft
- OGC API - Features - Part 5: Schemas draft
Format/Encoding
The spec does not mandate any specific encoding or format but strongly favors HTML and GeoJSON with additional suggestions for GML. We will focus the initial implementation only around GeoJSON (especially since we already support it) with other formats being optional secondary efforts in the future as requested.
Side note: the API does not dictate a specific way to designate what format to serve. I believe most servers will implement this with the content type in headers but another suggestion from the Spec is to use a f=[format]
query parameter which I've observed utilized in other libraries and servers so my current assumption is this is one of the more generally accepted methods.
Other implementations
Just listing off some other implementations I've found. Mainly from this list
ogcapi-js
- lightweight and focused on the Features API- Works well but I don't see any way to control authentication beyond adjusting query params for every request. May not work with header auth?
ogc-client
- supports multiple OGC specs- Similar auth concerns. Allows setting global fetch options for the whole client which could make it hard to use multiple sources
- The API seems more focused on exploring a service completely and may not fit our needs and use case as closely
- Only works in browser as it relies on
window
internally
Example data
Just an assortment of data sources from servers that we know support the OGC Features API and we can use for testing during implementation
- National Land Survey of Finland seems to have a bunch of data
- https://demo.ldproxy.net/ Demos using ldproxy but has a handful of different data that we can view
- Data has a mix of areas, lines and points which is useful
- Supports an HTML representation so it's really easy to explore the data without another viewer. Just add
?f=json
to get the GeoJSON representation - Some of these are very large datasets, for example this one of road network nodes has over 10,000 points which could be useful for stress testing or any loading optimizations
- ArcGIS also seems to have OGC Features as an option but I have not explored it much yet
- We may be able to use the API key we already use
- Work with OGC Features services—ArcGIS Server | Documentation for ArcGIS Enterprise
- Tutorial: Style features | CesiumJS | Esri Developer
- Please mention more if you know of good ones!
Dataset sizes/Number of features
These are the sources + collection ids of the links listed above. As you can see we have access to quite a few different sizes of data, especially large datasets, which will be handy for testing.
strassen
33,754 nullpunkte - Zero points
31,591 abschnitteaeste - Sections and Branches
31,464 unfaelle - Accidents
31,464 unfaelle2 - Accidents (alternative representation)
11,256 netzknoten - Network nodes
vinyard
1,585 vineyards - Vineyards
finland-topo (Topographic Database)
17,246,159 virtavesikapea - Stream narrow
9,993,979 maastokuvionreuna - Terrain pattern edge
6,866,135 korkeuskayra - Elevation contour
5,727,082 rakennusreunaviiva - Building edge line
5,622,883 rakennus - Building
3,730,942 tieviiva - Road line
2,087,881 metsamaankasvillisuus - Forest land vegetation
1,553,229 kalliosymboli - Rock symbol
1,550,716 harvalouhikko - Sparse quarry
1,411,551 suo - Swamp
1,289,728 kallioalue - Rock area
1,172,353 paikannimi - Place name
629,270 soistuma - Swamp
546,290 vesikivi - Water stone
505,938 kivi - Stone
493,539 maasto2kuvionreuna - Terrain pattern 2 edge
425,224 maatalousmaa - Agricultural land
212,147 korkeuskayrankorkeusarvo - Elevation contour height value
209,310 jyrkanne - Cliff
207,358 muuavoinalue - Other open area
205,303 viettoviiva - Slope line
196,532 virtausnuoli - Flow arrow
167,285 kivikko - Gravel
159,502 sahkolinja - Power line
151,233 jarvi - Lake
149,238 selite - Explanation
140,752 syvyyskayra - Lake Depth contour
128,037 vesikuoppa - Water pit
127,920 syvyyspiste - Depth point
119,244 vedenpinnankorkeusluku - Water surface elevation value
109,804 sahkolinjansymboli - Power line symbol
108,676 karttasymboli - Map symbol
93,546 luiska - Ramp
89,391 suurjannitelinjanpylvas - High voltage line pole
85,670 kaislikko - Reed bed
83,484 niitty - Meadow
68,883 muuntaja - Transformer
64,184 syvyyskayransyvyysarvo - Depth crossing depth value
57,753 allas - Basin
53,580 rakennelma - Structure
46,921 tiesymboli - Road symbol
45,170 suojelualueenreunaviiva - Protected area boundary
36,616 lahde - Spring (water source)
35,196 tienroteksti - Road text
33,145 vesikivikko - Water gravel
30,645 tervahauta - Tar pit
28,772 osoitepiste - Address point
27,053 aita - Fence
21,883 luonnonsuojelualue - Nature conservation area
20,576 virtavesialue - Stream area
19,095 rautatie - Railway
18,942 matalikko - Shoal
15,855 urheilujavirkistysalue - Sports and recreation area
15,742 koski - Rapids
13,706 maaaineksenottoalue - Soil extraction area
13,565 hietikko - Sand
12,428 rauhoitettukohde - Protected area
12,188 pistolaituriviiva - Dockline
11,986 autoliikennealue - Vehicle traffic area
11,776 maatuvavesialue - Groundwater area
10,479 vesikulkuvayla - Waterway
8,800 portti - Gate
8,446 masto - Mast
7,991 varastoalue - Storage area
7,583 mastonkorkeus - Mast height
5,771 taajaanrakennetunalueenreuna - Edge of the densely built area
5,680 turvalaite - Safety device
5,423 taajaanrakennettualue - Densely built area
4,857 suojanne - Shelter
3,917 muuntoasema - Transformer station
3,595 puisto - Park
3,508 kansallispuisto - National park
3,413 puurivi - Tree line
3,299 rautatiensymboli - Railway symbol
2,875 muistomerkki - Monument
2,389 ilmaradankannatinpylvas - Aerial railway support pole
2,265 uittolaite - Rafting device
2,228 vesikulkuvaylanteksti - Waterway text
1,933 tulentekopaikka - Campfire site
1,885 ilmarata - Aerial railway
1,867 tuulivoimala - Wind turbine
1,845 tulvaalue - Flood area
1,791 puu - Tree
1,790 pato - Dam
1,558 valtakunnanrajapyykki - National boundary marker
1,549 louhos - Quarry
1,534 taytemaa - Fill land
1,380 hautausmaa - Cemetery
1,304 savupiippu - Chimney
1,254 suojametsanreunaviiva - Protective forest boundary
1,242 lahestymisvalo - Approach light
1,202 kunnanhallintoraja - Municipal boundary
1,190 nakotorni - Watchtower
1,164 meri - Sea
828 lentokenttaalue - Airport area
807 metsamaanmuokkaus - Forest land cultivation
659 vesiasteikko - Water scale
639 aallonmurtaja - Breakwater
632 rajavyohykkeentakaraja - Border zone back boundary
559 rautatieliikennepaikka - Railway traffic area
493 savupiipunkorkeus - Chimney height
465 vesikulkuvaylankulkusuunta - Waterway direction
378 kellotapuli - Bell tower
361 vesitorni - Water tower
339 ampumaalue - Shooting range
309 kunnanhallintokeskus - Municipal administration center
308 kunta - Municipality
258 metsanraja - Forest boundary
206 ankkuripaikka - Anchorage
195 merkittavaluontokohde - Notable natural site
190 sisaistenaluevesienulkoraja - Internal water boundary
137 sulkuportti - Lock gate
101 ulkojasisasaaristonraja - Outer archipelago boundary
95 satamaalue - Port area
82 kaatopaikka - Landfill
76 hylky - Wreck
69 aluemerenulkoraja - Area sea boundary
40 kalliohalkeama - Rock fracture
36 uittoranni - Rafting shore
20 luonnonpuisto - Nature reserve
19 suojaalueenreunaviiva - Protection area boundary
18 suojaalue - Protection area
14 hylynsyvyys - Wreck depth
13 retkeilyalue - Recreation area
3 aidansymboli - Fence symbol
0 pelastuskoodipiste - Rescue code point
0 suojametsa - Protective forest
0 tunnelinaukko - Tunnel entrance
daraa
3,694 TransportationGroundCrv - Transportation - Ground (Curves)
575 UtilityInfrastructurePnt - Utility Infrastructure (Points)
101 AgricultureSrf - Agricultural (Surfaces)
82 StructureSrf - Structure (Surfaces)
73 InformationPnt - Information (Points)
54 TransportationGroundPnt - Transportation - Ground (Points)
52 SettlementSrf - Settlement (Surfaces)
48 SettlementPnt - Settlement (Points)
38 StructurePnt - Structure (Points)
33 o2s_l - Other (Curves)
29 MilitarySrf - Military (Surfaces)
27 StructureCrv - Structure (Curves)
26 HydrographyCrv - Hydrography (Curves)
20 AeronauticCrv - Aeronautic (Curves)
20 HydrographySrf - Hydrography (Surfaces)
17 o2s_p - Other (Points)
14 CultureSrf - Cultural (Surfaces)
11 UtilityInfrastructureCrv - Utility Infrastructure (Curves)
9 FacilitySrf - Facility (Surfaces)
8 AeronauticSrf - Aeronautic (Surfaces)
8 VegetationSrf - Vegetation (Surfaces)
6 RecreationSrf - Recreation (Surfaces)
5 CulturePnt - Cultural (Points)
5 TransportationGroundSrf - Transportation - Ground (Surfaces)
4 TransportationWaterCrv - Transportation - Water (Curves)
3 FacilityPnt - Facility (Points)
3 RecreationPnt - Recreation (Points)
3 o2s_a - Other (Surfaces)
2 HydrographyPnt - Hydrography (Points)
1 AgriculturePnt - Agricultural (Points)
1 IndustrySrf - Industry (Surfaces)
1 PhysiographyCrv - Physiography (Curves)
1 RecreationCrv - Recreation (Curves)
finland-places (Geographic names)
1,401,034 mapnames - MapName
817,962 placenames - PlaceName
817,962 placenames_simple - PlaceNameSimple
804,789 places - Place