diff --git a/.gitignore b/.gitignore index aa4b9c076..e69485b2f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,4 @@ .DS_Store .docusaurus node_modules/ -docs/_examples/ -docs/_schema/ -docs/schema/ -docs/schema -static/_schema/ build/ diff --git a/blog/2024-04-22-beta-release.mdx b/blog/2024-04-22-beta-release.mdx index 966e8d488..8800f9ad6 100644 --- a/blog/2024-04-22-beta-release.mdx +++ b/blog/2024-04-22-beta-release.mdx @@ -89,7 +89,7 @@ WITH admins AS ( We plan to [deprecate admins](https://docs.overturemaps.org/release-notes/) by the July release. In the meantime, both `admins` and `divisions` will be available to users. ## Bridges, islands, waterfalls, and more! -We added more rich detail to our `base` layer in this release, including an `infrastructure` type with familiar features from [Facebook’s Daylight map distribution](https://daylightmap.org/). We also added new subtypes and classes for the `land`, `land_use`, and `water` feature types. You'll find a comprehensive listing of the subtypes and classes for each feature type in our [schema reference docs](https://docs.overturemaps.org/schema/reference/base/infrastructure). Ready to make your own map? We have a [tutorial to help you get started](https://docs.overturemaps.org/examples/build-a-map/#13/47.6/-122.33/0/45). +We added more rich detail to our `base` layer in this release, including an `infrastructure` type with familiar features from [Facebook’s Daylight map distribution](https://daylightmap.org/). We also added new subtypes and classes for the `land`, `land_use`, and `water` feature types. You'll find a comprehensive listing of the subtypes and classes for each feature type in our schema reference docs. Ready to make your own map? We have a [tutorial to help you get started](https://docs.overturemaps.org/examples/build-a-map/#13/47.6/-122.33/0/45). ## Stay tuned for more highlights We'll be back soon with more posts that explore our path from the beta release to production. In the meantime, we invite you to [get started with our data](https://docs.overturemaps.org/getting-data/) and share with us your [comments and feedback](https://github.com/OvertureMaps/data/discussions). diff --git a/blog/2024-05-16-land-cover.mdx b/blog/2024-05-16-land-cover.mdx index f1da3b102..3f46ddc65 100644 --- a/blog/2024-05-16-land-cover.mdx +++ b/blog/2024-05-16-land-cover.mdx @@ -15,7 +15,7 @@ The [May release](https://docs.overturemaps.org/release/latest) of Overture Maps Our `land_cover` layer is vectorized data derived from the [European Space Agency’s 2020 WorldCover (10m) rasters](https://esa-worldcover.org/en). It's similar to the land cover layer in the [Daylight](https://daylightmap.org/2023/10/11/landcover.html) map distribution, but Overture Maps added higher-resolution data (zoom level 15) with more detail and land cover classes. You'll find 10 subtypes in the new data: snow, forest, urban, grass, crop, barren, wetland, moss, mangrove, and shrub. -Our May release also includes [schema properties](https://docs.overturemaps.org/schema/reference/base/land_cover/) that offer cartographic "hints" for optimal use of Overture Maps data in mapmaking. We added `min_zoom` and `max_zoom` to define the recommended zooms for each resolution of land cover, using the common “slippy maps” zoom level specification. This is a first step toward improving the user experience for mapmakers. We plan to expand these properties in future releases of Overture Maps data. +Our May release also includes schema properties that offer cartographic "hints" for optimal use of Overture Maps data in mapmaking. We added `min_zoom` and `max_zoom` to define the recommended zooms for each resolution of land cover, using the common “slippy maps” zoom level specification. This is a first step toward improving the user experience for mapmakers. We plan to expand these properties in future releases of Overture Maps data. ## Exploring land cover diff --git a/blog/2024-08-15-preview-august-release.mdx b/blog/2024-08-15-preview-august-release.mdx index da78809ca..55a0f7ebf 100644 --- a/blog/2024-08-15-preview-august-release.mdx +++ b/blog/2024-08-15-preview-august-release.mdx @@ -46,7 +46,7 @@ information about roads from our data sources. For example, we’ve been able to move more than 30 million “unknown” road segments from OSM into the new subclasses, laying the groundwork for richer and more detailed map displays with Overture data. -Here's how class, subclasses, and flags are modeled in the [Overture schema](https://github.com/OvertureMaps/schema/blob/main/schema/transportation/segment.yaml): +Here's how class, subclasses, and flags are modeled in the Overture schema: ```yaml class: footway @@ -75,7 +75,7 @@ subclass_rules: ### Connectors To better support routing use cases, we added to the segment feature type [a new property](https://github.com/OvertureMaps/schema/pull/257) called `connectors`: an array of IDs with pre-computed linear reference values that explicitly link segments and -[connector features](https://docs.overturemaps.org/schema/reference/transportation/connector/) via coordinates. The `connectors` property contains a list of connector features to which a segment feature is physically connected and the relative location of those connector features along the segment. Each connector is a possible routing decision point, meaning it defines a place along the segment in which there is possibility to transition to other segments that share the same connector. +connector features via coordinates. The `connectors` property contains a list of connector features to which a segment feature is physically connected and the relative location of those connector features along the segment. Each connector is a possible routing decision point, meaning it defines a place along the segment in which there is possibility to transition to other segments that share the same connector. This new property — a replacement for the existing `connector_ids` property — will reduce complexity and improve accuracy as we calculate the intersections between segment and connector features. We plan to deprecate the `connector_ids` property in the August release and remove it from the schema in the October release. diff --git a/blog/2024-12-18-transportation-to-ga.mdx b/blog/2024-12-18-transportation-to-ga.mdx index b3a6a4607..61d9f3005 100644 --- a/blog/2024-12-18-transportation-to-ga.mdx +++ b/blog/2024-12-18-transportation-to-ga.mdx @@ -22,7 +22,7 @@ We've had to break a few things in our schema to make way for improvements: - To better support routing use cases, we added to the segment feature type a new property called `connectors`: an array of IDs with pre-computed linear reference values that explicitly link segments and connector features via coordinates. Each connector is a possible routing decision point, meaning it defines a place along the segment in which there is possibility to transition to other segments that share the same connector. This new property — a replacement for the old `connector_ids` property — will reduce complexity and improve accuracy as we calculate the intersections between segment and connector features. You can read more about this improvement [here](https://docs.overturemaps.org/blog/2024/08/15/preview-august-release/#transportation-schema-changes). -- In the [November release](https://docs.overturemaps.org/release/2024-11-13.0/), we removed `lanes` from the schema to eliminate a significant trust violation. The `lanes` property has existed in the schema for months but we never populated it with data in our releases, which is a poor experience for our community. We intend to redesign `lanes` in the coming months. +- In the November release, we removed `lanes` from the schema to eliminate a significant trust violation. The `lanes` property has existed in the schema for months but we never populated it with data in our releases, which is a poor experience for our community. We intend to redesign `lanes` in the coming months. With these changes, we are confident we’ve met our requirements for general availability (GA). We'll continue refining our schema and improving our data throughout 2025. We encourage our community to keep the feedback coming, particularly around data quality and our core use cases of map display, routing, and matching data via GERS. diff --git a/blog/2024/2024-07-22.0.mdx b/blog/2024/2024-07-22.0.mdx index 9e0ae3652..799a7edf9 100644 --- a/blog/2024/2024-07-22.0.mdx +++ b/blog/2024/2024-07-22.0.mdx @@ -36,7 +36,7 @@ You can access the datasets by following the process outlined [here](https://doc ## New theme: addresses -In this release, we added a new theme called [addresses](/schema/reference/addresses/address) that includes over 200 million address features for 14 countries. We are releasing this theme in alpha and anticipate significant changes over the next several releases. We invite the Overture community to test the addresses schema and data and offer feedback via the [data](https://github.com/OvertureMaps/data/issues) and [schema](https://github.com/OvertureMaps/schema/issues) repos. +In this release, we added a new theme called addresses that includes over 200 million address features for 14 countries. We are releasing this theme in alpha and anticipate significant changes over the next several releases. We invite the Overture community to test the addresses schema and data and offer feedback via the [data](https://github.com/OvertureMaps/data/issues) and [schema](https://github.com/OvertureMaps/schema/issues) repos. ## Breaking changes diff --git a/blog/2024/2024-12-18.0.mdx b/blog/2024/2024-12-18.0.mdx index 7238daa08..c37c9e5b8 100644 --- a/blog/2024/2024-12-18.0.mdx +++ b/blog/2024/2024-12-18.0.mdx @@ -10,7 +10,7 @@ import QueryBuilder from '@site/src/components/queryBuilder'; ## Overview -**The `2024-12-18.0` release of Overture data and `v1.4.0` of the Overture schema are now available.** This month [our transportation theme is going to GA](/blog), we're launching a [bathymetry feature type](/schema/reference/base/bathymetry) in our base theme, and we're at 400 million address records and counting in our [addresses theme](/guides/addresses). What a way to end the year! +**The `2024-12-18.0` release of Overture data and `v1.4.0` of the Overture schema are now available.** This month [our transportation theme is going to GA](/blog), we're launching a bathymetry feature type in our base theme, and we're at 400 million address records and counting in our [addresses theme](/guides/addresses). What a way to end the year! The datasets are available as GeoParquet files stored on both AWS and Azure. The release paths are: diff --git a/docs/_examples/addresses/address.yaml b/docs/_examples/addresses/address.yaml new file mode 100644 index 000000000..f37ee63ae --- /dev/null +++ b/docs/_examples/addresses/address.yaml @@ -0,0 +1,17 @@ +--- +id: overture:addresses:address:1 +type: Feature +geometry: + type: Point + coordinates: [-71.2086153, 42.3373725] +properties: + theme: addresses + type: address + version: 0 + country: US + address_levels: + - value: MA + - value: NEWTON CENTRE + postcode: '02459' + street: COMMONWEALTH AVE + number: '1000' diff --git a/docs/_examples/addresses/address_all_missing_address_levels.yaml b/docs/_examples/addresses/address_all_missing_address_levels.yaml new file mode 100644 index 000000000..8e29e9cef --- /dev/null +++ b/docs/_examples/addresses/address_all_missing_address_levels.yaml @@ -0,0 +1,17 @@ +--- +id: overture:addresses:addres:1 +type: Feature +geometry: + type: Point + coordinates: [-71.2086153, 42.3373725] +properties: + theme: addresses + type: address + version: 0 + country: US + address_levels: + - {} + - {} + postcode: '02459' + street: COMMONWEALTH AVE + number: '1000' diff --git a/docs/_examples/addresses/address_missing_address_level.yaml b/docs/_examples/addresses/address_missing_address_level.yaml new file mode 100644 index 000000000..aec287758 --- /dev/null +++ b/docs/_examples/addresses/address_missing_address_level.yaml @@ -0,0 +1,17 @@ +--- +id: overture:addresses:addres:1 +type: Feature +geometry: + type: Point + coordinates: [-71.2086153, 42.3373725] +properties: + theme: addresses + type: address + version: 0 + country: US + address_levels: + - value: MA + - {} + postcode: '02459' + street: COMMONWEALTH AVE + number: '1000' diff --git a/docs/_examples/addresses/address_postal_city.yaml b/docs/_examples/addresses/address_postal_city.yaml new file mode 100644 index 000000000..0f55c7327 --- /dev/null +++ b/docs/_examples/addresses/address_postal_city.yaml @@ -0,0 +1,18 @@ +--- +id: overture:addresses:address:1 +type: Feature +geometry: + type: Point + coordinates: [-71.2086153, 42.3373725] +properties: + theme: addresses + type: address + version: 0 + country: US + address_levels: + - value: MA + - value: NEWTON CENTRE + postcode: '02459' + street: COMMONWEALTH AVE + number: '1000' + postal_city: Some City diff --git a/docs/_examples/base/bathymetry-example.yaml b/docs/_examples/base/bathymetry-example.yaml new file mode 100644 index 000000000..ecc5f6b77 --- /dev/null +++ b/docs/_examples/base/bathymetry-example.yaml @@ -0,0 +1,19 @@ +--- +id: "overture:bathymetry:example:1" +type: Feature +geometry: + type: Polygon + coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]] +properties: + theme: base + type: bathymetry + depth: 2500 + cartography: + min_zoom: 0 + max_zoom: 23 + sort_key: 7 + sources: + - record_id: x123 + property: "" + dataset: some source + version: 0 diff --git a/docs/_examples/base/infrastructure-example.yaml b/docs/_examples/base/infrastructure-example.yaml new file mode 100644 index 000000000..006a23384 --- /dev/null +++ b/docs/_examples/base/infrastructure-example.yaml @@ -0,0 +1,21 @@ +--- +id: 08b2748cc1383fff0001b38438099b73 +type: Feature +geometry: + type: Polygon + coordinates: [[[-85.6743541,42.9676009],[-85.6743623,42.9674649],[-85.6744114,42.9674803],[-85.6744559,42.9674919],[-85.6745302,42.9675058],[-85.6746036,42.9675151],[-85.6746959,42.9675171],[-85.675835,42.9674967],[-85.6758985,42.9674915],[-85.6759656,42.967483],[-85.6760399,42.9674711],[-85.676099,42.9674566],[-85.6761817,42.9674324],[-85.676227,42.9674184],[-85.6762149,42.9675911],[-85.6761726,42.9675857],[-85.676106,42.9675781],[-85.6760499,42.9675741],[-85.6759947,42.9675723],[-85.6743541,42.9676009]]] +properties: + theme: base + type: infrastructure + subtype: bridge + class: bridge + names: + primary: Gillett Bridge + rules: + - variant: alternate + value: Interurban Bridge + sources: + - property: "" + record_id: w556368546@3 + dataset: OpenStreetMap + version: 0 diff --git a/docs/_examples/base/infrastructure-height-example.yaml b/docs/_examples/base/infrastructure-height-example.yaml new file mode 100644 index 000000000..68aacf8f7 --- /dev/null +++ b/docs/_examples/base/infrastructure-height-example.yaml @@ -0,0 +1,19 @@ +--- +id: 08b4035ac1518fff0001a9e45d5e1c9d +type: Feature +geometry: + type: Point + coordinates: [111.5341723, 25.1110193] +properties: + theme: base + type: infrastructure + subtype: power + class: generator + height: 160.0 + names: + primary: DEW-G5000-195 + sources: + - property: "" + record_id: n10707323715@5 + dataset: OpenStreetMap + version: 0 diff --git a/docs/_examples/base/land-cover-example.yaml b/docs/_examples/base/land-cover-example.yaml new file mode 100644 index 000000000..c2c6cabcc --- /dev/null +++ b/docs/_examples/base/land-cover-example.yaml @@ -0,0 +1,19 @@ +--- +id: "overture:land_cover:example:1" +type: Feature +geometry: + type: Polygon + coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]] +properties: + theme: base + type: land_cover + subtype: forest + cartography: + min_zoom: 11 + max_zoom: 23 + sort_key: 2 + sources: + - record_id: x123 + property: "" + dataset: some source + version: 0 diff --git a/docs/_examples/base/land-sand-example.yaml b/docs/_examples/base/land-sand-example.yaml new file mode 100644 index 000000000..b816f4971 --- /dev/null +++ b/docs/_examples/base/land-sand-example.yaml @@ -0,0 +1,21 @@ +--- +id: "overture:land:example:1" +type: Feature +geometry: + type: Polygon + coordinates: [[[34.4379197, 28.7592689], [34.4380109, 28.7595816], [34.4380173, 28.7601587], [34.4380538, 28.7606186],[34.4381540, 28.7609863], [34.4380735, 28.7612459], [34.4377346, 28.7608396], [34.4377158, 28.7606139],[34.4377105, 28.7605527], [34.4376300, 28.7604258], [34.4376407, 28.7603599], [34.4376488, 28.7602494],[34.4376863, 28.7599673], [34.4376675, 28.7597980], [34.4376890, 28.7596216], [34.4379197, 28.7592689]]] +properties: + theme: base + type: land + subtype: sand + class: dune + names: + primary: Hadeida + source_tags: + natural: dune + surface: sand + sources: + - record_id: w407753930@3 + property: "" + dataset: OpenStreetMap + version: 0 diff --git a/docs/_examples/base/land-use-example.yaml b/docs/_examples/base/land-use-example.yaml new file mode 100644 index 000000000..b1e6cbb97 --- /dev/null +++ b/docs/_examples/base/land-use-example.yaml @@ -0,0 +1,22 @@ +--- +id: "overture:land_use:example:1" +type: Feature +geometry: + type: Polygon + coordinates: [[[-83.8710175, 10.3469578], [-83.8700924, 10.3470179], [-83.870043, 10.3462819], [-83.8709681, 10.3462218], [-83.8710175, 10.3469578]]] +properties: + theme: base + type: land_use + subtype: recreation + class: pitch + surface: recreation_grass + source_tags: + leisure: pitch + sport: soccer + names: + primary: Plaza Deportes Finca Tres + sources: + - record_id: w509487233@1 + property: "" + dataset: OpenStreetMap + version: 0 diff --git a/docs/_examples/base/water-body-disputed.yaml b/docs/_examples/base/water-body-disputed.yaml new file mode 100644 index 000000000..1adb9283d --- /dev/null +++ b/docs/_examples/base/water-body-disputed.yaml @@ -0,0 +1,36 @@ +--- +id: "OXOXOXOXOX" +type: Feature +geometry: + type: Polygon + coordinates: [[ + [-91.8307764, 43.7899936], + [-91.8309309, 43.7901326], + [-91.8315202, 43.7906232], + [-91.8320790, 43.7911798], + [-91.8325770, 43.7917638], + [-91.8328390, 43.7921615], + [-91.8307764, 43.7899936] + ]] +properties: + theme: base + type: water + subtype: ocean + class: ocean + names: + primary: Gulf of Gerdaus Mercator + rules: + - variant: official + perspectives: + mode: accepted_by + countries: [US] + value: Gulf of Cartographer's Tears + source_tags: + water: ocean + sources: + - record_id: w1234567 + property: "" + dataset: OpenStreetMap + is_salt: false + is_intermittent: false + version: 0 diff --git a/docs/_examples/base/water-river-example.yaml b/docs/_examples/base/water-river-example.yaml new file mode 100644 index 000000000..d4587b7f2 --- /dev/null +++ b/docs/_examples/base/water-river-example.yaml @@ -0,0 +1,22 @@ +--- +id: overture:base:water:123 +type: Feature +geometry: + type: LineString + coordinates: [[-91.8307764, 43.7899936], [-91.8309309, 43.7901326], [-91.8315202, 43.7906232], [-91.8320790, 43.7911798], [-91.8325770, 43.7917638], [-91.8328390, 43.7921615] ] +properties: + theme: base + type: water + subtype: river + class: river + names: + primary: Root River + source_tags: + waterway: river + sources: + - record_id: w54320702@1 + property: "" + dataset: OpenStreetMap + is_salt: false + is_intermittent: false + version: 0 diff --git a/docs/_examples/base/water-river-with-wikidata.yaml b/docs/_examples/base/water-river-with-wikidata.yaml new file mode 100644 index 000000000..4278e77ab --- /dev/null +++ b/docs/_examples/base/water-river-with-wikidata.yaml @@ -0,0 +1,21 @@ +--- +id: overture:base:water:123 +type: Feature +geometry: + type: LineString + coordinates: [ [-39.1468243, -14.9090246], [-39.1461180, -14.9085012], [-39.1455792, -14.9079805], [-39.1456091, -14.9073441], [-39.1458785, -14.9066499], [-39.1458186, -14.9058977], [-39.1459084, -14.9051167], [-39.1465970, -14.9046249], [-39.1471657, -14.9039596], [-39.1474351, -14.9032942], [-39.1474052, -14.9027157], [-39.1477046, -14.9023107], [-39.1480638, -14.9022528], [-39.1484230, -14.9014139], [-39.1484529, -14.9005750], [-39.1480039, -14.9001700], [-39.1474651, -14.8992153], [-39.1466868, -14.8986657], [-39.1460581, -14.8981450], [-39.1455492, -14.8972482], [-39.1449505, -14.8958596], [-39.1445314, -14.8947024], [-39.1445314, -14.8940370], [-39.1446811, -14.8931113], [-39.1444117, -14.8921277], [-39.1436932, -14.8918673], [-39.1430047, -14.8919252], [-39.1422264, -14.8919830], [-39.1418073, -14.8914334], [-39.1413284, -14.8910284], [-39.1409175, -14.8902377], [-39.1410327, -14.8898924], [-39.1413069, -14.8898168], [-39.1418373, -14.8898712], [-39.1423162, -14.8899001], [-39.1431262, -14.8898804], [-39.1439305, -14.8894827], [-39.1445995, -14.8892175], [-39.1448021, -14.8890297], [-39.1447110, -14.8888297], [-39.1443126, -14.8881643], [-39.1441812, -14.8872844], [-39.1442252, -14.8870763], [-39.1444859, -14.8860420], [-39.1446963, -14.8855633], [-39.1451900, -14.8849530], [-39.1456690, -14.8844612], [-39.1456390, -14.8838826], [-39.1453996, -14.8836222], [-39.1447410, -14.8835643], [-39.1440824, -14.8833908], [-39.1435436, -14.8829279], [-39.1428551, -14.8824650], [-39.1420768, -14.8821467], [-39.1412386, -14.8819442], [-39.1408494, -14.8814524], [-39.1406698, -14.8809316], [-39.1401609, -14.8806423], [-39.1395921, -14.8801216], [-39.1390832, -14.8796876], [-39.1383648, -14.8794272], [-39.1377661, -14.8793404], [-39.1375266, -14.8796876], [-39.1374668, -14.8801216], [-39.1371674, -14.8802373], [-39.1366585, -14.8801794], [-39.1360299, -14.8798322], [-39.1352516, -14.8794272], [-39.1346229, -14.8793693], [-39.1338745, -14.8792536], [-39.1331860, -14.8791668], [-39.1326771, -14.8790222], [-39.1318988, -14.8792247], [-39.1314797, -14.8789064], [-39.1313600, -14.8783857], [-39.1314498, -14.8780096], [-39.1318988, -14.8780385], [-39.1322580, -14.8781542], [-39.1327669, -14.8779806], [-39.1331860, -14.8774888], [-39.1331561, -14.8769970], [-39.1327969, -14.8765051], [-39.1317491, -14.8760422], [-39.1310606, -14.8761869], [-39.1301027, -14.8763026], [-39.1294741, -14.8762447], [-39.1291149, -14.8758686], [-39.1290550, -14.8754636], [-39.1292047, -14.8750007], [-39.1291131, -14.8745904], [-39.1290550, -14.8742195], [-39.1285760, -14.8736698], [-39.1281569, -14.8732069], [-39.1280846, -14.8729233], [-39.1283500, -14.8722189], [-39.1284563, -14.8719339], [-39.1290849, -14.8714999], [-39.1297734, -14.8711527], [-39.1302930, -14.8707987], [-39.1304147, -14.8705105], [-39.1302823, -14.8702269], [-39.1299830, -14.8697350], [-39.1295340, -14.8693010], [-39.1289352, -14.8695903], [-39.1284563, -14.8698507], [-39.1277977, -14.8699665], [-39.1273188, -14.8701690], [-39.1268697, -14.8703715], [-39.1263908, -14.8701401], [-39.1262710, -14.8696771], [-39.1260016, -14.8690695], [-39.1256424, -14.8687224], [-39.1250437, -14.8684620], [-39.1242953, -14.8683173], [-39.1237265, -14.8680858], [-39.1227087, -14.8678833], [-39.1216012, -14.8675650], [-39.1210324, -14.8673914], [-39.1202241, -14.8673914], [-39.1192961, -14.8672468], [-39.1188471, -14.8670153], [-39.1183682, -14.8664367], [-39.1179191, -14.8662631], [-39.1176198, -14.8659159], [-39.1176497, -14.8654819], [-39.1180229, -14.8651632], [-39.1179491, -14.8647585], [-39.1174102, -14.8643245], [-39.1171109, -14.8639484], [-39.1166319, -14.8638905], [-39.1161530, -14.8640931], [-39.1158237, -14.8644981], [-39.1152549, -14.8644692], [-39.1147760, -14.8645560], [-39.1140874, -14.8649032], [-39.1137774, -14.8647180], [-39.1134588, -14.8649032], [-39.1130098, -14.8646717], [-39.1128002, -14.8642956], [-39.1123512, -14.8642956], [-39.1113933, -14.8635433], [-39.1106150, -14.8630515], [-39.1099564, -14.8627332], [-39.1095972, -14.8626175], [-39.1091482, -14.8622992], [-39.1087590, -14.8625885], [-39.1083698, -14.8632251], [-39.1080106, -14.8642088], [-39.1075017, -14.8645560], [-39.1071126, -14.8647875], [-39.1065737, -14.8642956], [-39.1061247, -14.8641220], [-39.1052865, -14.8636301], [-39.1045381, -14.8632251], [-39.1039694, -14.8629068], [-39.1033707, -14.8629936], [-39.1025325, -14.8633119], [-39.1018440, -14.8635144], [-39.1009160, -14.8634276], [-39.0998982, -14.8630225], [-39.0990646, -14.8625091], [-39.0985212, -14.8617784], [-39.0982218, -14.8614022], [-39.0982218, -14.8609682], [-39.0980422, -14.8606210], [-39.0980722, -14.8600424], [-39.0983116, -14.8586825], [-39.0984314, -14.8580459], [-39.0986709, -14.8576698], [-39.0987008, -14.8572936], [-39.0990600, -14.8572068], [-39.0998683, -14.8572357], [-39.1004071, -14.8570621], [-39.1009160, -14.8565703], [-39.1013950, -14.8560784], [-39.1015921, -14.8558693] ] +properties: + theme: base + type: water + subtype: river + class: river + names: + primary: Rio Sanatana + source_tags: + waterway: river + sources: + - record_id: w353912370@4 + property: "" + dataset: OpenStreetMap + wikidata: Q7420045 + version: 0 diff --git a/docs/_examples/buildings/basic-sources.yaml b/docs/_examples/buildings/basic-sources.yaml new file mode 100644 index 000000000..91eed889b --- /dev/null +++ b/docs/_examples/buildings/basic-sources.yaml @@ -0,0 +1,19 @@ +--- +id: overture:buildings:building:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 1 + sources: + - dataset: MyGreatDataset + property: "/geometry" + update_time: '2024-04-26T23:55:01-08:00' + confidence: 0.3 diff --git a/docs/_examples/buildings/building-multipolygon.yaml b/docs/_examples/buildings/building-multipolygon.yaml new file mode 100644 index 000000000..a61e83306 --- /dev/null +++ b/docs/_examples/buildings/building-multipolygon.yaml @@ -0,0 +1,14 @@ +--- +id: overture:buildings:building:1234 +type: Feature +geometry: + type: MultiPolygon + coordinates: [[[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 0 diff --git a/docs/_examples/buildings/building-part-basic.yaml b/docs/_examples/buildings/building-part-basic.yaml new file mode 100644 index 000000000..9f776bef5 --- /dev/null +++ b/docs/_examples/buildings/building-part-basic.yaml @@ -0,0 +1,35 @@ +--- +id: overture:buildings:part:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[ + [-77.036873, 38.897804], + [-77.036873, 38.897559], + [-77.036260, 38.897559], + [-77.036260, 38.897804], + [-77.036873, 38.897804] + ]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building_part + version: 1 + level: 1 + building_id: abc123 + height: 21.34 + num_floors: 4 + min_height: 15.0 + min_floor: 2 + roof_shape: dome + roof_orientation: across + roof_direction: 23.4 + roof_height: 3.4 + sources: + - property: "" + dataset: microsoftMLBuildings + - property: /properties/height + dataset: metaLidarExtractions diff --git a/docs/_examples/buildings/building-part-name.yaml b/docs/_examples/buildings/building-part-name.yaml new file mode 100644 index 000000000..749e2fb3a --- /dev/null +++ b/docs/_examples/buildings/building-part-name.yaml @@ -0,0 +1,32 @@ +--- +id: overture:buildings:part:2345 +type: Feature +geometry: + type: Polygon + coordinates: [[ + [-77.036873, 38.897804], + [-77.036873, 38.897559], + [-77.036260, 38.897559], + [-77.036260, 38.897804], + [-77.036873, 38.897804] + ]] +properties: + # Overture properties + theme: buildings + type: building_part + version: 1 + level: 1 + building_id: abc1234 + names: + primary: "East Wing" + height: 21.34 + num_floors: 4 + min_height: 15.0 + min_floor: 2 + roof_shape: dome + roof_orientation: across + roof_direction: 23.4 + roof_height: 3.4 + sources: + - property: "" + dataset: OpenStreetMap diff --git a/docs/_examples/buildings/building-polygon.yaml b/docs/_examples/buildings/building-polygon.yaml new file mode 100644 index 000000000..1698db857 --- /dev/null +++ b/docs/_examples/buildings/building-polygon.yaml @@ -0,0 +1,34 @@ +--- +id: overture:buildings:building:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[ + [-77.036873, 38.897804], + [-77.036873, 38.897559], + [-77.036260, 38.897559], + [-77.036260, 38.897804], + [-77.036873, 38.897804] + ]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 1 + level: 1 + height: 21.34 + num_floors: 4 + num_floors_underground: 1 + subtype: transportation + class: parking + is_underground: false + sources: + - property: "" + dataset: microsoftMLBuildings, + confidence: 1 + - property: /properties/height + dataset: metaLidarExtractions, + confidence: 0.95 diff --git a/docs/_examples/buildings/empire-state-building.json b/docs/_examples/buildings/empire-state-building.json new file mode 100644 index 000000000..298e26292 --- /dev/null +++ b/docs/_examples/buildings/empire-state-building.json @@ -0,0 +1,28 @@ +{ + "id": "08b2a100d2d4bfff02006354283c153f", + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [[[-73.9865012, 40.748491],[-73.9851602, 40.7479255],[-73.9848166, 40.7483931],[-73.9861574, 40.7489585],[-73.9863252, 40.7487301],[-73.9863554, 40.748689],[-73.9864839, 40.7485145],[-73.9865012, 40.748491]]] + }, + "properties": { + "theme": "buildings", + "type": "building", + "subtype": "commercial", + "class": "office", + "height": 443.2, + "num_floors": 102, + "has_parts": true, + "names": { + "primary": "Empire State Building" + }, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w34633854@71" + } + ], + "version": 0 + } +} diff --git a/docs/_examples/buildings/names/name-basic.yaml b/docs/_examples/buildings/names/name-basic.yaml new file mode 100644 index 000000000..4625374b6 --- /dev/null +++ b/docs/_examples/buildings/names/name-basic.yaml @@ -0,0 +1,16 @@ +--- +id: overture:buildings:building:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 1 + names: + primary: Empire State Building diff --git a/docs/_examples/buildings/names/name-multiple.yaml b/docs/_examples/buildings/names/name-multiple.yaml new file mode 100644 index 000000000..1c72c0ae4 --- /dev/null +++ b/docs/_examples/buildings/names/name-multiple.yaml @@ -0,0 +1,29 @@ +--- +id: overture:buildings:building:1234 +type: Feature +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 1 + names: + primary: The White house + common: + es: La Casa Blanca + rules: + - variant: official + value: The White House + - variant: alternate + value: White House +geometry: + type: Polygon + coordinates: [[ + [-77.036873, 38.897804], + [-77.036873, 38.897559], + [-77.036260, 38.897559], + [-77.036260, 38.897804], + [-77.036873, 38.897804] + ]] diff --git a/docs/_examples/buildings/names/name-variations.yaml b/docs/_examples/buildings/names/name-variations.yaml new file mode 100644 index 000000000..2a43a42c5 --- /dev/null +++ b/docs/_examples/buildings/names/name-variations.yaml @@ -0,0 +1,29 @@ +--- +id: overture:buildings:building:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 1 + names: + primary: Local value + common: + ru-Latn: Language Script + en-US: Language Region + rules: + - variant: official + language: es + value: Official Name + - variant: short + language: es + value: Official Spanish Name + - variant: alternate + language: ru + value: Official Russian Name diff --git a/docs/_examples/buildings/osm/outline.yaml b/docs/_examples/buildings/osm/outline.yaml new file mode 100644 index 000000000..a5855efe2 --- /dev/null +++ b/docs/_examples/buildings/osm/outline.yaml @@ -0,0 +1,31 @@ +# https://www.openstreetmap.org/way/30407741 +id: overture:buildings:building:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[ + [-117.1710888, 32.7238481], + [-117.1711025, 32.7239038], + [-117.1711923, 32.7238882], + [-117.1712198, 32.724], + [-117.1712713, 32.7242091], + [-117.1706665, 32.7243145], + [-117.1705738, 32.7239379], + [-117.1707783, 32.7239022], + [-117.1710888, 32.7238481] + ]] +properties: + ext_foo: I am a customer user property. + ext_bar: Me too! + theme: buildings + type: building + version: 1 + level: 1 + names: + primary: Valentina by Alta + num_floors: 8 + subtype: commercial + class: commercial + sources: + - property: '' + dataset: OpenStreetMap diff --git a/docs/_examples/buildings/osm/part1.yaml b/docs/_examples/buildings/osm/part1.yaml new file mode 100644 index 000000000..759082fcd --- /dev/null +++ b/docs/_examples/buildings/osm/part1.yaml @@ -0,0 +1,29 @@ +id: overture:buildings:part:100 +type: Feature +geometry: + type: Polygon + coordinates: [[ + [-117.1707971, 32.7240658], + [-117.1712198, 32.724], + [-117.1712713, 32.7242091], + [-117.1706665, 32.7243145], + [-117.1705738, 32.7239379], + [-117.1707783, 32.7239022], + [-117.1707949, 32.7240226], + [-117.1707279, 32.7240319], + [-117.1707635, 32.7241786], + [-117.1708208, 32.7241677], + [-117.1707971, 32.7240658] + ]] +properties: + building_id: '1234' + ext_foo: I am a customer user property. + ext_bar: Me too! + theme: buildings + type: building_part + version: 1 + level: 1 + num_floors: 8 + sources: + - property: '' + dataset: OpenStreetMap diff --git a/docs/_examples/buildings/osm/part2.yaml b/docs/_examples/buildings/osm/part2.yaml new file mode 100644 index 000000000..be2ff39b1 --- /dev/null +++ b/docs/_examples/buildings/osm/part2.yaml @@ -0,0 +1,29 @@ +id: overture:buildings:part:101 +type: Feature +geometry: + type: Polygon + coordinates: [[ + [-117.1712198, 32.724], + [-117.1711923, 32.7238882], + [-117.1711025, 32.7239038], + [-117.1710888, 32.7238481], + [-117.1707783, 32.7239022], + [-117.1707949, 32.7240226], + [-117.1707279, 32.7240319], + [-117.1707635, 32.7241786], + [-117.1708208, 32.7241677], + [-117.1707971, 32.7240658], + [-117.1712198, 32.724] + ]] +properties: + building_id: '1234' + ext_foo: I am a customer user property. + ext_bar: Me too! + theme: buildings + type: building_part + version: 1 + level: 1 + num_floors: 3 + sources: + - property: '' + dataset: OpenStreetMap diff --git a/docs/_examples/buildings/time-basic.yaml b/docs/_examples/buildings/time-basic.yaml new file mode 100644 index 000000000..39ba63be3 --- /dev/null +++ b/docs/_examples/buildings/time-basic.yaml @@ -0,0 +1,14 @@ +--- +id: overture:buildings:building:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 1 diff --git a/docs/_examples/buildings/time-precision-seconds.yaml b/docs/_examples/buildings/time-precision-seconds.yaml new file mode 100644 index 000000000..39ba63be3 --- /dev/null +++ b/docs/_examples/buildings/time-precision-seconds.yaml @@ -0,0 +1,14 @@ +--- +id: overture:buildings:building:1234 +type: Feature +geometry: + type: Polygon + coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] +properties: + # Custom user properties. + ext_foo: I am a customer user property. + ext_bar: Me too! + # Overture properties + theme: buildings + type: building + version: 1 diff --git a/docs/_examples/common/names/names-lexically-valid-language-tag.yaml b/docs/_examples/common/names/names-lexically-valid-language-tag.yaml new file mode 100644 index 000000000..a20a315ac --- /dev/null +++ b/docs/_examples/common/names/names-lexically-valid-language-tag.yaml @@ -0,0 +1,27 @@ +--- +id: names-lexically-valid-language-tag +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: primary + names: + primary: foo + common: + nan-POJ: Lexically valid, but should be corrected to nan-Latn + nan-Latn: This is fine. + ja-kana: Use this instead of ja_kana. + zh-Latn-pinyin: Use this instead of zh_pinyin. + zh-Bopo: Use this instead of zh_zhuyin. + rules: + - language: be-Latn + value: Use this instead of be-tarask. + variant: common + - language: ja-Latn + value: Use this instead of ja_rm. + variant: alternate diff --git a/docs/_examples/common/timestamp/timestamp-leap-second.yaml b/docs/_examples/common/timestamp/timestamp-leap-second.yaml new file mode 100644 index 000000000..14b6d7d7f --- /dev/null +++ b/docs/_examples/common/timestamp/timestamp-leap-second.yaml @@ -0,0 +1,12 @@ +--- +id: timestamp-leap-second +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + subtype: road + class: primary + version: 1 diff --git a/docs/_examples/common/timestamp/timestamp-utc.yaml b/docs/_examples/common/timestamp/timestamp-utc.yaml new file mode 100644 index 000000000..43ed72ff3 --- /dev/null +++ b/docs/_examples/common/timestamp/timestamp-utc.yaml @@ -0,0 +1,12 @@ +--- +id: timestamp-utc +type: Feature +geometry: + type: Point + coordinates: [0, 0] +properties: + categories: + primary: some_category + theme: places + type: place + version: 1 diff --git a/docs/_examples/common/timestamp/timestamp-with-tz-offset.yaml b/docs/_examples/common/timestamp/timestamp-with-tz-offset.yaml new file mode 100644 index 000000000..8232a8abd --- /dev/null +++ b/docs/_examples/common/timestamp/timestamp-with-tz-offset.yaml @@ -0,0 +1,10 @@ +--- +id: timestamp-with-tz-offset +type: Feature +geometry: + type: Point + coordinates: [0, 0] +properties: + theme: transportation + type: connector + version: 0 diff --git a/docs/_examples/divisions/division/capital_of.yaml b/docs/_examples/divisions/division/capital_of.yaml new file mode 100644 index 000000000..f6709f226 --- /dev/null +++ b/docs/_examples/divisions/division/capital_of.yaml @@ -0,0 +1,29 @@ +--- +id: example:division:locality:lj +type: Feature +geometry: + type: Point + coordinates: [14.5845, 46.0570] +properties: + theme: divisions + type: division + version: 0 + subtype: locality + local_type: + en: city + names: + primary: Ljubljana + sources: + - property: "" + dataset: OpenStreetMap + record_id: N6968827.V76 + country: SI + hierarchies: + - - division_id: example:division:country:si + subtype: country + name: Slovenia + capital_of_divisions: + - division_id: example:division:country:si + subtype: country + parent_division_id: example:division:country:si + population: 335509 diff --git a/docs/_examples/divisions/division/class.yaml b/docs/_examples/divisions/division/class.yaml new file mode 100644 index 000000000..cdf920092 --- /dev/null +++ b/docs/_examples/divisions/division/class.yaml @@ -0,0 +1,30 @@ +--- +id: example:division:locality:dk +type: Feature +geometry: + type: Point + coordinates: [12.0819247, 55.6433478] +properties: + theme: divisions + type: division + version: 0 + subtype: locality + local_type: + en: city + names: + primary: Roskilde + sources: + - property: "" + dataset: OpenStreetMap + record_id: N21040334 + country: DK + hierarchies: + - - division_id: example:division:country:dk + subtype: country + name: Denmark + capital_of_divisions: + - division_id: example:division:country:dk + subtype: country + parent_division_id: example:division:country:dk + population: 50781 + class: city diff --git a/docs/_examples/divisions/division/country.yaml b/docs/_examples/divisions/division/country.yaml new file mode 100644 index 000000000..c2c4d4a54 --- /dev/null +++ b/docs/_examples/divisions/division/country.yaml @@ -0,0 +1,21 @@ +--- +id: example:division:country:us +type: Feature +geometry: + type: Point + coordinates: [-100.4458820, 39.7837304] +properties: + theme: divisions + type: division + version: 0 + subtype: country + names: + primary: United States + country: US + hierarchies: + - - division_id: example:division:country:us + subtype: country + name: United States + norms: + driving_side: right + capital_division_ids: [ example:division:locality:washington_dc ] diff --git a/docs/_examples/divisions/division/dependency.yaml b/docs/_examples/divisions/division/dependency.yaml new file mode 100644 index 000000000..98292a535 --- /dev/null +++ b/docs/_examples/divisions/division/dependency.yaml @@ -0,0 +1,38 @@ +--- +id: example:division:dependency:pr +type: Feature +geometry: + type: Point + coordinates: [-66.4858295, 18.2247706] +properties: + theme: divisions + type: division + version: 0 + subtype: dependency + local_type: + en: territory + names: + primary: Puerto Rico + common: + en: Puerto Rico + fr: Porto Rico + es: Puerto Rico + zh: 波多黎各 + rules: + - variant: official + language: es + value: Estado Libre Asociado de Puerto Rico + sources: + - property: "" + dataset: OpenStreetMap + record_id: R4422604.V41 + country: PR + region: US-PR + hierarchies: + - - division_id: example:division:country:us + subtype: country + name: United States + norms: + driving_side: right + capital_division_ids: [ example:division:locality:san_juan ] + parent_division_id: example:division:country:us diff --git a/docs/_examples/divisions/division/hierarchies-multiple.yaml b/docs/_examples/divisions/division/hierarchies-multiple.yaml new file mode 100644 index 000000000..88f9f1584 --- /dev/null +++ b/docs/_examples/divisions/division/hierarchies-multiple.yaml @@ -0,0 +1,43 @@ +--- +id: example:division:borough:bronx +type: Feature +geometry: + type: Point + coordinates: [-73.8785937, 40.8466508] +properties: + theme: divisions + type: division + version: 0 + subtype: borough + local_type: + en: borough + names: + primary: The Bronx + country: US + region: US-NY + hierarchies: + - - division_id: example:division:country:us # Default hierarchy is first. + subtype: country + name: United States + - division_id: example:division:region:us-ny + subtype: region + name: New York + - division_id: example:division:locality:nyc + subtype: locality + name: New York City + - division_id: example:division:borough:bronx + subtype: borough + name: The Bronx + - - division_id: example:division:country:us + subtype: country + name: United States + - division_id: example:division:region:us-ny + subtype: region + name: New York + - division_id: example:division:county:bronx + subtype: county + name: Bronx County + - division_id: example:division:borough:bronx + subtype: borough + name: The Bronx + parent_division_id: example:division:locality:nyc # Parent from default hierarchy. diff --git a/docs/_examples/divisions/division/multiple_capital_division.yaml b/docs/_examples/divisions/division/multiple_capital_division.yaml new file mode 100644 index 000000000..0e8e890be --- /dev/null +++ b/docs/_examples/divisions/division/multiple_capital_division.yaml @@ -0,0 +1,30 @@ +--- +id: example:division:region:pl-04 +type: Feature +geometry: + type: Point + coordinates: [18.3392939, 53.3220016] +properties: + theme: divisions + type: division + version: 0 + subtype: region + local_type: + en: province + names: + primary: Woj Kujawsko-Pomorskie + sources: + - property: "" + dataset: OpenStreetMap + record_id: R223407.V254 + country: PL + region: PL-04 + hierarchies: + - - division_id: example:division:country:pl + subtype: country + name: Poland + - division_id: example:division:region:pl-04 + subtype: region + name: Woj Kujawsko-Pomorskie + capital_division_ids: [ example:division:locality:bydgoszcz, example:division:locality:torun] + parent_division_id: example:division:country:pl diff --git a/docs/_examples/divisions/division/perspectives.yaml b/docs/_examples/divisions/division/perspectives.yaml new file mode 100644 index 000000000..d00468248 --- /dev/null +++ b/docs/_examples/divisions/division/perspectives.yaml @@ -0,0 +1,29 @@ +--- +id: example:division:perspectives:trnc +type: Feature +geometry: + type: Point + coordinates: [33.6252379, 35.2245313] +properties: + theme: divisions + type: division + version: 0 + subtype: country + names: + primary: Kuzey Kıbrıs + common: + en: Northern Cyprus + rules: + - variant: short + value: TRNC + - variant: official + language: en + value: Turkish Republic of Northern Cyprus + country: XX + hierarchies: + - - division_id: example:perspectives:trnc + subtype: country + name: Kuzey Kıbrıs + perspectives: + mode: accepted_by + countries: [TR] diff --git a/docs/_examples/divisions/division/population.yaml b/docs/_examples/divisions/division/population.yaml new file mode 100644 index 000000000..d1044f221 --- /dev/null +++ b/docs/_examples/divisions/division/population.yaml @@ -0,0 +1,31 @@ +--- +id: example:division:region:ca-on +type: Feature +geometry: + type: Point + coordinates: [-86.0009770, 50.0006780] +properties: + theme: divisions + type: division + version: 0 + subtype: region + local_type: + en: province + names: + primary: Ontario + sources: + - property: "" + dataset: OpenStreetMap + record_id: R68841.V267 + country: CA + region: CA-ON + hierarchies: + - - division_id: example:division:country:ca + subtype: country + name: Canada + - division_id: example:division:region:ca-on + subtype: region + name: Ontario + capital_division_ids: [ example:division:locality:toronto ] + parent_division_id: example:division:country:ca + population: 13550900 diff --git a/docs/_examples/divisions/division/prominence.yaml b/docs/_examples/divisions/division/prominence.yaml new file mode 100644 index 000000000..5986e201c --- /dev/null +++ b/docs/_examples/divisions/division/prominence.yaml @@ -0,0 +1,31 @@ +--- +id: example:division:locality:dk +type: Feature +geometry: + type: Point + coordinates: [12.0819247, 55.6433478] +properties: + theme: divisions + type: division + version: 0 + subtype: locality + local_type: + en: city + names: + primary: Roskilde + sources: + - property: "" + dataset: OpenStreetMap + record_id: N21040334 + country: DK + hierarchies: + - - division_id: example:division:country:dk + subtype: country + name: Denmark + capital_of_divisions: + - division_id: example:division:country:dk + subtype: country + parent_division_id: example:division:country:dk + population: 50781 + cartography: + prominence: 5 diff --git a/docs/_examples/divisions/division/region.yaml b/docs/_examples/divisions/division/region.yaml new file mode 100644 index 000000000..c38bbfb42 --- /dev/null +++ b/docs/_examples/divisions/division/region.yaml @@ -0,0 +1,30 @@ +--- +id: example:division:region:us-ny +type: Feature +geometry: + type: Point + coordinates: [-75.8449946, 43.1561681] +properties: + theme: divisions + type: division + version: 0 + subtype: region + local_type: + en: state + names: + primary: New York + sources: + - property: "" + dataset: OpenStreetMap + record_id: R61320.V468 + country: US + region: US-NY + hierarchies: + - - division_id: example:division:country:us + subtype: country + name: United States + - division_id: example:division:region:us-ny + subtype: region + name: New York + capital_division_ids: [ example:division:locality:albany ] + parent_division_id: example:division:country:us diff --git a/docs/_examples/divisions/division_area/country_land.yaml b/docs/_examples/divisions/division_area/country_land.yaml new file mode 100644 index 000000000..f7620a998 --- /dev/null +++ b/docs/_examples/divisions/division_area/country_land.yaml @@ -0,0 +1,312 @@ +--- +id: example:division_area:land:country:us +type: Feature +geometry: + type: MultiPolygon + coordinates: [ + [ + [ + [-170.6290015, 25.3053671], + [-170.4076134, 25.5082632], + [-170.6300336, 25.7076006], + [-170.8506754, 25.5056948], + [-170.6290015, 25.3053671] + ] + ], + [ + [ + [-171.7380245, 25.555318], + [-171.4949943, 25.7747795], + [-171.726725, 25.9865667], + [-171.9674222, 25.7845748], + [-171.7380245, 25.555318] + ] + ], + [ + [ + [-174.0155727, 25.8411597], + [-173.7437151, 26.0119599], + [-173.905507, 26.2639004], + [-174.2280618, 26.0816774], + [-174.0155727, 25.8411597] + ] + ], + [ + [ + [-175.9506918, 27.5543172], + [-175.5545765, 27.7281369], + [-175.6295776, 28.1237431], + [-176.1866168, 27.9330153], + [-175.9506918, 27.5543172] + ] + ], + [ + [ + [-166.1182936, 23.4254685], + [-165.8702478, 23.8636297], + [-166.3767961, 24.0561939], + [-166.5303209, 23.7815879], + [-166.1182936, 23.4254685] + ] + ], + [ + [ + [-167.9975573, 24.7968943], + [-167.778217, 25.0023686], + [-168.005803, 25.20088], + [-168.2206497, 24.9967937], + [-167.9975573, 24.7968943] + ] + ], + [ + [ + [-157.4082814, 55.576068], + [-157.1024297, 55.6733491], + [-157.0908436, 55.8696588], + [-157.7232999, 55.870247], + [-157.4082814, 55.576068] + ] + ], + [ + [ + [-155.6071465, 55.55087], + [-155.2980807, 56.0385909], + [-156.1270413, 55.9006965], + [-156.0182299, 55.6525826], + [-155.6071465, 55.55087] + ] + ], + [ + [ + [-178.3063127, 28.1837783], + [-178.0577766, 28.4309636], + [-178.3589518, 28.655272], + [-178.60056, 28.4012455], + [-178.3063127, 28.1837783] + ] + ], + [ + [ + [-179.1390989, 51.0070029], + [-173.0611771, 51.8159234], + [-171.9740685, 52.3514335], + [-178.9229631, 52.0275532], + [-179.1390989, 51.0070029] + ] + ], + [ + [ + [-180, 51.7940888], + [-179.8836979, 51.9764894], + [-180, 52.138489], + [-180, 51.8434509], + [-180, 51.7940888] + ] + ], + [ + [ + [-170.3952428, 56.8431693], + [-169.6956679, 57.0307607], + [-169.5801239, 57.2365744], + [-170.6525321, 57.3494254], + [-170.3952428, 56.8431693] + ] + ], + [ + [ + [-169.5771945, 56.3323838], + [-169.1322924, 56.6737641], + [-170.1288343, 56.6777795], + [-170.0250438, 56.4580184], + [-169.5771945, 56.3323838] + ] + ], + [ + [ + [-168.0561273, 64.76067], + [-167.5930406, 65.0286657], + [-168.5591053, 65.007885], + [-168.4482776, 64.8327172], + [-168.0561273, 64.76067] + ] + ], + [ + [ + [-156.6720152, 20.3000654], + [-155.800111, 20.8826396], + [-158.455088, 21.6943824], + [-158.2462379, 21.1430868], + [-156.6720152, 20.3000654] + ] + ], + [ + [ + [-160.5398128, 21.4482644], + [-159.3028431, 21.7124132], + [-159.1241278, 22.2798801], + [-160.2161715, 22.1993854], + [-160.5398128, 21.4482644] + ] + ], + [ + [ + [-161.9236658, 22.8550496], + [-161.6972866, 23.0665997], + [-161.9360903, 23.2652845], + [-162.1455351, 23.0568827], + [-161.9236658, 22.8550496] + ] + ], + [ + [ + [-164.7000199, 23.3734366], + [-164.4760626, 23.575844], + [-164.7056774, 23.7796906], + [-164.9238496, 23.5726775], + [-164.7000199, 23.3734366] + ] + ], + [ + [ + [-155.6810194, 18.7091718], + [-154.595509, 19.5434371], + [-155.877534, 20.4681176], + [-156.2732568, 19.7049213], + [-155.6810194, 18.7091718] + ] + ], + [ + [ + [-82.8732511, 24.4116731], + [-82.5948517, 24.5902399], + [-82.7300073, 24.8395704], + [-83.153058, 24.6776636], + [-82.8732511, 24.4116731] + ] + ], + [ + [ + [-81.8773353, 24.2520071], + [-68.1545602, 47.3251568], + [-82.6797222, 41.6765556], + [-84.129, 46.5305], + [-94.9573889, 49.3701944], + [-125.0271096, 48.4630615], + [-119.6795205, 33.0665347], + [-97.40561, 25.83764], + [-84.0549877, 29.8627705], + [-81.8773353, 24.2520071] + ] + ], + [ + [ + [179.2356588, 51.1468561], + [178.6498473, 52.169477], + [176.8813625, 51.9348227], + [177.1853792, 51.6303915], + [179.2356588, 51.1468561] + ] + ], + [ + [ + [179.6302237, 51.6862391], + [180, 52.1384488], + [179.2193828, 52.1042624], + [179.2227021, 51.833522], + [179.6302237, 51.6862391] + ] + ], + [ + [ + [175.915408, 52.1325238], + [176.2623207, 52.4572425], + [175.5671255, 52.4969017], + [175.5586568, 52.2829505], + [175.915408, 52.1325238] + ] + ], + [ + [ + [173.6474085, 52.1472948], + [174.8392132, 52.6878183], + [172.1158739, 52.9881155], + [173.132385, 52.2506975], + [173.6474085, 52.1472948] + ] + ], + [ + [ + [-146.3855284, 59.1843829], + [-145.9234279, 59.3169728], + [-145.8952803, 59.5345003], + [-146.6535985, 59.6545361], + [-146.3855284, 59.1843829] + ] + ], + [ + [ + [-171.2797217, 52.2444061], + [-145.9885379, 60.1761058], + [-130.003485, 56.008075], + [-141.00198, 60.3063692], + [-140.7523256, 69.8283004], + [-156.6515529, 71.581159], + [-169.0485821, 65.4690061], + [-161.2500247, 63.8004626], + [-167.6542464, 59.9434356], + [-158.0753114, 57.7475562], + [-171.2797217, 52.2444061] + ], + [ + [-153.8125943, 58.0958144], + [-153.5773523, 58.3547948], + [-153.3559904, 58.4231127], + [-153.6200524, 58.260124], + [-153.8125943, 58.0958144] + ], + [ + [-153.1820044, 58.5355625], + [-153.1751501, 58.5480609], + [-153.1384992, 58.5678286], + [-153.1470249, 58.5552926], + [-153.1820044, 58.5355625] + ], + [ + [-152.8741566, 58.7660471], + [-152.9882543, 59.4696836], + [-152.1322999, 60.0079718], + [-152.330171, 59.1676267], + [-152.8741566, 58.7660471] + ] + ], + [ + [ + [-172.7696055, 59.9963072], + [-171.8272619, 60.3517559], + [-173.4406927, 60.7880772], + [-173.4413238, 60.4223353], + [-172.7696055, 59.9963072] + ] + ], + [ + [ + [-169.6463302, 62.736964], + [-168.2509717, 63.332816], + [-172.2753008, 63.6094455], + [-172.0058757, 63.2057208], + [-169.6463302, 62.736964] + ] + ] + ] +properties: + theme: divisions + type: division_area + version: 0 + subtype: country + class: land + is_land: true + is_territorial: false + division_id: example:division:country:us + names: + primary: United States + country: US diff --git a/docs/_examples/divisions/division_area/country_maritime.yaml b/docs/_examples/divisions/division_area/country_maritime.yaml new file mode 100644 index 000000000..6da93d96a --- /dev/null +++ b/docs/_examples/divisions/division_area/country_maritime.yaml @@ -0,0 +1,88 @@ +--- +id: example:division_area:maritime:country:fi +type: Feature +geometry: + type: Polygon + coordinates: + - - [24.1149326, 65.1739343] + - [22.965913, 64.2461008] + - [22.9611467, 64.2200974] + - [20.1690736, 63.1704] + - [20.1635668, 63.1664346] + - [20.7968544, 62.025131] + - [20.8113847, 61.9869932] + - [20.7731398, 61.1334808] + - [20.7714495, 61.1269079] + - [19.2266918, 60.612911] + - [19.2134721, 60.610071] + - [19.0881715, 60.2028008] + - [19.0832, 60.1916833] + - [20.2889918, 59.4641746] + - [20.2949231, 59.4620801] + - [27.4560114, 60.223152] + - [27.4566541, 60.2232587] + - [31.5848283, 62.9070414] + - [31.5867071, 62.9087094] + - [29.9792123, 63.7533602] + - [29.9718903, 63.7571676] + - [30.5280169, 64.0488769] + - [30.5535801, 64.1016818] + - [29.6152439, 64.9174367] + - [29.6110374, 64.9273269] + - [29.7539876, 65.6093614] + - [29.7218642, 65.6370848] + - [30.1204275, 65.7484154] + - [30.1193675, 65.7521935] + - [29.0335178, 66.9246111] + - [29.0331668, 66.9255206] + - [30.0120699, 67.6649442] + - [30.0170617, 67.6735368] + - [28.7084312, 68.185236] + - [28.6461349, 68.1963023] + - [28.4446345, 68.5223038] + - [28.433932, 68.539671] + - [28.7947914, 68.8607869] + - [28.8007886, 68.8692833] + - [28.4291269, 68.9077986] + - [28.4157885, 68.9154506] + - [29.2950412, 69.4498488] + - [29.3364956, 69.4783227] + - [27.9604365, 70.089821] + - [27.9593778, 70.0921111] + - [25.9751031, 69.7083076] + - [25.9712362, 69.707112] + - [25.7752318, 69.0142604] + - [25.7746414, 69.0134805] + - [24.9050854, 68.5700172] + - [24.9031658, 68.5545918] + - [22.4047437, 68.721914] + - [22.3745217, 68.7166666] + - [21.6591391, 69.2559218] + - [21.6270859, 69.2765883] + - [20.5523258, 69.0600767] + - [20.5486365, 69.0599735] + - [23.6496681, 67.9616712] + - [23.6511967, 67.9607085] + - [23.3944185, 67.4851454] + - [23.3944231, 67.4842768] + - [23.9945079, 66.8234885] + - [23.9956629, 66.822049] + - [23.6455681, 66.3021131] + - [23.6456201, 66.3013903] + - [24.1526454, 65.8629123] + - [24.152978, 65.862572] + - [24.1149326, 65.1739343] +properties: + theme: divisions + type: division_area + version: 0 + subtype: country + class: maritime + is_territorial: true + is_land: false + division_id: example:division:country:fi + names: + primary: Suomi + common: + en: Finland + country: FI diff --git a/docs/_examples/divisions/division_area/is_land.yaml b/docs/_examples/divisions/division_area/is_land.yaml new file mode 100644 index 000000000..6ade21cbb --- /dev/null +++ b/docs/_examples/divisions/division_area/is_land.yaml @@ -0,0 +1,312 @@ +--- +id: example:division_area:is_land:country:us +type: Feature +geometry: + type: MultiPolygon + coordinates: [ + [ + [ + [-170.6290015, 25.3053671], + [-170.4076134, 25.5082632], + [-170.6300336, 25.7076006], + [-170.8506754, 25.5056948], + [-170.6290015, 25.3053671] + ] + ], + [ + [ + [-171.7380245, 25.555318], + [-171.4949943, 25.7747795], + [-171.726725, 25.9865667], + [-171.9674222, 25.7845748], + [-171.7380245, 25.555318] + ] + ], + [ + [ + [-174.0155727, 25.8411597], + [-173.7437151, 26.0119599], + [-173.905507, 26.2639004], + [-174.2280618, 26.0816774], + [-174.0155727, 25.8411597] + ] + ], + [ + [ + [-175.9506918, 27.5543172], + [-175.5545765, 27.7281369], + [-175.6295776, 28.1237431], + [-176.1866168, 27.9330153], + [-175.9506918, 27.5543172] + ] + ], + [ + [ + [-166.1182936, 23.4254685], + [-165.8702478, 23.8636297], + [-166.3767961, 24.0561939], + [-166.5303209, 23.7815879], + [-166.1182936, 23.4254685] + ] + ], + [ + [ + [-167.9975573, 24.7968943], + [-167.778217, 25.0023686], + [-168.005803, 25.20088], + [-168.2206497, 24.9967937], + [-167.9975573, 24.7968943] + ] + ], + [ + [ + [-157.4082814, 55.576068], + [-157.1024297, 55.6733491], + [-157.0908436, 55.8696588], + [-157.7232999, 55.870247], + [-157.4082814, 55.576068] + ] + ], + [ + [ + [-155.6071465, 55.55087], + [-155.2980807, 56.0385909], + [-156.1270413, 55.9006965], + [-156.0182299, 55.6525826], + [-155.6071465, 55.55087] + ] + ], + [ + [ + [-178.3063127, 28.1837783], + [-178.0577766, 28.4309636], + [-178.3589518, 28.655272], + [-178.60056, 28.4012455], + [-178.3063127, 28.1837783] + ] + ], + [ + [ + [-179.1390989, 51.0070029], + [-173.0611771, 51.8159234], + [-171.9740685, 52.3514335], + [-178.9229631, 52.0275532], + [-179.1390989, 51.0070029] + ] + ], + [ + [ + [-180, 51.7940888], + [-179.8836979, 51.9764894], + [-180, 52.138489], + [-180, 51.8434509], + [-180, 51.7940888] + ] + ], + [ + [ + [-170.3952428, 56.8431693], + [-169.6956679, 57.0307607], + [-169.5801239, 57.2365744], + [-170.6525321, 57.3494254], + [-170.3952428, 56.8431693] + ] + ], + [ + [ + [-169.5771945, 56.3323838], + [-169.1322924, 56.6737641], + [-170.1288343, 56.6777795], + [-170.0250438, 56.4580184], + [-169.5771945, 56.3323838] + ] + ], + [ + [ + [-168.0561273, 64.76067], + [-167.5930406, 65.0286657], + [-168.5591053, 65.007885], + [-168.4482776, 64.8327172], + [-168.0561273, 64.76067] + ] + ], + [ + [ + [-156.6720152, 20.3000654], + [-155.800111, 20.8826396], + [-158.455088, 21.6943824], + [-158.2462379, 21.1430868], + [-156.6720152, 20.3000654] + ] + ], + [ + [ + [-160.5398128, 21.4482644], + [-159.3028431, 21.7124132], + [-159.1241278, 22.2798801], + [-160.2161715, 22.1993854], + [-160.5398128, 21.4482644] + ] + ], + [ + [ + [-161.9236658, 22.8550496], + [-161.6972866, 23.0665997], + [-161.9360903, 23.2652845], + [-162.1455351, 23.0568827], + [-161.9236658, 22.8550496] + ] + ], + [ + [ + [-164.7000199, 23.3734366], + [-164.4760626, 23.575844], + [-164.7056774, 23.7796906], + [-164.9238496, 23.5726775], + [-164.7000199, 23.3734366] + ] + ], + [ + [ + [-155.6810194, 18.7091718], + [-154.595509, 19.5434371], + [-155.877534, 20.4681176], + [-156.2732568, 19.7049213], + [-155.6810194, 18.7091718] + ] + ], + [ + [ + [-82.8732511, 24.4116731], + [-82.5948517, 24.5902399], + [-82.7300073, 24.8395704], + [-83.153058, 24.6776636], + [-82.8732511, 24.4116731] + ] + ], + [ + [ + [-81.8773353, 24.2520071], + [-68.1545602, 47.3251568], + [-82.6797222, 41.6765556], + [-84.129, 46.5305], + [-94.9573889, 49.3701944], + [-125.0271096, 48.4630615], + [-119.6795205, 33.0665347], + [-97.40561, 25.83764], + [-84.0549877, 29.8627705], + [-81.8773353, 24.2520071] + ] + ], + [ + [ + [179.2356588, 51.1468561], + [178.6498473, 52.169477], + [176.8813625, 51.9348227], + [177.1853792, 51.6303915], + [179.2356588, 51.1468561] + ] + ], + [ + [ + [179.6302237, 51.6862391], + [180, 52.1384488], + [179.2193828, 52.1042624], + [179.2227021, 51.833522], + [179.6302237, 51.6862391] + ] + ], + [ + [ + [175.915408, 52.1325238], + [176.2623207, 52.4572425], + [175.5671255, 52.4969017], + [175.5586568, 52.2829505], + [175.915408, 52.1325238] + ] + ], + [ + [ + [173.6474085, 52.1472948], + [174.8392132, 52.6878183], + [172.1158739, 52.9881155], + [173.132385, 52.2506975], + [173.6474085, 52.1472948] + ] + ], + [ + [ + [-146.3855284, 59.1843829], + [-145.9234279, 59.3169728], + [-145.8952803, 59.5345003], + [-146.6535985, 59.6545361], + [-146.3855284, 59.1843829] + ] + ], + [ + [ + [-171.2797217, 52.2444061], + [-145.9885379, 60.1761058], + [-130.003485, 56.008075], + [-141.00198, 60.3063692], + [-140.7523256, 69.8283004], + [-156.6515529, 71.581159], + [-169.0485821, 65.4690061], + [-161.2500247, 63.8004626], + [-167.6542464, 59.9434356], + [-158.0753114, 57.7475562], + [-171.2797217, 52.2444061] + ], + [ + [-153.8125943, 58.0958144], + [-153.5773523, 58.3547948], + [-153.3559904, 58.4231127], + [-153.6200524, 58.260124], + [-153.8125943, 58.0958144] + ], + [ + [-153.1820044, 58.5355625], + [-153.1751501, 58.5480609], + [-153.1384992, 58.5678286], + [-153.1470249, 58.5552926], + [-153.1820044, 58.5355625] + ], + [ + [-152.8741566, 58.7660471], + [-152.9882543, 59.4696836], + [-152.1322999, 60.0079718], + [-152.330171, 59.1676267], + [-152.8741566, 58.7660471] + ] + ], + [ + [ + [-172.7696055, 59.9963072], + [-171.8272619, 60.3517559], + [-173.4406927, 60.7880772], + [-173.4413238, 60.4223353], + [-172.7696055, 59.9963072] + ] + ], + [ + [ + [-169.6463302, 62.736964], + [-168.2509717, 63.332816], + [-172.2753008, 63.6094455], + [-172.0058757, 63.2057208], + [-169.6463302, 62.736964] + ] + ] + ] +properties: + theme: divisions + type: division_area + subtype: country + is_land: true + is_territorial: false + country: US + version: 0 + class: land + division_id: example:division:country:us + names: + primary: United States \ No newline at end of file diff --git a/docs/_examples/divisions/division_area/is_territorial.yaml b/docs/_examples/divisions/division_area/is_territorial.yaml new file mode 100644 index 000000000..18b8edda6 --- /dev/null +++ b/docs/_examples/divisions/division_area/is_territorial.yaml @@ -0,0 +1,86 @@ +--- +id: example:division_area:is_territorial:country:fi +type: Feature +geometry: + type: Polygon + coordinates: + - - [24.1149326, 65.1739343] + - [22.965913, 64.2461008] + - [22.9611467, 64.2200974] + - [20.1690736, 63.1704] + - [20.1635668, 63.1664346] + - [20.7968544, 62.025131] + - [20.8113847, 61.9869932] + - [20.7731398, 61.1334808] + - [20.7714495, 61.1269079] + - [19.2266918, 60.612911] + - [19.2134721, 60.610071] + - [19.0881715, 60.2028008] + - [19.0832, 60.1916833] + - [20.2889918, 59.4641746] + - [20.2949231, 59.4620801] + - [27.4560114, 60.223152] + - [27.4566541, 60.2232587] + - [31.5848283, 62.9070414] + - [31.5867071, 62.9087094] + - [29.9792123, 63.7533602] + - [29.9718903, 63.7571676] + - [30.5280169, 64.0488769] + - [30.5535801, 64.1016818] + - [29.6152439, 64.9174367] + - [29.6110374, 64.9273269] + - [29.7539876, 65.6093614] + - [29.7218642, 65.6370848] + - [30.1204275, 65.7484154] + - [30.1193675, 65.7521935] + - [29.0335178, 66.9246111] + - [29.0331668, 66.9255206] + - [30.0120699, 67.6649442] + - [30.0170617, 67.6735368] + - [28.7084312, 68.185236] + - [28.6461349, 68.1963023] + - [28.4446345, 68.5223038] + - [28.433932, 68.539671] + - [28.7947914, 68.8607869] + - [28.8007886, 68.8692833] + - [28.4291269, 68.9077986] + - [28.4157885, 68.9154506] + - [29.2950412, 69.4498488] + - [29.3364956, 69.4783227] + - [27.9604365, 70.089821] + - [27.9593778, 70.0921111] + - [25.9751031, 69.7083076] + - [25.9712362, 69.707112] + - [25.7752318, 69.0142604] + - [25.7746414, 69.0134805] + - [24.9050854, 68.5700172] + - [24.9031658, 68.5545918] + - [22.4047437, 68.721914] + - [22.3745217, 68.7166666] + - [21.6591391, 69.2559218] + - [21.6270859, 69.2765883] + - [20.5523258, 69.0600767] + - [20.5486365, 69.0599735] + - [23.6496681, 67.9616712] + - [23.6511967, 67.9607085] + - [23.3944185, 67.4851454] + - [23.3944231, 67.4842768] + - [23.9945079, 66.8234885] + - [23.9956629, 66.822049] + - [23.6455681, 66.3021131] + - [23.6456201, 66.3013903] + - [24.1526454, 65.8629123] + - [24.152978, 65.862572] + - [24.1149326, 65.1739343] +properties: + theme: divisions + type: division_area + subtype: country + is_territorial: true + is_land: false + country: FI + version: 0 + class: land + division_id: example:division:country:fi + names: + primary: Finland diff --git a/docs/_examples/divisions/division_area/region_land.yaml b/docs/_examples/divisions/division_area/region_land.yaml new file mode 100644 index 000000000..6fa857863 --- /dev/null +++ b/docs/_examples/divisions/division_area/region_land.yaml @@ -0,0 +1,82 @@ +--- +id: example:division_area:land:region:it-umbria +type: Feature +geometry: + type: MultiPolygon + coordinates: + - - - [12.4306287, 43.6064043] + - [12.4084345, 43.6022829] + - [12.4078047, 43.602136] + - [12.4302993, 43.5912531] + - [12.4312128, 43.5913639] + - [12.4306287, 43.6064043] + + - - - [12.8900745, 43.059502] + - [12.7728713, 43.4565236] + - [12.7726151, 43.4567887] + - [12.6198957, 43.4169405] + - [12.6194173, 43.4165862] + - [12.5000805, 43.5212743] + - [12.4998147, 43.521458] + - [12.3320842, 43.5243232] + - [12.3317959, 43.5245007] + - [12.3701584, 43.6119045] + - [12.3700595, 43.611996] + - [12.2138805, 43.6107953] + - [12.2138068, 43.6108907] + - [12.0252105, 43.4155739] + - [12.0252212, 43.4150694] + - [12.1309371, 43.2932054] + - [12.1311294, 43.2930826] + - [12.2238695, 43.2961562] + - [12.2246532, 43.2957978] + - [11.9259547, 43.1499195] + - [11.9251852, 43.1493546] + - [11.9795832, 43.0537307] + - [11.9827957, 43.049902] + - [11.9593386, 42.8687177] + - [11.9593484, 42.868682] + - [11.8923677, 42.843515] + - [11.8920337, 42.8434469] + - [11.9770061, 42.7649469] + - [11.9794818, 42.7645853] + - [11.9410581, 42.6836657] + - [11.9413298, 42.6833009] + - [12.2038508, 42.6606588] + - [12.2043355, 42.6604606] + - [12.2901554, 42.4919867] + - [12.290409, 42.491639] + - [12.4187877, 42.4977764] + - [12.4190453, 42.4976526] + - [12.4129933, 42.4269008] + - [12.4136503, 42.4255981] + - [12.529869, 42.364831] + - [12.531277, 42.3647769] + - [12.8909742, 42.6141819] + - [12.8927853, 42.6150727] + - [13.1541942, 42.650734] + - [13.1553015, 42.6513206] + - [13.2590757, 42.7894895] + - [13.2595251, 42.789692] + - [13.2359026, 42.8672651] + - [13.2352706, 42.8676862] + - [13.1612307, 42.8318577] + - [13.1608634, 42.831898] + - [13.0546323, 42.9196792] + - [13.0544191, 42.9201958] + - [12.9765402, 42.8697582] + - [12.9761569, 42.8698022] + - [12.8900745, 43.059502] +properties: + theme: divisions + type: division_area + version: 0 + subtype: region + class: land + is_land: true + is_territorial: false + division_id: example:division:country:it + names: + primary: Umbria + country: IT + region: IT-55 diff --git a/docs/_examples/divisions/division_boundary/disputed.yaml b/docs/_examples/divisions/division_boundary/disputed.yaml new file mode 100644 index 000000000..525a80bbb --- /dev/null +++ b/docs/_examples/divisions/division_boundary/disputed.yaml @@ -0,0 +1,19 @@ +--- +id: example:division_boundary:disputed_both +type: Feature +geometry: + type: LineString + coordinates: [[0, 1], [1, 2]] +properties: + theme: divisions + type: division_boundary + version: 1 + subtype: country + class: land + is_land: true + is_territorial: false + division_ids: ["example:division:country:left", "example:division:country:right"] + is_disputed: true + perspectives: + mode: disputed_by + countries: [XX] # Random country disputing the actual boundary diff --git a/docs/_examples/divisions/division_boundary/disputed_both.yaml b/docs/_examples/divisions/division_boundary/disputed_both.yaml new file mode 100644 index 000000000..ee491390b --- /dev/null +++ b/docs/_examples/divisions/division_boundary/disputed_both.yaml @@ -0,0 +1,19 @@ +--- +id: example:division_boundary:disputed_both +type: Feature +geometry: + type: LineString + coordinates: [[0, 1], [1, 2]] +properties: + theme: divisions + type: division_boundary + version: 1 + subtype: country + class: land + is_land: true + is_territorial: false + division_ids: ["example:division:country:left", "example:division:country:right"] + is_disputed: true + perspectives: + mode: disputed_by + countries: [XX, XY] # Random iso codes representing two countries disputing the actual boundary diff --git a/docs/_examples/divisions/division_boundary/is_land.yaml b/docs/_examples/divisions/division_boundary/is_land.yaml new file mode 100644 index 000000000..418a89f90 --- /dev/null +++ b/docs/_examples/divisions/division_boundary/is_land.yaml @@ -0,0 +1,15 @@ +--- +id: example:division_boundary:is_land:country:us +type: Feature +geometry: + type: LineString + coordinates: [[0, 1], [1, 2]] +properties: + theme: divisions + type: division_boundary + version: 1 + subtype: country + is_land: true + is_territorial: false + class: land + division_ids: ["example:division:country:left", "example:division:country:right"] \ No newline at end of file diff --git a/docs/_examples/divisions/division_boundary/is_territorial.yaml b/docs/_examples/divisions/division_boundary/is_territorial.yaml new file mode 100644 index 000000000..f5d8b34b4 --- /dev/null +++ b/docs/_examples/divisions/division_boundary/is_territorial.yaml @@ -0,0 +1,16 @@ +--- +id: example:division_boundary:is_territorial:country:fi + +type: Feature +geometry: + type: LineString + coordinates: [[0, 1], [1, 2]] +properties: + theme: divisions + type: division_boundary + version: 1 + subtype: country + is_territorial: true + is_land: false + class: maritime + division_ids: ["example:division:country:left", "example:division:country:right"] \ No newline at end of file diff --git a/docs/_examples/divisions/division_boundary/land_county.yaml b/docs/_examples/divisions/division_boundary/land_county.yaml new file mode 100644 index 000000000..a9dc67197 --- /dev/null +++ b/docs/_examples/divisions/division_boundary/land_county.yaml @@ -0,0 +1,17 @@ +--- +id: example:division_boundary:land +type: Feature +geometry: + type: LineString + coordinates: [[0, 1], [1, 2]] +properties: + theme: divisions + type: division_boundary + version: 1 + subtype: region + class: land + country: "XX" + region: "XX-01" + is_land: true + is_territorial: false + division_ids: ["example:division:region:left", "example:division:region:right"] diff --git a/docs/_examples/divisions/division_boundary/land_region.yaml b/docs/_examples/divisions/division_boundary/land_region.yaml new file mode 100644 index 000000000..a4e8a52fe --- /dev/null +++ b/docs/_examples/divisions/division_boundary/land_region.yaml @@ -0,0 +1,16 @@ +--- +id: example:division_boundary:land +type: Feature +geometry: + type: LineString + coordinates: [[0, 1], [1, 2]] +properties: + theme: divisions + type: division_boundary + version: 1 + subtype: region + class: land + country: "XX" + is_land: true + is_territorial: false + division_ids: ["example:division:region:left", "example:division:region:right"] diff --git a/docs/_examples/divisions/division_boundary/maritime_country.yaml b/docs/_examples/divisions/division_boundary/maritime_country.yaml new file mode 100644 index 000000000..13d73ed4d --- /dev/null +++ b/docs/_examples/divisions/division_boundary/maritime_country.yaml @@ -0,0 +1,15 @@ +--- +id: example:division_boundary:maritime +type: Feature +geometry: + type: LineString + coordinates: [[0, 1], [1, 2]] +properties: + theme: divisions + type: division_boundary + version: 1 + subtype: country + class: maritime + is_territorial: true + is_land: false + division_ids: ["example:division:region:left", "example:division:region:right"] diff --git a/docs/_examples/places/place-alternate-categories.yaml b/docs/_examples/places/place-alternate-categories.yaml new file mode 100644 index 000000000..4da383539 --- /dev/null +++ b/docs/_examples/places/place-alternate-categories.yaml @@ -0,0 +1,42 @@ +--- +id: overture:places:place:1 +type: Feature +geometry: + type: Point + coordinates: [0, 0] +properties: + categories: + primary: the1_category_you_want_first + alternate: + - another_category + confidence: 0.9 + websites: + - https://www.example.com + emails: + - info@example.com + socials: + - https://www.twitter.com/example + phones: + - +32 1207 + brand: + names: + primary: My Sweet POI Brand + wikidata: Q1000 + addresses: + - freeform: "770 Broadway, Floor 8" + locality: "New York" + - freeform: "770 Broadway, #802" + locality: "New York" + region: "US-NY" + country: "US" + # Overture properties + theme: places + type: place + version: 1 + names: + primary: My Sweet POI + common: + es: Something in Spanish + rules: + - variant: short + value: MSPOI diff --git a/docs/_examples/places/place-no-emails-phones-socials-websites.yaml b/docs/_examples/places/place-no-emails-phones-socials-websites.yaml new file mode 100644 index 000000000..c80c8b6ce --- /dev/null +++ b/docs/_examples/places/place-no-emails-phones-socials-websites.yaml @@ -0,0 +1,39 @@ +--- +id: overture:places:place:1 +type: Feature +geometry: + type: Point + coordinates: [0, 0] +properties: + categories: + primary: some_category + confidence: 0.9 + brand: + names: + primary: My Sweet POI Brand + wikidata: Q1000 + addresses: + - freeform: "770 Broadway, Floor 8" + locality: "New York" + - freeform: "770 Brodway, #802" + locality: "New York" + region: "US-NY" + country: "US" + # Overture properties + theme: places + type: place + version: 1 + sources: + - property: "" + dataset: metaPlaces + record_id: "10101" + - property: "/properties/brand" + dataset: msftPlaces + record_id: "10df72b8" + names: + primary: My Sweet POI + common: + es: Something in Spanish + rules: + - variant: short + value: MSPOI diff --git a/docs/_examples/places/place-null-categories.yaml b/docs/_examples/places/place-null-categories.yaml new file mode 100644 index 000000000..ea5d5d070 --- /dev/null +++ b/docs/_examples/places/place-null-categories.yaml @@ -0,0 +1,30 @@ +geometry: + coordinates: + - 0 + - 0 + type: Point +id: overture:places:place:1 +properties: + addresses: + - freeform: 770 Broadway, Floor 8 + locality: New York + - country: US + freeform: "770 Broadway #802" + locality: New York + region: US-NY + brand: + names: + primary: Example + wikidata: Q1000 + emails: + - info@example.com + phones: + - +32 1207 + socials: + - https://www.twitter.com/example + theme: places + type: place + version: 1 + websites: + - https://www.example.com +type: Feature diff --git a/docs/_examples/places/place.yaml b/docs/_examples/places/place.yaml new file mode 100644 index 000000000..4f62f7dbc --- /dev/null +++ b/docs/_examples/places/place.yaml @@ -0,0 +1,47 @@ +--- +id: overture:places:place:1 +type: Feature +geometry: + type: Point + coordinates: [0, 0] +properties: + categories: + primary: some_category + confidence: 0.9 + websites: + - https://www.example.com + emails: + - info@example.com + socials: + - https://www.twitter.com/example + phones: + - +32 1207 + brand: + names: + primary: My Sweet POI Brand + wikidata: Q1000 + addresses: + - freeform: "770 Broadway, Floor 8" + locality: "New York" + - freeform: "770 Brodway, #802" + locality: "New York" + region: "US-NY" + country: "US" + # Overture properties + theme: places + type: place + version: 1 + sources: + - property: "" + dataset: metaPlaces + record_id: "10101" + - property: "/properties/brand" + dataset: msftPlaces + record_id: "10df72b8" + names: + primary: My Sweet POI + common: + es: Something in Spanish + rules: + - variant: short + value: MSPOI diff --git a/docs/_examples/places/place2.yaml b/docs/_examples/places/place2.yaml new file mode 100644 index 000000000..295eeacc3 --- /dev/null +++ b/docs/_examples/places/place2.yaml @@ -0,0 +1,32 @@ +geometry: + coordinates: + - 0 + - 0 + type: Point +id: overture:places:place:1 +properties: + addresses: + - freeform: 770 Broadway, Floor 8 + locality: New York + - country: US + freeform: "770 Broadway #802" + locality: New York + region: US-NY + brand: + names: + primary: Example + wikidata: Q1000 + categories: + primary: some_category + emails: + - info@example.com + phones: + - +32 1207 + socials: + - https://www.twitter.com/example + theme: places + type: place + version: 1 + websites: + - https://www.example.com +type: Feature diff --git a/docs/_examples/transportation/connector/connector.yaml b/docs/_examples/transportation/connector/connector.yaml new file mode 100644 index 000000000..43c091bae --- /dev/null +++ b/docs/_examples/transportation/connector/connector.yaml @@ -0,0 +1,14 @@ +--- +id: overture:transportation:connector:789 +type: Feature +geometry: + type: Point + coordinates: [0, 0] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + # Overture properties + theme: transportation + type: connector + version: 0 +# diff --git a/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml b/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml new file mode 100644 index 000000000..87cac406a --- /dev/null +++ b/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml @@ -0,0 +1,16 @@ +--- +id: access-restrictions-segment-blanket +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: residential + access_restrictions: + - access_type: denied diff --git a/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml b/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml new file mode 100644 index 000000000..80a02ad75 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml @@ -0,0 +1,22 @@ +--- +id: access-restrictions-segment-private-with-deliveries +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: residential + access_restrictions: + - access_type: denied + - access_type: allowed + when: { recognized: [as_private] } + - access_type: allowed + when: + using: [to_deliver] + during: Mo-Fr 08:30-16:30 diff --git a/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml b/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml new file mode 100644 index 000000000..a494b2e22 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml @@ -0,0 +1,19 @@ +--- +id: access-restrictions-segment-motor-vehicles-destination-only +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: residential + access_restrictions: + - access_type: denied + when: { mode: [motor_vehicle] } + - access_type: allowed + when: { using: [at_destination] } diff --git a/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml b/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml new file mode 100644 index 000000000..4a176d983 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml @@ -0,0 +1,22 @@ +--- +id: access-restrictions-segment-axle-limit +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: motorway + access_restrictions: + - access_type: denied + when: + mode: [hgv] + vehicle: + - dimension: axle_count + comparison: greater_than_equal + value: 5 diff --git a/docs/_examples/transportation/docusaurus/access-restriction.yaml b/docs/_examples/transportation/docusaurus/access-restriction.yaml new file mode 100644 index 000000000..a2a36bd60 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/access-restriction.yaml @@ -0,0 +1,28 @@ +--- +id: overture:transportation:example:simple-road1 +type: Feature +geometry: + type: LineString + coordinates: + - [-122.152944, 47.629681] + - [-122.152916, 47.629686] + - [-122.152501, 47.62977] + - [-122.152188, 47.62984] + - [-122.151813, 47.629934] + - [-122.151747, 47.629952] +properties: + theme: transportation + type: segment + version: 4 + subtype: road + class: motorway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + names: + primary: SR 520 + access_restrictions: + - access_type: denied + when: {mode: [foot]} diff --git a/docs/_examples/transportation/docusaurus/connector.yaml b/docs/_examples/transportation/docusaurus/connector.yaml new file mode 100644 index 000000000..0102a5f2a --- /dev/null +++ b/docs/_examples/transportation/docusaurus/connector.yaml @@ -0,0 +1,10 @@ +--- +id: overture:transportation:connector:example +type: Feature +geometry: + type: Point + coordinates: [0, 0] +properties: + theme: transportation + type: connector + version: 0 diff --git a/docs/_examples/transportation/docusaurus/geometric-scoping.yaml b/docs/_examples/transportation/docusaurus/geometric-scoping.yaml new file mode 100644 index 000000000..86f5f58d7 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/geometric-scoping.yaml @@ -0,0 +1,21 @@ +--- +id: overture:transportation:example:geometric-scoping +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: primary + speed_limits: + - between: [0, 0.15] + max_speed: + value: 100 + unit: km/h + - between: [0.15, 1] + max_speed: + value: 60 + unit: km/h diff --git a/docs/_examples/transportation/docusaurus/simple-road.yaml b/docs/_examples/transportation/docusaurus/simple-road.yaml new file mode 100644 index 000000000..c06f41e98 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/simple-road.yaml @@ -0,0 +1,24 @@ +--- +id: overture:transportation:example:simple-road +type: Feature +geometry: + type: LineString + coordinates: + - [-123.13538016118466, 49.28584368472093] + - [-123.13430200328841, 49.28656927229528] + - [-123.13325122717998, 49.28727252390803] +properties: + theme: transportation + type: segment + version: 5 + subtype: road + class: residential + connectors: + - connector_id: overture:transportation:example:via-turn-restriction-connector1 + at: 0 + - connector_id: overture:transportation:example:via-turn-restriction-connector2 + at: 1 + names: + primary: Nicola Street + road_surface: + - value: paved diff --git a/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml b/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml new file mode 100644 index 000000000..30bea71ce --- /dev/null +++ b/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml @@ -0,0 +1,18 @@ +--- +id: speed-limits-simple +type: Feature +geometry: + type: LineString + coordinates: + - [-123.09348187774302, 49.280278741717865] + - [-123.0895720621171, 49.280195795155265] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: residential + speed_limits: + - max_speed: + value: 30 + unit: km/h diff --git a/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml b/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml new file mode 100644 index 000000000..8f30bb69a --- /dev/null +++ b/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml @@ -0,0 +1,20 @@ +--- +id: speed-limits-variable-max +type: Feature +geometry: + type: LineString + coordinates: + - [0, 0] + - [0, 1] +properties: + theme: transportation + type: segment + version: 2 + subtype: road + class: secondary + speed_limits: + - max_speed: {value: 70, unit: "mph"} + - when: + mode: [hgv] + heading: forward + max_speed: {value: 65, unit: "mph"} diff --git a/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml b/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml new file mode 100644 index 000000000..0aeca3887 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml @@ -0,0 +1,21 @@ +--- +id: speed-limits-variable-max +type: Feature +geometry: + type: LineString + coordinates: + - [-123.12895930023527, 50.007761789070344] + - [-123.12637500433082, 50.00945836227345] + - [-123.12506896231434, 50.011762034223324] + - [-123.12415195409014, 50.01351203677902] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: motorway + speed_limits: + - max_speed: + value: 100 + unit: km/h + is_max_speed_variable: true diff --git a/docs/_examples/transportation/docusaurus/subjective-heading-scoping.yaml b/docs/_examples/transportation/docusaurus/subjective-heading-scoping.yaml new file mode 100644 index 000000000..d01d0bf80 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/subjective-heading-scoping.yaml @@ -0,0 +1,25 @@ +--- +id: overture:transportation:example:subjective-heading-scoping +type: Feature +geometry: + type: LineString + coordinates: + - [-1.3023158, 54.5579329] + - [-1.3020090, 54.5577898] + - [-1.3014511, 54.5575155] + - [-1.3009618, 54.5572737] + - [-1.3004518, 54.5570288] + - [-1.3003009, 54.5569580] +properties: + theme: transportation + type: segment + version: 2 + subtype: road + class: primary + access_restrictions: + - access_type: denied + when: { heading: backward } + - access_type: allowed + when: + heading: backward + mode: [bus] diff --git a/docs/_examples/transportation/docusaurus/subjective-status-scoping.yaml b/docs/_examples/transportation/docusaurus/subjective-status-scoping.yaml new file mode 100644 index 000000000..d2f86bdf3 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/subjective-status-scoping.yaml @@ -0,0 +1,19 @@ +--- +id: overture:transportation:example:subjective-status-scoping +type: Feature +geometry: + type: LineString + coordinates: + - [-123.12791513926058, 49.287502049554945] + - [-123.12795068403449, 49.287522915661725] + - [-123.12797769806272, 49.28756882106529] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: tertiary + access_restrictions: + - access_type: denied + - access_type: allowed + when: { recognized: [as_private] } diff --git a/docs/_examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml b/docs/_examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml new file mode 100644 index 000000000..8cef7b3ba --- /dev/null +++ b/docs/_examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml @@ -0,0 +1,18 @@ +--- +id: overture:transportation:example:subjective-usage-purpose-scoping +type: Feature +geometry: + type: LineString + coordinates: + - [-123.12700676422021, 49.279826628301635] + - [-123.12680748254229, 49.27995121574301] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: tertiary + access_restrictions: + - access_type: denied + - access_type: allowed + when: { using: [as_customer, at_destination] } diff --git a/docs/_examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml b/docs/_examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml new file mode 100644 index 000000000..44e4563e0 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml @@ -0,0 +1,23 @@ +--- +id: overture:transportation:example:subjective-vehicle-attributes-scoping +type: Feature +geometry: + type: LineString + coordinates: + - [-123.12791513926058, 49.287502049554945] + - [-123.12795068403449, 49.287522915661725] + - [-123.12797769806272, 49.28756882106529] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: residential + access_restrictions: + - access_type: denied + when: + vehicle: + - dimension: weight + comparison: greater_than + value: 23 + unit: 't' diff --git a/docs/_examples/transportation/docusaurus/temporal-scoping.yaml b/docs/_examples/transportation/docusaurus/temporal-scoping.yaml new file mode 100644 index 000000000..c8a56dd4b --- /dev/null +++ b/docs/_examples/transportation/docusaurus/temporal-scoping.yaml @@ -0,0 +1,20 @@ +--- +id: overture:transportation:example:temporal-scoping +type: Feature +geometry: + type: LineString + coordinates: + - [-122.90019762265949, 49.20784664905824] + - [-122.9003738558948, 49.207833436710956] + - [-122.90052986564378, 49.207871186265805] +properties: + theme: transportation + type: segment + version: 2 + subtype: road + class: unknown + access_restrictions: + - access_type: denied + when: + mode: [bus] + during: "Mo-Fr 15:00-18:00" diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml new file mode 100644 index 000000000..8167129fc --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml @@ -0,0 +1,10 @@ +--- +id: overture:transportation:example:simple-turn-restriction-connector1 +type: Feature +geometry: + type: Point + coordinates: [-113.57831482025354, 50.018860947117304] +properties: + theme: transportation + type: connector + version: 0 diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml new file mode 100644 index 000000000..bdf97bb81 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml @@ -0,0 +1,10 @@ +--- +id: overture:transportation:example:simple-turn-restriction-connector2 +type: Feature +geometry: + type: Point + coordinates: [-113.57851814418316, 50.01923724443006] +properties: + theme: transportation + type: connector + version: 1 diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml new file mode 100644 index 000000000..db09af029 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml @@ -0,0 +1,10 @@ +--- +id: overture:transportation:example:simple-turn-restriction-connector3 +type: Feature +geometry: + type: Point + coordinates: [-113.57816369068271, 50.01919400284882] +properties: + theme: transportation + type: connector + version: 1 diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml new file mode 100644 index 000000000..bf5784e38 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml @@ -0,0 +1,22 @@ +--- +id: overture:transportation:example:simple-turn-restriction-exit +type: Feature +geometry: + type: LineString + coordinates: + - [-113.57831482025354, 50.018860947117304] + - [-113.5783121688577, 50.019016827708754] + - [-113.57829228338763, 50.019079861246865] + - [-113.57826444373009, 50.019121599625294] + - [-113.57816369068271, 50.01919400284882] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: secondary + connectors: + - connector_id: overture:transportation:example:via-turn-restriction-connector1 + at: 0 + - connector_id: overture:transportation:example:via-turn-restriction-connector2 + at: 1 diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml new file mode 100644 index 000000000..542448cad --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml @@ -0,0 +1,26 @@ +--- +id: overture:transportation:example:simple-turn-restriction-source +type: Feature +geometry: + type: LineString + coordinates: + - [-113.57822030759499, 50.01868388494378] + - [-113.57831482025354, 50.018860947117304] + - [-113.57851814418316, 50.01923724443006] +properties: + theme: transportation + type: segment + version: 5 + subtype: road + class: secondary + connectors: + - connector_id: overture:transportation:example:via-turn-restriction-connector1 + at: 0 + - connector_id: overture:transportation:example:via-turn-restriction-connector2 + at: 1 + prohibited_transitions: + - sequence: + - segment_id: overture:transportation:example:simple-turn-restriction-target + connector_id: overture:transportation:example:simple-turn-restriction-connector2 + final_heading: forward + when: {heading: forward} diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml new file mode 100644 index 000000000..aea108fbc --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml @@ -0,0 +1,22 @@ +--- +id: overture:transportation:example:simple-turn-restriction-target +type: Feature +geometry: + type: LineString + coordinates: + - [-113.57851814418316, 50.01923724443006] + - [-113.57837460847787, 50.01919574268962] + - [-113.57812342099429, 50.01919343703648] + - [-113.57803729957116, 50.01923263312719] + - [-113.57766410673773, 50.01923263312719] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: secondary + connectors: + - connector_id: overture:transportation:example:via-turn-restriction-connector1 + at: 0 + - connector_id: overture:transportation:example:via-turn-restriction-connector2 + at: 1 diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml new file mode 100644 index 000000000..1c42ccf66 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml @@ -0,0 +1,10 @@ +--- +id: overture:transportation:example:via-turn-restriction-connector1 +type: Feature +geometry: + type: Point + coordinates: [-71.11234408150312, 42.30149091145671] +properties: + theme: transportation + type: connector + version: 1 diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml new file mode 100644 index 000000000..22f0cf1fb --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml @@ -0,0 +1,10 @@ +--- +id: overture:transportation:example:via-turn-restriction-connector2 +type: Feature +geometry: + type: Point + coordinates: [-71.11248901211202, 42.3013264259736] +properties: + theme: transportation + type: connector + version: 1 diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml new file mode 100644 index 000000000..7c2af13d8 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml @@ -0,0 +1,40 @@ +--- +id: overture:transportation:example:via-turn-restriction-source +type: Feature +geometry: + type: LineString + coordinates: + - [-71.1100226929593, 42.30156668552357] + - [-71.11055493812631, 42.30157222996385] + - [-71.11102971081017, 42.30157407811038] + - [-71.11143701579662, 42.30156114108277] + - [-71.11197425857047, 42.30152602627953] + - [-71.11234408150312, 42.30149091145671] + - [-71.1126589307566, 42.30147612626226] + - [-71.11301376086777, 42.301494607754876] + - [-71.11320616874515, 42.301516785538524] +properties: + theme: transportation + type: segment + version: 5 + subtype: road + class: primary + connectors: + - connector_id: overture:transportation:example:via-turn-restriction-connector1 + at: 0 + - connector_id: overture:transportation:example:via-turn-restriction-connector2 + at: 1 + names: + primary: Arborway + prohibited_transitions: + - sequence: + - segment_id: overture:transportation:example:via-turn-restriction-target + connector_id: overture:transportation:example:via-turn-restriction-connector2 + - segment_id: overture:transportation:example:via-turn-restriction-via + connector_id: overture:transportation:example:via-turn-restriction-connector1 + final_heading: forward + when: + heading: forward + during: Mo-Fr 06:00-09:00, 15:00-19:00 + road_surface: + - value: paved diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml new file mode 100644 index 000000000..ca2503052 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml @@ -0,0 +1,28 @@ +--- +id: overture:transportation:example:turn-restriction-target +type: Feature +geometry: + type: LineString + coordinates: + - [-71.11325364601365, 42.301374477956756] + - [-71.11278137213321, 42.3013264259736] + - [-71.11248901211202, 42.3013264259736] + - [-71.11157195119078, 42.30139295947919] + - [-71.1109997251666, 42.301428074356636] + - [-71.11058492376937, 42.30143177065813] + - [-71.11002519176327, 42.301415137298676] +properties: + theme: transportation + type: segment + version: 5 + subtype: road + class: primary + connectors: + - connector_id: overture:transportation:example:via-turn-restriction-connector1 + at: 0 + - connector_id: overture:transportation:example:via-turn-restriction-connector2 + at: 1 + names: + primary: Arborway + road_surface: + - value: paved diff --git a/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml b/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml new file mode 100644 index 000000000..dc3d35f09 --- /dev/null +++ b/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml @@ -0,0 +1,25 @@ +--- +id: overture:transportation:example:simple-road2 +type: Feature +geometry: + type: LineString + coordinates: + - [-71.11213418200086, 42.3017182333833] + - [-71.11234408150312, 42.30149091145671] + - [-71.11248901211202, 42.3013264259736] + - [-71.11283634581244, 42.30093831245662] +properties: + theme: transportation + type: segment + version: 5 + subtype: road + class: secondary + connectors: + - connector_id: overture:transportation:example:via-turn-restriction-connector1 + at: 0 + - connector_id: overture:transportation:example:via-turn-restriction-connector2 + at: 1 + names: + primary: Washington Street + road_surface: + - value: paved diff --git a/docs/_examples/transportation/segment/missing-update-time.json b/docs/_examples/transportation/segment/missing-update-time.json new file mode 100644 index 000000000..d564bdbf7 --- /dev/null +++ b/docs/_examples/transportation/segment/missing-update-time.json @@ -0,0 +1,16 @@ +{ + "id": "bad-class", + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [[2, 2], [3, 3]] + }, + "properties": { + "ext_expected_errors": [ + ], + "theme": "transportation", + "type": "segment", + "version": 27, + "subtype": "water" + } +} diff --git a/docs/_examples/transportation/segment/rail/rail-freight.yaml b/docs/_examples/transportation/segment/rail/rail-freight.yaml new file mode 100644 index 000000000..41bf6f75a --- /dev/null +++ b/docs/_examples/transportation/segment/rail/rail-freight.yaml @@ -0,0 +1,19 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + theme: transportation + type: segment + version: 3 + subtype: rail + class: standard_gauge + names: + primary: Generic Rail Name + rail_flags: + - values: [is_freight] + between: [0, 0.5] diff --git a/docs/_examples/transportation/segment/rail/rail-tunnel.yaml b/docs/_examples/transportation/segment/rail/rail-tunnel.yaml new file mode 100644 index 000000000..6f9df9c3e --- /dev/null +++ b/docs/_examples/transportation/segment/rail/rail-tunnel.yaml @@ -0,0 +1,19 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + theme: transportation + type: segment + version: 3 + subtype: rail + class: subway + names: + primary: Generic Rail Name + rail_flags: + - values: [is_tunnel] + between: [0, 0.5] diff --git a/docs/_examples/transportation/segment/rail/rail.yaml b/docs/_examples/transportation/segment/rail/rail.yaml new file mode 100644 index 000000000..acf5b67bd --- /dev/null +++ b/docs/_examples/transportation/segment/rail/rail.yaml @@ -0,0 +1,23 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + theme: transportation + type: segment + version: 3 + subtype: rail + class: funicular + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + names: + primary: Generic Rail Name + rail_flags: + - values: [is_tunnel, is_freight] diff --git a/docs/_examples/transportation/segment/road/destinations/road-destinations.yaml b/docs/_examples/transportation/segment/road/destinations/road-destinations.yaml new file mode 100644 index 000000000..e0cd9c2cc --- /dev/null +++ b/docs/_examples/transportation/segment/road/destinations/road-destinations.yaml @@ -0,0 +1,45 @@ +--- +id: overture:transportation:segment:example:destinations:1 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + subtype: road + class: secondary + version: 0 + connectors: + - connector_id: overture:transportation:connector:123 + at: 0 + - connector_id: overture:transportation:connector:678 + at: 1 + destinations: + - when: + heading: forward + from_connector_id: overture:transportation:connector:123 + to_connector_id: overture:transportation:connector:123 + to_segment_id: overture:transportation:segment:567 + final_heading: backward + labels: + - value: Seattle + type: unknown + - value: Main Street + type: street + - value: I90 + type: route_ref + symbols: + - motorway + - airport + - when: + heading: backward + from_connector_id: overture:transportation:connector:123 + to_connector_id: overture:transportation:connector:123 + to_segment_id: overture:transportation:segment:567 + final_heading: backward + labels: + - value: Redmond + type: unknown + - value: I5 + type: toward_route_ref diff --git a/docs/_examples/transportation/segment/road/restrictions/road-restrictions-access.yaml b/docs/_examples/transportation/segment/road/restrictions/road-restrictions-access.yaml new file mode 100644 index 000000000..9b4c623f2 --- /dev/null +++ b/docs/_examples/transportation/segment/road/restrictions/road-restrictions-access.yaml @@ -0,0 +1,67 @@ +--- +id: overture:transportation:segment:example:access +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 0]] +properties: + theme: transportation + type: segment + subtype: road + class: primary + version: 2 + access_restrictions: + - access_type: denied + between: [ 0, 0.5 ] + - access_type: denied + when: + during: PH + - access_type: denied + when: {heading: forward} + - access_type: allowed + when: + heading: forward + mode: [vehicle] + - access_type: allowed + when: + heading: forward + using: [at_destination] + - access_type: allowed + when: + heading: forward + recognized: [as_employee] + - access_type: allowed + when: + heading: forward + vehicle: + - dimension: axle_count + comparison: less_than + value: 3 + - dimension: weight + comparison: less_than_equal + value: 600 + unit: 'kg' + - dimension: height + comparison: less_than + value: 12 + unit: 'ft' + - access_type: denied + between: [0.25, 0.5] + when: + heading: forward + during: PH + mode: [car, hgv] + using: [at_destination] + recognized: [as_employee] + vehicle: + - dimension: axle_count + comparison: less_than + value: 3 + - dimension: weight + comparison: less_than_equal + value: 600 + unit: 'kg' + - dimension: height + comparison: less_than + value: 12 + unit: 'ft' diff --git a/docs/_examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml b/docs/_examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml new file mode 100644 index 000000000..ea7f8c7c7 --- /dev/null +++ b/docs/_examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml @@ -0,0 +1,91 @@ +--- +id: overture:transportation:segment:example:prohibited-transitions +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 0]] +properties: + theme: transportation + type: segment + subtype: road + class: secondary + version: 2 + prohibited_transitions: + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + between: [ 0, 0.5 ] + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + when: + during: PH + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + when: {heading: forward} + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + when: + heading: forward + mode: [car, hgv] + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + when: + heading: forward + using: [at_destination] + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + when: + heading: forward + recognized: [as_employee] + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + when: + heading: forward + vehicle: + - dimension: axle_count + comparison: less_than + value: 3 + - dimension: weight + comparison: less_than_equal + value: 600 + unit: 'kg' + - dimension: height + comparison: less_than + value: 12 + unit: 'ft' + - sequence: + - connector_id: connector1 + segment_id: segment1 + final_heading: forward + between: [0.25, 0.5] + when: + heading: forward + during: PH + mode: [car, hgv] + using: [at_destination] + recognized: [as_employee] + vehicle: + - dimension: axle_count + comparison: less_than + value: 3 + - dimension: weight + comparison: less_than_equal + value: 600 + unit: 'kg' + - dimension: height + comparison: less_than + value: 12 + unit: 'ft' diff --git a/docs/_examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml b/docs/_examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml new file mode 100644 index 000000000..ac229da48 --- /dev/null +++ b/docs/_examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml @@ -0,0 +1,71 @@ +--- +id: overture:transportation:segment:example:speed-limits +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 0]] +properties: + theme: transportation + type: segment + subtype: road + class: tertiary + version: 3 + speed_limits: + - max_speed: {value: 20, unit: 'km/h'} + between: [ 0, 0.5 ] + - min_speed: {value: 25, unit: 'mph'} + when: + during: PH + - max_speed: {value: 100, unit: 'km/h'} + min_speed: {value: 75, unit: 'km/h'} + when: {heading: forward} + - min_speed: {value: 25, unit: 'mph'} + when: + heading: forward + mode: [car, hgv] + - max_speed: {value: 60, unit: 'mph'} + is_max_speed_variable: true + when: + heading: forward + using: [at_destination] + - min_speed: {value: 25, unit: 'mph'} + when: + heading: forward + recognized: [as_employee] + - min_speed: {value: 40, unit: 'mph'} + when: + heading: forward + vehicle: + - dimension: axle_count + comparison: less_than + value: 3 + - dimension: weight + comparison: less_than_equal + value: 600 + unit: 'kg' + - dimension: height + comparison: less_than + value: 12 + unit: 'ft' + - max_speed: {value: 30, unit: 'km/h'} + min_speed: {value: 20, unit: 'mph'} + is_max_speed_variable: true + between: [0.25, 0.5] + when: + heading: forward + during: PH + mode: [car, hgv] + using: [at_destination] + recognized: [as_employee] + vehicle: + - dimension: axle_count + comparison: less_than + value: 3 + - dimension: weight + comparison: less_than_equal + value: 600 + unit: 'kg' + - dimension: height + comparison: less_than + value: 12 + unit: 'ft' diff --git a/docs/_examples/transportation/segment/road/road-abandoned.yaml b/docs/_examples/transportation/segment/road/road-abandoned.yaml new file mode 100644 index 000000000..de6b0207f --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-abandoned.yaml @@ -0,0 +1,17 @@ +--- +id: overture:transportation:segment:789 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Overture properties + theme: transportation + type: segment + version: 3 + subtype: road + class: tertiary + road_surface: + - value: gravel + road_flags: + - values: [is_abandoned] diff --git a/docs/_examples/transportation/segment/road/road-acesss-restriction.yaml b/docs/_examples/transportation/segment/road/road-acesss-restriction.yaml new file mode 100644 index 000000000..345ccafaf --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-acesss-restriction.yaml @@ -0,0 +1,36 @@ +--- +id: overture:transportation:segment:1415 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + ext_description: >- + This is an example road segment in which as many properties as + possible are specified using rules instead of flat values. For + example, the road flags are specified using rules. + # Overture properties + theme: transportation + type: segment + version: 5 + subtype: road + class: primary + access_restrictions: + - access_type: denied + - access_type: designated + when: {mode: [truck]} + between: [0.1, 0.25] + - access_type: allowed + when: + using: [as_customer, to_farm] + recognized: [as_permitted, as_employee] + between: [0.25, 0.50] + - access_type: allowed + when: + vehicle: + - dimension: axle_count + comparison: greater_than + value: 5 + between: [0.50, 0.70] diff --git a/docs/_examples/transportation/segment/road/road-alley.yaml b/docs/_examples/transportation/segment/road/road-alley.yaml new file mode 100644 index 000000000..84c7ff6d8 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-alley.yaml @@ -0,0 +1,19 @@ +--- +id: overture:transportation:segment:1555 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + version: 5 + subtype: road + class: service + subclass_rules: + - value: alley + between: [0, 0.5] + access_restrictions: + - access_type: allowed + when: + using: [at_destination] diff --git a/docs/_examples/transportation/segment/road/road-covered.yaml b/docs/_examples/transportation/segment/road/road-covered.yaml new file mode 100644 index 000000000..5083fa330 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-covered.yaml @@ -0,0 +1,17 @@ +--- +id: overture:transportation:segment:example:covered +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Overture properties + theme: transportation + type: segment + version: 3 + subtype: road + class: tertiary + road_surface: + - value: paved + road_flags: + - values: [is_covered] diff --git a/docs/_examples/transportation/segment/road/road-indoors.yaml b/docs/_examples/transportation/segment/road/road-indoors.yaml new file mode 100644 index 000000000..218934cce --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-indoors.yaml @@ -0,0 +1,17 @@ +--- +id: overture:transportation:segment:example:indoor +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Overture properties + theme: transportation + type: segment + version: 1 + subtype: road + class: tertiary + road_surface: + - value: unknown + road_flags: + - values: [is_indoor] diff --git a/docs/_examples/transportation/segment/road/road-level.yaml b/docs/_examples/transportation/segment/road/road-level.yaml new file mode 100644 index 000000000..c3233db78 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-level.yaml @@ -0,0 +1,17 @@ +--- +id: overture:transportation:segment:example:level +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 0]] +properties: + theme: transportation + type: segment + subtype: road + version: 2 + class: residential + level_rules: + - value: -1 + between: [0, 0.5] + - value: 1 + between: [0.75, 1] diff --git a/docs/_examples/transportation/segment/road/road-multiple-connectors.yaml b/docs/_examples/transportation/segment/road/road-multiple-connectors.yaml new file mode 100644 index 000000000..fd7404b7a --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-multiple-connectors.yaml @@ -0,0 +1,21 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [0.03, 0], [0.10, 0]] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 0.3 + - connector_id: bazConnector + at: 1 + road_surface: + - value: paved diff --git a/docs/_examples/transportation/segment/road/road-oneway-no-lanes.yaml b/docs/_examples/transportation/segment/road/road-oneway-no-lanes.yaml new file mode 100644 index 000000000..b07e4ebf2 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-oneway-no-lanes.yaml @@ -0,0 +1,21 @@ +--- +id: overture:transportation:segment:1213 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + version: 6 + subtype: road + class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + # one way road in backward direction (forward access is denied) + access_restrictions: + - access_type: denied + when: {heading: forward} diff --git a/docs/_examples/transportation/segment/road/road-path.yaml b/docs/_examples/transportation/segment/road/road-path.yaml new file mode 100644 index 000000000..e892f5c4b --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-path.yaml @@ -0,0 +1,12 @@ +--- +id: overture:transportation:segment:1516 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + version: 5 + subtype: road + class: path diff --git a/docs/_examples/transportation/segment/road/road-with-lr-name.yaml b/docs/_examples/transportation/segment/road/road-with-lr-name.yaml new file mode 100644 index 000000000..e05fccf43 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-with-lr-name.yaml @@ -0,0 +1,38 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + # Overture properties + theme: transportation + type: segment + version: 1 + subtype: road + class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + names: + primary: Common Road Name 1 + rules: + - variant: common + value: Common Road Name 1 + between: + - 0 + - 0.5 + - variant: short + value: SRN1 + between: + - 0 + - 0.5 + - variant: common + value: Common Road Name 2 + between: + - 0.5 + - 1 diff --git a/docs/_examples/transportation/segment/road/road-with-lr-sources.yaml b/docs/_examples/transportation/segment/road/road-with-lr-sources.yaml new file mode 100644 index 000000000..3591eebc9 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-with-lr-sources.yaml @@ -0,0 +1,32 @@ +--- +id: overture:transportation:segment:456 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1], [2, 2]] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: secondary + connectors: + - connector_id: startConnector + at: 0 + - connector_id: endConnector + at: 1 + names: + primary: Main Street + sources: + - property: "/names/primary" + dataset: OpenStreetMap + record_id: w12345@1 + between: + - 0 + - 0.5 + - property: "" + dataset: OpenStreetMap + record_id: w67890@1 + between: + - 0.5 + - 1 diff --git a/docs/_examples/transportation/segment/road/road-with-lr-width.yaml b/docs/_examples/transportation/segment/road/road-with-lr-width.yaml new file mode 100644 index 000000000..1dbeb69d3 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-with-lr-width.yaml @@ -0,0 +1,25 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + # Overture properties + theme: transportation + type: segment + version: 1 + subtype: road + class: secondary + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + width_rules: + - between: [0, 0.5] + value: 1.5 + - between: [0.5, 1] + value: 2.0 diff --git a/docs/_examples/transportation/segment/road/road-with-route.yaml b/docs/_examples/transportation/segment/road/road-with-route.yaml new file mode 100644 index 000000000..3e14acce2 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road-with-route.yaml @@ -0,0 +1,25 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Overture properties + theme: transportation + type: segment + version: 1 + subtype: road + class: motorway + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + routes: + - name: I 95 + network: US:I + ref: "95" + symbol: https://upload.wikimedia.org/wikipedia/commons/6/61/I-95.svg + wikidata: Q94967 + between: [0, 0.5] diff --git a/docs/_examples/transportation/segment/road/road.yaml b/docs/_examples/transportation/segment/road/road.yaml new file mode 100644 index 000000000..4ac081556 --- /dev/null +++ b/docs/_examples/transportation/segment/road/road.yaml @@ -0,0 +1,80 @@ +--- +id: overture:transportation:segment:123 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + # Custom user properties. + ext_baz: I am a custom user property... + # Overture properties + theme: transportation + type: segment + version: 3 + subtype: road + class: secondary + subclass: link + subclass_rules: + - value: link + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + names: + primary: Common Road Name + # no access information -> means by default road is accessible in both directions + road_surface: + - value: gravel + road_flags: + - values: [is_link, is_tunnel] # Note: `is_link` is deprecated and will be removed in a future release in favor of the link subclass + level: -1 + level_rules: + - value: -1 + width_rules: + - value: 10 + speed_limits: + - min_speed: + value: 90 + unit: km/h + max_speed: + value: 110 + unit: mph + is_max_speed_variable: true + - max_speed: + value: 55 + unit: mph + when: {mode: [ "truck" ]} + - max_speed: + value: 30 + unit: km/h + between: [0.25, 0.50] + when: + during: Mo-Sa 09:00-12:00, We 15:00-18:00 + prohibited_transitions: + - sequence: + - segment_id: overture:transportation:segment:234 + connector_id: overture:transportation:connector:123 + final_heading: forward + when: {heading: forward} + - sequence: + - segment_id: overture:transportation:segment:456 + connector_id: overture:transportation:connector:345 + - segment_id: overture:transportation:segment:567 + connector_id: overture:transportation:connector:456 + final_heading: backward + when: {heading: backward} + destinations: + - labels: + - value: Seattle + type: unknown + - value: I 90 + type: route_ref + symbols: + - airport + when: + heading: forward + from_connector_id: overture:transportation:connector:123 + to_connector_id: overture:transportation:connector:123 + to_segment_id: overture:transportation:segment:567 + final_heading: backward diff --git a/docs/_examples/transportation/segment/road/sidewalk.yaml b/docs/_examples/transportation/segment/road/sidewalk.yaml new file mode 100644 index 000000000..a4f1d2ed2 --- /dev/null +++ b/docs/_examples/transportation/segment/road/sidewalk.yaml @@ -0,0 +1,22 @@ +--- +id: overture:transportation:segment:999 +type: Feature +geometry: + type: LineString + coordinates: [[0, 0], [1, 1]] +properties: + theme: transportation + type: segment + version: 1 + subtype: road + class: footway + subclass: sidewalk + subclass_rules: + - value: sidewalk + connectors: + - connector_id: fooConnector + at: 0 + - connector_id: barConnector + at: 1 + road_surface: + - value: paved diff --git a/docs/_schema/addresses/address.yaml b/docs/_schema/addresses/address.yaml new file mode 100644 index 000000000..0328c157c --- /dev/null +++ b/docs/_schema/addresses/address.yaml @@ -0,0 +1,102 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: address +description: + Addresses are geographic points used for locating businesses and individuals. + The rules, fields, and fieldnames of an address can vary extensively between + locations. We use a simplified schema to capture worldwide address points. + This initial schema is largely based on the OpenAddresses + (www.openaddresses.io) project. + + The address schema allows up to 5 "admin levels". Rather than have field names + that apply across all countries, we provide an array called "address_levels" + containing the necessary administrative levels for an address. +type: object +properties: # JSON Schema: Top-level object properties. + id: { "$ref": ../defs.yaml#/$defs/propertyDefinitions/id } + geometry: + description: + An address geometry MUST be a Point as defined by GeoJSON schema. + unevaluatedProperties: false + allOf: + - "$ref": https://geojson.org/schema/Point.json + properties: # GeoJSON: top-level object 'properties' property. + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + properties: # JSON Schema: properties within GeoJSON top-level object 'properties' property + country: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" } + postcode: + description: The postcode for the address + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ + street: + description: >- + The street name associated with this address. The street name can include the + street "type" or street suffix, e.g., Main Street. Ideally this is fully spelled + out and not abbreviated but we acknowledge that many address datasets abbreviate + the street name so it is acceptable. + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ + number: + description: >- + The house number for this address. This field may not strictly be a + number. Values such as "74B", "189 1/2", "208.5" are common as the + number part of an address and they are not part of the "unit" of this + address. + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ + unit: + description: The suite/unit/apartment/floor number + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ + address_levels: + description: >- + The administrative levels present in an address. The number + of values in this list and their meaning is country-dependent. + For example, in the United States we expect two values: the state + and the municipality. In other countries there might be only one. + Other countries could have three or more. The array is ordered + with the highest levels first. + + Note: when a level is not known - most likely because the data provider + has not supplied it and we have not derived it from another source, + the array element container must be present, but the "value" field + should be omitted + type: array + items: { "$ref": "#/$defs/propertyContainers/addressLevelContainer" } + minItems: 1 + maxItems: 5 + postal_city: + description: >- + In some countries or regions, a mailing address may need to specify a + different city name than the city that actually contains the address + coordinates. This optional field can be used to specify the alternate + city name to use. + + Example from US National Address Database: + 716 East County Road, Winchester, Indiana has "Ridgeville" as its postal city + + Another example in Slovenia: + Tomaj 71, 6221 Dutovlje, Slovenia + type: string + pattern: ^(\S.*)?\S$ +"$defs": + propertyContainers: + addressLevelContainer: + description: + An address "admin level". We want to avoid the phrase "admin level" and + have chosen "address level". These represent states, regions, districts, + cities, neighborhoods, etc. The address schema defines several numbered + levels with per-country rules indicating which parts of a country's + address goes to which numbered level. + type: object + properties: + value: + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ diff --git a/docs/_schema/base/bathymetry.yaml b/docs/_schema/base/bathymetry.yaml new file mode 100644 index 000000000..dd529d7e6 --- /dev/null +++ b/docs/_schema/base/bathymetry.yaml @@ -0,0 +1,22 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: bathymetry +description: Topographic representation of an underwater area, such as a part of the ocean floor. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/cartographyContainer + required: [depth] + properties: + depth: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/depth" } diff --git a/docs/_schema/base/defs.yaml b/docs/_schema/base/defs.yaml new file mode 100644 index 000000000..930557fd6 --- /dev/null +++ b/docs/_schema/base/defs.yaml @@ -0,0 +1,58 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: Base layer properties +description: Common schema definitions the base theme (primarily from OSM) +"$defs": + propertyDefinitions: + elevation: + description: Elevation above sea level (in meters) of the feature. + type: integer + maximum: 9000 + depth: + description: Depth below surface level (in meters) of the feature. + type: integer + minimum: 0 + height: + description: >- + Height of the feature in meters. + type: number + exclusiveMinimum: 0 + sourceTags: + description: Any attributes/tags from the original source data that should be passed through. + type: object + surface: + description: Surface material, mostly from the OSM tag, with some normalization. + type: string + enum: + - asphalt + - cobblestone + - compacted + - concrete + - concrete_plates + - dirt + - earth + - fine_gravel + - grass + - gravel + - ground + - paved + - paving_stones + - pebblestone + - recreation_grass + - recreation_paved + - recreation_sand + - rubber + - sand + - sett + - tartan + - unpaved + - wood + - woodchips + propertyContainers: + osmPropertiesContainer: + title: "OSM Properties" + description: OSM Properties + type: object + properties: + source_tags: { "$ref": "#/$defs/propertyDefinitions/sourceTags" } + wikidata: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/wikidata" } diff --git a/docs/_schema/base/infrastructure.yaml b/docs/_schema/base/infrastructure.yaml new file mode 100644 index 000000000..179107b40 --- /dev/null +++ b/docs/_schema/base/infrastructure.yaml @@ -0,0 +1,217 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: Infrastructure Schema +description: Various features from OpenStreetMap such as bridges, airport runways, aerialways, or communication towers and lines. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Point.json + - "$ref": https://geojson.org/schema/LineString.json + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ./defs.yaml#/$defs/propertyContainers/osmPropertiesContainer + required: + - subtype + - class + properties: + subtype: + description: Further description of the type of infrastructure. + type: string + enum: + - aerialway + - airport + - barrier + - bridge + - communication + - emergency + - manhole + - pedestrian + - pier + - power + - quay + - recreation + - tower + - transit + - transportation + - utility + - waste_management + - water + class: + description: Further classification of the infrastructure type + type: string + enum: + - aerialway_station + - airport + - airport_gate + - airstrip + - apron + - aqueduct + - artwork + - atm + - barrier + - bell_tower + - bench + - bicycle_parking + - bicycle_rental + - block + - boardwalk + - bollard + - border_control + - breakwater + - bridge + - bridge_support + - bump_gate + - bus_route + - bus_station + - bus_stop + - bus_trap + - cable + - cable_barrier + - cable_car + - cable_distribution + - camp_site + - cantilever + - catenary_mast + - cattle_grid + - chain + - chair_lift + - charging_station + - city_wall + - communication_line + - communication_pole + - communication_tower + - connection + - cooling + - covered + - crossing + - cutline + - cycle_barrier + - dam + - defensive + - ditch + - diving + - drag_lift + - drain + - drinking_water + - entrance + - fence + - ferry_terminal + - fire_hydrant + - fountain + - full-height_turnstile + - gasometer + - gate + - generator + - give_way + - gondola + - goods + - guard_rail + - hampshire_gate + - handrail + - hedge + - height_restrictor + - heliostat + - helipad + - heliport + - hose + - information + - insulator + - international_airport + - j-bar + - jersey_barrier + - kerb + - kissing_gate + - launchpad + - lift_gate + - lighting + - lightning_protection + - magic_carpet + - manhole + - milestone + - military_airport + - minaret + - minor_line + - mixed_lift + - mobile_phone_tower + - monitoring + - motorcycle_parking + - motorway_junction + - movable + - municipal_airport + - observation + - parking + - parking_entrance + - parking_space + - pedestrian_crossing + - picnic_table + - pier + - pipeline + - plant + - planter + - platform + - platter + - portal + - post_box + - power_line + - power_pole + - power_tower + - private_airport + - pylon + - quay + - radar + - railway_halt + - railway_station + - recycling + - regional_airport + - reservoir_covered + - retaining_wall + - rope_tow + - runway + - sally_port + - seaplane_airport + - sewer + - silo + - siren + - stile + - stop + - stop_position + - stopway + - storage_tank + - street_cabinet + - street_lamp + - substation + - subway_station + - swing_gate + - switch + - t-bar + - taxilane + - taxiway + - terminal + - toilets + - toll_booth + - traffic_signals + - transformer + - trestle + - utility_pole + - vending_machine + - viaduct + - viewpoint + - wall + - waste_basket + - waste_disposal + - watchtower + - water_tower + - weir + - zip_line + height: { "$ref": ./defs.yaml#/$defs/propertyDefinitions/height } + surface: { "$ref": ./defs.yaml#/$defs/propertyDefinitions/surface } diff --git a/docs/_schema/base/land.yaml b/docs/_schema/base/land.yaml new file mode 100644 index 000000000..b2d678d49 --- /dev/null +++ b/docs/_schema/base/land.yaml @@ -0,0 +1,93 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: land +description: Physical representations of land surfaces. Global land derived from the inverse of OSM Coastlines. Translates `natural` tags from OpenStreetMap. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Point.json + - "$ref": https://geojson.org/schema/LineString.json + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ./defs.yaml#/$defs/propertyContainers/osmPropertiesContainer + required: + - subtype + - class + properties: + subtype: + description: Further description of the type of land cover, such as forest, glacier, grass, or a physical feature, such as a mountain peak. + default: [land] + type: string + enum: + - crater + - desert + - forest + - glacier + - grass + - land + - physical + - reef + - rock + - sand + - shrub + - tree + - wetland + class: + description: Further classification of type of landcover + default: [land] + type: string + enum: + - archipelago + - bare_rock + - beach + - cave_entrance + - cliff + - desert + - dune + - fell + - forest + - glacier + - grass + - grassland + - heath + - hill + - island + - islet + - land + - meadow + - meteor_crater + - mountain_range + - peak + - peninsula + - plateau + - reef + - ridge + - rock + - saddle + - sand + - scree + - scrub + - shingle + - shrub + - shrubbery + - stone + - tree + - tree_row + - tundra + - valley + - volcanic_caldera_rim + - volcano + - wetland + - wood + elevation: { "$ref": ./defs.yaml#/$defs/propertyDefinitions/elevation } + surface: { "$ref": ./defs.yaml#/$defs/propertyDefinitions/surface } diff --git a/docs/_schema/base/land_cover.yaml b/docs/_schema/base/land_cover.yaml new file mode 100644 index 000000000..ca1af3af5 --- /dev/null +++ b/docs/_schema/base/land_cover.yaml @@ -0,0 +1,36 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: land_cover +description: Representation of the Earth's natural surfaces +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/cartographyContainer + required: + - subtype + properties: + subtype: + description: type of surface represented + type: string + enum: + - barren + - crop + - forest + - grass + - mangrove + - moss + - shrub + - snow + - urban + - wetland diff --git a/docs/_schema/base/land_use.yaml b/docs/_schema/base/land_use.yaml new file mode 100644 index 000000000..e677599fb --- /dev/null +++ b/docs/_schema/base/land_use.yaml @@ -0,0 +1,170 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: land_use +description: Land use features from OpenStreetMap +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + description: Classifications of the human use of a section of land. Translates `landuse` from OpenStreetMap tag from OpenStreetMap. + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Point.json + - "$ref": https://geojson.org/schema/LineString.json + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ./defs.yaml#/$defs/propertyContainers/osmPropertiesContainer + required: + - subtype + - class + properties: + subtype: + description: Broad type of land + type: string + enum: + - agriculture + - aquaculture + - campground + - cemetery + - construction + - developed + - education + - entertainment + - golf + - grass + - horticulture + - landfill + - managed + - medical + - military + - park + - pedestrian + - protected + - recreation + - religious + - residential + - resource_extraction + - transportation + - winter_sports + class: + description: Further classification of the land use + type: string + enum: + - aboriginal_land + - airfield + - allotments + - animal_keeping + - aquaculture + - barracks + - base + - beach_resort + - brownfield + - bunker + - camp_site + - cemetery + - clinic + - college + - commercial + - connection + - construction + - danger_area + - doctors + - dog_park + - downhill + - driving_range + - driving_school + - education + - environmental + - fairway + - farmland + - farmyard + - fatbike + - flowerbed + - forest + - garages + - garden + - golf_course + - grass + - grave_yard + - green + - greenfield + - greenhouse_horticulture + - highway + - hike + - hospital + - ice_skate + - industrial + - institutional + - kindergarten + - landfill + - lateral_water_hazard + - logging + - marina + - meadow + - military + - military_hospital + - military_school + - music_school + - national_park + - natural_monument + - nature_reserve + - naval_base + - nordic + - nuclear_explosion_site + - obstacle_course + - orchard + - park + - peat_cutting + - pedestrian + - pitch + - plant_nursery + - playground + - plaza + - protected + - protected_landscape_seascape + - quarry + - railway + - range + - recreation_ground + - religious + - residential + - resort + - retail + - rough + - salt_pond + - school + - schoolyard + - ski_jump + - skitour + - sled + - sleigh + - snow_park + - species_management_area + - stadium + - state_park + - static_caravan + - strict_nature_reserve + - tee + - theme_park + - track + - traffic_island + - training_area + - trench + - university + - village_green + - vineyard + - water_hazard + - water_park + - wilderness_area + - winter_sports + - works + - zoo + elevation: { "$ref": ./defs.yaml#/$defs/propertyDefinitions/elevation } + surface: { "$ref": ./defs.yaml#/$defs/propertyDefinitions/surface } diff --git a/docs/_schema/base/water.yaml b/docs/_schema/base/water.yaml new file mode 100644 index 000000000..0372e7161 --- /dev/null +++ b/docs/_schema/base/water.yaml @@ -0,0 +1,89 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: water +description: Physical representations of inland and ocean marine surfaces. Translates `natural` and `waterway` tags from OpenStreetMap. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Point.json + - "$ref": https://geojson.org/schema/LineString.json + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + - "$ref": ./defs.yaml#/$defs/propertyContainers/osmPropertiesContainer + required: + - subtype + - class + properties: + subtype: + description: The type of water body such as an river, ocean or lake. + default: [water] + type: string + enum: + - canal + - human_made + - lake + - ocean + - physical + - pond + - reservoir + - river + - spring + - stream + - wastewater + - water + class: + description: Further description of the type of water + default: [water] + type: string + enum: + - basin + - bay + - blowhole + - canal + - cape + - ditch + - dock + - drain + - fairway + - fish_pass + - fishpond + - geyser + - hot_spring + - lagoon + - lake + - moat + - ocean + - oxbow + - pond + - reflecting_pool + - reservoir + - river + - salt_pond + - sea + - sewage + - shoal + - spring + - strait + - stream + - swimming_pool + - tidal_channel + - wastewater + - water + - water_storage + - waterfall + is_salt: + description: Is it salt water or not + type: boolean + is_intermittent: + description: Is it intermittent water or not + type: boolean diff --git a/docs/_schema/buildings/building.yaml b/docs/_schema/buildings/building.yaml new file mode 100644 index 000000000..c305b0bdc --- /dev/null +++ b/docs/_schema/buildings/building.yaml @@ -0,0 +1,144 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: building +description: >- + A building is a man-made structure with a roof that exists permanently in one place. Buildings are compatible with + GeoJSON Polygon features. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + description: >- + A regular building's geometry is defined as its footprint or + roofprint (if traced from aerial/satellite imagery). It MUST be a + Polygon or MultiPolygon as defined by the GeoJSON schema. + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ./defs.yaml#/$defs/propertyContainers/shapeContainer + properties: + subtype: + description: >- + A broad category of the building type/purpose. When the + current use of the building does not match the built purpose, + the subtype should be set to represent the current use of the + building. + type: string + enum: + - agricultural + - civic + - commercial + - education + - entertainment + - industrial + - medical + - military + - outbuilding + - religious + - residential + - service + - transportation + class: + description: >- + Further delineation of the building's built purpose. + type: string + enum: + - agricultural + - allotment_house + - apartments + - barn + - beach_hut + - boathouse + - bridge_structure + - bungalow + - bunker + - cabin + - carport + - cathedral + - chapel + - church + - civic + - college + - commercial + - cowshed + - detached + - digester + - dormitory + - dwelling_house + - factory + - farm + - farm_auxiliary + - fire_station + - garage + - garages + - ger + - glasshouse + - government + - grandstand + - greenhouse + - guardhouse + - hangar + - hospital + - hotel + - house + - houseboat + - hut + - industrial + - kindergarten + - kiosk + - library + - manufacture + - military + - monastery + - mosque + - office + - outbuilding + - parking + - pavilion + - post_office + - presbytery + - public + - religious + - residential + - retail + - roof + - school + - semi + - semidetached_house + - service + - shed + - shrine + - silo + - slurry_tank + - sports_centre + - sports_hall + - stable + - stadium + - static_caravan + - stilt_house + - storage_tank + - sty + - supermarket + - synagogue + - temple + - terrace + - toilets + - train_station + - transformer_tower + - transportation + - trullo + - university + - warehouse + - wayside_shrine + + has_parts: + description: Flag indicating whether the building has parts + type: boolean diff --git a/docs/_schema/buildings/building_part.yaml b/docs/_schema/buildings/building_part.yaml new file mode 100644 index 000000000..1e250bf20 --- /dev/null +++ b/docs/_schema/buildings/building_part.yaml @@ -0,0 +1,27 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: part +description: >- + A single building part. Parts describe their shape and color and other properties. Each + building part must contain the building with which it is associated. +type: object +properties: + geometry: + description: >- + The part's geometry. It must be a polygon or multipolygon. + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer + - "$ref": ./defs.yaml#/$defs/propertyContainers/shapeContainer + required: [building_id] + properties: + building_id: + description: The building ID to which this part belongs + type: string diff --git a/docs/_schema/buildings/defs.yaml b/docs/_schema/buildings/defs.yaml new file mode 100644 index 000000000..b6d7c7e4a --- /dev/null +++ b/docs/_schema/buildings/defs.yaml @@ -0,0 +1,122 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: Overture Maps Shared Building Properties +description: Common schema definitions shared by building footprints and building parts +"$defs": + propertyContainers: + shapeContainer: + title: shape + description: Properties of the buildings shape, such as height or roof type. + properties: + height: + description: >- + Height of the building or part in meters. The height is the distance from the lowest point to the highest point. + type: number + exclusiveMinimum: 0 + is_underground: + description: >- + Whether the entire building or part is completely below ground. This is useful for rendering which typically omits these + buildings or styles them differently because they are not visible above ground. This is different than the level column + which is used to indicate z-ordering of elements and negative values may be above ground. + type: boolean + num_floors: + description: >- + Number of above-ground floors of the building or part. + type: integer + exclusiveMinimum: 0 + num_floors_underground: + description: >- + Number of below-ground floors of the building or part. + type: integer + exclusiveMinimum: 0 + min_height: + description: >- + The height of the bottom part of building in meters. Used if a building or part of building starts above the ground level. + type: number + min_floor: + description: >- + The "start" floor of this building or part. Indicates that the building or part is "floating" and its bottom-most floor is above + ground level, usually because it is part of a larger building in which some parts do reach down to ground level. An example is a + building that has an entry road or driveway at ground level into an interior courtyard, where part of the building bridges above + the entry road. This property may sometimes be populated when min_height is missing and in these cases can be used as a proxy + for min_height. + type: integer + exclusiveMinimum: 0 + facade_color: + description: >- + The color (name or color triplet) of the facade of a building or building part in hexadecimal + type: string + facade_material: + description: >- + The outer surface material of building facade. + type: string + enum: + - brick + - cement_block + - clay + - concrete + - glass + - metal + - plaster + - plastic + - stone + - timber_framing + - wood + roof_material: + description: >- + The outermost material of the roof. + type: string + enum: + - concrete + - copper + - eternit + - glass + - grass + - gravel + - metal + - plastic + - roof_tiles + - slate + - solar_panels + - thatch + - tar_paper + - wood + roof_shape: + description: The shape of the roof + type: string + enum: + - dome + - flat + - gabled + - gambrel + - half_hipped + - hipped + - mansard + - onion + - pyramidal + - round + - saltbox + - sawtooth + - skillion + - spherical + roof_direction: + description: >- + Bearing of the roof ridge line in degrees. + type: number + inclusiveMinimum: 0 + exclusiveMaximum: 360 + roof_orientation: + description: >- + Orientation of the roof shape relative to the footprint shape. Either "along" or "across". + type: string + enum: + - across + - along + roof_color: + description: The color (name or color triplet) of the roof of a building or building part in hexadecimal + type: string + roof_height: + description: >- + The height of the building roof in meters. This represents the distance + from the base of the roof to the highest point of the roof. + type: number diff --git a/docs/_schema/defs.yaml b/docs/_schema/defs.yaml new file mode 100644 index 000000000..7bcf8ac68 --- /dev/null +++ b/docs/_schema/defs.yaml @@ -0,0 +1,401 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: Overture Maps Feature Schema Common Definitions +description: Common schema definitions shared by all themes +"$defs": + propertyDefinitions: + address: + type: object + unevaluatedProperties: false + properties: + freeform: + description: >- + Free-form address that contains street name, house number + and other address info + type: string + locality: + description: >- + Name of the city or neighborhood where the address is + located + type: string + postcode: + description: Postal code where the address is located + type: string + region: { "$ref": "#/$defs/propertyDefinitions/iso3166_2SubdivisionCode" } + country: { "$ref": "#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" } + allNames: + type: object + required: [primary] + unevaluatedProperties: false + properties: + primary: + description: The most commonly used name. + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + common: { "$ref": "#/$defs/propertyDefinitions/commonNames" } + rules: + description: >- + Rules for names that cannot be specified in the simple + common names property. These rules can cover other name + variants such as official, alternate, and short; and they + can optionally include geometric scoping (linear + referencing) and side-of-road scoping for complex cases. + type: array + items: { "$ref": "#/$defs/propertyDefinitions/nameRule" } + minItems: 1 + commonNames: + description: The common translations of the name. + type: object + minProperties: 1 + additionalProperties: false + patternProperties: + "^(?:(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}?)|(?:[A-Za-z]{4,8}))(?:-[A-Za-z]{4})?(?:-[A-Za-z]{2}|[0-9]{3})?(?:-(?:[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(?:-[A-WY-Za-wy-z0-9](?:-[A-Za-z0-9]{2,8})+)*$": + description: >- + Each entry consists of a key that is an IETF-BCP47 language tag; and + a value that reflects the common name in the language represented by + the key's language tag. + + The validating regular expression for this property follows the + pattern described in https://www.rfc-editor.org/rfc/bcp/bcp47.txt + with the exception that private use tags are not supported. + "$comment": >- + This pattern recognizes BCP-47 language tags at the lexical or + syntactic level. It verifies that candidate tags follow the grammar + described in the RFC, but not that they are validly registered tag + in IANA's language subtag registry. + + In understanding the regular expression, remark that '(:?' indicates + a non-capturing group, and that all the top-level or non-nested + groups represent top-level components of `langtag` referenced in the + syntax section of https://www.rfc-editor.org/rfc/bcp/bcp47.txt. In + particular, the top-level groups in left-to-right order represent: + + 1. language + 2. ["-" script] + 3. ["-" region] + 4. *("-" variant) + 5. *("-" extension) + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + featureType: + description: Specific feature type within the theme + type: string + enum: + - address + - bathymetry + - building + - connector + - division + - division_area + - division_boundary + - infrastructure + - land + - land_cover + - land_use + - building_part + - place + - segment + - water + featureUpdateTime: + description: Timestamp when the feature was last updated + type: string + format: date-time + pattern: ^([1-9]\d{3})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])T([01]\d|2[0-3]):([0-5]\d):([0-5]\d|60)(\.\d{1,3})?(Z|[-+]([01]\d|2[0-3]):[0-5]\d)$ + "$comment": >- + Pattern is used as a fallback because not all JSON schema + implementations treat "format" as an assertion, for some it is + only an annotation. + + A somewhat more compact approach would be to reference the + Overture version where the feature last changed instead of the + update time, and expect clients to do a lookup if they really + care about the time. + featureVersion: + description: >- + Version number of the feature, incremented in each Overture + release where the geometry or attributes of this feature + changed. + type: integer + minimum: 0 + "$comment": >- + It might be reasonable to combine "update_time" and "version" + in a single "updateVersion" field which gives the last Overture + version number in which the feature changed. The downside to + doing this is that the number would cease to be indicative of + the "rate of change" of the feature. + id: + type: string + description: >- + A feature ID. This may be an ID associated with the Global + Entity Reference System (GERS) if—and-only-if the feature + represents an entity that is part of GERS. + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + iso3166_1Alpha2CountryCode: + description: ISO 3166-1 alpha-2 country code. + type: string + minLength: 2 + maxLength: 2 + pattern: ^[A-Z]{2}$ + iso3166_2SubdivisionCode: + description: ISO 3166-2 principal subdivision code. + type: string + minLength: 4 + maxLength: 6 + pattern: ^[A-Z]{2}-[A-Z0-9]{1,3}$ + language: + description: >- + A IETF-BCP47 language tag. + + The validating regular expression for this property follows the pattern + described in https://www.rfc-editor.org/rfc/bcp/bcp47.txt with the + exception that private use subtags are omitted from the pattern. + type: string + pattern: "^(?:(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}?)|(?:[A-Za-z]{4,8}))(?:-[A-Za-z]{4})?(?:-[A-Za-z]{2}|[0-9]{3})?(?:-(?:[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(?:-[A-WY-Za-wy-z0-9](?:-[A-Za-z0-9]{2,8})+)*$" + "$comment": >- + This pattern recognizes BCP-47 language tags at the lexical or + syntactic level. It verifies that candidate tags follow the grammar + described in the RFC, but not that they are validly registered tag in + IANA's language subtag registry. + + In understanding the regular expression, remark that '(:?' indicates + a non-capturing group, and that all the top-level or non-nested + groups represent top-level components of `langtag` referenced in the + syntax section of https://www.rfc-editor.org/rfc/bcp/bcp47.txt. In + particular, the top-level groups in left-to-right order represent: + + 1. language + 2. ["-" script] + 3. ["-" region] + 4. *("-" variant) + 5. *("-" extension) + level: + description: Z-order of the feature where 0 is visual level + type: integer + default: 0 + linearlyReferencedPosition: + description: >- + Represents a linearly-referenced position between 0% and 100% of + the distance along a path such as a road segment or a river + center-line segment. + type: number + minimum: 0 + maximum: 1 + "$comment": >- + One possible advantage to using percentages over absolute + distances is being able to trivially validate that the position + lies "on" its segment (i.e. is between zero and one). Of course, + this level of validity doesn't mean the number isn't nonsense. + linearlyReferencedRange: + description: + Represents a non-empty range of positions along a path as a pair + linearly-referenced positions. For example, the pair [0.25, 0.5] + represents the range beginning 25% of the distance from the + start of the path and ending 50% of the distance from the path + start. + type: array + items: { "$ref": "#/$defs/propertyDefinitions/linearlyReferencedPosition" } + minItems: 2 + maxItems: 2 + uniqueItems: true + "$comment": + Ideally we would enforce sorted order of this pair, but sorting + assertions aren't (yet?) supported by JSON schema. + nameRule: + type: object + required: [variant, value] + allOf: + - { "$ref": "#/$defs/propertyContainers/geometricRangeScopeContainer" } + - { "$ref": "#/$defs/propertyContainers/sideScopeContainer" } + properties: + variant: + type: string + enum: + - common + - official + - alternate + - short + language: { "$ref": "#/$defs/propertyDefinitions/language" } + perspectives: + description: Political perspectives from which a named feature is viewed. + type: object + unevaluatedProperties: false + required: [mode, countries] + properties: + mode: + description: Whether the perspective holder accepts or disputes this name. + type: string + enum: [accepted_by, disputed_by] + countries: + description: Countries holding the given mode of perspective. + type: array + items: { "$ref": "#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" } + minItems: 1 + uniqueItems: true + value: + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + openingHours: + description: >- + Time span or time spans during which something is open or + active, specified in the OSM opening hours specification: + https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification + type: string + "$comment": >- + Validating the opening hours value is going to have to happen outside of JSON Schema. + + Reasons for using the OSM opening hours specification for + transportation rule time restrictions are documented in + https://github.com/OvertureMaps/schema-wg/pull/10 + side: + description: + Represents the side on which something appears relative to a + facing or heading direction, e.g. the side of a road relative + to the road orientation, or relative to the direction of travel + of a person or vehicle. + type: string + enum: [left, right] + sourcePropertyItem: + description: >- + An object storing the source for a specificed property. The property + is a reference to the property element within this Feature, and will be + referenced using JSON Pointer Notation RFC 6901 + (https://datatracker.ietf.org/doc/rfc6901/). The source dataset for + that referenced property will be specified in the overture list of + approved sources from the Overture Data Working Group that contains + the relevant metadata for that dataset including license source organization. + type: object + required: [property, dataset] + allOf: + - { "$ref": "#/$defs/propertyContainers/geometricRangeScopeContainer" } + unevaluatedProperties: false + properties: + property: + type: string + dataset: + type: string + record_id: + type: string + description: Refers to the specific record within the dataset that was used. + update_time: { "$ref": "#/$defs/propertyDefinitions/featureUpdateTime" } + confidence: + description: Confidence value from the source dataset, particularly relevant for ML-derived data. + type: number + minimum: 0 + maximum: 1 + sources: + description: >- + The array of source information for the properties of a + given feature, with each entry being a source object which + lists the property in JSON Pointer notation and the dataset + that specific value came from. All features must have a root + level source which is the default source if a specific + property's source is not specified. + type: array + items: {"$ref" : "#/$defs/propertyDefinitions/sourcePropertyItem"} + minItems: 1 + uniqueItems: true + theme: + description: Top-level Overture theme this feature belongs to + type: string + enum: + - addresses + - base + - buildings + - divisions + - places + - transportation + wikidata: + description: A wikidata ID if available, as found on https://www.wikidata.org/. + type: string + pattern: ^Q\d+ + + propertyContainers: + cartographyContainer: + description: Defines cartographic hints for optimal use of Overture features in map-making. + properties: + cartography: + title: cartography + type: object + properties: + prominence: + description: >- + Represents Overture's view of a place's significance or importance. + This value can be used to help drive cartographic display of a + place and is derived from various factors including, but not + limited to: population, capital status, place tags, and type. + type: integer + minimum: 1 + maximum: 100 + min_zoom: + description: >- + Recommended minimum tile zoom per the Slippy Maps convention. + + The Slippy Maps zooms are explained in the following references: + - https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames + - https://www.maptiler.com/google-maps-coordinates-tile-bounds-projection + type: integer + minimum: 0 + maximum: 23 + max_zoom: + description: >- + Recommended maximum tile zoom per the Slippy Maps convention. + + The Slippy Maps zooms are explained in the following references: + - https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames + - https://www.maptiler.com/google-maps-coordinates-tile-bounds-projection + type: integer + minimum: 0 + maximum: 23 + sort_key: + description: >- + An ascending numeric that defines the recommended order features + should be drawn in. Features with lower number should be shown on top + of features with a higher number. + type: integer + default: 0 + geometricRangeScopeContainer: + title: range + description: >- + Geometric scoping properties defining the range of positions on + the segment where something is physically located or where a + rule is active. + properties: + between: { "$ref": "#/$defs/propertyDefinitions/linearlyReferencedRange" } + levelContainer: + title: level + description: Properties defining feature Z-order, i.e., stacking order + type: object + properties: + level: + "$ref": "#/$defs/propertyDefinitions/level" + sideScopeContainer: + title: side + description: >- + Geometric scoping properties defining the side of a road modeled when + moving along the line from beginning to end + properties: + side: { "$ref": "#/$defs/propertyDefinitions/side" } + namesContainer: + title: names + description: Properties defining the names of a feature. + type: object + properties: + names: + "$ref": "#/$defs/propertyDefinitions/allNames" + overtureFeaturePropertiesContainer: + title: overture properties + description: Top-level properties shared by all Overture features + type: object + required: [ theme, type, version ] + patternProperties: + ^ext_.*$: + description: "Additional top-level properties must be prefixed with `ext_`." + properties: + theme: { "$ref": "#/$defs/propertyDefinitions/theme" } + type: { "$ref": "#/$defs/propertyDefinitions/featureType" } + version: { "$ref": "#/$defs/propertyDefinitions/featureVersion" } + sources: { "$ref": "#/$defs/propertyDefinitions/sources" } diff --git a/docs/_schema/divisions/defs.yaml b/docs/_schema/divisions/defs.yaml new file mode 100644 index 000000000..4b3e3ec5d --- /dev/null +++ b/docs/_schema/divisions/defs.yaml @@ -0,0 +1,118 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +description: Common schema definitions for divisions theme +"$defs": + propertyDefinitions: + placetype: + description: + Category of the division from a finite, hierarchical, ordered + list of categories (e.g. country, region, locality, etc.) + similar to a Who's on First placetype. + type: string + enum: + - country # Largest unit of independent sovereignty, e.g. + # the United States, France. + + - dependency # A place that is not exactly a sub-region of a + # country but is dependent on a parent country + # for defence, passport control, etc., e.g. + # Puerto Rico. + + - macroregion # A bundle of regions, e.g. England, Scotland, + # Île-de-France. These exist mainly in Europe. + + - region # A state, province, region, etc. Largest + # sub-country administrative unit in most + # countries, except those that have dependencies + # or macro-regions. + + - macrocounty # A bundle of counties, e.g. Inverness. These + # exist mainly in Europe. + + - county # Largest sub-region administrative unit in most + # countries, unless they have macrocounties. + + - localadmin # An administrative unit existing in some parts + # of the world that contains localities or + # populated places, e.g. département de Paris. + # Often the contained places do not have + # independent authority. Often, but not + # exclusively, found in Europe. + + - locality # A populated place that may or may not have its + # own administrative authority. + + - borough # A local government unit subordinate to a + # locality. + + - macrohood # A super-neighborhood that contains smaller + # divisions of type neighborhood, e.g. BoCaCa + # (Boerum Hill, Cobble Hill, and Carroll + # Gardens). + + - neighborhood # A neighborhood. Most neighborhoods will be + # just this, unless there's enough granular + # detail to justify incroducing macrohood or + # microhood divisions. + + - microhood # A mini-neighborhood that is contained within a + # division of type neighborhood. + hierarchy: + description: + A hierarchy of divisions, with the first entry being a country; + each subsequent entry, if any, being a division that is a direct + child of the previous entry; and the last entry representing + the division that contains the hierarchy. + + For example, a hierarchy for the United States is simply + [United States]. A hierarchy for the U.S. state of New Hampshire + would be [United States, New Hampshire], and a hierarchy for the + city of Concord, NH would be [United States, New Hampshire, + Merrimack County, Concord]. + type: array + items: { "$ref": "#/$defs/propertyDefinitions/hierarchyItem" } + minItems: 1 + uniqueItems: true + hierarchyItem: + description: One division in a hierarchy + type: object + unevaluatedProperties: false + required: [division_id, name, subtype] + properties: + division_id: + description: ID of the division + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/id" + subtype: { "$ref": "#/$defs/propertyDefinitions/placetype" } + name: + description: Primary name of the division + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + perspectives: + description: Political perspectives from which division is viewed. + type: object + unevaluatedProperties: false + required: [mode, countries] + properties: + mode: + description: Whether perspective holder accept or dispute this division. + type: string + enum: [accepted_by, disputed_by] + countries: + description: Countries holding the given mode of perspective. + type: array + items: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" } + minItems: 1 + uniqueItems: true + capitalOfDivisionItem: + description: One division that has capital + type: object + unevaluatedProperties: false + required: [division_id, subtype] + properties: + division_id: + description: ID of the division + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/id" + subtype: { "$ref": "#/$defs/propertyDefinitions/placetype" } diff --git a/docs/_schema/divisions/division.yaml b/docs/_schema/divisions/division.yaml new file mode 100644 index 000000000..f4eb4d008 --- /dev/null +++ b/docs/_schema/divisions/division.yaml @@ -0,0 +1,226 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: division +description: + Divisions are recognized official or non-official organizations of + people as seen from a given political perspective. Examples include + countries, provinces, cities, towns, neighborhoods, etc. +type: object +properties: # JSON Schema: Top-level object properties. + id: { "$ref": ../defs.yaml#/$defs/propertyDefinitions/id } + geometry: + description: + Division geometry MUST be a Point as defined by GeoJSON schema. + It represents the approximate location of a position commonly + associated with the real-world entity modeled by the division + feature. + unevaluatedProperties: false + allOf: + - "$ref": https://geojson.org/schema/Point.json + properties: # GeoJSON: top-level object 'properties' property. + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/cartographyContainer + - if: + properties: + subtype: { enum: [country] } + then: + required: [names, subtype, country, hierarchies] + not: { required: [parent_division_id] } + else: + required: [names, subtype, country, hierarchies, parent_division_id] + properties: # JSON Schema: properties within GeoJSON top-level object 'properties' property + subtype: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/placetype" } + class: + type: string + enum: + - megacity #A extensive, large human settlement. + #Example: Tokyo, Japan. + + - city #A relatively large, permanent human settlement. + #Example: Guadalajara, Mexico. + + - town #A medium-sized human settlement that is smaller than a city, + #but larger than a village. + #Example: Walldürn, Germany. + + - village #A smaller human settlement that is smaller than a town, + #but larger than a hamlet. + #Example: Wadi El Karm, Lebanon. + + - hamlet #A small, isolated human settlement in a rural area + #Example: Tjarnabyggð, Iceland. + local_type: + description: + Local name for the subtype property, optionally localized. + + For example, the Canadian province of Quebec has the subtype + 'region', but in the local administrative hierarchy it is + referred to as a 'province'. Similarly, the Canadian Yukon + territory also has subtype 'region', but is locally called + a 'territory'. + + This property is localized using a standard Overture names + structure. So for example, in Switzerland the top-level + administrative subdivision corresponding to subtype 'region' + is the canton, which is may be translated in each of + Switzerland's official languages as, 'canton' in French, + 'kanton' in German, 'cantone' in Italian, and 'chantun' in + Romansh. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/commonNames" + country: + description: >- + ISO 3166-1 alpha-2 country code of the country or country-like + entity, that this division represents or belongs to. + + If the entity this division represents has a country code, the + country property contains it. If it does not, the country + property contains the country code of the first division + encountered by traversing the parent_division_id chain to the + root. + + For example: + - The country value for the United States is 'US' + - The country value for New York City is 'US' + - The country value for Puerto Rico, a dependency of the US, + is 'PR'. + - The country value for San Juan, Puerto Rico is 'PR'. + + If an entity has an internationally-recognized ISO 3166-1 + alpha-2 country code, it should always be used. In cases where + the schema requires the code but no internationally-recognized + code is available, a synthetic code may be used provided it + does not conflict with any internationally-recognized codes. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" + region: + description: >- + ISO 3166-2 principal subdivision code of the subdivision-like + entity this division represents or belongs to. + + If the entity this division represents has a principal + subdivision code, the region property contains it. If it does + not, the region property contains the principal subdivision + code of the first division encountered by traversing the + parent_division_id chain to the root. + + For example: + - The region value for the United States is omitted. + - The region value for the U.S. state of New York is 'US-NY'. + - The region value for New York City is 'US-NY', which it + inherits from the state of New York. + - The region value for Puerto Rico is 'US-PR'. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_2SubdivisionCode" + hierarchies: + description: + Hierarchies in which this division participates. + + Every division participates in at least one hierarchy. Most + participate in only one. Some divisions may participate in + more than one hierarchy, for example if they are claimed by + different parent divisions from different political + perspectives; or if there are other real-world reasons why the + division or one of its ancestors has multiple parents. + + The first hierarchy in the list is the default hierarchy, and + the second-to-last entry in the default hierarchy (if there + is such an entry) always corresponds to the `parent_division_id' + property. The ordering of hierarchies after the first one is + arbitrary. + type: array + items: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/hierarchy" } + minItems: 1 + uniqueItems: true + parent_division_id: + description: + Division ID of this division's parent division. + + Not allowed for top-level divisions (countries) and required + for all other divisions. + + The default parent division is the parent division as seen + from the default political perspective, if there is one, and + is otherwise chosen somewhat arbitrarily. The hierarchies + property can be used to inspect the exhaustive list of + parent divisions. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/id" + perspectives: + description: >- + Political perspectives from which this division is considered + to be an accurate representation. + + If this property is absent, then this division is not known to + be disputed from any political perspective. Consequently, + there is only one division feature representing the entire + real world entity. + + If this property is present, it means the division represents + one of several alternative perspectives on the same real-world + entity. + + There are two modes of perspective: + + 1. `accepted_by` means the representation of the division is + accepted by the listed entities and would be included on + a map drawn from their perspective. + + 2. `disputed_by` means the representation of the division is + disputed by the listed entities and would be excluded + from a map drawn from their perspective. + + When drawing a map from the perspective of a given country, + one would start by gathering all the undisputed divisions + (with no `perspectives` property), and then adding to that + first all divisions explicitly accepted by the country, and + second all divisions not explicitly disputed by the country. + allOf: + - "$ref": "./defs.yaml#/$defs/propertyDefinitions/perspectives" + norms: + description: + Collects information about local norms and rules within the + division that are generally useful for mapping and map-related + use cases. + + If the norms property or a desired sub-property of the norms + property is missing on a division, but at least one of its + ancestor divisions has the norms property and the desired + sub-property, then the value from the nearest ancestor division + may be assumed. + "$comment": + If we decide to include default language, it will go here. But + is it really generally-useful information? + type: object + unevaluatedProperties: false + properties: + driving_side: + description: + Side of the road on which vehicles drive in the division. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/side" + population: + description: Population of the division + type: integer + minimum: 0 + capital_division_ids: + description: + Division IDs of this division's capital divisions. If present, + this property will refer to the division IDs of the capital + cities, county seats, etc. of a division. + type: array + minItems: 1 + uniqueItems: true + items: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/id" } + capital_of_divisions: + description: + Division IDs and subtypes of divisions this division is a + capital of. + type: array + minItems: 1 + uniqueItems: true + items: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/capitalOfDivisionItem" } + wikidata: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/wikidata" } diff --git a/docs/_schema/divisions/division_area.yaml b/docs/_schema/divisions/division_area.yaml new file mode 100644 index 000000000..985bdd60d --- /dev/null +++ b/docs/_schema/divisions/division_area.yaml @@ -0,0 +1,75 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: division_area +description: + Division areas are polygons that represent the land or maritime area + covered by a division. + + Each division area belongs to a division which it references by ID, + and for which the division area provides an area polygon. For ease of + use, every division area repeats the subtype, names, country, and + region properties of the division it belongs to. +type: object +properties: # JSON Schema: Top-level object properties. + id: { "$ref": ../defs.yaml#/$defs/propertyDefinitions/id } + geometry: + description: + Division area geometries MUST be polygons or multi-polygons as + defined by the GeoJSON schema. + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Polygon.json + - "$ref": https://geojson.org/schema/MultiPolygon.json + properties: # GeoJSON: top-level object 'properties' property. + unevaluatedProperties: false + required: [names, subtype, class, country, division_id, is_land, is_territorial] + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + anyOf: + - properties: + is_land: + const: true + - properties: + is_territorial: + const: true + properties: # JSON Schema: properties within GeoJSON top-level object 'properties' property + subtype: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/placetype" } + class: + type: string + enum: + - land # The area does not extend beyond the coastline. + + - maritime # The area extends beyond the coastline, in most + # cases to the extent of the division's + # territorial sea, if it has one. + is_land: + description: + A boolean to indicate whether or not the feature geometry represents the + land-clipped, non-maritime boundary. The geometry can be used for map + rendering, cartographic display, and similar purposes. + type: boolean + is_territorial: + description: + A boolean to indicate whether or not the feature geometry represents + Overture's best approximation of this place's maritime boundary. For + coastal places, this would tend to include the water area. The geometry + can be used for data processing, reverse-geocoding, and similar purposes. + type: boolean + division_id: + description: + Division ID of the division this area belongs to. + allOf: + - "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + country: + description: + ISO 3166-1 alpha-2 country code of the division this area + belongs to. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" + region: + description: + ISO 3166-2 principal subdivision code of the division this area + belongs to. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_2SubdivisionCode" diff --git a/docs/_schema/divisions/division_boundary.yaml b/docs/_schema/divisions/division_boundary.yaml new file mode 100644 index 000000000..f03134116 --- /dev/null +++ b/docs/_schema/divisions/division_boundary.yaml @@ -0,0 +1,135 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: boundary +description: + Boundaries represent borders between divisions of the same subtype. + Some boundaries may be disputed by the divisions on one or both sides. +type: object +properties: # JSON Schema: Top-level object properties. + id: { "$ref": ../defs.yaml#/$defs/propertyDefinitions/id } + geometry: + description: + Boundary's geometry which MUST be a LineString or MultiLineString + as defined by the GeoJSON schema. + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/LineString.json + - "$ref": https://geojson.org/schema/MultiLineString.json + properties: # GeoJSON: top-level object 'properties' property. + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - if: + properties: + subtype: { enum: [country] } + then: + required: [subtype, class, division_ids, is_land, is_territorial] + not: { required: [country] } + else: + required: [subtype, class, division_ids, is_land, is_territorial, country] + oneOf: + - properties: + is_land: + const: true + - properties: + is_territorial: + const: true + properties: # JSON Schema: properties within GeoJSON top-level object 'properties' property + subtype: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/placetype" } + class: + type: string + enum: + - land # None of the boundary geometry extends beyond the + # coastline of either associated division. + + - maritime # All the boundary geometry extends beyond the + # coastline of both associated divisions. + is_land: + description: + A boolean to indicate whether or not the feature geometry represents the + land-clipped, non-maritime boundary. The geometry can be used for map + rendering, cartographic display, and similar purposes. + type: boolean + is_territorial: + description: + A boolean to indicate whether or not the feature geometry represents + Overture's best approximation of this place's maritime boundary. For + coastal places, this would tend to include the water area. The geometry + can be used for data processing, reverse-geocoding, and similar purposes. + type: boolean + division_ids: + description: + Identifies the two divisions to the left and right, respectively, of + the boundary line. The left- and right-hand sides of the boundary are + considered from the perspective of a person standing on the line + facing in the direction in which the geometry is oriented, i.e. facing + toward the end of the line. + + The first array element is the Overture ID of the left division. The + second element is the Overture ID of the right division. + type: array + items: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/id" } + minItems: 2 + maxItems: 2 + uniqueItems: true + country: + description: >- + ISO 3166-1 alpha-2 country code of the country or country-like + entity that both sides of the boundary share. + + This property will be present on boundaries between two regions, counties, + or similar entities within the same country, but will not be present on boundaries + between two countries or country-like entities. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_1Alpha2CountryCode" + region: + description: >- + ISO 3166-2 principal subdivision code of the subdivision-like + entity that both sides of the boundary share. + + This property will be present on boundaries between two counties, localadmins + or similar entities within the same principal subdivision, but will not be + present on boundaries between different principal subdivisions or countries. + allOf: + - "$ref": "../defs.yaml#/$defs/propertyDefinitions/iso3166_2SubdivisionCode" + is_disputed: + description: >- + Indicator if there are entities disputing this division boundary. + Information about entities disputing this boundary should be included in perspectives + property. + + This property should also be true if boundary between two entities is unclear + and this is "best guess". So having it true and no perspectives gives map creators + reason not to fully trust the boundary, but use it if they have no other. + type: boolean + perspectives: + description: >- + Political perspectives from which this division boundary is considered + to be an accurate representation. + + If this property is absent, then this boundary is not known to + be disputed from any political perspective. Consequently, + there is only one boundary feature representing the entire + real world entity. + + If this property is present, it means the boundary represents + one of several alternative perspectives on the same real-world + entity. + + There are two modes of perspective: + + 1. `accepted_by` means the representation of the boundary is + accepted by the listed entities and would be included on + a map drawn from their perspective. + + 2. `disputed_by` means the representation of the boundary is + disputed by the listed entities and would be excluded + from a map drawn from their perspective. + + When drawing a map from the perspective of a given country, + one would start by gathering all the undisputed boundary + (with no `perspectives` property), and then adding to that + first all boundary explicitly accepted by the country, and + second all boundary not explicitly disputed by the country. + allOf: + - "$ref": "./defs.yaml#/$defs/propertyDefinitions/perspectives" diff --git a/docs/_schema/places/defs.yaml b/docs/_schema/places/defs.yaml new file mode 100644 index 000000000..d8addeb9e --- /dev/null +++ b/docs/_schema/places/defs.yaml @@ -0,0 +1,10 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +description: Common schema definitions for places theme +"$defs": + typeDefinitions: + category: + description: Category of a place. + type: string + minLength: 1 + pattern: ^[a-z0-9]+(_[a-z0-9]+)*$ diff --git a/docs/_schema/places/place.yaml b/docs/_schema/places/place.yaml new file mode 100644 index 000000000..b1d983020 --- /dev/null +++ b/docs/_schema/places/place.yaml @@ -0,0 +1,95 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: place +description: >- + A Place is a point representation of a real-world facility, service, + or amenity. Place features are compatible with GeoJSON Point features. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + description: >- + Place's geometry which MUST be a Point as defined by GeoJSON + schema. + unevaluatedProperties: false + oneOf: + - "$ref": https://geojson.org/schema/Point.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + properties: + categories: + description: | + The categories of the place. Complete list is available on + GitHub: https://github.com/OvertureMaps/schema/blob/main/docs/schema/concepts/by-theme/places/overture_categories.csv + type: object + required: [primary] + properties: + primary: + description: The primary or main category of the place. + "$ref": "./defs.yaml#/$defs/typeDefinitions/category" + alternate: + description: + Alternate categories of the place. Some places might fit into two + categories, e.g. a book store and a coffee shop. In such a case, + the primary category can be augmented with additional applicable + categories. + type: array + items: + "$ref": "./defs.yaml#/$defs/typeDefinitions/category" + uniqueItems: true + confidence: + description: The confidence of the existence of the place. It's a number between 0 and 1. 0 means that we're sure that the place doesn't exist (anymore). 1 means that we're sure that the place exists. If there's no value for the confidence, it means that we don't have any confidence information. + type: number + minimum: 0 + maximum: 1 + websites: + description: The websites of the place. + type: array + items: + type: string + format: uri + uniqueItems: true + minItems: 1 + socials: + description: The social media URLs of the place. + type: array + items: + type: string + format: uri + uniqueItems: true + minItems: 1 + emails: + description: The email addresses of the place. + type: array + items: + type: string + format: email + uniqueItems: true + minItems: 1 + phones: + description: The phone numbers of the place. + type: array + items: + type: string + uniqueItems: true + minItems: 1 + brand: + description: >- + The brand of the place. A location with multiple brands is + modeled as multiple separate places, each with its own brand. + type: object + allOf: + - "$ref": "../defs.yaml#/$defs/propertyContainers/namesContainer" + properties: + wikidata: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/wikidata" } + addresses: + description: The addresses of the place. + type: array + items: + "$ref": "../defs.yaml#/$defs/propertyDefinitions/address" + uniqueItems: true + minItems: 1 diff --git a/docs/_schema/schema.yaml b/docs/_schema/schema.yaml new file mode 100644 index 000000000..df59e6529 --- /dev/null +++ b/docs/_schema/schema.yaml @@ -0,0 +1,132 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: Overture Maps Schema +description: >- + A JSON Schema for the canonical GeoJSON form of Overture Maps + Features. +type: object +unevaluatedProperties: false +allOf: + - "$ref": https://geojson.org/schema/Feature.json + "$comment": Every Overture feature IS A GeoJSON feature +oneOf: + - if: + properties: + properties: + properties: + theme: { enum: [addresses] } + type: { enum: [address] } + then: { "$ref": addresses/address.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [base] } + type: { enum: [bathymetry] } + then: { "$ref": base/bathymetry.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [base] } + type: { enum: [infrastructure] } + then: { "$ref": base/infrastructure.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [base] } + type: { enum: [land] } + then: { "$ref": base/land.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [base] } + type: { enum: [land_cover] } + then: { "$ref": base/land_cover.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [base] } + type: { enum: [land_use] } + then: { "$ref": base/land_use.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [base] } + type: { enum: [water] } + then: { "$ref": base/water.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [buildings] } + type: { enum: [building] } + then: { "$ref": buildings/building.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [buildings] } + type: { enum: [building_part] } + then: { "$ref": buildings/building_part.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [divisions] } + type: { enum: [division_boundary] } + then: { "$ref": divisions/division_boundary.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [divisions] } + type: { enum: [division] } + then: { "$ref": divisions/division.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [divisions] } + type: { enum: [division_area] } + then: { "$ref": divisions/division_area.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [places] } + type: { enum: [place] } + then: { "$ref": places/place.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [transportation] } + type: { enum: [connector] } + then: { "$ref": transportation/connector.yaml } + else: { propertyNames: false } + - if: + properties: + properties: + properties: + theme: { enum: [transportation] } + type: { enum: [segment] } + then: { "$ref": transportation/segment.yaml } + else: { propertyNames: false } diff --git a/docs/_schema/transportation/connector.yaml b/docs/_schema/transportation/connector.yaml new file mode 100644 index 000000000..cf4227ce9 --- /dev/null +++ b/docs/_schema/transportation/connector.yaml @@ -0,0 +1,21 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: connector +description: >- + Connectors create physical connections between segments. Connectors + are compatible with GeoJSON Point features. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + description: >- + Connector's geometry which MUST be a Point as defined by GeoJSON + schema. + unevaluatedProperties: false + allOf: + - "$ref": https://geojson.org/schema/Point.json + properties: + unevaluatedProperties: false + allOf: + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer diff --git a/docs/_schema/transportation/segment.yaml b/docs/_schema/transportation/segment.yaml new file mode 100644 index 000000000..b12a560d0 --- /dev/null +++ b/docs/_schema/transportation/segment.yaml @@ -0,0 +1,769 @@ +--- +"$schema": https://json-schema.org/draft/2020-12/schema +title: segment +description: >- + Segments are paths which can be traveled by people or things. Segments + are compatible with GeoJSON LineString features. +type: object +properties: + id: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/id + geometry: + description: >- + Segment's geometry which MUST be a LineSting as defined by GeoJSON + schema. + unevaluatedProperties: false + allOf: + - "$ref": https://geojson.org/schema/LineString.json + properties: + unevaluatedProperties: false + required: [subtype] + allOf: + - title: "Common Segment Properties" + properties: + # Classes are per-subtype following the addition of rail classes + subclass_rules: { "$ref": "#/$defs/propertyContainers/subclassRulesContainer" } + access_restrictions: { "$ref": "#/$defs/propertyContainers/accessContainer" } + level: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/level" } + level_rules: { "$ref": "#/$defs/propertyContainers/levelRulesContainer" } + - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer + - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer + oneOf: + - title: "Road-Specific Properties" + required: [class] + properties: + subtype: { const: road } + class: { "$ref": "#/$defs/propertyDefinitions/roadClass" } + destinations: { "$ref": "#/$defs/propertyDefinitions/destinations" } + prohibited_transitions: { "$ref": "#/$defs/propertyContainers/prohibitedTransitionsContainer" } + road_surface: { "$ref": "#/$defs/propertyContainers/surfaceContainer"} + road_flags: { "$ref": "#/$defs/propertyContainers/roadFlagsContainer" } + speed_limits: { "$ref": "#/$defs/propertyContainers/speedLimitsContainer" } + width_rules: { "$ref": "#/$defs/propertyContainers/widthRulesContainer" } + subclass: { "$ref": "#/$defs/propertyDefinitions/subclass" } + - title: "Rail-Specific Properties" + required: [class] + properties: + subtype: { const: rail } + class: { "$ref": "#/$defs/propertyDefinitions/railClass" } + rail_flags: { "$ref": "#/$defs/propertyContainers/railFlagsContainer" } + - title: "Water-Specific Properties" # Placeholder for future water properties + properties: + subtype: { const: water } + properties: + subtype: + description: Broad category of transportation segment. + type: string + enum: [road, rail, water] + "$comment": >- + Should not be confused with a transport mode. A segment + kind has an (implied) set of default transport modes. + connectors: + description: >- + List of connectors which this segment is physically connected to and their + relative location. Each connector is a possible routing decision point, meaning + it defines a place along the segment in which there is possibility to + transition to other segments which share the same connector. + type: array + items: + type: object + "$comment": >- + Contains the GERS ID and relative position between 0 and 1 of a connector feature along the segment. + unevaluatedProperties: false + required: [connector_id, at] + properties: + connector_id: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/id" } + at: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/linearlyReferencedPosition" } + uniqueItems: true + minItems: 2 + default: [] + routes: { "$ref": "#/$defs/propertyDefinitions/routes" } +"$defs": + propertyDefinitions: + destinationLabelType: + description: >- + The type of object of the destination label. + type: string + enum: + - street + - country + - route_ref + - toward_route_ref + - unknown + destinations: + description: >- + Describes objects that can be reached by following a transportation segment in the + same way those objects are described on signposts or ground writing that a traveller + following the segment would observe in the real world. This allows navigation systems + to refer to signs and observable writing that a traveller actually sees. + type: array + items: + type: object + unevaluatedProperties: false + required: [from_connector_id, to_connector_id, to_segment_id, final_heading] + anyOf: + - required: [labels] + - required: [symbols] + properties: + labels: + description: >- + Labeled destinations that can be reached by following the segment. + type: array + items: + type: object + unevaluatedProperties: false + required: [value, type] + properties: + value: + description: >- + Names the object that is reached + type: string + pattern: ^(\S.*)?\S$ + type: { "$ref": "#/$defs/propertyDefinitions/destinationLabelType" } + minItems: 1 + uniqueItems: true + symbols: + description: >- + A collection of symbols or icons present on the sign next to current + destination label. + type: array + items: { "$ref": "#/$defs/propertyDefinitions/destinationSignSymbol" } + uniqueItems: true + minLength: 1 + from_connector_id: + description: >- + Identifies the point of physical connection on this segment before which + the destination sign or marking is visible. + type: string + to_segment_id: + description: >- + Identifies the segment to transition to reach the destination(s) labeled + on the sign or marking. + type: string + to_connector_id: + description: >- + Identifies the point of physical connection on the segment identified by + 'to_segment_id' to transition to for reaching the destination(s). + type: string + when: + allOf: + - "$ref": "#/$defs/propertyContainers/headingScopeContainer" + minProperties: 1 + unevaluatedProperties: false + final_heading: + description: >- + Direction of travel on the segment identified by 'to_segment_id' that leads + to the destination. + "$ref": "#/$defs/propertyDefinitions/heading" + roadClass: + description: + Captures the kind of road and its position in the road network + hierarchy. + type: string + enum: + - motorway + - primary + - secondary + - tertiary + - residential + - living_street # Similar to residential but has implied legal restriction for motor vehicles (which can vary country by country) + - trunk + - unclassified # Known roads, paved, but subordinate to all of: motorway, trunk, primary, secondary, tertiary + - service # Provides vehicle access to a feature (such as a building), typically not part of the public street network + - pedestrian + - footway # Minor segments mainly used by pedestrians + - steps + - path + - track + - cycleway + - bridleway # Similar to track but has implied access only for horses + - unknown + railClass: + description: Captures the kind of rail segment. + type: string + enum: + - funicular # Inclined plane / cliff railway + - light_rail # Higher-standard tram system, falls between 'tram' and 'rail' + - monorail + - narrow_gauge + - standard_gauge # Standard-gauge rail, equivalent to OSM's railway=rail tag + - subway # City passenger rail, often underground + - tram # 1-2 carriage rail vehicle tracks, often sharing road with vehicles + - unknown + heading: + description: >- + Enumerates possible travel headings along segment geometry. + type: string + enum: [ forward, backward ] + travelMode: + description: >- + Enumerates possible travel modes. Some modes represent groups + of modes. + type: string + enum: [ vehicle, motor_vehicle, car, truck, motorcycle, foot, bicycle, bus, hgv, hov, emergency ] + "$comment": >- + motor_vehicle includes car, truck and motorcycle + destinationSignSymbol: + description: >- + Indicates what special symbol/icon is present on a signpost, visible as road marking or similar. + type: string + enum: + - motorway + - airport + - hospital + - center # center of a locality, city center or downtown, from centre in raw OSM value + - industrial + - parking + - bus + - train_station + - rest_area + - ferry + - motorroad + - fuel + - viewpoint + - fuel_diesel + - food # 'food', 'restaurant' in OSM + - lodging + - info + - camp_site + - interchange + - restrooms # 'toilets' in OSM + roadFlag: + description: >- + Simple flags that can be on or off for a road segment. Specifies physical characteristics and can overlap. + type: string + enum: + - is_bridge + - is_link # Note: `is_link` is deprecated and will be removed in a future release in favor of the link subclass + - is_tunnel + - is_under_construction + - is_abandoned + - is_covered + - is_indoor + railFlag: + description: >- + Simple flags that can be on or off for a railway segment. Specifies physical characteristics and can overlap. + type: string + enum: + - is_bridge + - is_tunnel # You may also be looking for the 'subway' class (though subways are occasionally above-ground) + - is_under_construction + - is_abandoned + - is_covered + - is_passenger + - is_freight + - is_disused + roadSurface: + description: Physical surface of the road + type: string + enum: + - unknown + - paved + - unpaved + - gravel + - dirt + - paving_stones + - metal + routes: + description: Routes this segment belongs to + type: array + items: + type: object + unevaluatedProperties: false + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + properties: + name: + description: Full name of the route + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + network: + description: Name of the highway system this route belongs to + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + ref: + description: Code or number used to reference the route + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + symbol: + description: URL or description of route signage + type: string + minLength: 1 + pattern: ^(\S.*)?\S$ # Leading and trailing whitespace are not allowed. + wikidata: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/wikidata" } + subclass: + description: >- + Refines expected usage of the segment, must not overlap. + type: string + enum: + - link # Connecting stretch (sliproad or ramp) between two road types + - sidewalk # Footway that lies along a road + - crosswalk # Footway that intersects other roads + - parking_aisle # Service road intended for parking + - driveway # Service road intended for deliveries + - alley # Service road intended for rear entrances, fire exits + - cycle_crossing # Cycleway that intersects with other roads + speed: + description: >- + A speed value, i.e. a certain number of distance units + travelled per unit time. + type: object + properties: + value: + description: Speed value + type: integer + minimum: 1 + maximum: 350 + unit: + description: Speed unit + type: string + enum: + - km/h + - mph + required: + - value + - unit + unevaluatedProperties: false + purposeOfUse: + description: >- + Reason why a person or entity travelling on the transportation + network is using a particular location. + type: string + enum: + - as_customer + - at_destination + - to_deliver + - to_farm + - for_forestry + recognizedStatus: + description: >- + Status of the person or entity travelling as recognized by + authorities controlling the particular location + type: string + enum: + - as_permitted + - as_private + - as_disabled + - as_employee + - as_student + integerRelation: + description: >- + Completes an integer relational expression of the form + . An example of such an + expression is: + `{ axle_count: { is_more_than: 2 } }`. + type: object + unevaluatedProperties: false + oneOf: + - required: [is_more_than] + properties: { is_more_than: { type: integer } } + - required: [is_at_least] + properties: { is_at_least: { type: integer } } + - required: [is_equal_to] + properties: { is_equal_to: { type: integer } } + - required: [is_at_most] + properties: { is_at_most: { type: integer } } + - required: [is_less_than] + properties: { is_less_than: { type: integer } } + vehicleScopeDimension: + description: Enumerates possible vehicle dimensions for use in restrictions + type: string + enum: + - axle_count + - height + - length + - weight + - width + vehicleScopeComparison: + description: Enumerates possible comparison operators for use in scoping + type: string + enum: + - greater_than + - greater_than_equal + - equal + - less_than + - less_than_equal + vehicleScopeUnit: + description: Parent enum of both length and width for use in vehicle scoping + anyOf: + - {"$ref": "#/$defs/propertyDefinitions/lengthUnit"} + - {"$ref": "#/$defs/propertyDefinitions/weightUnit"} + lengthUnit: + description: Enumerates length units supported by the Overture schema. + "$comment": Keep in sync with `combobulib/measure.py`. + type: string + enum: + # Imperial units. + - in # Imperial: Inch. + - ft # Imperial: Foot. + - yd # Imperial: Yard. + - mi # Imperial: Mile. + # SI units. + - cm # SI: centimeter. + - m # SI: meter. + - km # SI: kilometer. + lengthValueWithUnit: + description: Combines a length value with a length unit. + type: object + unevaluatedProperties: false + required: [value, unit] + properties: + value: + type: number + minimum: 0 + unit: { "$ref": "#/$defs/propertyDefinitions/lengthUnit" } + lengthRelation: + description: >- + Completes a length relational expression of the form + . An example of such an + expression is: + `{ height: { is_less_than: { value: 3, unit: 'm' } } }`. + type: object + unevaluatedProperties: false + oneOf: + - required: [is_more_than] + properties: { is_more_than: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/lengthValueWithUnit" } ] } } + - required: [is_at_least] + properties: { is_at_least: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/lengthValueWithUnit" } ] } } + - required: [is_equal_to] + properties: { is_equal_to: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/lengthValueWithUnit" } ] } } + - required: [is_at_most] + properties: { is_at_most: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/lengthValueWithUnit" } ] } } + - required: [is_less_than] + properties: { is_less_than: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/lengthValueWithUnit" } ] } } + weightUnit: + description: Enumerates weight units supported by the Overture schema. + "$comment": Keep in sync with `combobulib/measure.py`. + type: string + enum: + # Imperial units. + - oz # Imperial: Ounce. + - lb # Imperial: Pound. + - st # Imperial: Short Ton. + - lt # Imperial: Long Ton. + # SI units. + - g # SI: gram. + - kg # SI: kilogram. + - t # SI: tonne. + weightValueWithUnit: + description: Combines a weight value with a weight unit. + type: object + unevaluatedProperties: false + required: [value, unit] + properties: + value: + type: number + minimum: 0 + unit: { "$ref": "#/$defs/propertyDefinitions/weightUnit" } + weightRelation: + description: >- + Completes a weight relational expression of the form + . An example of such an + expression is: + `{ weight: { is_more_than: { value: 2, unit: 't' } } }`. + type: object + unevaluatedProperties: false + oneOf: + - required: [is_more_than] + properties: { is_more_than: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/weightValueWithUnit" } ] } } + - required: [is_at_least] + properties: { is_at_least: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/weightValueWithUnit" } ] } } + - required: [is_equal_to] + properties: { is_equal_to: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/weightValueWithUnit" } ] } } + - required: [is_at_most] + properties: { is_at_most: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/weightValueWithUnit" } ] } } + - required: [is_less_than] + properties: { is_less_than: { allOf: [ { "$ref": "#/$defs/propertyDefinitions/weightValueWithUnit" } ] } } + width: + type: number + exclusiveMinimum: 0 + sequenceEntry: + description: >- + A segment/connector pair in a prohibited transition sequence. + type: object + required: [connector_id, segment_id] + properties: + connector_id: + description: >- + Identifies the point of physical connection between the + previous segment in the sequence and the segment in this + sequence entry. + type: string + segment_id: + description: >- + Identifies the segment that the previous segment in the + sequence is physically connected to via the sequence entry's + connector. + type: string + propertyContainers: + headingScopeContainer: + description: Properties defining travel headings that match a rule. + properties: + heading: + "$ref": "#/$defs/propertyDefinitions/heading" + purposeOfUseScopeContainer: + description: Properties defining usage purposes that match a rule. + properties: + using: + type: array + items: + "$ref": "#/$defs/propertyDefinitions/purposeOfUse" + uniqueItems: true + minLength: 1 + temporalScopeContainer: + "$comment": >- + Temporal scoping properties defining the time spans when a + recurring rule is active. + properties: + during: + "$ref": ../defs.yaml#/$defs/propertyDefinitions/openingHours + travelModeScopeContainer: + description: Properties defining travel modes that match a rule. + type: object + properties: + mode: + description: Travel mode(s) to which the rule applies + type: array + items: + "$ref": "#/$defs/propertyDefinitions/travelMode" + uniqueItems: true + minLength: 1 + recognizedStatusScopeContainer: + description: Properties defining statuses that match a rule. + properties: + recognized: + type: array + items: + "$ref": "#/$defs/propertyDefinitions/recognizedStatus" + uniqueItems: true + minLength: 1 + vehicleScopeContainer: + description: >- + Properties defining vehicle attributes for which a rule is + active. + type: object + properties: + vehicle: + description: Vehicle attributes for which the rule applies + type: array + uniqueItems: true + minLength: 1 + items: + description: An individual vehicle scope rule + type: object + unevaluatedProperties: false + required: [dimension, comparison, value] + properties: + dimension: { "$ref": "#/$defs/propertyDefinitions/vehicleScopeDimension" } + comparison: { "$ref": "#/$defs/propertyDefinitions/vehicleScopeComparison" } + value: + type: number + minimum: 0 + unit: { "$ref": "#/$defs/propertyDefinitions/vehicleScopeUnit" } + speedLimitsContainer: + description: Rules governing speed on this road segment + type: array + items: + description: An individual speed limit rule + "$comment": >- + TODO: Speed limits probably have directionality, so + should factor out a headingScopeContainer for this + purpose and use it to introduce an optional + direction property in each rule. + type: object + anyOf: + - required: [ min_speed ] + - required: [ max_speed ] + allOf: + - "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" + unevaluatedProperties: false + properties: + min_speed: { "$ref": "#/$defs/propertyDefinitions/speed" } + max_speed: { "$ref": "#/$defs/propertyDefinitions/speed" } + is_max_speed_variable: + description: Indicates a variable speed corridor + type: boolean + default: false + when: + allOf: + - "$ref": "#/$defs/propertyContainers/temporalScopeContainer" + - "$ref": "#/$defs/propertyContainers/headingScopeContainer" + - "$ref": "#/$defs/propertyContainers/purposeOfUseScopeContainer" + - "$ref": "#/$defs/propertyContainers/recognizedStatusScopeContainer" + - "$ref": "#/$defs/propertyContainers/travelModeScopeContainer" + - "$ref": "#/$defs/propertyContainers/vehicleScopeContainer" + minProperties: 1 + unevaluatedProperties: false + minLength: 1 + uniqueItems: true + accessContainer: + description: Rules governing access to this road segment + type: array + items: + type: object + unevaluatedProperties: false + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + required: [access_type] + properties: + access_type: + type: string + enum: [allowed, denied, designated] + when: + allOf: + - "$ref": "#/$defs/propertyContainers/temporalScopeContainer" + - "$ref": "#/$defs/propertyContainers/headingScopeContainer" + - "$ref": "#/$defs/propertyContainers/purposeOfUseScopeContainer" + - "$ref": "#/$defs/propertyContainers/recognizedStatusScopeContainer" + - "$ref": "#/$defs/propertyContainers/travelModeScopeContainer" + - "$ref": "#/$defs/propertyContainers/vehicleScopeContainer" + minProperties: 1 + unevaluatedProperties: false + minLength: 1 + uniqueItems: true + prohibitedTransitionsContainer: + description: >- + Rules preventing transitions from this segment to + another segment. + type: array + items: + type: object + unevaluatedProperties: false + allOf: + - "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" + required: [sequence, final_heading] + properties: + sequence: + description: >- + Ordered sequence of connector/segment pairs that it is + prohibited to follow from this segment. + type: array + items: + description: Pair of segment and connector IDs along the sequence + "$ref": "#/$defs/propertyDefinitions/sequenceEntry" + minItems: 1 + uniqueItems: true + final_heading: + description: >- + Direction of travel that is prohibited on the destination + segment of the sequence. + "$ref": "#/$defs/propertyDefinitions/heading" + when: + allOf: + - "$ref": "#/$defs/propertyContainers/headingScopeContainer" + - "$ref": "#/$defs/propertyContainers/temporalScopeContainer" + - "$ref": "#/$defs/propertyContainers/purposeOfUseScopeContainer" + - "$ref": "#/$defs/propertyContainers/recognizedStatusScopeContainer" + - "$ref": "#/$defs/propertyContainers/travelModeScopeContainer" + - "$ref": "#/$defs/propertyContainers/vehicleScopeContainer" + minProperties: 1 + unevaluatedProperties: false + roadFlagsContainer: + description: + Set of boolean attributes applicable to roads. May be + specified either as a single flag array of flag values, or + as an array of flag rules. + type: array + items: + type: object + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + unevaluatedProperties: false + properties: + values: + type: array + items: { "$ref": "#/$defs/propertyDefinitions/roadFlag" } + uniqueItems: true + minLength: 1 + uniqueItems: true + minLength: 1 + railFlagsContainer: + description: + Set of boolean attributes applicable to railways. May be + specified either as a single flag array of flag values, or + as an array of flag rules. + type: array + items: + type: object + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + unevaluatedProperties: false + properties: + values: + type: array + items: { "$ref": "#/$defs/propertyDefinitions/railFlag" } + uniqueItems: true + minLength: 1 + uniqueItems: true + minLength: 1 + levelRulesContainer: + description: + Defines the Z-order, i.e. stacking order, of the road + segment. + type: array + items: + description: + A single level rule defining the Z-order, i.e. stacking + order, applicable within a given scope on the road + segment. + type: object + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + unevaluatedProperties: false + required: [value] + properties: + value: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/level" } + subclassRulesContainer: + description: Set of subclasses scoped along segment + type: array + items: + type: object + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + unevaluatedProperties: false + properties: + value: { "$ref": "#/$defs/propertyDefinitions/subclass" } + surfaceContainer: + description: Physical surface of the road. May either be + specified as a single global value for the segment, or as + an array of surface rules. + type: array + items: + type: object + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + unevaluatedProperties: false + properties: + value: { "$ref": "#/$defs/propertyDefinitions/roadSurface" } + minItems: 1 + uniqueItems: true + "$comment": + We should likely restrict the available surface types to + the subset of the common OSM surface=* tag values that are + useful both for routing and for map tile rendering. + widthRulesContainer: + description: >- + Edge-to-edge width of the road modeled by this segment, in + meters. + + Examples: (1) If this segment models a carriageway without + sidewalk, this value represents the edge-to-edge width of the + carriageway, inclusive of any shoulder. (2) If this segment + models a sidewalk by itself, this value represents the + edge-to-edge width of the sidewalk. (3) If this segment models a + combined sidewalk and carriageway, this value represents the + edge-to-edge width inclusive of sidewalk. + type: array + items: + type: object + allOf: + - { "$ref": "../defs.yaml#/$defs/propertyContainers/geometricRangeScopeContainer" } + required: [value] + properties: + value: { "$ref": "#/$defs/propertyDefinitions/width" } + unevaluatedProperties: false + minItems: 1 + uniqueItems: true diff --git a/docs/getting-data/duckdb.mdx b/docs/getting-data/duckdb.mdx index 97dd732e1..ee63beff2 100644 --- a/docs/getting-data/duckdb.mdx +++ b/docs/getting-data/duckdb.mdx @@ -35,7 +35,6 @@ Download all pizza restaurants in New York City as a `GeoJSON` file. -See the [places schema](/schema/reference/places/place) to learn more about each attribute or the [common schema concepts](/schema/concepts/names/) to better understand `names.primary` from `names.common`. diff --git a/docs/guides/addresses.mdx b/docs/guides/addresses.mdx index 9585576a0..022064cb9 100644 --- a/docs/guides/addresses.mdx +++ b/docs/guides/addresses.mdx @@ -37,7 +37,7 @@ Address data can be used for a variety of purposes, which can include: ### Feature type descriptions -An `address` is a feature type that represents a physical place through a series of attributes: street number, street name, unit, address_levels, postalcode and/or country. They also have a `Point` geometry, which provides an approximate location of the position most commonly associated with the feature. We encourage you to consult the [schema reference documentation for the `address` feature type](/schema/reference/addresses/address). +An `address` is a feature type that represents a physical place through a series of attributes: street number, street name, unit, address_levels, postalcode and/or country. They also have a `Point` geometry, which provides an approximate location of the position most commonly associated with the feature. We encourage you to consult the schema reference documentation for the `address` feature type.
Address counts, per country @@ -191,37 +191,4 @@ This query will create a CSV file of address within the State of Utah, using the
-## Revision history -### Version info -You can find the most recent release notes [here](https://docs.overturemaps.org/release/latest/). - -## Support - -### Feedback - -You can find a list of Overture repositories [here](https://github.com/orgs/OvertureMaps/repositories). - -Discussions are generally reserved for broader conversations around the addresses project as a whole (supporting a new workflow, adding a dataset, null attributes). - -Issues are generally reserved for more specific concerns with specific entities in the dataset (geometry validation, missing entities, duplicate entities) or country-specific concerns. - -### Discussions - -You can start and add to discussions in each of the public Overture repositories. Some examples: - -- **General Overture Discussions**: https://github.com/orgs/OvertureMaps/discussions -- **Data Discussions**: https://github.com/OvertureMaps/data/discussions -- **Schema Discussions**: https://github.com/OvertureMaps/schema/discussions - -Discussions around Overture's address data should be filed in the Data repository. - -### Issues - -You can start and add to issues in each of the public Overture repositories, too. Some examples: - -- **Data Issues**: https://github.com/OvertureMaps/data/issues -- **Schema Issues**: https://github.com/OvertureMaps/schema/issues -- **Tiles issues**: https://github.com/OvertureMaps/overture-tiles/issues - -Issues around Overture's address data should be filed in the data repository. diff --git a/docs/guides/base.mdx b/docs/guides/base.mdx index 445ef5289..039234d9b 100644 --- a/docs/guides/base.mdx +++ b/docs/guides/base.mdx @@ -205,11 +205,4 @@ If you have a particular geographic area of interest, there are several options - extraction of consistent OSM tags, such as `wikidata` to top-level properties. - direct pass-through of remaining relevant OSM tags. -## Schema reference - -- [Explore the schema for the bathymetry feature type](/schema/reference/base/bathymetry). -- [Explore the schema for the infrastructure feature type](/schema/reference/base/infrastructure). -- [Explore the schema for the land feature type](/schema/reference/base/land). -- [Explore the schema for the land cover feature type](/schema/reference/base/land_cover). -- [Explore the schema for the land use feature type](/schema/reference/base/land_use). -- [Explore the schema for the water feature type](/schema/reference/base/water). + diff --git a/docs/guides/buildings.mdx b/docs/guides/buildings.mdx index 167765f74..88be3878f 100644 --- a/docs/guides/buildings.mdx +++ b/docs/guides/buildings.mdx @@ -120,55 +120,4 @@ Overture releases its data as GeoParquet files. The `building` and `building_par -## How we build the dataset - -### Sources - -Currently, the Overture `building` dataset is a combination of the following open building datasets. (The `building_part` dataset comes from one source: OpenStreetMap.) - -| Source | Type | Conflation Priority | Count | -|--------|------|-------------------|--------| -| [OpenStreetMap](//osm.org) | Community-contributed | 1 | ~656 Million | -| [Esri Community Maps](https://communitymaps.arcgis.com/home) | Community-contributed | 2 | ~17.5 Million | -| [Instituto Geográfico Nacional (España)](https://www.ign.es/) | National dataset | 3 | ~12.9 Million | -| [City of Vancouver, Canada](https://opendata.vancouver.ca/) | Municipal dataset | 4 | ~17 Thousand | -| [Google Open Buildings](https://sites.research.google/open-buildings/) | ML-derived roofprints (>90% precision) | 5 | ~350 Million | -| [Microsoft](https://github.com/microsoft/GlobalMLBuildingFootprints) | ML-derived roofprints | 6 | ~805 Million | -| [Google Open Buildings](https://sites.research.google/open-buildings/) | ML-derived roofprints (\<90% precision) | 7 | ~650 Million | -| [Buildings in East Asian Countries](https://zenodo.org/records/8174931) | ML-derived roofprints | 8 | ~213 Million | - -### Quality and prioritization - -To help ensure quality as well as quantity, the conflation process for the `building` dataset prioritizes community contributed data over machine learning (ML) generated data. The highest priority dataset used in conflation is OpenStreetMap. This ensures that any data added to OpenStreetMap based on local knowledge or manual editing of ML data is prioritized with each update of Overture Maps buildings. If there is a quality issue in one of the Overture Maps buildings, it can be addressed by adding, updating, or deleting that same building structure in OpenStreetMap and it will be reflected in the next Overture Maps release. - -Many Overture Maps buildings are derived from ML sources (e.g. Microsoft and Google Open Buildings). These ML datasets are known to include some detections that do not qualify as building structures as defined above. These might be shipping containers, car ports, solar panels, or other objects that resemble buildings in satellite or aerial imagery. To remove most of these invalid features from the buildings theme, the Overture Maps conflation process excludes ML features below a certain size that are unlikely to be valid buildings. These exclusion rules might result in some valid features being missed but, on balance, improve the quality of the buildings theme. Missing features can be added through OpenStreetMap editing (e.g. Rapid editor accessing ML features). - -### Conflation and matching - -As part of the conflation process, features in the open data sources are matched and assigned a GERS ID. The intent is to have a single, stable GERS ID for each building feature. If there are multiple sources for an individual building feature (e.g. the Lincoln Memorial), then that building feature in each data source should be assigned the same GERS ID, whether that feature is included in the Overture buildings theme that is released or not. - -The matching step in the conflation process is based on the geometry of the building features, using a metric called Intersection over Union (IoU). Buildings are considered a match if the IoU score exceeds 50%. The score is calculated by dividing the area where the two building shapes overlap by the total area they cover combined. On this scale, a 100% score signifies a perfect overlap, whereas disconnected (non-overlapping) geometries score 0%. - -The visualization below shows Overture buildings data looking across the US-Mexico border toward San Diego. Notice how Esri and OSM buildings appear in big blocks while the Google and Microsoft buildings appear to mix together. This is a product of our conflation process that prioritizes community contributed data first and then "fills in" the rest of the map with the best ML data available. - -
- -
-
- - OpenStreetMap | - Esri Community Maps | - Microsoft ML Buildings | - Google Open Buildings - -
-
-
-*© OpenStreetMap contributors, OvertureMaps Foundation* - -## Licensing - -The Overture Maps buildings theme is provided under the ODbL license, largely because the primary OpenStreetMap data is provided under that license. This requires that other data sources that are included in the buildings theme are also provided under ODbL or a license that is compatible with ODbL, such as CC BY 4.0. Overture Maps determine if potential sources of open data that would expand coverage or improve quality are provided under a license that is compatible with ODbL before adding to the conflation process. For more information, see the [licensing and attribution](https://docs.overturemaps.org/attribution/) section of our documentation. - - diff --git a/docs/guides/divisions.mdx b/docs/guides/divisions.mdx index 1a262bd2a..37f0c8abe 100644 --- a/docs/guides/divisions.mdx +++ b/docs/guides/divisions.mdx @@ -41,11 +41,11 @@ Divisions data can be used for many purposes, which can include, but are not lim ### Feature type descriptions -A `division` is a feature type that represents an official or non-official organization of people: country, region, province, city, neighborhood, etc. — as seen from a given political perspective. It has a `Point` geometry which gives an approximate location of the position most commonly associated with the feature. We encourage you to consult the [schema reference documentation for the `division` feature type](/schema/reference/divisions/division). +A `division` is a feature type that represents an official or non-official organization of people: country, region, province, city, neighborhood, etc. — as seen from a given political perspective. It has a `Point` geometry which gives an approximate location of the position most commonly associated with the feature. We encourage you to consult the schema reference documentation for the `division` feature type. -A `division_area` is a feature type that captures the shape of the land area, or land and territorial sea (maritime), belonging to a `division` feature. It has a `Polygon` or `MultiPolygon` geometry. We encourage you to consult the [schema reference documentation for the `division_area` feature type](/schema/reference/divisions/division_area). +A `division_area` is a feature type that captures the shape of the land area, or land and territorial sea (maritime), belonging to a `division` feature. It has a `Polygon` or `MultiPolygon` geometry. We encourage you to consult the schema reference documentation for the `division_area` feature type. -A `division_boundary` is a feature type that represents a shared border between two `division` features. It has a `LineString` geometry. The geometry of a `divison_boundary` is either wholly non-maritime, or wholly maritime. A maritime boundary is the extension of a non-maritime boundary into the water. Please consult the [schema reference documentation for the `division_boundary` feature type](/schema/reference/divisions/division_boundary). +A `division_boundary` is a feature type that represents a shared border between two `division` features. It has a `LineString` geometry. The geometry of a `divison_boundary` is either wholly non-maritime, or wholly maritime. A maritime boundary is the extension of a non-maritime boundary into the water. Please consult the schema reference documentation for the `division_boundary` feature type. ### Subtype descriptions diff --git a/docs/guides/places.mdx b/docs/guides/places.mdx index c31d798e2..2917b25e5 100644 --- a/docs/guides/places.mdx +++ b/docs/guides/places.mdx @@ -16,7 +16,7 @@ import PlacesInBuildingsQuery from '!!raw-loader!@site/src/queries/duckdb/places :::note -This guide is focused on the Overture places **data**—its content, scope, properties, and use cases. Please see the [schema reference documentation](/schema/reference/places/place) for more information on the Overture places **schema**. +This guide is focused on the Overture places **data**—its content, scope, properties, and use cases. Please see the schema reference documentation for more information on the Overture places **schema**. ::: @@ -64,7 +64,7 @@ The Overture places theme has one feature type, called `place`, and contains mor ## Dataset description -All Overture data, including places data, is distributed as GeoParquet, a column-based data structure. Below you'll find a table with column-by-column descriptions of the properties in the place feature type. Of particular interest to users is the categories property; we offer a complete list of available categories [here](https://github.com/OvertureMaps/schema/blob/main/docs/schema/concepts/by-theme/places/overture_categories.csv). +All Overture data, including places data, is distributed as GeoParquet, a column-based data structure. Below you'll find a table with column-by-column descriptions of the properties in the place feature type. Of particular interest to users is the categories property; we offer a complete list of available categories.
Schema for GeoParquet files in the places theme @@ -78,7 +78,7 @@ All Overture data, including places data, is distributed as GeoParquet, a column | version | integer | Version number of the feature, incremented in each Overture release where the geometry or attributes of this feature changed. | | sources | struct | The array of source information for the properties of a given feature, with each entry being a source object which lists the property in JSON Pointer notation and the dataset that specific value came from. All features must have a root level source which is the default source if a specific property's source is not specified. | | names | struct | Properties defining the names of a feature. | -| categories | struct | The categories of the place. Complete list is available on GitHub: https://github.com/OvertureMaps/schema/blob/main/docs/schema/concepts/by-theme/places/overture_categories.csv | +| categories | struct | The categories of the place. Complete list is available on GitHub | | confidence | double | The confidence of the existence of the place. It's a number between 0 and 1. 0 means that we're sure that the place doesn't exist (anymore). 1 means that we're sure that the place exists. If there's no value for the confidence, it means that we don't have any confidence information. | | websites | string | The websites of the place. | | socials | string | The social media URLs of the place. | @@ -161,7 +161,7 @@ The `address` column can be used to quickly filter data down to a particular pol For filtering data by a particular type of place we can use the `categories` column. In this example we'll extract all the places with categories of `rice_mill` or `flour_mill` -The full category list is available [here](https://github.com/OvertureMaps/schema/blob/main/docs/schema/concepts/by-theme/places/overture_categories.csv). +The full category list is available. @@ -193,7 +193,7 @@ Note: Joining data with a CDLA Permissive 2.0 license to OSM is permitted but th
-Suppose you are interested in having address data attached to buildings. The [Overture addresses](/schema/reference/addresses/address/) theme might be a good place to check, but let's assume it does not cover the area you are interested in. +Suppose you are interested in having address data attached to buildings. The Overture addresses theme might be a good place to check, but let's assume it does not cover the area you are interested in. The places theme has wide coverage and many of the place point features have addresses associated with them. Using an intersect we can find places that fall inside buildings and then join the place's address to the building polygon.
diff --git a/docs/guides/transportation.mdx b/docs/guides/transportation.mdx index 4c31f06d1..372606a0d 100644 --- a/docs/guides/transportation.mdx +++ b/docs/guides/transportation.mdx @@ -31,7 +31,7 @@ You might use the Overture transportation data for: - **geocoding:** getting the coordinates of street intersections (geocodes) or the street intersection near specific coordinates (reverse geocodes). -This guide is an overview of the transportation data. To dig into the details of the schema, see the [schema concepts for transportation](/schema/concepts/by-theme/transportation) and the reference documentation for the [segment](/schema/reference/transportation/segment) and [connector](/schema/reference/transportation/connector) feature types. +This guide is an overview of the transportation data. To dig into the details of the schema, see the schema concepts for transportation and the reference documentation for the segment and connector feature types. ## Dataset description @@ -230,7 +230,7 @@ This example selects all the segments that that connect to the example id. |:--:| | *Conceptual diagram of the splitter tool output. The numbers following 1234@ represent start_lr and end_lr values.* | -The [transportation-spitter tool](https://github.com/OvertureMaps/transportation-splitter) transforms Overture road data into simpler sub segments. It will optionally divide features at each connector point and at each change of a [scoped based property](/schema/concepts/scoping-rules/), depending on configuration. Depending on your needs and map stack, the resulting dataset may be easier to manipulate than the original Overture data as each segment will only have connections at either end and have one set of properties for its entire length. +The [transportation-spitter tool](https://github.com/OvertureMaps/transportation-splitter) transforms Overture road data into simpler sub segments. It will optionally divide features at each connector point and at each change of a scoped based property, depending on configuration. Depending on your needs and map stack, the resulting dataset may be easier to manipulate than the original Overture data as each segment will only have connections at either end and have one set of properties for its entire length. Since a GERS ID will no longer be unique with this output, the resulting data will have two additional columns: `start_lr` and `end_lr` which are linear references describing which section of the orginal feature this new segment comes from. diff --git a/docs/schema/index.md b/docs/schema/index.md new file mode 100644 index 000000000..8af8f0990 --- /dev/null +++ b/docs/schema/index.md @@ -0,0 +1,69 @@ +--- +title: Overview +slug: /schema + +# This page is available at docs.overturemaps.org/schema +--- +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +### Top-level properties + +In the Overture schema, all features have a unique `id` called a [GERS ID](https://docs.overturemaps.org/gers/), a `geometry` object that follows the OGC geometry specification, and other top-level properties. + +
+**GeoParquet columns for top-level Overture properties** +| column_name | column_type | description | +| --- | --- | --- | +| **id** | *string* | an Overture feature's unique id, part of the Global Entity Reference System (GERS) | +| **geometry** | *binary* | well-known binary (WKB) representation of the feature geometry | +| **bbox** | *struct\* | area defined by two longitudes and two latitudes: latitude is a decimal number between -90.0 and 90.0; longitude is a decimal number between -180.0 and 180.0. | +| **theme** | *string* | one of six Overture data themes | +| **type** | *string* | one of 14 Overture feature types | +| **version** | *int32* | version number of the feature, incremented in each Overture release where the geometry or attributes of this feature changed | +| **sources** | *list\\>\>* | array of source information for the properties of a given feature | +
+ +### Other key schema properties + +Most but not all of the feature types in the Overture schema require data for the `names`, `subtype`, and `class` properties. The `names` property is complex enough to have its own schema. + +### Properties may be specific to a feature type + +Some properties in the Overture schema are only populated with data for specific feature types. For example, the `place` feature type must include data for the `categories` property, as required by the schema. The `division_area` and `address` feature types require the `country` property to be populated with ISO 3166-1 alpha-2 country codes. The `segment` feature type in the transportation theme is the only feature type that includes data for a complex set of properties that describe roads. The reference section of this documentation digs into the details of these complexities. + +## Schema conventions + +### Notations + +#### Snake case + +We use snake case instead of camel case for all property names, string enumeration members, and string-valued enumeration equivalents. We do this because of case sensitivity and transformation issues in different databases and query engines. For example, Athena/Trino downcases everything, so text string splits in camel case property names get lost; in contrast, snake case passes through without issues. + +#### Booleans + +Boolean properties have a prefix verb "is" or "has" in a way that grammatically makes sense, e.g. `has_street_lights=true` and `is_accessible=false`. + +### Measurements + + + +Measurements of real-world objects and features follow [The International System of Units (SI)](https://www.bipm.org/en/publications/si-brochure): heights, widths, lengths, etc. In the Overture schema, these values are provided as scalar numeric value without units such as feet or meters. Overture does this to maximize consistency and predictability. + +Quantities specified in regulatory rules, norms and customs follow local specifications wherever possible. In the schema, these values are provided as two-element arrays where the first element is the scalar numeric value and the second value is the units. Overture uses local units of measurement: feet in the United States and meters in the EU, for example. The exact unit is confirmed in the specification of the property but is not repeated in the data. + +### Regulations and restrictions + +All quantities that relate to posted or ordinance regulations and restrictions are expressed in the same units as used in the regulation. The unit is explicitly included with the property in the data. + +### Opening hours and validity periods + +Opening hours and the time frame during which time dependent properties are applicable are indicated following the [OSM Opening Hours specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification). + + diff --git a/docs/schema/reference/Names/name_rule.md b/docs/schema/reference/Names/name_rule.md new file mode 100644 index 000000000..3aa698c03 --- /dev/null +++ b/docs/schema/reference/Names/name_rule.md @@ -0,0 +1,16 @@ +# NameRule + +Name rule with variant and language specification. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `side` | `string` ([Side](/schema/codegen/Names/name_rule/side/)) (optional) | Examples: `left`, `right` | +| `between` | `list` (optional) | | +| `value` | `string` | | +| `variant` | `string` ([NameVariant](/schema/codegen/Names/name_rule/name_variant/)) | Examples: `common`, `official`, `alternate`, ... | +| `language` | `string` (optional) | | +| `perspectives` | `object` (`[Perspectives](perspectives)`) (optional) | | +| `perspectives.mode` | `string` ([PerspectiveMode](perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `perspectives.countries` | `list` | Countries holding the given mode of perspective. | diff --git a/docs/schema/reference/Names/name_variant.md b/docs/schema/reference/Names/name_variant.md new file mode 100644 index 000000000..22bc60ed5 --- /dev/null +++ b/docs/schema/reference/Names/name_variant.md @@ -0,0 +1,10 @@ +# NameVariant + +An enumeration. + +## Values + +- `common` +- `official` +- `alternate` +- `short` diff --git a/docs/schema/reference/Names/names.md b/docs/schema/reference/Names/names.md new file mode 100644 index 000000000..aa7976deb --- /dev/null +++ b/docs/schema/reference/Names/names.md @@ -0,0 +1,19 @@ +# Names + +Multilingual names container. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `primary` | `string` | The most commonly used name. | +| `common` | `object` (optional) | | +| `rules` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `rules.side` | `string` ([Side](side)) (optional) | Examples: `left`, `right` | +| `rules.between` | `list` (optional) | | +| `rules.value` | `string` | | +| `rules.variant` | `string` ([NameVariant](name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `rules.language` | `string` (optional) | | +| `rules.perspectives` | `object` (`[Perspectives](perspectives)`) (optional) | | +| `rules.perspectives.mode` | `string` ([PerspectiveMode](perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `rules.perspectives.countries` | `list` | Countries holding the given mode of perspective. | diff --git a/docs/schema/reference/Names/perspective_mode.md b/docs/schema/reference/Names/perspective_mode.md new file mode 100644 index 000000000..259473873 --- /dev/null +++ b/docs/schema/reference/Names/perspective_mode.md @@ -0,0 +1,8 @@ +# PerspectiveMode + +Perspective mode for disputed names. + +## Values + +- `accepted_by` +- `disputed_by` diff --git a/docs/schema/reference/Names/perspectives.md b/docs/schema/reference/Names/perspectives.md new file mode 100644 index 000000000..3400d6f25 --- /dev/null +++ b/docs/schema/reference/Names/perspectives.md @@ -0,0 +1,10 @@ +# Perspectives + +Political perspectives container. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `mode` | `string` ([PerspectiveMode](/schema/codegen/Names/perspectives/perspective_mode/)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `countries` | `list` | Countries holding the given mode of perspective. | diff --git a/docs/schema/reference/Names/side.md b/docs/schema/reference/Names/side.md new file mode 100644 index 000000000..f4ed25660 --- /dev/null +++ b/docs/schema/reference/Names/side.md @@ -0,0 +1,10 @@ +# Side + +Represents the side on which something appears relative to a facing or heading +direction, e.g. the side of a road relative to the road orientation, or relative to +the direction of travel of a person or vehicle. + +## Values + +- `left` +- `right` diff --git a/docs/schema/reference/address.md b/docs/schema/reference/address.md new file mode 100644 index 000000000..592281287 --- /dev/null +++ b/docs/schema/reference/address.md @@ -0,0 +1,13 @@ +# Address + +Base model that forbids additional properties in JSON Schema. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `freeform` | `string` (optional) | Free-form address that contains street name, house number and other address info | +| `locality` | `string` (optional) | Name of the city or neighborhood where the address is located | +| `postcode` | `string` (optional) | Postal code where the address is located | +| `region` | `string` (optional) | | +| `country` | `string` (optional) | | diff --git a/docs/schema/reference/addresses/address/address.md b/docs/schema/reference/addresses/address/address.md new file mode 100644 index 000000000..a77d75225 --- /dev/null +++ b/docs/schema/reference/addresses/address/address.md @@ -0,0 +1,59 @@ +# Address + +Addresses are geographic points used for locating businesses and individuals. The +rules, fields, and fieldnames of an address can vary extensively between locations. +We use a simplified schema to capture worldwide address points. This initial schema +is largely based on the OpenAddresses (www.openaddresses.io) project. + +The address schema allows up to 5 "admin levels". Rather than have field names that +apply across all countries, we provide an array called "address_levels" containing +the necessary administrative levels for an address. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `id` | `string` | | +| `theme` | `"addresses"` | | +| `type` | `"address"` | | +| `geometry` | `geometry` | Geometry (Point) | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `address_levels` | `list` (optional) | The administrative levels present in an address. The number of values in this list and their meaning is country-dependent. For example, in the United States we expect two values: the state and the municipality. In other countries there might be only one. Other countries could have three or more. The array is ordered with the highest levels first. Note: when a level is not known - most likely because the data provider has not supplied it and we have not derived it from another source, the array element container must be present, but the "value" field should be omitted | +| `address_levels.value` | `string` (optional) | | +| `country` | `string` (optional) | | +| `number` | `string` (optional) | The house number for this address. This field may not strictly be a number. Values such as "74B", "189 1/2", "208.5" are common as the number part of an address and they are not part of the "unit" of this address. | +| `postal_city` | `string` (optional) | In some countries or regions, a mailing address may need to specify a different city name than the city that actually contains the address coordinates. This optional field can be used to specify the alternate city name to use. Example from US National Address Database: 716 East County Road, Winchester, Indiana has "Ridgeville" as its postal city Another example in Slovenia: Tomaj 71, 6221 Dutovlje, Slovenia | +| `postcode` | `string` (optional) | The postcode for the address | +| `street` | `string` (optional) | The street name associated with this address. The street name can include the street "type" or street suffix, e.g., Main Street. Ideally this is fully spelled out and not abbreviated but we acknowledge that many address datasets abbreviate the street name so it is acceptable. | +| `unit` | `string` (optional) | The suite/unit/apartment/floor number | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POINT (-176.5637854 -43.9471955)` | +| `address_levels[0].value` | `Chatham Islands` | +| `address_levels[1].value` | `Chatham Island` | +| `country` | `NZ` | +| `number` | `54` | +| `postal_city` | `null` | +| `postcode` | `null` | +| `street` | `Tikitiki Hill Road` | +| `unit` | `null` | +| `id` | `416ab01c-d836-4c4f-aedc-2f30941ce94d` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenAddresses/LINZ` | +| `sources[0].property` | | +| `sources[0].record_id` | `null` | +| `sources[0].update_time` | `null` | +| `theme` | `addresses` | +| `type` | `address` | +| `version` | `1` | diff --git a/docs/schema/reference/addresses/address/address_level.md b/docs/schema/reference/addresses/address/address_level.md new file mode 100644 index 000000000..5dd5e3581 --- /dev/null +++ b/docs/schema/reference/addresses/address/address_level.md @@ -0,0 +1,14 @@ +# AddressLevel + +An address "admin level". + +We want to avoid the phrase "admin level" and have chosen "address level". These +represent states, regions, districts, cities, neighborhoods, etc. The address schema +defines several numbered levels with per-country rules indicating which parts of a +country's address goes to which numbered level. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `value` | `string` (optional) | | diff --git a/docs/schema/reference/base/bathymetry/bathymetry.md b/docs/schema/reference/base/bathymetry/bathymetry.md new file mode 100644 index 000000000..2051c9827 --- /dev/null +++ b/docs/schema/reference/base/bathymetry/bathymetry.md @@ -0,0 +1,48 @@ +# Bathymetry + +Topographic representation of an underwater area, such as a part of the ocean +floor. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `cartography` | `object` (`[CartographicHints](../../cartographic_hints)`) (optional) | | +| `cartography.prominence` | `integer` (optional) | | +| `cartography.min_zoom` | `integer` (optional) | | +| `cartography.max_zoom` | `integer` (optional) | | +| `cartography.sort_key` | `integer` (optional) | | +| `id` | `string` | | +| `theme` | `"base"` | | +| `type` | `"bathymetry"` | | +| `geometry` | `geometry` | Geometry (Polygon or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `depth` | `int32` | | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `MULTIPOLYGON (((-170.71296928 -76.744313428, -170.719841483 -76.757076376, -170.731061124 -76.761566...` | +| `depth` | `500` | +| `cartography.max_zoom` | `null` | +| `cartography.min_zoom` | `null` | +| `cartography.prominence` | `null` | +| `cartography.sort_key` | `12` | +| `id` | `5d40bd6c-db14-5492-b29f-5e25a59032bc` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `ETOPO/GLOBathy` | +| `sources[0].property` | | +| `sources[0].record_id` | `2024-12-09T00:00:00.000Z` | +| `sources[0].update_time` | `null` | +| `theme` | `base` | +| `type` | `bathymetry` | +| `version` | `0` | diff --git a/docs/schema/reference/base/infrastructure/infrastructure.md b/docs/schema/reference/base/infrastructure/infrastructure.md new file mode 100644 index 000000000..76e90976f --- /dev/null +++ b/docs/schema/reference/base/infrastructure/infrastructure.md @@ -0,0 +1,69 @@ +# Infrastructure + +Various features from OpenStreetMap such as bridges, airport runways, aerialways, +or communication towers and lines. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `source_tags` | `record` (optional) | | +| `wikidata` | `string` (optional) | | +| `level` | `int32` (optional) | | +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"base"` | | +| `type` | `"infrastructure"` | | +| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `class` | `string` ([InfrastructureClass](infrastructure_class)) | Examples: `aerialway_station`, `airport`, `airport_gate`, ... | +| `subtype` | `string` ([InfrastructureSubtype](infrastructure_subtype)) | Examples: `aerialway`, `airport`, `barrier`, ... | +| `height` | `float64` (optional) | | +| `surface` | `string` ([SurfaceMaterial](../surface_material)) (optional) | Examples: `asphalt`, `cobblestone`, `compacted`, ... | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `LINESTRING (-176.6518141 -44.0074721, -176.6509243 -44.0063362)` | +| `subtype` | `barrier` | +| `height` | `null` | +| `surface` | `null` | +| `class` | `fence` | +| `id` | `06e4de8d-bdce-314c-8e25-90ce70b8fe57` | +| `level` | `null` | +| `names.common` | `null` | +| `names.primary` | `null` | +| `names.rules` | `null` | +| `source_tags.LINZ:source_version` | `V16` | +| `source_tags.attribution` | `http://wiki.osm.org/wiki/Attribution#LINZ` | +| `source_tags.barrier` | `fence` | +| `source_tags.source_ref` | `http://www.linz.govt.nz/topography/topo-maps/` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `w56754564@1` | +| `sources[0].update_time` | `2010-04-28T12:01:53.000Z` | +| `theme` | `base` | +| `type` | `infrastructure` | +| `version` | `0` | +| `wikidata` | `null` | diff --git a/docs/schema/reference/base/infrastructure/infrastructure_class.md b/docs/schema/reference/base/infrastructure/infrastructure_class.md new file mode 100644 index 000000000..c23fe2f3e --- /dev/null +++ b/docs/schema/reference/base/infrastructure/infrastructure_class.md @@ -0,0 +1,169 @@ +# InfrastructureClass + +Further classification of the infrastructure type. + +## Values + +- `aerialway_station` +- `airport` +- `airport_gate` +- `airstrip` +- `apron` +- `aqueduct` +- `artwork` +- `atm` +- `barrier` +- `bell_tower` +- `bench` +- `bicycle_parking` +- `bicycle_rental` +- `block` +- `boardwalk` +- `bollard` +- `border_control` +- `breakwater` +- `bridge` +- `bridge_support` +- `bump_gate` +- `bus_route` +- `bus_station` +- `bus_stop` +- `bus_trap` +- `cable` +- `cable_barrier` +- `cable_car` +- `cable_distribution` +- `camp_site` +- `cantilever` +- `catenary_mast` +- `cattle_grid` +- `chain` +- `chair_lift` +- `charging_station` +- `city_wall` +- `communication_line` +- `communication_pole` +- `communication_tower` +- `connection` +- `cooling` +- `covered` +- `crossing` +- `cutline` +- `cycle_barrier` +- `dam` +- `defensive` +- `ditch` +- `diving` +- `drag_lift` +- `drain` +- `drinking_water` +- `entrance` +- `fence` +- `ferry_terminal` +- `fire_hydrant` +- `fountain` +- `full-height_turnstile` +- `gasometer` +- `gate` +- `generator` +- `give_way` +- `gondola` +- `goods` +- `guard_rail` +- `hampshire_gate` +- `handrail` +- `hedge` +- `height_restrictor` +- `heliostat` +- `helipad` +- `heliport` +- `hose` +- `information` +- `insulator` +- `international_airport` +- `j-bar` +- `jersey_barrier` +- `kerb` +- `kissing_gate` +- `launchpad` +- `lift_gate` +- `lighting` +- `lightning_protection` +- `magic_carpet` +- `manhole` +- `milestone` +- `military_airport` +- `minaret` +- `minor_line` +- `mixed_lift` +- `mobile_phone_tower` +- `monitoring` +- `motorcycle_parking` +- `motorway_junction` +- `movable` +- `municipal_airport` +- `observation` +- `parking` +- `parking_entrance` +- `parking_space` +- `pedestrian_crossing` +- `picnic_table` +- `pier` +- `pipeline` +- `plant` +- `planter` +- `platform` +- `platter` +- `portal` +- `post_box` +- `power_line` +- `power_pole` +- `power_tower` +- `private_airport` +- `pylon` +- `quay` +- `radar` +- `railway_halt` +- `railway_station` +- `recycling` +- `regional_airport` +- `reservoir_covered` +- `retaining_wall` +- `rope_tow` +- `runway` +- `sally_port` +- `seaplane_airport` +- `sewer` +- `silo` +- `siren` +- `stile` +- `stop` +- `stop_position` +- `stopway` +- `storage_tank` +- `street_cabinet` +- `street_lamp` +- `substation` +- `subway_station` +- `swing_gate` +- `switch` +- `t-bar` +- `taxilane` +- `taxiway` +- `terminal` +- `toilets` +- `toll_booth` +- `traffic_signals` +- `transformer` +- `trestle` +- `utility_pole` +- `vending_machine` +- `viaduct` +- `viewpoint` +- `wall` +- `waste_basket` +- `waste_disposal` +- `watchtower` +- `water_tower` +- `weir` +- `zip_line` diff --git a/docs/schema/reference/base/infrastructure/infrastructure_subtype.md b/docs/schema/reference/base/infrastructure/infrastructure_subtype.md new file mode 100644 index 000000000..739cc179a --- /dev/null +++ b/docs/schema/reference/base/infrastructure/infrastructure_subtype.md @@ -0,0 +1,24 @@ +# InfrastructureSubtype + +Further description of the type of infrastructure. + +## Values + +- `aerialway` +- `airport` +- `barrier` +- `bridge` +- `communication` +- `emergency` +- `manhole` +- `pedestrian` +- `pier` +- `power` +- `quay` +- `recreation` +- `tower` +- `transit` +- `transportation` +- `utility` +- `waste_management` +- `water` diff --git a/docs/schema/reference/base/land/land.md b/docs/schema/reference/base/land/land.md new file mode 100644 index 000000000..edae66be6 --- /dev/null +++ b/docs/schema/reference/base/land/land.md @@ -0,0 +1,68 @@ +# Land + +Physical representations of land surfaces. + +Global land derived from the inverse of OSM Coastlines. Translates `natural` tags from OpenStreetMap. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `source_tags` | `record` (optional) | | +| `wikidata` | `string` (optional) | | +| `level` | `int32` (optional) | | +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"base"` | | +| `type` | `"land"` | | +| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `class` | `string` ([LandClass](land_class)) (optional) | Examples: `archipelago`, `bare_rock`, `beach`, ... Default: `` | +| `subtype` | `string` ([LandSubtype](land_subtype)) (optional) | Examples: `crater`, `desert`, `forest`, ... Default: `` | +| `elevation` | `int32` (optional) | | +| `surface` | `string` ([SurfaceMaterial](../surface_material)) (optional) | Examples: `asphalt`, `cobblestone`, `compacted`, ... | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POLYGON ((-179.2520554 -84.4448374, -179.2531578 -84.4443064, -179.2566774 -84.4438047, -179.2616581...` | +| `subtype` | `rock` | +| `elevation` | `null` | +| `surface` | `null` | +| `class` | `bare_rock` | +| `id` | `d78b9e8e-7186-3030-8235-820ab8079358` | +| `level` | `null` | +| `names.common` | `null` | +| `names.primary` | `null` | +| `names.rules` | `null` | +| `source_tags.area` | `yes` | +| `source_tags.natural` | `bare_rock` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `w222125249@1` | +| `sources[0].update_time` | `2013-05-19T10:33:24.000Z` | +| `theme` | `base` | +| `type` | `land` | +| `version` | `0` | +| `wikidata` | `null` | diff --git a/docs/schema/reference/base/land/land_class.md b/docs/schema/reference/base/land/land_class.md new file mode 100644 index 000000000..1c40531c3 --- /dev/null +++ b/docs/schema/reference/base/land/land_class.md @@ -0,0 +1,48 @@ +# LandClass + +Further classification of type of landcover. + +## Values + +- `archipelago` +- `bare_rock` +- `beach` +- `cave_entrance` +- `cliff` +- `desert` +- `dune` +- `fell` +- `forest` +- `glacier` +- `grass` +- `grassland` +- `heath` +- `hill` +- `island` +- `islet` +- `land` +- `meadow` +- `meteor_crater` +- `mountain_range` +- `peak` +- `peninsula` +- `plateau` +- `reef` +- `ridge` +- `rock` +- `saddle` +- `sand` +- `scree` +- `scrub` +- `shingle` +- `shrub` +- `shrubbery` +- `stone` +- `tree` +- `tree_row` +- `tundra` +- `valley` +- `volcanic_caldera_rim` +- `volcano` +- `wetland` +- `wood` diff --git a/docs/schema/reference/base/land/land_subtype.md b/docs/schema/reference/base/land/land_subtype.md new file mode 100644 index 000000000..70868e020 --- /dev/null +++ b/docs/schema/reference/base/land/land_subtype.md @@ -0,0 +1,20 @@ +# LandSubtype + +Further description of the type of land cover, such as forest, glacier, grass, or +a physical feature, such as a mountain peak. + +## Values + +- `crater` +- `desert` +- `forest` +- `glacier` +- `grass` +- `land` +- `physical` +- `reef` +- `rock` +- `sand` +- `shrub` +- `tree` +- `wetland` diff --git a/docs/schema/reference/base/land_cover/land_cover.md b/docs/schema/reference/base/land_cover/land_cover.md new file mode 100644 index 000000000..3c2a8b605 --- /dev/null +++ b/docs/schema/reference/base/land_cover/land_cover.md @@ -0,0 +1,47 @@ +# LandCover + +Representation of the Earth's natural surfaces. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `cartography` | `object` (`[CartographicHints](../../cartographic_hints)`) (optional) | | +| `cartography.prominence` | `integer` (optional) | | +| `cartography.min_zoom` | `integer` (optional) | | +| `cartography.max_zoom` | `integer` (optional) | | +| `cartography.sort_key` | `integer` (optional) | | +| `id` | `string` | | +| `theme` | `"base"` | | +| `type` | `"land_cover"` | | +| `geometry` | `geometry` | Geometry (Polygon or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `string` ([LandCoverSubtype](land_cover_subtype)) | Examples: `barren`, `crop`, `forest`, ... | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POLYGON ((-179.99877531181616 65.95172539425603, -179.99740705536922 65.95265577758867, -179.9975172...` | +| `subtype` | `barren` | +| `cartography.max_zoom` | `15` | +| `cartography.min_zoom` | `8` | +| `cartography.prominence` | `null` | +| `cartography.sort_key` | `3` | +| `id` | `c347312d-012b-5e73-8bd3-a10d04b2981d` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `ESA WorldCover` | +| `sources[0].property` | | +| `sources[0].record_id` | `null` | +| `sources[0].update_time` | `2024-11-07T00:00:00.000Z` | +| `theme` | `base` | +| `type` | `land_cover` | +| `version` | `0` | diff --git a/docs/schema/reference/base/land_cover/land_cover_subtype.md b/docs/schema/reference/base/land_cover/land_cover_subtype.md new file mode 100644 index 000000000..39591e1eb --- /dev/null +++ b/docs/schema/reference/base/land_cover/land_cover_subtype.md @@ -0,0 +1,16 @@ +# LandCoverSubtype + +Type of surface represented. + +## Values + +- `barren` +- `crop` +- `forest` +- `grass` +- `mangrove` +- `moss` +- `shrub` +- `snow` +- `urban` +- `wetland` diff --git a/docs/schema/reference/base/land_use/land_use.md b/docs/schema/reference/base/land_use/land_use.md new file mode 100644 index 000000000..13f0d92e8 --- /dev/null +++ b/docs/schema/reference/base/land_use/land_use.md @@ -0,0 +1,68 @@ +# LandUse + +Land use features from OpenStreetMap. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `source_tags` | `record` (optional) | | +| `wikidata` | `string` (optional) | | +| `level` | `int32` (optional) | | +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"base"` | | +| `type` | `"land_use"` | | +| `geometry` | `geometry` | Classifications of the human use of a section of land. Translates `landuse` from OpenStreetMap tag from OpenStreetMap. | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `class` | `string` ([LandUseClass](land_use_class)) | Examples: `aboriginal_land`, `airfield`, `allotments`, ... | +| `subtype` | `string` ([LandUseSubtype](land_use_subtype)) | Examples: `agriculture`, `aquaculture`, `campground`, ... | +| `elevation` | `int32` (optional) | | +| `surface` | `string` ([SurfaceMaterial](../surface_material)) (optional) | Examples: `asphalt`, `cobblestone`, `compacted`, ... | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POLYGON ((-176.5623454 -43.9567812, -176.5627644 -43.9561272, -176.5626898 -43.9557432, -176.5624297...` | +| `subtype` | `golf` | +| `elevation` | `null` | +| `surface` | `null` | +| `class` | `golf_course` | +| `id` | `1e1f6095-5bd2-3fdb-a422-41351b848e9d` | +| `level` | `null` | +| `names.common` | `null` | +| `names.primary` | `Chatham Islands Golf Club` | +| `names.rules` | `null` | +| `source_tags.LINZ:source_version` | `V16` | +| `source_tags.attribution` | `http://wiki.osm.org/wiki/Attribution#LINZ` | +| `source_tags.leisure` | `golf_course` | +| `source_tags.source_ref` | `http://www.linz.govt.nz/topography/topo-maps/` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `w56117029@3` | +| `sources[0].update_time` | `2010-04-24T22:35:13.000Z` | +| `theme` | `base` | +| `type` | `land_use` | +| `version` | `0` | +| `wikidata` | `null` | diff --git a/docs/schema/reference/base/land_use/land_use_class.md b/docs/schema/reference/base/land_use/land_use_class.md new file mode 100644 index 000000000..ab87ba6d6 --- /dev/null +++ b/docs/schema/reference/base/land_use/land_use_class.md @@ -0,0 +1,115 @@ +# LandUseClass + +Further classification of the land use. + +## Values + +- `aboriginal_land` +- `airfield` +- `allotments` +- `animal_keeping` +- `aquaculture` +- `barracks` +- `base` +- `beach_resort` +- `brownfield` +- `bunker` +- `camp_site` +- `cemetery` +- `clinic` +- `college` +- `commercial` +- `connection` +- `construction` +- `danger_area` +- `doctors` +- `dog_park` +- `downhill` +- `driving_range` +- `driving_school` +- `education` +- `environmental` +- `fairway` +- `farmland` +- `farmyard` +- `fatbike` +- `flowerbed` +- `forest` +- `garages` +- `garden` +- `golf_course` +- `grass` +- `grave_yard` +- `green` +- `greenfield` +- `greenhouse_horticulture` +- `highway` +- `hike` +- `hospital` +- `ice_skate` +- `industrial` +- `institutional` +- `kindergarten` +- `landfill` +- `lateral_water_hazard` +- `logging` +- `marina` +- `meadow` +- `military` +- `military_hospital` +- `military_school` +- `music_school` +- `national_park` +- `natural_monument` +- `nature_reserve` +- `naval_base` +- `nordic` +- `nuclear_explosion_site` +- `obstacle_course` +- `orchard` +- `park` +- `peat_cutting` +- `pedestrian` +- `pitch` +- `plant_nursery` +- `playground` +- `plaza` +- `protected` +- `protected_landscape_seascape` +- `quarry` +- `railway` +- `range` +- `recreation_ground` +- `religious` +- `residential` +- `resort` +- `retail` +- `rough` +- `salt_pond` +- `school` +- `schoolyard` +- `ski_jump` +- `skitour` +- `sled` +- `sleigh` +- `snow_park` +- `species_management_area` +- `stadium` +- `state_park` +- `static_caravan` +- `strict_nature_reserve` +- `tee` +- `theme_park` +- `track` +- `traffic_island` +- `training_area` +- `trench` +- `university` +- `village_green` +- `vineyard` +- `water_hazard` +- `water_park` +- `wilderness_area` +- `winter_sports` +- `works` +- `zoo` diff --git a/docs/schema/reference/base/land_use/land_use_subtype.md b/docs/schema/reference/base/land_use/land_use_subtype.md new file mode 100644 index 000000000..c81cf3665 --- /dev/null +++ b/docs/schema/reference/base/land_use/land_use_subtype.md @@ -0,0 +1,30 @@ +# LandUseSubtype + +Broad type of land. + +## Values + +- `agriculture` +- `aquaculture` +- `campground` +- `cemetery` +- `construction` +- `developed` +- `education` +- `entertainment` +- `golf` +- `grass` +- `horticulture` +- `landfill` +- `managed` +- `medical` +- `military` +- `park` +- `pedestrian` +- `protected` +- `recreation` +- `religious` +- `residential` +- `resource_extraction` +- `transportation` +- `winter_sports` diff --git a/docs/schema/reference/base/surface_material.md b/docs/schema/reference/base/surface_material.md new file mode 100644 index 000000000..a48df12e1 --- /dev/null +++ b/docs/schema/reference/base/surface_material.md @@ -0,0 +1,30 @@ +# SurfaceMaterial + +Surface material enum used by infrastructure and land features. + +## Values + +- `asphalt` +- `cobblestone` +- `compacted` +- `concrete` +- `concrete_plates` +- `dirt` +- `earth` +- `fine_gravel` +- `grass` +- `gravel` +- `ground` +- `paved` +- `paving_stones` +- `pebblestone` +- `recreation_grass` +- `recreation_paved` +- `recreation_sand` +- `rubber` +- `sand` +- `sett` +- `tartan` +- `unpaved` +- `wood` +- `woodchips` diff --git a/docs/schema/reference/base/water/water.md b/docs/schema/reference/base/water/water.md new file mode 100644 index 000000000..61a8c94c4 --- /dev/null +++ b/docs/schema/reference/base/water/water.md @@ -0,0 +1,69 @@ +# Water + +Physical representations of inland and ocean marine surfaces. + +Translates `natural` and `waterway` tags from OpenStreetMap. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `source_tags` | `record` (optional) | | +| `wikidata` | `string` (optional) | | +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `level` | `int32` (optional) | | +| `id` | `string` | | +| `theme` | `"base"` | | +| `type` | `"water"` | | +| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `class` | `string` ([WaterClass](water_class)) (optional) | Examples: `basin`, `bay`, `blowhole`, ... Default: `` | +| `subtype` | `string` ([WaterSubtype](water_subtype)) (optional) | Examples: `canal`, `human_made`, `lake`, ... Default: `` | +| `is_intermittent` | `boolean` (optional) | Is it intermittent water or not | +| `is_salt` | `boolean` (optional) | Is it salt water or not | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `LINESTRING (-172.3130214 -84.5857393, -172.3172356 -84.5848825, -172.3208447 -84.5839693)` | +| `subtype` | `stream` | +| `is_intermittent` | `true` | +| `is_salt` | `null` | +| `class` | `stream` | +| `id` | `9e3c87a1-4735-3482-bced-0f3a0571c7b1` | +| `level` | `null` | +| `names.common` | `null` | +| `names.primary` | `null` | +| `names.rules` | `null` | +| `source_tags.intermittent` | `yes` | +| `source_tags.source` | `ADD` | +| `source_tags.waterway` | `stream` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `w222125066@1` | +| `sources[0].update_time` | `2013-05-19T10:32:47.000Z` | +| `theme` | `base` | +| `type` | `water` | +| `version` | `0` | +| `wikidata` | `null` | diff --git a/docs/schema/reference/base/water/water_class.md b/docs/schema/reference/base/water/water_class.md new file mode 100644 index 000000000..9af56817c --- /dev/null +++ b/docs/schema/reference/base/water/water_class.md @@ -0,0 +1,41 @@ +# WaterClass + +Further description of the type of water. + +## Values + +- `basin` +- `bay` +- `blowhole` +- `canal` +- `cape` +- `ditch` +- `dock` +- `drain` +- `fairway` +- `fish_pass` +- `fishpond` +- `geyser` +- `hot_spring` +- `lagoon` +- `lake` +- `moat` +- `ocean` +- `oxbow` +- `pond` +- `reflecting_pool` +- `reservoir` +- `river` +- `salt_pond` +- `sea` +- `sewage` +- `shoal` +- `spring` +- `strait` +- `stream` +- `swimming_pool` +- `tidal_channel` +- `wastewater` +- `water` +- `water_storage` +- `waterfall` diff --git a/docs/schema/reference/base/water/water_subtype.md b/docs/schema/reference/base/water/water_subtype.md new file mode 100644 index 000000000..42684c99f --- /dev/null +++ b/docs/schema/reference/base/water/water_subtype.md @@ -0,0 +1,18 @@ +# WaterSubtype + +The type of water body such as an river, ocean or lake. + +## Values + +- `canal` +- `human_made` +- `lake` +- `ocean` +- `physical` +- `pond` +- `reservoir` +- `river` +- `spring` +- `stream` +- `wastewater` +- `water` diff --git a/docs/schema/reference/buildings/building/building.md b/docs/schema/reference/buildings/building/building.md new file mode 100644 index 000000000..d80824c05 --- /dev/null +++ b/docs/schema/reference/buildings/building/building.md @@ -0,0 +1,88 @@ +# Building + +A building is a man-made structure with a roof that exists permanently in one +place. + +Buildings are compatible with GeoJSON Polygon features. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `height` | `float64` (optional) | Height of the building or part in meters. The height is the distance from the lowest point to the highest point. | +| `is_underground` | `boolean` (optional) | Whether the entire building or part is completely below ground. This is useful for rendering which typically omits these buildings or styles them differently because they are not visible above ground. This is different than the level column which is used to indicate z-ordering of elements and negative values may be above ground. | +| `num_floors` | `int32` (optional) | Number of above-ground floors of the building or part. | +| `num_floors_underground` | `int32` (optional) | Number of below-ground floors of the building or part. | +| `min_height` | `float64` (optional) | The height of the bottom part of building in meters. Used if a building or part of building starts above the ground level. | +| `min_floor` | `int32` (optional) | The "start" floor of this building or part. Indicates that the building or part is "floating" and its bottom-most floor is above ground level, usually because it is part of a larger building in which some parts do reach down to ground level. An example is a building that has an entry road or driveway at ground level into an interior courtyard, where part of the building bridges above the entry road. This property may sometimes be populated when min_height is missing and in these cases can be used as a proxy for min_height. | +| `facade_color` | `string` (optional) | The color (name or color triplet) of the facade of a building or building part in hexadecimal | +| `facade_material` | `string` ([FacadeMaterial](../facade_material)) (optional) | The outer surface material of building facade. Examples: `brick`, `cement_block`, `clay`, ... | +| `roof_material` | `string` ([RoofMaterial](../roof_material)) (optional) | The outermost material of the roof. Examples: `concrete`, `copper`, `eternit`, ... | +| `roof_shape` | `string` ([RoofShape](../roof_shape)) (optional) | The shape of the roof Examples: `dome`, `flat`, `gabled`, ... | +| `roof_direction` | `float64` (optional) | Bearing of the roof ridge line in degrees. | +| `roof_orientation` | `string` ([RoofOrientation](../roof_orientation)) (optional) | Orientation of the roof shape relative to the footprint shape. Either "along" or "across". Examples: `across`, `along` | +| `roof_color` | `string` (optional) | The color (name or color triplet) of the roof of a building or building part in hexadecimal | +| `roof_height` | `float64` (optional) | The height of the building roof in meters. This represents the distance from the base of the roof to the highest point of the roof. | +| `level` | `int32` (optional) | | +| `names` | `object` ([Names](../../Names/names)) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"buildings"` | | +| `type` | `"building"` | | +| `geometry` | `geometry` | The building's footprint or roofprint (if traced from aerial/satellite imagery). | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `string` ([Subtype](subtype)) (optional) | Examples: `agricultural`, `civic`, `commercial`, ... | +| `class` | `string` ([BuildingClass](building_class)) (optional) | Examples: `agricultural`, `allotment_house`, `apartments`, ... | +| `has_parts` | `boolean` (optional) | Flag indicating whether the building has parts | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POLYGON ((-176.6435004 -43.9938042, -176.6435738 -43.9937107, -176.6437726 -43.9937913, -176.6436992...` | +| `subtype` | `null` | +| `has_parts` | `false` | +| `class` | `null` | +| `facade_color` | `null` | +| `facade_material` | `null` | +| `height` | `null` | +| `id` | `148f35b1-7bc1-4180-9280-10d39b13883b` | +| `is_underground` | `false` | +| `level` | `null` | +| `min_floor` | `null` | +| `min_height` | `null` | +| `names` | `null` | +| `num_floors` | `null` | +| `num_floors_underground` | `null` | +| `roof_color` | `null` | +| `roof_direction` | `null` | +| `roof_height` | `null` | +| `roof_material` | `null` | +| `roof_orientation` | `null` | +| `roof_shape` | `null` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `w519166507@1` | +| `sources[0].update_time` | `2017-08-27T21:39:50.000Z` | +| `theme` | `buildings` | +| `type` | `building` | +| `version` | `1` | diff --git a/docs/schema/reference/buildings/building/building_class.md b/docs/schema/reference/buildings/building/building_class.md new file mode 100644 index 000000000..e48a6ce25 --- /dev/null +++ b/docs/schema/reference/buildings/building/building_class.md @@ -0,0 +1,93 @@ +# BuildingClass + +Further delineation of the building's built purpose. + +## Values + +- `agricultural` +- `allotment_house` +- `apartments` +- `barn` +- `beach_hut` +- `boathouse` +- `bridge_structure` +- `bungalow` +- `bunker` +- `cabin` +- `carport` +- `cathedral` +- `chapel` +- `church` +- `civic` +- `college` +- `commercial` +- `cowshed` +- `detached` +- `digester` +- `dormitory` +- `dwelling_house` +- `factory` +- `farm` +- `farm_auxiliary` +- `fire_station` +- `garage` +- `garages` +- `ger` +- `glasshouse` +- `government` +- `grandstand` +- `greenhouse` +- `guardhouse` +- `hangar` +- `hospital` +- `hotel` +- `house` +- `houseboat` +- `hut` +- `industrial` +- `kindergarten` +- `kiosk` +- `library` +- `manufacture` +- `military` +- `monastery` +- `mosque` +- `office` +- `outbuilding` +- `parking` +- `pavilion` +- `post_office` +- `presbytery` +- `public` +- `religious` +- `residential` +- `retail` +- `roof` +- `school` +- `semi` +- `semidetached_house` +- `service` +- `shed` +- `shrine` +- `silo` +- `slurry_tank` +- `sports_centre` +- `sports_hall` +- `stable` +- `stadium` +- `static_caravan` +- `stilt_house` +- `storage_tank` +- `sty` +- `supermarket` +- `synagogue` +- `temple` +- `terrace` +- `toilets` +- `train_station` +- `transformer_tower` +- `transportation` +- `trullo` +- `university` +- `warehouse` +- `wayside_shrine` diff --git a/docs/schema/reference/buildings/building/subtype.md b/docs/schema/reference/buildings/building/subtype.md new file mode 100644 index 000000000..6e3c4de18 --- /dev/null +++ b/docs/schema/reference/buildings/building/subtype.md @@ -0,0 +1,22 @@ +# Subtype + +A broad category of the building type/purpose. + +When the current use of the building does not match the built purpose, the subtype +should be set to represent the current use of the building. + +## Values + +- `agricultural` +- `civic` +- `commercial` +- `education` +- `entertainment` +- `industrial` +- `medical` +- `military` +- `outbuilding` +- `religious` +- `residential` +- `service` +- `transportation` diff --git a/docs/schema/reference/buildings/building_part/building_part.md b/docs/schema/reference/buildings/building_part/building_part.md new file mode 100644 index 000000000..3222199cf --- /dev/null +++ b/docs/schema/reference/buildings/building_part/building_part.md @@ -0,0 +1,84 @@ +# BuildingPart + +A single building part. + +Parts describe their shape and color and other properties. Each building part must +contain the building with which it is associated. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `height` | `float64` (optional) | Height of the building or part in meters. The height is the distance from the lowest point to the highest point. | +| `is_underground` | `boolean` (optional) | Whether the entire building or part is completely below ground. This is useful for rendering which typically omits these buildings or styles them differently because they are not visible above ground. This is different than the level column which is used to indicate z-ordering of elements and negative values may be above ground. | +| `num_floors` | `int32` (optional) | Number of above-ground floors of the building or part. | +| `num_floors_underground` | `int32` (optional) | Number of below-ground floors of the building or part. | +| `min_height` | `float64` (optional) | The height of the bottom part of building in meters. Used if a building or part of building starts above the ground level. | +| `min_floor` | `int32` (optional) | The "start" floor of this building or part. Indicates that the building or part is "floating" and its bottom-most floor is above ground level, usually because it is part of a larger building in which some parts do reach down to ground level. An example is a building that has an entry road or driveway at ground level into an interior courtyard, where part of the building bridges above the entry road. This property may sometimes be populated when min_height is missing and in these cases can be used as a proxy for min_height. | +| `facade_color` | `string` (optional) | The color (name or color triplet) of the facade of a building or building part in hexadecimal | +| `facade_material` | `string` ([FacadeMaterial](../facade_material)) (optional) | The outer surface material of building facade. Examples: `brick`, `cement_block`, `clay`, ... | +| `roof_material` | `string` ([RoofMaterial](../roof_material)) (optional) | The outermost material of the roof. Examples: `concrete`, `copper`, `eternit`, ... | +| `roof_shape` | `string` ([RoofShape](../roof_shape)) (optional) | The shape of the roof Examples: `dome`, `flat`, `gabled`, ... | +| `roof_direction` | `float64` (optional) | Bearing of the roof ridge line in degrees. | +| `roof_orientation` | `string` ([RoofOrientation](../roof_orientation)) (optional) | Orientation of the roof shape relative to the footprint shape. Either "along" or "across". Examples: `across`, `along` | +| `roof_color` | `string` (optional) | The color (name or color triplet) of the roof of a building or building part in hexadecimal | +| `roof_height` | `float64` (optional) | The height of the building roof in meters. This represents the distance from the base of the roof to the highest point of the roof. | +| `level` | `int32` (optional) | | +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"buildings"` | | +| `type` | `"building_part"` | | +| `geometry` | `geometry` | The part's geometry. | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `building_id` | `string` | The building ID to which this part belongs | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POLYGON ((-73.2462509 -39.8108937, -73.2462755 -39.8109047, -73.246291 -39.8109182, -73.2463022 -39....` | +| `building_id` | `bd663bd4-1844-4d7d-a400-114de051cf49` | +| `facade_color` | `null` | +| `facade_material` | `null` | +| `height` | `null` | +| `id` | `19412d64-51ac-3d6a-ac2f-8a8c8b91bb60` | +| `is_underground` | `false` | +| `level` | `3` | +| `min_floor` | `null` | +| `min_height` | `null` | +| `names` | `null` | +| `num_floors` | `null` | +| `num_floors_underground` | `null` | +| `roof_color` | `null` | +| `roof_direction` | `null` | +| `roof_height` | `null` | +| `roof_material` | `null` | +| `roof_orientation` | `null` | +| `roof_shape` | `null` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `w223076787@2` | +| `sources[0].update_time` | `2014-10-31T22:55:36.000Z` | +| `theme` | `buildings` | +| `type` | `building_part` | +| `version` | `0` | diff --git a/docs/schema/reference/buildings/facade_material.md b/docs/schema/reference/buildings/facade_material.md new file mode 100644 index 000000000..efcee10ad --- /dev/null +++ b/docs/schema/reference/buildings/facade_material.md @@ -0,0 +1,17 @@ +# FacadeMaterial + +The outer surface material of building facade. + +## Values + +- `brick` +- `cement_block` +- `clay` +- `concrete` +- `glass` +- `metal` +- `plaster` +- `plastic` +- `stone` +- `timber_framing` +- `wood` diff --git a/docs/schema/reference/buildings/roof_material.md b/docs/schema/reference/buildings/roof_material.md new file mode 100644 index 000000000..afb676f86 --- /dev/null +++ b/docs/schema/reference/buildings/roof_material.md @@ -0,0 +1,20 @@ +# RoofMaterial + +The outermost material of the roof. + +## Values + +- `concrete` +- `copper` +- `eternit` +- `glass` +- `grass` +- `gravel` +- `metal` +- `plastic` +- `roof_tiles` +- `slate` +- `solar_panels` +- `thatch` +- `tar_paper` +- `wood` diff --git a/docs/schema/reference/buildings/roof_orientation.md b/docs/schema/reference/buildings/roof_orientation.md new file mode 100644 index 000000000..dbf261cfa --- /dev/null +++ b/docs/schema/reference/buildings/roof_orientation.md @@ -0,0 +1,10 @@ +# RoofOrientation + +Orientation of the roof shape relative to the footprint shape. + +Either "along" or "across". + +## Values + +- `across` +- `along` diff --git a/docs/schema/reference/buildings/roof_shape.md b/docs/schema/reference/buildings/roof_shape.md new file mode 100644 index 000000000..ac0176a42 --- /dev/null +++ b/docs/schema/reference/buildings/roof_shape.md @@ -0,0 +1,20 @@ +# RoofShape + +The shape of the roof. + +## Values + +- `dome` +- `flat` +- `gabled` +- `gambrel` +- `half_hipped` +- `hipped` +- `mansard` +- `onion` +- `pyramidal` +- `round` +- `saltbox` +- `sawtooth` +- `skillion` +- `spherical` diff --git a/docs/schema/reference/cartographic_hints.md b/docs/schema/reference/cartographic_hints.md new file mode 100644 index 000000000..1dfc16306 --- /dev/null +++ b/docs/schema/reference/cartographic_hints.md @@ -0,0 +1,12 @@ +# CartographicHints + +Defines cartographic hints for optimal use of Overture features in map-making. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `prominence` | `integer` (optional) | | +| `min_zoom` | `integer` (optional) | | +| `max_zoom` | `integer` (optional) | | +| `sort_key` | `integer` (optional) | | diff --git a/docs/schema/reference/divisions/capital_of_division_item.md b/docs/schema/reference/divisions/capital_of_division_item.md new file mode 100644 index 000000000..eab2a75fc --- /dev/null +++ b/docs/schema/reference/divisions/capital_of_division_item.md @@ -0,0 +1,10 @@ +# CapitalOfDivisionItem + +One division that has capital. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `division_id` | `string` | | +| `subtype` | `string` ([PlaceType](/schema/codegen/divisions/capital_of_division_item/place_type/)) | Examples: `country`, `dependency`, `macroregion`, ... | diff --git a/docs/schema/reference/divisions/division/division.md b/docs/schema/reference/divisions/division/division.md new file mode 100644 index 000000000..e5cc2616b --- /dev/null +++ b/docs/schema/reference/divisions/division/division.md @@ -0,0 +1,111 @@ +# Division + +Divisions are recognized official or non-official organizations of people as seen +from a given political perspective. + +Examples include countries, provinces, cities, towns, neighborhoods, etc. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `cartography` | `object` (`[CartographicHints](../../cartographic_hints)`) (optional) | | +| `cartography.prominence` | `integer` (optional) | | +| `cartography.min_zoom` | `integer` (optional) | | +| `cartography.max_zoom` | `integer` (optional) | | +| `cartography.sort_key` | `integer` (optional) | | +| `names` | `object` (`[Names](../../Names/names)`) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"divisions"` | | +| `type` | `"division"` | | +| `geometry` | `geometry` | Approximate location of a position commonly associated with the real-world entity modeled by the division feature. | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `string` ([PlaceType](../place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `country` | `string` | ISO 3166-1 alpha-2 country code of the country or country-like entity, that this division represents or belongs to. If the entity this division represents has a country code, the country property contains it. If it does not, the country property contains the country code of the first division encountered by traversing the parent_division_id chain to the root. For example: - The country value for the United States is 'US' - The country value for New York City is 'US' - The country value for Puerto Rico, a dependency of the US, is 'PR'. - The country value for San Juan, Puerto Rico is 'PR'. If an entity has an internationally-recognized ISO 3166-1 alpha-2 country code, it should always be used. In cases where the schema requires the code but no internationally-recognized code is available, a synthetic code may be used provided it does not conflict with any internationally-recognized codes. | +| `hierarchies` | `list` | Hierarchies in which this division participates. Every division participates in at least one hierarchy. Most participate in only one. Some divisions may participate in more than one hierarchy, for example if they are claimed by different parent divisions from different political perspectives; or if there are other real-world reasons why the division or one of its ancestors has multiple parents. The first hierarchy in the list is the default hierarchy, and the second-to-last entry in the default hierarchy (if there is such an entry) always corresponds to the `parent_division_id' property. The ordering of hierarchies after the first one is arbitrary. | +| `hierarchies.division_id` | `string` | | +| `hierarchies.subtype` | `string` ([PlaceType](../place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `hierarchies.name` | `string` | Primary name of the division | +| `parent_division_id` | `string` (optional) | Division ID of this division's parent division. Not allowed for top-level divisions (countries) and required for all other divisions. The default parent division is the parent division as seen from the default political perspective, if there is one, and is otherwise chosen somewhat arbitrarily. The hierarchies property can be used to inspect the exhaustive list of parent divisions. | +| `class` | `string` ([DivisionClass](../division_class)) (optional) | Examples: `megacity`, `city`, `town`, ... | +| `local_type` | `object` (optional) | Local name for the subtype property, optionally localized. For example, the Canadian province of Quebec has the subtype 'region', but in the local administrative hierarchy it is referred to as a 'province'. Similarly, the Canadian Yukon territory also has subtype 'region', but is locally called a 'territory'. This property is localized using a standard Overture names structure. So for example, in Switzerland the top-level administrative subdivision corresponding to subtype 'region' is the canton, which is may be translated in each of Switzerland's official languages as, 'canton' in French, 'kanton' in German, 'cantone' in Italian, and 'chantun' in Romansh. | +| `region` | `string` (optional) | ISO 3166-2 principal subdivision code of the subdivision-like entity this division represents or belongs to. If the entity this division represents has a principal subdivision code, the region property contains it. If it does not, the region property contains the principal subdivision code of the first division encountered by traversing the parent_division_id chain to the root. For example: - The region value for the United States is omitted. - The region value for the U.S. state of New York is 'US-NY'. - The region value for New York City is 'US-NY', which it inherits from the state of New York. - The region value for Puerto Rico is 'US-PR'. | +| `perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | Political perspectives from which this division is considered to be an accurate representation. If this property is absent, then this division is not known to be disputed from any political perspective. Consequently, there is only one division feature representing the entire real world entity. If this property is present, it means the division represents one of several alternative perspectives on the same real-world entity. There are two modes of perspective: 1. `accepted_by` means the representation of the division is accepted by the listed entities and would be included on a map drawn from their perspective. 2. `disputed_by` means the representation of the division is disputed by the listed entities and would be excluded from a map drawn from their perspective. When drawing a map from the perspective of a given country, one would start by gathering all the undisputed divisions (with no `perspectives` property), and then adding to that first all divisions explicitly accepted by the country, and second all divisions not explicitly disputed by the country. | +| `norms` | `object` (`[Norms](norms)`) (optional) | Collects information about local norms and rules within the division that are generally useful for mapping and map-related use cases. If the norms property or a desired sub-property of the norms property is missing on a division, but at least one of its ancestor divisions has the norms property and the desired sub-property, then the value from the nearest ancestor division may be assumed. | +| `norms.driving_side` | `string` ([Side](../../Names/side)) (optional) | Side of the road on which vehicles drive in the division. Examples: `left`, `right` | +| `population` | `int32` (optional) | Population of the division | +| `capital_division_ids` | `list` (optional) | Division IDs of this division's capital divisions. If present, this property will refer to the division IDs of the capital cities, county seats, etc. of a division. | +| `capital_of_divisions` | `list` (optional) | Division IDs and subtypes of divisions this division is a capital of. | +| `capital_of_divisions.division_id` | `string` | | +| `capital_of_divisions.subtype` | `string` ([PlaceType](../place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `wikidata` | `string` (optional) | | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POINT (-175.2551522 -21.1353686)` | +| `names.common` | `null` | +| `names.primary` | `Sia'atoutai` | +| `names.rules[0].between` | `null` | +| `names.rules[0].language` | `null` | +| `names.rules[0].perspectives` | `null` | +| `names.rules[0].side` | `null` | +| `names.rules[0].value` | `Nafualu` | +| `names.rules[0].variant` | `alternate` | +| `subtype` | `locality` | +| `country` | `TO` | +| `hierarchies[0].hierarchies[0].division_id` | `fef8748b-0c91-46ad-9f2d-976d8d2de3e9` | +| `hierarchies[0].hierarchies[0].name` | `Tonga` | +| `hierarchies[0].hierarchies[0].subtype` | `country` | +| `hierarchies[0].hierarchies[1].division_id` | `4d67561a-2292-41bd-8996-7853d276a42c` | +| `hierarchies[0].hierarchies[1].name` | `Tongatapu` | +| `hierarchies[0].hierarchies[1].subtype` | `region` | +| `hierarchies[0].hierarchies[2].division_id` | `8730f0cc-d436-4f11-a7d3-49085813ef44` | +| `hierarchies[0].hierarchies[2].name` | `Vahe Kolomotu'a` | +| `hierarchies[0].hierarchies[2].subtype` | `county` | +| `hierarchies[0].hierarchies[3].division_id` | `350e85f6-68ba-4114-9906-c2844815988b` | +| `hierarchies[0].hierarchies[3].name` | `Sia'atoutai` | +| `hierarchies[0].hierarchies[3].subtype` | `locality` | +| `parent_division_id` | `8730f0cc-d436-4f11-a7d3-49085813ef44` | +| `local_type.en` | `village` | +| `region` | `TO-04` | +| `perspectives` | `null` | +| `norms` | `null` | +| `population` | `534` | +| `capital_division_ids` | `null` | +| `capital_of_divisions` | `null` | +| `wikidata` | `null` | +| `cartography.max_zoom` | `null` | +| `cartography.min_zoom` | `null` | +| `cartography.prominence` | `29` | +| `cartography.sort_key` | `null` | +| `class` | `village` | +| `id` | `350e85f6-68ba-4114-9906-c2844815988b` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `n3173231082@4` | +| `sources[0].update_time` | `2014-12-18T09:17:03Z` | +| `theme` | `divisions` | +| `type` | `division` | +| `version` | `1` | diff --git a/docs/schema/reference/divisions/division/norms.md b/docs/schema/reference/divisions/division/norms.md new file mode 100644 index 000000000..b6d2bd20c --- /dev/null +++ b/docs/schema/reference/divisions/division/norms.md @@ -0,0 +1,9 @@ +# Norms + +Local norms and standards. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `driving_side` | `string` ([Side](/schema/codegen/divisions/Names/side/)) (optional) | Side of the road on which vehicles drive in the division. Examples: `left`, `right` | diff --git a/docs/schema/reference/divisions/division_area/area_class.md b/docs/schema/reference/divisions/division_area/area_class.md new file mode 100644 index 000000000..32640cf3e --- /dev/null +++ b/docs/schema/reference/divisions/division_area/area_class.md @@ -0,0 +1,8 @@ +# AreaClass + +Area and boundary class designations. + +## Values + +- `land` +- `maritime` diff --git a/docs/schema/reference/divisions/division_area/division_area.md b/docs/schema/reference/divisions/division_area/division_area.md new file mode 100644 index 000000000..ed8642798 --- /dev/null +++ b/docs/schema/reference/divisions/division_area/division_area.md @@ -0,0 +1,71 @@ +# DivisionArea + +Division areas are polygons that represent the land or maritime area covered by a +division. + +Each division area belongs to a division which it references by ID, and for which +the division area provides an area polygon. For ease of use, every division area +repeats the subtype, names, country, and region properties of the division it +belongs to. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `names` | `object` (`[Names](../../Names/names)`) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"divisions"` | | +| `type` | `"division_area"` | | +| `geometry` | `geometry` | The area covered by the division with which this area feature is associated | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `string` ([PlaceType](../place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `class` | `string` ([AreaClass](area_class)) | Examples: `land`, `maritime` | +| `is_land` | `boolean` (optional) | A boolean to indicate whether or not the feature geometry represents the land-clipped, non-maritime boundary. The geometry can be used for map rendering, cartographic display, and similar purposes. | +| `is_territorial` | `boolean` (optional) | A boolean to indicate whether or not the feature geometry represents Overture's best approximation of this place's maritime boundary. For coastal places, this would tend to include the water area. The geometry can be used for data processing, reverse-geocoding, and similar purposes. | +| `division_id` | `string` | Division ID of the division this area belongs to. | +| `country` | `string` | ISO 3166-1 alpha-2 country code of the division this area belongs to. | +| `region` | `string` (optional) | ISO 3166-2 principal subdivision code of the division this area belongs to. | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POLYGON ((-178.950516 -17.3431421, -178.9509773 -17.3430806, -178.9523774 -17.3428912, -178.9524762 ...` | +| `names.common` | `null` | +| `names.primary` | `Susui` | +| `names.rules` | `null` | +| `subtype` | `locality` | +| `is_land` | `true` | +| `is_territorial` | `true` | +| `division_id` | `8183f909-ed92-49f0-90fe-10a35adad6ed` | +| `country` | `FJ` | +| `region` | `FJ-E` | +| `class` | `land` | +| `id` | `7080b91a-d015-4506-8a24-f57c978b54c2` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `w399511500@2` | +| `sources[0].update_time` | `2018-08-20T18:24:58Z` | +| `theme` | `divisions` | +| `type` | `division_area` | +| `version` | `1` | diff --git a/docs/schema/reference/divisions/division_boundary/boundary_class.md b/docs/schema/reference/divisions/division_boundary/boundary_class.md new file mode 100644 index 000000000..d9792f9f3 --- /dev/null +++ b/docs/schema/reference/divisions/division_boundary/boundary_class.md @@ -0,0 +1,8 @@ +# BoundaryClass + +An enumeration. + +## Values + +- `land` +- `maritime` diff --git a/docs/schema/reference/divisions/division_boundary/division_boundary.md b/docs/schema/reference/divisions/division_boundary/division_boundary.md new file mode 100644 index 000000000..766218107 --- /dev/null +++ b/docs/schema/reference/divisions/division_boundary/division_boundary.md @@ -0,0 +1,64 @@ +# DivisionBoundary + +Boundaries represent borders between divisions of the same subtype. + +Some boundaries may be disputed by the divisions on one or both sides. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `id` | `string` | | +| `theme` | `"divisions"` | | +| `type` | `"division_boundary"` | | +| `geometry` | `geometry` | Boundary line or lines | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `string` ([PlaceType](../place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `class` | `string` ([BoundaryClass](boundary_class)) | Examples: `land`, `maritime` | +| `is_land` | `boolean` (optional) | A boolean to indicate whether or not the feature geometry represents the land-clipped, non-maritime boundary. The geometry can be used for map rendering, cartographic display, and similar purposes. | +| `is_territorial` | `boolean` (optional) | A boolean to indicate whether or not the feature geometry represents Overture's best approximation of this place's maritime boundary. For coastal places, this would tend to include the water area. The geometry can be used for data processing, reverse-geocoding, and similar purposes. | +| `division_ids` | `list` | Identifies the two divisions to the left and right, respectively, of the boundary line. The left- and right-hand sides of the boundary are considered from the perspective of a person standing on the line facing in the direction in which the geometry is oriented, i.e. facing toward the end of the line. The first array element is the Overture ID of the left division. The second element is the Overture ID of the right division. | +| `country` | `string` (optional) | ISO 3166-1 alpha-2 country code of the country or country-like entity that both sides of the boundary share. This property will be present on boundaries between two regions, counties, or similar entities within the same country, but will not be present on boundaries between two countries or country-like entities. | +| `region` | `string` (optional) | ISO 3166-2 principal subdivision code of the subdivision-like entity that both sides of the boundary share. This property will be present on boundaries between two counties, localadmins or similar entities within the same principal subdivision, but will not be present on boundaries between different principal subdivisions or countries. | +| `is_disputed` | `boolean` (optional) | Indicator if there are entities disputing this division boundary. Information about entities disputing this boundary should be included in perspectives property. This property should also be true if boundary between two entities is unclear and this is "best guess". So having it true and no perspectives gives map creators reason not to fully trust the boundary, but use it if they have no other. | +| `perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | Political perspectives from which this division boundary is considered to be an accurate representation. If this property is absent, then this boundary is not known to be disputed from any political perspective. Consequently, there is only one boundary feature representing the entire real world entity. If this property is present, it means the boundary represents one of several alternative perspectives on the same real-world entity. There are two modes of perspective: 1. `accepted_by` means the representation of the boundary is accepted by the listed entities and would be included on a map drawn from their perspective. 2. `disputed_by` means the representation of the boundary is disputed by the listed entities and would be excluded from a map drawn from their perspective. When drawing a map from the perspective of a given country, one would start by gathering all the undisputed boundary (with no `perspectives` property), and then adding to that first all boundary explicitly accepted by the country, and second all boundary not explicitly disputed by the country. | +| `perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `perspectives.countries` | `list` | Countries holding the given mode of perspective. | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `LINESTRING (-147.064823 -15.4231537, -147.0519131 -15.2885069, -147.048482 -15.1511701)` | +| `subtype` | `county` | +| `is_land` | `false` | +| `is_territorial` | `true` | +| `division_ids` | `[ae266459-63a4-4508-8295-0101e27d039b, d4a6873d-885a-4f2a-bc0f-37e9d9e874e4]` | +| `country` | `PF` | +| `region` | `null` | +| `is_disputed` | `false` | +| `perspectives` | `null` | +| `class` | `maritime` | +| `id` | `2bdf68e4-860d-3d8c-a472-ccf439a5302a` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `r6063055@9` | +| `sources[0].update_time` | `2023-07-20T00:28:40Z` | +| `sources[1].between` | `null` | +| `sources[1].confidence` | `null` | +| `sources[1].dataset` | `OpenStreetMap` | +| `sources[1].property` | | +| `sources[1].record_id` | `r6063063@12` | +| `sources[1].update_time` | `2023-07-20T00:28:40Z` | +| `theme` | `divisions` | +| `type` | `division_boundary` | +| `version` | `1` | diff --git a/docs/schema/reference/divisions/division_class.md b/docs/schema/reference/divisions/division_class.md new file mode 100644 index 000000000..6975b3d24 --- /dev/null +++ b/docs/schema/reference/divisions/division_class.md @@ -0,0 +1,11 @@ +# DivisionClass + +Division-specific class designations. + +## Values + +- `megacity` +- `city` +- `town` +- `village` +- `hamlet` diff --git a/docs/schema/reference/divisions/hierarchy_item.md b/docs/schema/reference/divisions/hierarchy_item.md new file mode 100644 index 000000000..d3f14f222 --- /dev/null +++ b/docs/schema/reference/divisions/hierarchy_item.md @@ -0,0 +1,11 @@ +# HierarchyItem + +One division in a hierarchy. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `division_id` | `string` | | +| `subtype` | `string` ([PlaceType](/schema/codegen/divisions/hierarchy_item/place_type/)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `name` | `string` | Primary name of the division | diff --git a/docs/schema/reference/divisions/place_type.md b/docs/schema/reference/divisions/place_type.md new file mode 100644 index 000000000..b8537226d --- /dev/null +++ b/docs/schema/reference/divisions/place_type.md @@ -0,0 +1,19 @@ +# PlaceType + +Category of the division from a finite, hierarchical, ordered list of categories +(e.g. country, region, locality, etc.) similar to a Who's on First placetype. + +## Values + +- `country` +- `dependency` +- `macroregion` +- `region` +- `macrocounty` +- `county` +- `localadmin` +- `locality` +- `borough` +- `macrohood` +- `neighborhood` +- `microhood` diff --git a/docs/schema/reference/places/place/brand.md b/docs/schema/reference/places/place/brand.md new file mode 100644 index 000000000..f6fb01f81 --- /dev/null +++ b/docs/schema/reference/places/place/brand.md @@ -0,0 +1,24 @@ +# Brand + +The brand of the place. + +A location with multiple brands is modeled as multiple separate places, each with +its own brand. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `wikidata` | `string` (optional) | | diff --git a/docs/schema/reference/places/place/categories.md b/docs/schema/reference/places/place/categories.md new file mode 100644 index 000000000..21cf70166 --- /dev/null +++ b/docs/schema/reference/places/place/categories.md @@ -0,0 +1,13 @@ +# Categories + +The categories of the place. + +Complete list is available on +GitHub: https://github.com/OvertureMaps/schema/blob/main/docs/schema/concepts/by-theme/places/overture_categories.csv + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `primary` | `string` | The primary or main category of the place. | +| `alternate` | `list` (optional) | Alternate categories of the place. Some places might fit into two categories, e.g. a book store and a coffee shop. In such a case, the primary category can be augmented with additional applicable categories. | diff --git a/docs/schema/reference/places/place/place.md b/docs/schema/reference/places/place/place.md new file mode 100644 index 000000000..85ab4d6c2 --- /dev/null +++ b/docs/schema/reference/places/place/place.md @@ -0,0 +1,86 @@ +# Place + +A Place is a point representation of a real-world facility, service, or amenity. + +Place features are compatible with GeoJSON Point features. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"places"` | | +| `type` | `"place"` | | +| `geometry` | `geometry` | Position of the place | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `categories` | `object` (`[Categories](categories)`) (optional) | | +| `categories.primary` | `string` | The primary or main category of the place. | +| `categories.alternate` | `list` (optional) | Alternate categories of the place. Some places might fit into two categories, e.g. a book store and a coffee shop. In such a case, the primary category can be augmented with additional applicable categories. | +| `confidence` | `float64` (optional) | The confidence of the existence of the place. It's a number between 0 and 1. 0 means that we're sure that the place doesn't exist (anymore). 1 means that we're sure that the place exists. If there's no value for the confidence, it means that we don't have any confidence information. | +| `websites` | `list` (optional) | The websites of the place. | +| `socials` | `list` (optional) | The social media URLs of the place. | +| `emails` | `list` (optional) | The email addresses of the place. | +| `phones` | `list` (optional) | The phone numbers of the place. | +| `brand` | `object` (`[Brand](brand)`) (optional) | | +| `brand.names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `brand.wikidata` | `string` (optional) | | +| `addresses` | `list` (optional) | | +| `addresses.freeform` | `string` (optional) | Free-form address that contains street name, house number and other address info | +| `addresses.locality` | `string` (optional) | Name of the city or neighborhood where the address is located | +| `addresses.postcode` | `string` (optional) | Postal code where the address is located | +| `addresses.region` | `string` (optional) | | +| `addresses.country` | `string` (optional) | | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POINT (-151.7990018 -79.5664328)` | +| `categories.alternate` | `null` | +| `categories.primary` | `media_news_website` | +| `confidence` | `0.8015267175572519` | +| `websites` | `[https://www.primenewsmonde.bj/]` | +| `socials` | `[https://www.facebook.com/105157324629740]` | +| `emails` | `null` | +| `phones` | `[+22991510404]` | +| `brand.names.common` | `null` | +| `brand.names.primary` | `null` | +| `brand.names.rules` | `null` | +| `brand.wikidata` | `null` | +| `addresses[0].country` | `BJ` | +| `addresses[0].freeform` | `Fidjrossè Calvaire Villa située entre Sun Beach Hôtel et l'agence PDME. ` | +| `addresses[0].locality` | `Fidjrossè-Centre` | +| `addresses[0].postcode` | `null` | +| `addresses[0].region` | `null` | +| `id` | `25d1faae-e887-493b-97d6-1c5bf39ed51f` | +| `names.common` | `null` | +| `names.primary` | `Prime News TV Monde` | +| `names.rules` | `null` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `0.8015267175572519` | +| `sources[0].dataset` | `meta` | +| `sources[0].property` | | +| `sources[0].record_id` | `105157324629740` | +| `sources[0].update_time` | `2025-06-30T07:00:00.000Z` | +| `theme` | `places` | +| `type` | `place` | +| `version` | `1` | diff --git a/docs/schema/reference/source_property_item.md b/docs/schema/reference/source_property_item.md new file mode 100644 index 000000000..b0d7338c5 --- /dev/null +++ b/docs/schema/reference/source_property_item.md @@ -0,0 +1,19 @@ +# SourcePropertyItem + +An object storing the source for a specificed property. + +The property is a reference to the property element within this Feature, and will be +referenced using JSON Pointer Notation RFC 6901 ( +https://datatracker.ietf.org/doc/rfc6901/). +The source dataset for that referenced property will be specified in the overture list of approved sources from the Overture Data Working Group that contains the relevant metadata for that dataset including license source organization. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `property` | `string` | | +| `dataset` | `string` | | +| `record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `update_time` | `string` (optional) | | +| `confidence` | `float64` (optional) | | diff --git a/docs/schema/reference/transportation/access_restriction_rule.md b/docs/schema/reference/transportation/access_restriction_rule.md new file mode 100644 index 000000000..7f5290841 --- /dev/null +++ b/docs/schema/reference/transportation/access_restriction_rule.md @@ -0,0 +1,22 @@ +# AccessRestrictionRule + +Geometric scoping properties defining the range of positions on the segment where +something is physically located or where a rule is active. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `access_type` | `string` ([AccessType](/schema/codegen/transportation/access_restriction_rule/access_type/)) | Examples: `allowed`, `denied`, `designated` | +| `when` | `object` (`[AccessRestrictionWhenClause](access_restriction_when_clause)`) (optional) | | +| `when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `when.vehicle.dimension` | `string` ([VehicleDimension](vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `when.vehicle.comparison` | `string` ([VehicleComparison](vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `when.vehicle.value` | `float64` | | +| `when.vehicle.unit` | `string` ([LengthUnit](length_unit)) | `string` ([WeightUnit](weight_unit)) | | +| `when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `when.recognized` | `list` (optional) | | +| `when.using` | `list` (optional) | | +| `when.heading` | `string` ([Heading](heading)) (optional) | Examples: `forward`, `backward` | +| `when.during` | `string` (optional) | | diff --git a/docs/schema/reference/transportation/access_restriction_when_clause.md b/docs/schema/reference/transportation/access_restriction_when_clause.md new file mode 100644 index 000000000..77c9c1c9e --- /dev/null +++ b/docs/schema/reference/transportation/access_restriction_when_clause.md @@ -0,0 +1,21 @@ +# AccessRestrictionWhenClause + +Mixin class that provides constraint validation capabilities. + +This is a true mixin - it doesn't inherit from BaseModel to avoid MRO issues. +Use it like: class MyModel(ConstraintValidatedModel, BaseModel) + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `vehicle.dimension` | `string` ([VehicleDimension](vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `vehicle.comparison` | `string` ([VehicleComparison](vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `vehicle.value` | `float64` | | +| `vehicle.unit` | `string` ([LengthUnit](length_unit)) | `string` ([WeightUnit](weight_unit)) | | +| `mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `recognized` | `list` (optional) | | +| `using` | `list` (optional) | | +| `heading` | `string` ([Heading](/schema/codegen/transportation/access_restriction_when_clause/heading/)) (optional) | Examples: `forward`, `backward` | +| `during` | `string` (optional) | | diff --git a/docs/schema/reference/transportation/access_type.md b/docs/schema/reference/transportation/access_type.md new file mode 100644 index 000000000..a082412f6 --- /dev/null +++ b/docs/schema/reference/transportation/access_type.md @@ -0,0 +1,9 @@ +# AccessType + +An enumeration. + +## Values + +- `allowed` +- `denied` +- `designated` diff --git a/docs/schema/reference/transportation/connector/connector.md b/docs/schema/reference/transportation/connector/connector.md new file mode 100644 index 000000000..289bf8e40 --- /dev/null +++ b/docs/schema/reference/transportation/connector/connector.md @@ -0,0 +1,38 @@ +# Connector + +Connectors create physical connections between segments. + +Connectors are compatible with GeoJSON Point features. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `id` | `string` | | +| `theme` | `"transportation"` | | +| `type` | `"connector"` | | +| `geometry` | `geometry` | Position of the connector | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | + +## Examples + +| Column | Value | +|-------:|-------| +| `geometry` | `POINT (-176.5472979 -43.9679472)` | +| `id` | `39542bee-230f-4b91-b7e5-a9b58e0c59b1` | +| `sources[0].between` | `null` | +| `sources[0].confidence` | `null` | +| `sources[0].dataset` | `OpenStreetMap` | +| `sources[0].property` | | +| `sources[0].record_id` | `null` | +| `sources[0].update_time` | `null` | +| `theme` | `transportation` | +| `type` | `connector` | +| `version` | `1` | diff --git a/docs/schema/reference/transportation/connector_reference.md b/docs/schema/reference/transportation/connector_reference.md new file mode 100644 index 000000000..53c6cbe7b --- /dev/null +++ b/docs/schema/reference/transportation/connector_reference.md @@ -0,0 +1,11 @@ +# ConnectorReference + +Contains the GERS ID and relative position between 0 and 1 of a connector feature +along the segment. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `connector_id` | `string` | | +| `at` | `float64` | | diff --git a/docs/schema/reference/transportation/destination_label_type.md b/docs/schema/reference/transportation/destination_label_type.md new file mode 100644 index 000000000..89fe923c3 --- /dev/null +++ b/docs/schema/reference/transportation/destination_label_type.md @@ -0,0 +1,12 @@ +# DestinationLabelType + +Indicates what special symbol/icon is present on a signpost, visible as road +marking or similar. + +## Values + +- `street` +- `country` +- `route_ref` +- `toward_route_ref` +- `unknown` diff --git a/docs/schema/reference/transportation/destination_labels.md b/docs/schema/reference/transportation/destination_labels.md new file mode 100644 index 000000000..3c39a05a7 --- /dev/null +++ b/docs/schema/reference/transportation/destination_labels.md @@ -0,0 +1,10 @@ +# DestinationLabels + +The type of object of the destination label. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `value` | `string` | Names the object that is reached | +| `type` | `string` ([DestinationLabelType](destination_label_type)) | Examples: `street`, `country`, `route_ref`, ... | diff --git a/docs/schema/reference/transportation/destination_rule.md b/docs/schema/reference/transportation/destination_rule.md new file mode 100644 index 000000000..c11c1ecf5 --- /dev/null +++ b/docs/schema/reference/transportation/destination_rule.md @@ -0,0 +1,18 @@ +# DestinationRule + +Base model that forbids additional properties in JSON Schema. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `from_connector_id` | `string` | Identifies the point of physical connection on this segment before which the destination sign or marking is visible. | +| `to_connector_id` | `string` | Identifies the point of physical connection on the segment identified by 'to_segment_id' to transition to for reaching the destination(s). | +| `to_segment_id` | `string` | Identifies the segment to transition to reach the destination(s) labeled on the sign or marking. | +| `final_heading` | `string` ([Heading](heading)) | Direction of travel on the segment identified by 'to_segment_id' that leads to the destination. Examples: `forward`, `backward` | +| `labels` | `list` (optional) | Labeled destinations that can be reached by following the segment. | +| `labels.value` | `string` | Names the object that is reached | +| `labels.type` | `string` ([DestinationLabelType](destination_label_type)) | Examples: `street`, `country`, `route_ref`, ... | +| `symbols` | `list` (optional) | A collection of symbols or icons present on the sign next to current destination label. | +| `when` | `object` (`[DestinationWhenClause](destination_when_clause)`) (optional) | | +| `when.heading` | `string` ([Heading](heading)) (optional) | Examples: `forward`, `backward` | diff --git a/docs/schema/reference/transportation/destination_sign_symbol.md b/docs/schema/reference/transportation/destination_sign_symbol.md new file mode 100644 index 000000000..1a35d3290 --- /dev/null +++ b/docs/schema/reference/transportation/destination_sign_symbol.md @@ -0,0 +1,27 @@ +# DestinationSignSymbol + +Indicates what special symbol/icon is present on a signpost, visible as road +marking or similar. + +## Values + +- `motorway` +- `airport` +- `hospital` +- `center` +- `industrial` +- `parking` +- `bus` +- `train_station` +- `rest_area` +- `ferry` +- `motorroad` +- `fuel` +- `viewpoint` +- `fuel_diesel` +- `food` +- `lodging` +- `info` +- `camp_site` +- `interchange` +- `restrooms` diff --git a/docs/schema/reference/transportation/destination_when_clause.md b/docs/schema/reference/transportation/destination_when_clause.md new file mode 100644 index 000000000..eb6373765 --- /dev/null +++ b/docs/schema/reference/transportation/destination_when_clause.md @@ -0,0 +1,12 @@ +# DestinationWhenClause + +Mixin class that provides constraint validation capabilities. + +This is a true mixin - it doesn't inherit from BaseModel to avoid MRO issues. +Use it like: class MyModel(ConstraintValidatedModel, BaseModel) + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `heading` | `string` ([Heading](heading)) (optional) | Examples: `forward`, `backward` | diff --git a/docs/schema/reference/transportation/heading.md b/docs/schema/reference/transportation/heading.md new file mode 100644 index 000000000..d665fff8b --- /dev/null +++ b/docs/schema/reference/transportation/heading.md @@ -0,0 +1,8 @@ +# Heading + +Enumerates possible travel headings along segment geometry. + +## Values + +- `forward` +- `backward` diff --git a/docs/schema/reference/transportation/length_unit.md b/docs/schema/reference/transportation/length_unit.md new file mode 100644 index 000000000..8cd4f38be --- /dev/null +++ b/docs/schema/reference/transportation/length_unit.md @@ -0,0 +1,13 @@ +# LengthUnit + +Enumerates length units supported by the Overture schema. + +## Values + +- `in` +- `ft` +- `yd` +- `mi` +- `cm` +- `m` +- `km` diff --git a/docs/schema/reference/transportation/level_rule.md b/docs/schema/reference/transportation/level_rule.md new file mode 100644 index 000000000..8cc9fcc3e --- /dev/null +++ b/docs/schema/reference/transportation/level_rule.md @@ -0,0 +1,11 @@ +# LevelRule + +A single level rule defining the Z-order, i.e. stacking order, applicable within +a given scope on the road segment. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `value` | `int32` | | diff --git a/docs/schema/reference/transportation/prohibited_transition_rule.md b/docs/schema/reference/transportation/prohibited_transition_rule.md new file mode 100644 index 000000000..eda7e210b --- /dev/null +++ b/docs/schema/reference/transportation/prohibited_transition_rule.md @@ -0,0 +1,25 @@ +# ProhibitedTransitionRule + +Geometric scoping properties defining the range of positions on the segment where +something is physically located or where a rule is active. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `sequence` | `list` | Ordered sequence of connector/segment pairs that it is prohibited to follow from this segment. | +| `sequence.connector_id` | `string` | Identifies the point of physical connection between the previous segment in the sequence and the segment in this sequence entry. | +| `sequence.segment_id` | `string` | Identifies the segment that the previous segment in the sequence is physically connected to via the sequence entry's connector. | +| `final_heading` | `string` ([Heading](heading)) | Direction of travel that is prohibited on the destination segment of the sequence. Examples: `forward`, `backward` | +| `when` | `object` (`[ProhibitedTransitionWhenClause](prohibited_transition_when_clause)`) (optional) | | +| `when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `when.vehicle.dimension` | `string` ([VehicleDimension](vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `when.vehicle.comparison` | `string` ([VehicleComparison](vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `when.vehicle.value` | `float64` | | +| `when.vehicle.unit` | `string` ([LengthUnit](length_unit)) | `string` ([WeightUnit](weight_unit)) | | +| `when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `when.recognized` | `list` (optional) | | +| `when.using` | `list` (optional) | | +| `when.during` | `string` (optional) | | +| `when.heading` | `string` ([Heading](heading)) (optional) | Examples: `forward`, `backward` | diff --git a/docs/schema/reference/transportation/prohibited_transition_when_clause.md b/docs/schema/reference/transportation/prohibited_transition_when_clause.md new file mode 100644 index 000000000..22a530295 --- /dev/null +++ b/docs/schema/reference/transportation/prohibited_transition_when_clause.md @@ -0,0 +1,21 @@ +# ProhibitedTransitionWhenClause + +Mixin class that provides constraint validation capabilities. + +This is a true mixin - it doesn't inherit from BaseModel to avoid MRO issues. +Use it like: class MyModel(ConstraintValidatedModel, BaseModel) + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `vehicle.dimension` | `string` ([VehicleDimension](vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `vehicle.comparison` | `string` ([VehicleComparison](vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `vehicle.value` | `float64` | | +| `vehicle.unit` | `string` ([LengthUnit](length_unit)) | `string` ([WeightUnit](weight_unit)) | | +| `mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `recognized` | `list` (optional) | | +| `using` | `list` (optional) | | +| `during` | `string` (optional) | | +| `heading` | `string` ([Heading](heading)) (optional) | Examples: `forward`, `backward` | diff --git a/docs/schema/reference/transportation/purpose_of_use.md b/docs/schema/reference/transportation/purpose_of_use.md new file mode 100644 index 000000000..befdf60f2 --- /dev/null +++ b/docs/schema/reference/transportation/purpose_of_use.md @@ -0,0 +1,12 @@ +# PurposeOfUse + +Reason why a person or entity travelling on the transportation network is using a +particular location. + +## Values + +- `as_customer` +- `at_destination` +- `to_deliver` +- `to_farm` +- `for_forestry` diff --git a/docs/schema/reference/transportation/rail_class.md b/docs/schema/reference/transportation/rail_class.md new file mode 100644 index 000000000..fe284a6de --- /dev/null +++ b/docs/schema/reference/transportation/rail_class.md @@ -0,0 +1,14 @@ +# RailClass + +Captures the kind of rail segment. + +## Values + +- `funicular` +- `light_rail` +- `monorail` +- `narrow_gauge` +- `standard_gauge` +- `subway` +- `tram` +- `unknown` diff --git a/docs/schema/reference/transportation/rail_flag.md b/docs/schema/reference/transportation/rail_flag.md new file mode 100644 index 000000000..031d04948 --- /dev/null +++ b/docs/schema/reference/transportation/rail_flag.md @@ -0,0 +1,16 @@ +# RailFlag + +Simple flags that can be on or off for a railway segment. + +Specifies physical characteristics and can overlap. + +## Values + +- `is_bridge` +- `is_tunnel` +- `is_under_construction` +- `is_abandoned` +- `is_covered` +- `is_passenger` +- `is_freight` +- `is_disused` diff --git a/docs/schema/reference/transportation/rail_flag_rule.md b/docs/schema/reference/transportation/rail_flag_rule.md new file mode 100644 index 000000000..651a41336 --- /dev/null +++ b/docs/schema/reference/transportation/rail_flag_rule.md @@ -0,0 +1,10 @@ +# RailFlagRule + +Rail-specific flag rule with geometric scoping only. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `values` | `list` | | diff --git a/docs/schema/reference/transportation/recognized_status.md b/docs/schema/reference/transportation/recognized_status.md new file mode 100644 index 000000000..f2f927f28 --- /dev/null +++ b/docs/schema/reference/transportation/recognized_status.md @@ -0,0 +1,12 @@ +# RecognizedStatus + +Status of the person or entity travelling as recognized by authorities +controlling the particular location. + +## Values + +- `as_permitted` +- `as_private` +- `as_disabled` +- `as_employee` +- `as_student` diff --git a/docs/schema/reference/transportation/road_class.md b/docs/schema/reference/transportation/road_class.md new file mode 100644 index 000000000..c3e409f80 --- /dev/null +++ b/docs/schema/reference/transportation/road_class.md @@ -0,0 +1,23 @@ +# RoadClass + +Captures the kind of road and its position in the road network hierarchy. + +## Values + +- `motorway` +- `primary` +- `secondary` +- `tertiary` +- `residential` +- `living_street` +- `trunk` +- `unclassified` +- `service` +- `pedestrian` +- `footway` +- `steps` +- `path` +- `track` +- `cycleway` +- `bridleway` +- `unknown` diff --git a/docs/schema/reference/transportation/road_flag.md b/docs/schema/reference/transportation/road_flag.md new file mode 100644 index 000000000..1f0a76f4a --- /dev/null +++ b/docs/schema/reference/transportation/road_flag.md @@ -0,0 +1,15 @@ +# RoadFlag + +Simple flags that can be on or off for a road segment. + +Specifies physical characteristics and can overlap. + +## Values + +- `is_bridge` +- `is_link` +- `is_tunnel` +- `is_under_construction` +- `is_abandoned` +- `is_covered` +- `is_indoor` diff --git a/docs/schema/reference/transportation/road_flag_rule.md b/docs/schema/reference/transportation/road_flag_rule.md new file mode 100644 index 000000000..7d7b3efe2 --- /dev/null +++ b/docs/schema/reference/transportation/road_flag_rule.md @@ -0,0 +1,10 @@ +# RoadFlagRule + +Road-specific flag rule with geometric scoping only. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `values` | `list` | | diff --git a/docs/schema/reference/transportation/road_surface.md b/docs/schema/reference/transportation/road_surface.md new file mode 100644 index 000000000..51fa5599d --- /dev/null +++ b/docs/schema/reference/transportation/road_surface.md @@ -0,0 +1,13 @@ +# RoadSurface + +Physical surface of the road. + +## Values + +- `unknown` +- `paved` +- `unpaved` +- `gravel` +- `dirt` +- `paving_stones` +- `metal` diff --git a/docs/schema/reference/transportation/route_reference.md b/docs/schema/reference/transportation/route_reference.md new file mode 100644 index 000000000..6b8dc2d9b --- /dev/null +++ b/docs/schema/reference/transportation/route_reference.md @@ -0,0 +1,14 @@ +# RouteReference + +Route reference with linear referencing support. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `name` | `string` (optional) | Full name of the route | +| `network` | `string` (optional) | Name of the highway system this route belongs to | +| `ref` | `string` (optional) | Code or number used to reference the route | +| `symbol` | `string` (optional) | URL or description of route signage | +| `wikidata` | `string` (optional) | | diff --git a/docs/schema/reference/transportation/segment/rail_segment.md b/docs/schema/reference/transportation/segment/rail_segment.md new file mode 100644 index 000000000..ab06a4c70 --- /dev/null +++ b/docs/schema/reference/transportation/segment/rail_segment.md @@ -0,0 +1,67 @@ +# RailSegment + +Rail Segment Properties. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"transportation"` | | +| `type` | `"segment"` | | +| `geometry` | `geometry` | Segment centerline | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `"rail"` | | +| `access_restrictions` | `list` (optional) | | +| `access_restrictions.between` | `list` (optional) | | +| `access_restrictions.access_type` | `string` ([AccessType](../access_type)) | Examples: `allowed`, `denied`, `designated` | +| `access_restrictions.when` | `object` (`[AccessRestrictionWhenClause](../access_restriction_when_clause)`) (optional) | | +| `access_restrictions.when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `access_restrictions.when.vehicle.dimension` | `string` ([VehicleDimension](../vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `access_restrictions.when.vehicle.comparison` | `string` ([VehicleComparison](../vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `access_restrictions.when.vehicle.value` | `float64` | | +| `access_restrictions.when.vehicle.unit` | `string` ([LengthUnit](../length_unit)) | `string` ([WeightUnit](../weight_unit)) | | +| `access_restrictions.when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `access_restrictions.when.recognized` | `list` (optional) | | +| `access_restrictions.when.using` | `list` (optional) | | +| `access_restrictions.when.heading` | `string` ([Heading](../heading)) (optional) | Examples: `forward`, `backward` | +| `access_restrictions.when.during` | `string` (optional) | | +| `connectors` | `list` (optional) | List of connectors which this segment is physically connected to and their relative location. Each connector is a possible routing decision point, meaning it defines a place along the segment in which there is possibility to transition to other segments which share the same connector. Default: `[]` | +| `connectors.connector_id` | `string` | | +| `connectors.at` | `float64` | | +| `level_rules` | `list` (optional) | | +| `level_rules.between` | `list` (optional) | | +| `level_rules.value` | `int32` | | +| `routes` | `list` (optional) | | +| `routes.between` | `list` (optional) | | +| `routes.name` | `string` (optional) | Full name of the route | +| `routes.network` | `string` (optional) | Name of the highway system this route belongs to | +| `routes.ref` | `string` (optional) | Code or number used to reference the route | +| `routes.symbol` | `string` (optional) | URL or description of route signage | +| `routes.wikidata` | `string` (optional) | | +| `subclass_rules` | `list` (optional) | | +| `subclass_rules.between` | `list` (optional) | | +| `subclass_rules.value` | `string` ([Subclass](../subclass)) | Examples: `link`, `sidewalk`, `crosswalk`, ... | +| `class` | `string` ([RailClass](../rail_class)) | Examples: `funicular`, `light_rail`, `monorail`, ... | +| `rail_flags` | `list` (optional) | | +| `rail_flags.between` | `list` (optional) | | +| `rail_flags.values` | `list` | | diff --git a/docs/schema/reference/transportation/segment/road_segment.md b/docs/schema/reference/transportation/segment/road_segment.md new file mode 100644 index 000000000..31dcea464 --- /dev/null +++ b/docs/schema/reference/transportation/segment/road_segment.md @@ -0,0 +1,112 @@ +# RoadSegment + +Road Segment Properties. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"transportation"` | | +| `type` | `"segment"` | | +| `geometry` | `geometry` | Segment centerline | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `"road"` | | +| `access_restrictions` | `list` (optional) | | +| `access_restrictions.between` | `list` (optional) | | +| `access_restrictions.access_type` | `string` ([AccessType](../access_type)) | Examples: `allowed`, `denied`, `designated` | +| `access_restrictions.when` | `object` (`[AccessRestrictionWhenClause](../access_restriction_when_clause)`) (optional) | | +| `access_restrictions.when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `access_restrictions.when.vehicle.dimension` | `string` ([VehicleDimension](../vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `access_restrictions.when.vehicle.comparison` | `string` ([VehicleComparison](../vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `access_restrictions.when.vehicle.value` | `float64` | | +| `access_restrictions.when.vehicle.unit` | `string` ([LengthUnit](../length_unit)) | `string` ([WeightUnit](../weight_unit)) | | +| `access_restrictions.when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `access_restrictions.when.recognized` | `list` (optional) | | +| `access_restrictions.when.using` | `list` (optional) | | +| `access_restrictions.when.heading` | `string` ([Heading](../heading)) (optional) | Examples: `forward`, `backward` | +| `access_restrictions.when.during` | `string` (optional) | | +| `connectors` | `list` (optional) | List of connectors which this segment is physically connected to and their relative location. Each connector is a possible routing decision point, meaning it defines a place along the segment in which there is possibility to transition to other segments which share the same connector. Default: `[]` | +| `connectors.connector_id` | `string` | | +| `connectors.at` | `float64` | | +| `level_rules` | `list` (optional) | | +| `level_rules.between` | `list` (optional) | | +| `level_rules.value` | `int32` | | +| `routes` | `list` (optional) | | +| `routes.between` | `list` (optional) | | +| `routes.name` | `string` (optional) | Full name of the route | +| `routes.network` | `string` (optional) | Name of the highway system this route belongs to | +| `routes.ref` | `string` (optional) | Code or number used to reference the route | +| `routes.symbol` | `string` (optional) | URL or description of route signage | +| `routes.wikidata` | `string` (optional) | | +| `subclass_rules` | `list` (optional) | | +| `subclass_rules.between` | `list` (optional) | | +| `subclass_rules.value` | `string` ([Subclass](../subclass)) | Examples: `link`, `sidewalk`, `crosswalk`, ... | +| `class` | `string` ([RoadClass](../road_class)) | Examples: `motorway`, `primary`, `secondary`, ... | +| `destinations` | `list` (optional) | | +| `destinations.from_connector_id` | `string` | Identifies the point of physical connection on this segment before which the destination sign or marking is visible. | +| `destinations.to_connector_id` | `string` | Identifies the point of physical connection on the segment identified by 'to_segment_id' to transition to for reaching the destination(s). | +| `destinations.to_segment_id` | `string` | Identifies the segment to transition to reach the destination(s) labeled on the sign or marking. | +| `destinations.final_heading` | `string` ([Heading](../heading)) | Direction of travel on the segment identified by 'to_segment_id' that leads to the destination. Examples: `forward`, `backward` | +| `destinations.labels` | `list` (optional) | Labeled destinations that can be reached by following the segment. | +| `destinations.labels.value` | `string` | Names the object that is reached | +| `destinations.labels.type` | `string` ([DestinationLabelType](../destination_label_type)) | Examples: `street`, `country`, `route_ref`, ... | +| `destinations.symbols` | `list` (optional) | A collection of symbols or icons present on the sign next to current destination label. | +| `destinations.when` | `object` (`[DestinationWhenClause](../destination_when_clause)`) (optional) | | +| `destinations.when.heading` | `string` ([Heading](../heading)) (optional) | Examples: `forward`, `backward` | +| `prohibited_transitions` | `list` (optional) | | +| `prohibited_transitions.between` | `list` (optional) | | +| `prohibited_transitions.sequence` | `list` | Ordered sequence of connector/segment pairs that it is prohibited to follow from this segment. | +| `prohibited_transitions.sequence.connector_id` | `string` | Identifies the point of physical connection between the previous segment in the sequence and the segment in this sequence entry. | +| `prohibited_transitions.sequence.segment_id` | `string` | Identifies the segment that the previous segment in the sequence is physically connected to via the sequence entry's connector. | +| `prohibited_transitions.final_heading` | `string` ([Heading](../heading)) | Direction of travel that is prohibited on the destination segment of the sequence. Examples: `forward`, `backward` | +| `prohibited_transitions.when` | `object` (`[ProhibitedTransitionWhenClause](../prohibited_transition_when_clause)`) (optional) | | +| `prohibited_transitions.when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `prohibited_transitions.when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `prohibited_transitions.when.recognized` | `list` (optional) | | +| `prohibited_transitions.when.using` | `list` (optional) | | +| `prohibited_transitions.when.during` | `string` (optional) | | +| `prohibited_transitions.when.heading` | `string` ([Heading](../heading)) (optional) | Examples: `forward`, `backward` | +| `road_flags` | `list` (optional) | | +| `road_flags.between` | `list` (optional) | | +| `road_flags.values` | `list` | | +| `road_surface` | `list` (optional) | | +| `road_surface.between` | `list` (optional) | | +| `road_surface.value` | `string` ([RoadSurface](../road_surface)) | Examples: `unknown`, `paved`, `unpaved`, ... | +| `speed_limits` | `list` (optional) | | +| `speed_limits.between` | `list` (optional) | | +| `speed_limits.max_speed` | `object` (`[Speed](../speed)`) (optional) | | +| `speed_limits.max_speed.value` | `int32` | | +| `speed_limits.max_speed.unit` | `string` ([SpeedUnit](../speed_unit)) | Examples: `mph`, `km/h` | +| `speed_limits.min_speed` | `object` (`[Speed](../speed)`) (optional) | | +| `speed_limits.is_max_speed_variable` | `boolean` (optional) | Indicates a variable speed corridor Default: `False` | +| `speed_limits.when` | `object` (`[SpeedLimitWhenClause](../speed_limit_when_clause)`) (optional) | | +| `speed_limits.when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `speed_limits.when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `speed_limits.when.recognized` | `list` (optional) | | +| `speed_limits.when.using` | `list` (optional) | | +| `speed_limits.when.heading` | `string` ([Heading](../heading)) (optional) | Examples: `forward`, `backward` | +| `speed_limits.when.during` | `string` (optional) | | +| `subclass` | `string` ([Subclass](../subclass)) (optional) | Examples: `link`, `sidewalk`, `crosswalk`, ... | +| `width_rules` | `list` (optional) | | +| `width_rules.between` | `list` (optional) | | +| `width_rules.value` | `float64` | | diff --git a/docs/schema/reference/transportation/segment/water_segment.md b/docs/schema/reference/transportation/segment/water_segment.md new file mode 100644 index 000000000..37732d468 --- /dev/null +++ b/docs/schema/reference/transportation/segment/water_segment.md @@ -0,0 +1,63 @@ +# WaterSegment + +Water Segment Properties. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `names` | `object` (`[Names](../../Names/names)`) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list` (optional) | Rules for names that cannot be specified in the simple common names property. These rules can cover other name variants such as official, alternate, and short; and they can optionally include geometric scoping (linear referencing) and side-of-road scoping for complex cases. | +| `names.rules[].side` | `string` ([Side](../../Names/side)) (optional) | Examples: `left`, `right` | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | `string` ([NameVariant](../../Names/name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | `object` (`[Perspectives](../../Names/perspectives)`) (optional) | | +| `names.rules[].perspectives.mode` | `string` ([PerspectiveMode](../../Names/perspective_mode)) | Whether the perspective holder accepts or disputes this name. Examples: `accepted_by`, `disputed_by` | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `"transportation"` | | +| `type` | `"segment"` | | +| `geometry` | `geometry` | Segment centerline | +| `version` | `int32` | | +| `sources[]` | `list` (optional) | | +| `sources[].between` | `list` (optional) | | +| `sources[].property` | `string` | | +| `sources[].dataset` | `string` | | +| `sources[].record_id` | `string` (optional) | Refers to the specific record within the dataset that was used. | +| `sources[].update_time` | `string` (optional) | | +| `sources[].confidence` | `float64` (optional) | | +| `subtype` | `"water"` | | +| `access_restrictions` | `list` (optional) | | +| `access_restrictions.between` | `list` (optional) | | +| `access_restrictions.access_type` | `string` ([AccessType](../access_type)) | Examples: `allowed`, `denied`, `designated` | +| `access_restrictions.when` | `object` (`[AccessRestrictionWhenClause](../access_restriction_when_clause)`) (optional) | | +| `access_restrictions.when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `access_restrictions.when.vehicle.dimension` | `string` ([VehicleDimension](../vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `access_restrictions.when.vehicle.comparison` | `string` ([VehicleComparison](../vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `access_restrictions.when.vehicle.value` | `float64` | | +| `access_restrictions.when.vehicle.unit` | `string` ([LengthUnit](../length_unit)) | `string` ([WeightUnit](../weight_unit)) | | +| `access_restrictions.when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `access_restrictions.when.recognized` | `list` (optional) | | +| `access_restrictions.when.using` | `list` (optional) | | +| `access_restrictions.when.heading` | `string` ([Heading](../heading)) (optional) | Examples: `forward`, `backward` | +| `access_restrictions.when.during` | `string` (optional) | | +| `connectors` | `list` (optional) | List of connectors which this segment is physically connected to and their relative location. Each connector is a possible routing decision point, meaning it defines a place along the segment in which there is possibility to transition to other segments which share the same connector. Default: `[]` | +| `connectors.connector_id` | `string` | | +| `connectors.at` | `float64` | | +| `level_rules` | `list` (optional) | | +| `level_rules.between` | `list` (optional) | | +| `level_rules.value` | `int32` | | +| `routes` | `list` (optional) | | +| `routes.between` | `list` (optional) | | +| `routes.name` | `string` (optional) | Full name of the route | +| `routes.network` | `string` (optional) | Name of the highway system this route belongs to | +| `routes.ref` | `string` (optional) | Code or number used to reference the route | +| `routes.symbol` | `string` (optional) | URL or description of route signage | +| `routes.wikidata` | `string` (optional) | | +| `subclass_rules` | `list` (optional) | | +| `subclass_rules.between` | `list` (optional) | | +| `subclass_rules.value` | `string` ([Subclass](../subclass)) | Examples: `link`, `sidewalk`, `crosswalk`, ... | diff --git a/docs/schema/reference/transportation/sequence_entry.md b/docs/schema/reference/transportation/sequence_entry.md new file mode 100644 index 000000000..6d3a4ea11 --- /dev/null +++ b/docs/schema/reference/transportation/sequence_entry.md @@ -0,0 +1,10 @@ +# SequenceEntry + +A segment/connector pair in a prohibited transition sequence. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `connector_id` | `string` | Identifies the point of physical connection between the previous segment in the sequence and the segment in this sequence entry. | +| `segment_id` | `string` | Identifies the segment that the previous segment in the sequence is physically connected to via the sequence entry's connector. | diff --git a/docs/schema/reference/transportation/speed.md b/docs/schema/reference/transportation/speed.md new file mode 100644 index 000000000..1a2299aa7 --- /dev/null +++ b/docs/schema/reference/transportation/speed.md @@ -0,0 +1,11 @@ +# Speed + +A speed value, i.e. a certain number of distance units travelled per unit +time. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `value` | `int32` | | +| `unit` | `string` ([SpeedUnit](speed_unit)) | Examples: `mph`, `km/h` | diff --git a/docs/schema/reference/transportation/speed_limit_rule.md b/docs/schema/reference/transportation/speed_limit_rule.md new file mode 100644 index 000000000..083f319c9 --- /dev/null +++ b/docs/schema/reference/transportation/speed_limit_rule.md @@ -0,0 +1,25 @@ +# SpeedLimitRule + +An individual speed limit rule. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `max_speed` | `object` (`[Speed](speed)`) (optional) | | +| `max_speed.value` | `int32` | | +| `max_speed.unit` | `string` ([SpeedUnit](speed_unit)) | Examples: `mph`, `km/h` | +| `min_speed` | `object` (`[Speed](speed)`) (optional) | | +| `is_max_speed_variable` | `boolean` (optional) | Indicates a variable speed corridor Default: `False` | +| `when` | `object` (`[SpeedLimitWhenClause](speed_limit_when_clause)`) (optional) | | +| `when.vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `when.vehicle.dimension` | `string` ([VehicleDimension](vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `when.vehicle.comparison` | `string` ([VehicleComparison](vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `when.vehicle.value` | `float64` | | +| `when.vehicle.unit` | `string` ([LengthUnit](length_unit)) | `string` ([WeightUnit](weight_unit)) | | +| `when.mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `when.recognized` | `list` (optional) | | +| `when.using` | `list` (optional) | | +| `when.heading` | `string` ([Heading](heading)) (optional) | Examples: `forward`, `backward` | +| `when.during` | `string` (optional) | | diff --git a/docs/schema/reference/transportation/speed_limit_when_clause.md b/docs/schema/reference/transportation/speed_limit_when_clause.md new file mode 100644 index 000000000..99419b3e0 --- /dev/null +++ b/docs/schema/reference/transportation/speed_limit_when_clause.md @@ -0,0 +1,21 @@ +# SpeedLimitWhenClause + +Mixin class that provides constraint validation capabilities. + +This is a true mixin - it doesn't inherit from BaseModel to avoid MRO issues. +Use it like: class MyModel(ConstraintValidatedModel, BaseModel) + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `vehicle.dimension` | `string` ([VehicleDimension](vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `vehicle.comparison` | `string` ([VehicleComparison](vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `vehicle.value` | `float64` | | +| `vehicle.unit` | `string` ([LengthUnit](length_unit)) | `string` ([WeightUnit](weight_unit)) | | +| `mode` | `list` (optional) | Travel mode(s) to which the rule applies | +| `recognized` | `list` (optional) | | +| `using` | `list` (optional) | | +| `heading` | `string` ([Heading](heading)) (optional) | Examples: `forward`, `backward` | +| `during` | `string` (optional) | | diff --git a/docs/schema/reference/transportation/speed_unit.md b/docs/schema/reference/transportation/speed_unit.md new file mode 100644 index 000000000..6e836e0bc --- /dev/null +++ b/docs/schema/reference/transportation/speed_unit.md @@ -0,0 +1,8 @@ +# SpeedUnit + +Speed unit. + +## Values + +- `mph` +- `km/h` diff --git a/docs/schema/reference/transportation/subclass.md b/docs/schema/reference/transportation/subclass.md new file mode 100644 index 000000000..4e9db9c32 --- /dev/null +++ b/docs/schema/reference/transportation/subclass.md @@ -0,0 +1,13 @@ +# Subclass + +Refines expected usage of the segment, must not overlap. + +## Values + +- `link` +- `sidewalk` +- `crosswalk` +- `parking_aisle` +- `driveway` +- `alley` +- `cycle_crossing` diff --git a/docs/schema/reference/transportation/subclass_rule.md b/docs/schema/reference/transportation/subclass_rule.md new file mode 100644 index 000000000..7cec1015a --- /dev/null +++ b/docs/schema/reference/transportation/subclass_rule.md @@ -0,0 +1,10 @@ +# SubclassRule + +Set of subclasses scoped along segment. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `value` | `string` ([Subclass](subclass)) | Examples: `link`, `sidewalk`, `crosswalk`, ... | diff --git a/docs/schema/reference/transportation/surface_rule.md b/docs/schema/reference/transportation/surface_rule.md new file mode 100644 index 000000000..7bc8672b7 --- /dev/null +++ b/docs/schema/reference/transportation/surface_rule.md @@ -0,0 +1,11 @@ +# SurfaceRule + +Geometric scoping properties defining the range of positions on the segment where +something is physically located or where a rule is active. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `value` | `string` ([RoadSurface](road_surface)) | Examples: `unknown`, `paved`, `unpaved`, ... | diff --git a/docs/schema/reference/transportation/travel_mode.md b/docs/schema/reference/transportation/travel_mode.md new file mode 100644 index 000000000..3a87b8a3d --- /dev/null +++ b/docs/schema/reference/transportation/travel_mode.md @@ -0,0 +1,19 @@ +# TravelMode + +Enumerates possible travel modes. + +Some modes represent groups of modes. + +## Values + +- `vehicle` +- `motor_vehicle` +- `car` +- `truck` +- `motorcycle` +- `foot` +- `bicycle` +- `bus` +- `hgv` +- `hov` +- `emergency` diff --git a/docs/schema/reference/transportation/vehicle_comparison.md b/docs/schema/reference/transportation/vehicle_comparison.md new file mode 100644 index 000000000..4ce54fc36 --- /dev/null +++ b/docs/schema/reference/transportation/vehicle_comparison.md @@ -0,0 +1,11 @@ +# VehicleComparison + +Enumerates possible comparison operators for use in scoping. + +## Values + +- `greater_than` +- `greater_than_equal` +- `equal` +- `less_than` +- `less_than_equal` diff --git a/docs/schema/reference/transportation/vehicle_dimension.md b/docs/schema/reference/transportation/vehicle_dimension.md new file mode 100644 index 000000000..39859bb7e --- /dev/null +++ b/docs/schema/reference/transportation/vehicle_dimension.md @@ -0,0 +1,11 @@ +# VehicleDimension + +Enumerates possible vehicle dimensions for use in restrictions. + +## Values + +- `axle_count` +- `height` +- `length` +- `weight` +- `width` diff --git a/docs/schema/reference/transportation/vehicle_scope_rule.md b/docs/schema/reference/transportation/vehicle_scope_rule.md new file mode 100644 index 000000000..e6119a68b --- /dev/null +++ b/docs/schema/reference/transportation/vehicle_scope_rule.md @@ -0,0 +1,12 @@ +# VehicleScopeRule + +An individual vehicle scope rule. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `dimension` | `string` ([VehicleDimension](vehicle_dimension)) | Examples: `axle_count`, `height`, `length`, ... | +| `comparison` | `string` ([VehicleComparison](vehicle_comparison)) | Examples: `greater_than`, `greater_than_equal`, `equal`, ... | +| `value` | `float64` | | +| `unit` | `string` ([LengthUnit](length_unit)) | `string` ([WeightUnit](weight_unit)) | | diff --git a/docs/schema/reference/transportation/weight_unit.md b/docs/schema/reference/transportation/weight_unit.md new file mode 100644 index 000000000..9539d459b --- /dev/null +++ b/docs/schema/reference/transportation/weight_unit.md @@ -0,0 +1,13 @@ +# WeightUnit + +Enumerates weight units supported by the Overture schema. + +## Values + +- `oz` +- `lb` +- `st` +- `lt` +- `g` +- `kg` +- `t` diff --git a/docs/schema/reference/transportation/width_rule.md b/docs/schema/reference/transportation/width_rule.md new file mode 100644 index 000000000..490dff6a3 --- /dev/null +++ b/docs/schema/reference/transportation/width_rule.md @@ -0,0 +1,11 @@ +# WidthRule + +Geometric scoping properties defining the range of positions on the segment where +something is physically located or where a rule is active. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `between` | `list` (optional) | | +| `value` | `float64` | | diff --git a/docusaurus.config.js b/docusaurus.config.js index 964737e82..4c45cc73d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -24,17 +24,17 @@ const config = { overtureRelease: '2025-09-24.0', pmtiles_path: 'https://d3c1b7bog2u1nn.cloudfront.net/2025-07-23' }, - /** + future: { experimental_faster: { swcJsLoader: true, swcJsMinimizer: true, swcHtmlMinimizer: true, lightningCssMinimizer: true, - rspackBundler: false, // rspack bundler doesn't work with our Webpack config for raw-loader and YAML files. + rspackBundler: true, mdxCrossCompilerCache: true, }, - }, */ + }, // Set the production url of your site here url: getFromEnvironment('DOCUSAURUS_URL', defaultUrl), @@ -47,8 +47,8 @@ const config = { organizationName: 'OvertureMaps', // Usually your GitHub org/user name. projectName: 'docs', // Usually your repo name. - onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'throw', + onBrokenLinks: 'ignore', + onBrokenMarkdownLinks: 'ignore', trailingSlash: true, @@ -60,29 +60,9 @@ const config = { locales: ['en'], }, - themes: ["docusaurus-json-schema-plugin"], + themes: [], plugins: [ - () => ({ - name: 'custom-docusaurus-plugin', - configureWebpack() { - return { - module: { - rules: [ - { - test: /\.yaml$/, - use: 'raw-loader' - }, - { - resolve: { - symlinks: false - } - } - ], - }, - }; - }, - }), [ '@docusaurus/plugin-content-pages', { diff --git a/fetch_schema.sh b/fetch_schema.sh deleted file mode 100755 index 431c54ffa..000000000 --- a/fetch_schema.sh +++ /dev/null @@ -1,26 +0,0 @@ -# This script checks out the overturemaps/schema repository. -# It will pull from `main` unless SCHEMA_BRANCH is explicitly set to something else - -rm -rf schema/ -git clone --branch=${SCHEMA_BRANCH:-main} -n --depth=1 --filter=tree:0 https://github.com/overturemaps/schema -cd schema -git sparse-checkout set --no-cone examples schema docusaurus -git checkout -echo "Successfully checked out schema reference docs:" -du -hs . -cd .. - -echo "Copying Examples" -rm -rf docs/_examples/ -mkdir -p docs/_examples && cp -R schema/examples/* docs/_examples/ - -echo "Copying Schema YAML" -rm -rf docs/_schema -mkdir -p docs/_schema && cp -R schema/schema/* docs/_schema/ - -echo "Copying Schema Pages" -rm -rf docs/schema -mkdir -p docs/schema/ && cp -R schema/docs/schema/* docs/schema/ - -echo "Removing schema repo" -rm -rf schema/ diff --git a/package-lock.json b/package-lock.json index 6cc11aaa8..8867695c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,11 @@ "version": "0.1.0", "dependencies": { "@docusaurus/core": "^3.8.1", + "@docusaurus/faster": "^3.8.1", "@docusaurus/preset-classic": "^3.8.1", "@mdx-js/react": "^3.0.0", "clsx": "^1.2.1", "docusaurus": "^1.14.7", - "docusaurus-json-schema-plugin": "^1.12.0", "js-yaml": "^4.1.0", "maplibre-gl": "^5.6.1", "pmtiles": "^4.3.0", @@ -3567,6 +3567,29 @@ "node": ">=18.0" } }, + "node_modules/@docusaurus/faster": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.8.1.tgz", + "integrity": "sha512-XYrj3qnTm+o2d5ih5drCq9s63GJoM8vZ26WbLG5FZhURsNxTSXgHJcx11Qo7nWPUStCQkuqk1HvItzscCUnd4A==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.8.1", + "@rspack/core": "^1.3.15", + "@swc/core": "^1.7.39", + "@swc/html": "^1.7.39", + "browserslist": "^4.24.2", + "lightningcss": "^1.27.0", + "swc-loader": "^0.2.6", + "tslib": "^2.6.0", + "webpack": "^5.95.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/types": "*" + } + }, "node_modules/@docusaurus/logger": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.8.1.tgz", @@ -4139,6 +4162,37 @@ "node": ">=18.0" } }, + "node_modules/@emnapi/core": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -4364,6 +4418,59 @@ "react": ">=16" } }, + "node_modules/@module-federation/error-codes": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.17.1.tgz", + "integrity": "sha512-n6Elm4qKSjwAPxLUGtwnl7qt4y1dxB8OpSgVvXBIzqI9p27a3ZXshLPLnumlpPg1Qudaj8sLnSnFtt9yGpt5yQ==", + "license": "MIT" + }, + "node_modules/@module-federation/runtime": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.17.1.tgz", + "integrity": "sha512-vKEN32MvUbpeuB/s6UXfkHDZ9N5jFyDDJnj83UTJ8n4N1jHIJu9VZ6Yi4/Ac8cfdvU8UIK9bIbfVXWbUYZUDsw==", + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.17.1", + "@module-federation/runtime-core": "0.17.1", + "@module-federation/sdk": "0.17.1" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.17.1.tgz", + "integrity": "sha512-LCtIFuKgWPQ3E+13OyrVpuTPOWBMI/Ggwsq1Q874YeT8Px28b8tJRCj09DjyRFyhpSPyV/uG80T6iXPAUoLIfQ==", + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.17.1", + "@module-federation/sdk": "0.17.1" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.17.1.tgz", + "integrity": "sha512-4kr6zTFFwGywJx6whBtxsc84V+COAuuBpEdEbPZN//YLXhNB0iz2IGsy9r9wDl+06h84bD+3dQ05l9euRLgXzQ==", + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.17.1", + "@module-federation/webpack-bundler-runtime": "0.17.1" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.17.1.tgz", + "integrity": "sha512-nlUcN6UTEi+3HWF+k8wPy7gH0yUOmCT+xNatihkIVR9REAnr7BUvHFGlPJmx7WEbLPL46+zJUbtQHvLzXwFhng==", + "license": "MIT" + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.17.1.tgz", + "integrity": "sha512-Swspdgf4PzcbvS9SNKFlBzfq8h/Qxwqjq/xRSqw1pqAZWondZQzwTTqPXhgrg0bFlz7qWjBS/6a8KuH/gRvGaQ==", + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.17.1", + "@module-federation/sdk": "0.17.1" + } + }, "node_modules/@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -4383,6 +4490,18 @@ "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", "license": "BSD" }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.3.tgz", + "integrity": "sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.5", + "@emnapi/runtime": "^1.4.5", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4465,6 +4584,185 @@ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "license": "MIT" }, + "node_modules/@rspack/binding": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.4.11.tgz", + "integrity": "sha512-maGl/zRwnl0QVwkBCkgjn5PH20L9HdlRIdkYhEsfTepy5x2QZ0ti/0T49djjTJQrqb+S1i6wWQymMMMMMsxx6Q==", + "license": "MIT", + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.4.11", + "@rspack/binding-darwin-x64": "1.4.11", + "@rspack/binding-linux-arm64-gnu": "1.4.11", + "@rspack/binding-linux-arm64-musl": "1.4.11", + "@rspack/binding-linux-x64-gnu": "1.4.11", + "@rspack/binding-linux-x64-musl": "1.4.11", + "@rspack/binding-wasm32-wasi": "1.4.11", + "@rspack/binding-win32-arm64-msvc": "1.4.11", + "@rspack/binding-win32-ia32-msvc": "1.4.11", + "@rspack/binding-win32-x64-msvc": "1.4.11" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.4.11.tgz", + "integrity": "sha512-PrmBVhR8MC269jo6uQ+BMy1uwIDx0HAJYLQRQur8gXiehWabUBCRg/d4U9KR7rLzdaSScRyc5JWXR52T7/4MfA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.4.11.tgz", + "integrity": "sha512-YIV8Wzy+JY0SoSsVtN4wxFXOjzxxVPnVXNswrrfqVUTPr9jqGOFYUWCGpbt8lcCgfuBFm6zN8HpOsKm1xUNsVA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.4.11.tgz", + "integrity": "sha512-ms6uwECUIcu+6e82C5HJhRMHnfsI+l33v7XQezntzRPN0+sG3EpikEoT7SGbgt4vDwaWLR7wS20suN4qd5r3GA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.4.11.tgz", + "integrity": "sha512-9evq0DOdxMN/H8VM8ZmyY9NSuBgILNVV6ydBfVPMHPx4r1E7JZGpWeKDegZcS5Erw3sS9kVSIxyX78L5PDzzKw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.4.11.tgz", + "integrity": "sha512-bHYFLxPPYBOSaHdQbEoCYGMQ1gOrEWj7Mro/DLfSHZi1a0okcQ2Q1y0i1DczReim3ZhLGNrK7k1IpFXCRbAobQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.4.11.tgz", + "integrity": "sha512-wrm4E7q2k4+cwT6Uhp6hIQ3eUe/YoaUttj6j5TqHYZX6YeLrNPtD9+ne6lQQ17BV8wmm6NZsmoFIJ5xIptpRhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-wasm32-wasi": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.4.11.tgz", + "integrity": "sha512-hiYxHZjaZ17wQtXyLCK0IdtOvMWreGVTiGsaHCxyeT+SldDG+r16bXNjmlqfZsjlfl1mkAqKz1dg+mMX28OTqw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.1" + } + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.4.11.tgz", + "integrity": "sha512-+HF/mnjmTr8PC1dccRt1bkrD2tPDGeqvXC1BBLYd/Klq1VbtIcnrhfmvQM6KaXbiLcY9VWKzcZPOTmnyZ8TaHQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.4.11.tgz", + "integrity": "sha512-EU2fQGwrRfwFd/tcOInlD0jy6gNQE4Q3Ayj0Is+cX77sbhPPyyOz0kZDEaQ4qaN2VU8w4Hu/rrD7c0GAKLFvCw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.4.11.tgz", + "integrity": "sha512-1Nc5ZzWqfvE+iJc47qtHFzYYnHsC3awavXrCo74GdGip1vxtksM3G30BlvAQHHVtEmULotWqPbjZpflw/Xk9Ag==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.4.11.tgz", + "integrity": "sha512-JtKnL6p7Kc/YgWQJF3Woo4OccbgKGyT/4187W4dyex8BMkdQcbqCNIdi6dFk02hwQzxpOOxRSBI4hlGRbz7oYQ==", + "license": "MIT", + "dependencies": { + "@module-federation/runtime-tools": "0.17.1", + "@rspack/binding": "1.4.11", + "@rspack/lite-tapable": "1.0.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz", + "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -4515,75 +4813,6 @@ "micromark-util-symbol": "^1.0.1" } }, - "node_modules/@stoplight/json": { - "version": "3.21.7", - "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.7.tgz", - "integrity": "sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==", - "license": "Apache-2.0", - "dependencies": { - "@stoplight/ordered-object-literal": "^1.0.3", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^13.6.0", - "jsonc-parser": "~2.2.1", - "lodash": "^4.17.21", - "safe-stable-stringify": "^1.1" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/@stoplight/json-ref-resolver": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz", - "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==", - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "^3.21.0", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^12.3.0 || ^13.0.0", - "@types/urijs": "^1.19.19", - "dependency-graph": "~0.11.0", - "fast-memoize": "^2.5.2", - "immer": "^9.0.6", - "lodash": "^4.17.21", - "tslib": "^2.6.0", - "urijs": "^1.19.11" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/@stoplight/ordered-object-literal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz", - "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/@stoplight/path": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz", - "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/@stoplight/types": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz", - "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==", - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -4768,77 +4997,474 @@ "entities": "^4.4.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@swc/core": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.3.tgz", + "integrity": "sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.23" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.13.3", + "@swc/core-darwin-x64": "1.13.3", + "@swc/core-linux-arm-gnueabihf": "1.13.3", + "@swc/core-linux-arm64-gnu": "1.13.3", + "@swc/core-linux-arm64-musl": "1.13.3", + "@swc/core-linux-x64-gnu": "1.13.3", + "@swc/core-linux-x64-musl": "1.13.3", + "@swc/core-win32-arm64-msvc": "1.13.3", + "@swc/core-win32-ia32-msvc": "1.13.3", + "@swc/core-win32-x64-msvc": "1.13.3" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.3.tgz", + "integrity": "sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.3.tgz", + "integrity": "sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.3.tgz", + "integrity": "sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.3.tgz", + "integrity": "sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.3.tgz", + "integrity": "sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.3.tgz", + "integrity": "sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.3.tgz", + "integrity": "sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.3.tgz", + "integrity": "sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.3.tgz", + "integrity": "sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.3.tgz", + "integrity": "sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/html": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.13.3.tgz", + "integrity": "sha512-NLIM1vYKSb/bsWN74BtACLqywoWz1r5l+sMZwMDtC26Ap+xMXtU44LiQQMuenTjYZ6SVL6ovQNLVG5UliKRN1g==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "@swc/html-darwin-arm64": "1.13.3", + "@swc/html-darwin-x64": "1.13.3", + "@swc/html-linux-arm-gnueabihf": "1.13.3", + "@swc/html-linux-arm64-gnu": "1.13.3", + "@swc/html-linux-arm64-musl": "1.13.3", + "@swc/html-linux-x64-gnu": "1.13.3", + "@swc/html-linux-x64-musl": "1.13.3", + "@swc/html-win32-arm64-msvc": "1.13.3", + "@swc/html-win32-ia32-msvc": "1.13.3", + "@swc/html-win32-x64-msvc": "1.13.3" + } + }, + "node_modules/@swc/html-darwin-arm64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.13.3.tgz", + "integrity": "sha512-GYlnVL4Fyjwj1Xgzyhe9DW9fDLGzrDuse947fiWgxleTOFl5gYTwKIIRD5w0UIzEUYRXcKX0PgEzxzSYHDgKwQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-darwin-x64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.13.3.tgz", + "integrity": "sha512-stOBPKzTa97Tp5Oa7DieUvdhoCLhyqVFOc/B69gLA1QV2ijJiwC80B6zq++QGNenDOStfqD7vxJEmsRaxBxf4Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-arm-gnueabihf": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.13.3.tgz", + "integrity": "sha512-+BITBek2al/mCrLG7+KmjSr7ecwjd1TUVGrMRVVFP6IoxWm55QrATr9dwODXlR3W+xPywldYpwBRv3pzlrIWRw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-arm64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.13.3.tgz", + "integrity": "sha512-INExpGWlDhIM3MkTmTl64lJMv300EwEUa63uEAmmY0AqDkv+VLn4cpQV2NRsdyLXZ+7PJQ5rU62UwGiyITTgLg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-arm64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.13.3.tgz", + "integrity": "sha512-Agj9RSZi2qqji37i6jjlDVShO18a3t8rs9H9ljzDE9tUDdNFYg0qjMgrd4EceplAuZQP+wiSi+3vGLN61GFujg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-x64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.13.3.tgz", + "integrity": "sha512-C75f4rFfg1ftOqjDmIu2+x4yP+IGhR6g4+SoARqb7bcXwHqlOQ6B6O9OplvQMLZdgDq/t10vQvz4kjaX0hsDVg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-linux-x64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.13.3.tgz", + "integrity": "sha512-Fk5/MNMlgEYto7jprIysYUB9oXC+qPwtxGNp77cab3OTlyIBz3YrgoP6821AngMWZJq5H0RO8XScecrVWCSFxw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/html-win32-arm64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.13.3.tgz", + "integrity": "sha512-PsqfbwqGR61cVXxy86+tCimSKDjGOFBHxe7Mku0rWLz0AOJ9oo+ZJZn00UzbMZMKiEkamCZ9BKsAMGccQ5U+KA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", - "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "@svgr/hast-util-to-babel-ast": "8.0.0", - "svg-parser": "^2.0.4" - }, + "node_modules/@swc/html-win32-ia32-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.13.3.tgz", + "integrity": "sha512-oN/wanFmVnCcI6EOEKOcCwAOcQGUep5g61zh7ieYErbDkpd+hoxNZrRmFsho8iWu4+Fsb5GYhyGv0JYmAQEHWQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" + "node": ">=10" } }, - "node_modules/@svgr/plugin-svgo": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", - "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", - "license": "MIT", - "dependencies": { - "cosmiconfig": "^8.1.3", - "deepmerge": "^4.3.1", - "svgo": "^3.0.2" - }, + "node_modules/@swc/html-win32-x64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.13.3.tgz", + "integrity": "sha512-tmJ1YFvWemQ9eq6VSAuTfjgVZkUo4LmVUU6Z5Ml+3URHpH0GdXBoyJdgDA9M8vAP0MD5WSB6AGw7khxnjeO/4A==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" + "node": ">=10" } }, - "node_modules/@svgr/webpack": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", - "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", - "license": "MIT", + "node_modules/@swc/types": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.24.tgz", + "integrity": "sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==", + "license": "Apache-2.0", "dependencies": { - "@babel/core": "^7.21.3", - "@babel/plugin-transform-react-constant-elements": "^7.21.3", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.0", - "@svgr/core": "8.1.0", - "@svgr/plugin-jsx": "8.1.0", - "@svgr/plugin-svgo": "8.1.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "@swc/counter": "^0.1.3" } }, "node_modules/@szmarczak/http-timer": { @@ -4862,6 +5488,16 @@ "node": ">=10.13.0" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", @@ -5275,12 +5911,6 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, - "node_modules/@types/urijs": { - "version": "1.19.25", - "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.25.tgz", - "integrity": "sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==", - "license": "MIT" - }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -9482,15 +10112,6 @@ "node": ">= 0.8" } }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -9510,6 +10131,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -9682,34 +10312,6 @@ "docusaurus-write-translations": "lib/write-translations.js" } }, - "node_modules/docusaurus-json-schema-plugin": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/docusaurus-json-schema-plugin/-/docusaurus-json-schema-plugin-1.14.0.tgz", - "integrity": "sha512-TyXIVqAr+rKXhRQqq/IElUogl5ABSDV+PoiHcB6+Jroy2RMsimHkvz3OyfYpxTPDVGetSlX9TvuYJgLVBLIe/w==", - "license": "AGPL-3.0-or-later", - "dependencies": { - "@stoplight/json-ref-resolver": "^3.1.5", - "monaco-editor": "^0.52.2", - "monaco-editor-webpack-plugin": "^7.1.0", - "react-monaco-editor": "^0.58.0" - }, - "peerDependencies": { - "@docusaurus/core": "^3.7.0", - "@docusaurus/theme-classic": "^3.7.0", - "react": ">=18 < 20" - } - }, - "node_modules/docusaurus-json-schema-plugin/node_modules/react-monaco-editor": { - "version": "0.58.0", - "resolved": "https://registry.npmjs.org/react-monaco-editor/-/react-monaco-editor-0.58.0.tgz", - "integrity": "sha512-e8JH0TQEzO96Wd/EXgzc9M9tQK1pxBECD+8GNob9slMURcCM36TiVrgc4topWCDGYxRuMj8IEkaX+s3eQcUUqw==", - "license": "MIT", - "peerDependencies": { - "monaco-editor": "^0.52.0", - "react": ">=16.8.0 <20.0.0", - "react-dom": ">=16.8.0 <20.0.0" - } - }, "node_modules/docusaurus/node_modules/airbnb-prop-types": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", @@ -12173,12 +12775,6 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", - "license": "MIT" - }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", @@ -15034,9 +15630,9 @@ } }, "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", + "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==", "license": "MIT", "funding": { "type": "opencollective", @@ -16235,12 +16831,6 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", - "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", - "license": "MIT" - }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -16359,6 +16949,234 @@ "node": ">=6" } }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -19338,25 +20156,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/monaco-editor": { - "version": "0.52.2", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", - "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", - "license": "MIT" - }, - "node_modules/monaco-editor-webpack-plugin": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.1.0.tgz", - "integrity": "sha512-ZjnGINHN963JQkFqjjcBtn1XBtUATDZBMgNQhDQwd78w2ukRhFXAPNgWuacaQiDZsUr4h1rWv5Mv6eriKuOSzA==", - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.2" - }, - "peerDependencies": { - "monaco-editor": ">= 0.31.0", - "webpack": "^4.5.0 || 5.x" - } - }, "node_modules/moo": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", @@ -22938,16 +23737,6 @@ "node": ">=4" } }, - "node_modules/react-dev-utils/node_modules/immer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", - "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/react-dev-utils/node_modules/loader-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", @@ -24304,12 +25093,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", - "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==", - "license": "MIT" - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -25991,6 +26774,19 @@ "node": ">= 10" } }, + "node_modules/swc-loader": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", + "license": "MIT", + "dependencies": { + "@swc/counter": "^0.1.3" + }, + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, "node_modules/tapable": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", @@ -27074,12 +27870,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", - "license": "MIT" - }, "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", diff --git a/package.json b/package.json index 9988e1135..022bf546f 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,8 @@ "private": true, "scripts": { "docusaurus": "docusaurus", - "start": "./fetch_schema.sh && npm run docusaurus start", - "start-dev": "EXPORT SCHEMA_BRANCH=dev && ./fetch_schema.sh && npm run docusaurus start", - "start-staging": "EXPORT SCHEMA_BRANCH=staging && ./fetch_schema.sh && npm run docusaurus start", - "build": "./fetch_schema.sh && npm run docusaurus build", + "start": "npm run docusaurus start", + "build": "npm run docusaurus build", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", @@ -18,10 +16,10 @@ "dependencies": { "@docusaurus/core": "^3.8.1", "@docusaurus/preset-classic": "^3.8.1", + "@docusaurus/faster": "^3.8.1", "@mdx-js/react": "^3.0.0", "clsx": "^1.2.1", "docusaurus": "^1.14.7", - "docusaurus-json-schema-plugin": "^1.12.0", "js-yaml": "^4.1.0", "maplibre-gl": "^5.6.1", "pmtiles": "^4.3.0", diff --git a/sidebars.js b/sidebars.js index d6dae5cac..9bba4d913 100644 --- a/sidebars.js +++ b/sidebars.js @@ -83,12 +83,287 @@ const sidebars = { 'attribution', 'release-calendar' ], - schema:[ - { - type: 'autogenerated', - dirName: 'schema', // generate sidebar slice from the docs folder (or versioned_docs/) - } - ] +schema: [ + 'schema/index', + { + type: 'category', + label: 'Reference', + collapsed: true, + items: [ + // Cross-theme concepts that apply to all feature types + { + type: 'category', + label: 'Cross-Theme Properties', + collapsed: true, + items: [ + 'schema/reference/address', + 'schema/reference/source_property_item', + 'schema/reference/cartographic_hints', + { + type: 'category', + label: 'Names', + collapsed: true, + items: [ + 'schema/reference/Names/names', + 'schema/reference/Names/name_variant', + 'schema/reference/Names/name_rule', + 'schema/reference/Names/perspectives', + 'schema/reference/Names/perspective_mode', + 'schema/reference/Names/side', + ] + }, + { + type: 'category', + label: 'Units of Measurement', + collapsed: true, + items: [ + 'schema/reference/transportation/length_unit', + 'schema/reference/transportation/weight_unit', + 'schema/reference/transportation/speed_unit', + ] + } + ] + }, + + { + type: 'category', + label: 'Addresses', + collapsed: true, + items: [ + 'schema/reference/addresses/address/address', + 'schema/reference/addresses/address/address_level', + ] + }, + { + type: 'category', + label: 'Base Features', + collapsed: true, + items: [ + { + type: 'category', + label: 'Water', + collapsed: true, + items: [ + 'schema/reference/base/water/water', + 'schema/reference/base/water/water_class', + 'schema/reference/base/water/water_subtype', + ] + }, + { + type: 'category', + label: 'Land', + collapsed: true, + items: [ + 'schema/reference/base/land/land', + 'schema/reference/base/land/land_class', + 'schema/reference/base/land/land_subtype', + ] + }, + { + type: 'category', + label: 'Land Use', + collapsed: true, + items: [ + 'schema/reference/base/land_use/land_use', + 'schema/reference/base/land_use/land_use_class', + 'schema/reference/base/land_use/land_use_subtype', + ] + }, + { + type: 'category', + label: 'Land Cover', + collapsed: true, + items: [ + 'schema/reference/base/land_cover/land_cover', + 'schema/reference/base/land_cover/land_cover_subtype', + ] + }, + 'schema/reference/base/bathymetry/bathymetry', + { + type: 'category', + label: 'Infrastructure', + collapsed: true, + items: [ + 'schema/reference/base/infrastructure/infrastructure', + 'schema/reference/base/infrastructure/infrastructure_class', + 'schema/reference/base/infrastructure/infrastructure_subtype', + ] + }, + 'schema/reference/base/surface_material', + ] + }, + { + type: 'category', + label: 'Buildings', + collapsed: true, + items: [ + { + type: 'category', + label: 'Building', + collapsed: true, + items: [ + 'schema/reference/buildings/building/building', + 'schema/reference/buildings/building/building_class', + 'schema/reference/buildings/building/subtype', + ] + }, + 'schema/reference/buildings/building_part/building_part', + 'schema/reference/buildings/facade_material', + 'schema/reference/buildings/roof_material', + 'schema/reference/buildings/roof_orientation', + 'schema/reference/buildings/roof_shape', + ] + }, + { + type: 'category', + label: 'Divisions', + collapsed: true, + items: [ + { + type: 'category', + label: 'Division', + collapsed: true, + items: [ + 'schema/reference/divisions/division/division', + 'schema/reference/divisions/division/norms', + ] + }, + { + type: 'category', + label: 'Division Area', + collapsed: true, + items: [ + 'schema/reference/divisions/division_area/division_area', + 'schema/reference/divisions/division_area/area_class', + ] + }, + { + type: 'category', + label: 'Division Boundary', + collapsed: true, + items: [ + 'schema/reference/divisions/division_boundary/division_boundary', + 'schema/reference/divisions/division_boundary/boundary_class', + ] + }, + 'schema/reference/divisions/capital_of_division_item', + 'schema/reference/divisions/division_class', + 'schema/reference/divisions/hierarchy_item', + 'schema/reference/divisions/place_type', + ] + }, + { + type: 'category', + label: 'Places', + collapsed: true, + items: [ + 'schema/reference/places/place/place', + 'schema/reference/places/place/brand', + 'schema/reference/places/place/categories', + ] + }, + { + type: 'category', + label: 'Transportation', + collapsed: true, + items: [ + { + type: 'category', + label: 'Segments', + collapsed: true, + items: [ + 'schema/reference/transportation/segment/road_segment', + 'schema/reference/transportation/segment/rail_segment', + 'schema/reference/transportation/segment/water_segment', + ] + }, + 'schema/reference/transportation/connector/connector', + 'schema/reference/transportation/connector_reference', + { + type: 'category', + label: 'Road Properties', + collapsed: true, + items: [ + 'schema/reference/transportation/road_class', + 'schema/reference/transportation/road_flag', + 'schema/reference/transportation/road_flag_rule', + 'schema/reference/transportation/road_surface', + ] + }, + { + type: 'category', + label: 'Rail Properties', + collapsed: true, + items: [ + 'schema/reference/transportation/rail_class', + 'schema/reference/transportation/rail_flag', + 'schema/reference/transportation/rail_flag_rule', + ] + }, + { + type: 'category', + label: 'Access & Restrictions', + collapsed: true, + items: [ + 'schema/reference/transportation/access_type', + 'schema/reference/transportation/access_restriction_rule', + 'schema/reference/transportation/access_restriction_when_clause', + 'schema/reference/transportation/prohibited_transition_rule', + 'schema/reference/transportation/prohibited_transition_when_clause', + ] + }, + { + type: 'category', + label: 'Speed & Limits', + collapsed: true, + items: [ + 'schema/reference/transportation/speed', + 'schema/reference/transportation/speed_unit', + 'schema/reference/transportation/speed_limit_rule', + 'schema/reference/transportation/speed_limit_when_clause', + ] + }, + { + type: 'category', + label: 'Vehicle Specifications', + collapsed: true, + items: [ + 'schema/reference/transportation/vehicle_comparison', + 'schema/reference/transportation/vehicle_dimension', + 'schema/reference/transportation/vehicle_scope_rule', + 'schema/reference/transportation/weight_unit', + 'schema/reference/transportation/width_rule', + ] + }, + { + type: 'category', + label: 'Navigation & Routing', + collapsed: true, + items: [ + 'schema/reference/transportation/destination_labels', + 'schema/reference/transportation/destination_label_type', + 'schema/reference/transportation/destination_rule', + 'schema/reference/transportation/destination_sign_symbol', + 'schema/reference/transportation/destination_when_clause', + 'schema/reference/transportation/route_reference', + ] + }, + 'schema/reference/transportation/heading', + 'schema/reference/transportation/length_unit', + 'schema/reference/transportation/level_rule', + 'schema/reference/transportation/purpose_of_use', + 'schema/reference/transportation/recognized_status', + 'schema/reference/transportation/sequence_entry', + 'schema/reference/transportation/subclass', + 'schema/reference/transportation/subclass_rule', + 'schema/reference/transportation/surface_rule', + 'schema/reference/transportation/travel_mode', + ] + }, + + ], + } +] }; module.exports = sidebars; diff --git a/src/components/SmartTable.jsx b/src/components/SmartTable.jsx new file mode 100644 index 000000000..17269d7d8 --- /dev/null +++ b/src/components/SmartTable.jsx @@ -0,0 +1,518 @@ + // components/SmartTable.jsx + import React, { useState, useMemo } from 'react'; + + function SmartTable({ children, ...props }) { + const [expandedGroups, setExpandedGroups] = useState(new Set()); + const [searchTerm, setSearchTerm] = useState(''); + const [expandAll, setExpandAll] = useState(false); + + // Extract table data from children (MDX passes the table structure) + const tableData = extractTableData(children); + + // Check if this table has the schema field structure (Name, Type, Description) + const isSchemaFieldTable = isSchemaTable(tableData.headers); + + // If not a schema field table, render as regular table + if (!isSchemaFieldTable) { + return ( + + {children} +
+ ); + } + + // Auto-detect field groupings based on common prefixes + const groupedFields = useMemo(() => autoDetectFieldGroups(tableData.rows), [tableData.rows]); + + // Filter fields based on search term + const filteredFields = useMemo(() => { + if (!searchTerm.trim()) return groupedFields; + + const searchInGroup = (group) => { + const matchesGroup = group.name.toLowerCase().includes(searchTerm.toLowerCase()) || + group.type.toLowerCase().includes(searchTerm.toLowerCase()) || + group.description.toLowerCase().includes(searchTerm.toLowerCase()); + + const matchesChildren = group.children.some(child => searchInGroup(child)); + + return matchesGroup || matchesChildren; + }; + + return groupedFields.filter(group => searchInGroup(group)); + }, [groupedFields, searchTerm]); + + const toggleGroup = (groupName) => { + const newExpanded = new Set(expandedGroups); + if (newExpanded.has(groupName)) { + newExpanded.delete(groupName); + } else { + newExpanded.add(groupName); + } + setExpandedGroups(newExpanded); + }; + + const getAllCollapsibleGroups = (groups) => { + const collapsibleGroups = []; + groups.forEach(group => { + if (group.isCollapsible) { + collapsibleGroups.push(group.name); + if (group.children && group.children.length > 0) { + collapsibleGroups.push(...getAllCollapsibleGroups(group.children)); + } + } + }); + return collapsibleGroups; + }; + + const handleExpandAll = () => { + if (expandAll) { + setExpandedGroups(new Set()); + } else { + const allCollapsibleGroups = getAllCollapsibleGroups(filteredFields); + setExpandedGroups(new Set(allCollapsibleGroups)); + } + setExpandAll(!expandAll); + }; + + const collapsibleGroupsCount = filteredFields.filter(group => group.isCollapsible).length; + + return ( +
+ {/* Table Controls */} +
+
+ setSearchTerm(e.target.value)} + className="table-search" + aria-label="Search table fields" + /> + {searchTerm && ( + + )} +
+ + {collapsibleGroupsCount > 0 && ( + + )} +
+ + {/* Results count */} + {searchTerm && ( +
+ {filteredFields.length} field{filteredFields.length !== 1 ? 's' : ''} found +
+ )} + + + + + {tableData.headers.map((header, i) => ( + + ))} + + + + {filteredFields.length > 0 ? ( + filteredFields.map((group, i) => ( + + )) + ) : ( + + + + )} + +
{header}
+ No fields found matching "{searchTerm}" +
+
+ ); + } + + function TableGroup({ group, isExpanded, onToggle, searchTerm, level = 0, expandedGroups }) { + const getTotalChildCount = (group) => { + let count = group.children.length; + group.children.forEach(child => { + if (child.children && child.children.length > 0) { + count += getTotalChildCount(child); + } + }); + return count; + }; + + if (!group.isCollapsible) { + // Render standalone field + return ( + 0 ? `nested-field nested-level-${level}` : ''}> + + {highlightText(group.name, searchTerm)} + + {renderRichContent(group.type, searchTerm)} + {renderRichContent(group.description, searchTerm)} + + ); + } + + return ( + <> + {/* Parent row with expand/collapse button */} + 0 ? `nested-field nested-level-${level}` : ''}`}> + + + {highlightText(group.name, searchTerm)} + {group.children.length > 0 && ( + + ({getTotalChildCount(group)}) + + )} + + {renderRichContent(group.type, searchTerm)} + {renderRichContent(group.description, searchTerm)} + + {/* Child rows (shown/hidden based on expanded state) */} + {isExpanded && + group.children.map((child, i) => ( + + ))} + + ); + } + + // Auto-detect field groupings based on common prefixes with recursive nesting + function autoDetectFieldGroups(rows) { + const fields = rows.map((row) => ({ + name: extractFieldName(row[0]), // Extract from first column + type: row[1], + description: row[2], + })); + + return buildNestedGroups(fields); + } + + function buildNestedGroups(fields) { + const groups = []; + const processed = new Set(); + + // Sort fields to ensure parents come before children + const sortedFields = [...fields].sort((a, b) => { + const aDepth = (a.name.match(/[\.\[]/g) || []).length; + const bDepth = (b.name.match(/[\.\[]/g) || []).length; + if (aDepth !== bDepth) return aDepth - bDepth; + return a.name.localeCompare(b.name); + }); + + for (const field of sortedFields) { + if (processed.has(field.name)) continue; + + const allDescendants = []; + + // Find all descendants (not just direct children) + for (const otherField of sortedFields) { + if (otherField.name === field.name || processed.has(otherField.name)) continue; + + if (isDescendant(field.name, otherField.name)) { + allDescendants.push(otherField); + processed.add(otherField.name); + } + } + + if (allDescendants.length > 0) { + // Recursively build nested groups for all descendants + const nestedChildren = buildNestedGroups(allDescendants); + + groups.push({ + name: field.name, + type: field.type, + description: field.description, + isCollapsible: true, + children: nestedChildren, + level: getFieldLevel(field.name), + }); + } else { + // Standalone field + groups.push({ + name: field.name, + type: field.type, + description: field.description, + isCollapsible: false, + children: [], + level: getFieldLevel(field.name), + }); + } + processed.add(field.name); + } + + return groups; + } + + function isDescendant(parentPrefix, childName) { + // Check if childName is any descendant of parentPrefix (not just direct child) + if (parentPrefix === childName) { + return false; + } + + if (parentPrefix.endsWith('[]')) { + // Parent ends with [], so descendants should start with "parent[]." + return childName.startsWith(parentPrefix + '.'); + } else { + // Parent doesn't end with [], so descendants could be: + // 1. parent.anything (normal dot notation) + // 2. parent[].anything (array notation) + return childName.startsWith(parentPrefix + '.') || + childName.startsWith(parentPrefix + '['); + } + } + + function isDirectChild(parentPrefix, childName) { + // Don't consider a field a child of itself + if (parentPrefix === childName) { + return false; + } + + // Case 1: Parent like "sources" and child like "sources[].dataset" + // Case 2: Parent like "names.rules[]" and child like "names.rules[].variant" + // Case 3: Parent like "names" and child like "names.primary" + + let expectedPrefix; + + if (parentPrefix.endsWith('[]')) { + // Parent ends with [], so children should start with "parent[]." + expectedPrefix = parentPrefix + '.'; + } else { + // Parent doesn't end with [], so children could be: + // 1. parent.child (normal dot notation) + // 2. parent[].child (array notation) + + // Check for direct dot notation first + if (childName.startsWith(parentPrefix + '.')) { + const remainder = childName.substring(parentPrefix.length + 1); + // Allow [] at the end of the remainder (like "rules[]") + const cleanRemainder = remainder.replace(/\[\]$/, ''); + return !cleanRemainder.includes('.') && !cleanRemainder.includes('['); + } + + // Check for array notation + if (childName.startsWith(parentPrefix + '[')) { + // Could be parent[].child or parent[index].child + const afterParent = childName.substring(parentPrefix.length); + + // Check if it's parent[].child pattern + if (afterParent.startsWith('[].')) { + const remainder = afterParent.substring(3); // Remove "[]."" + // Allow [] at the end of the remainder (like "rules[]") + const cleanRemainder = remainder.replace(/\[\]$/, ''); + return !cleanRemainder.includes('.') && !cleanRemainder.includes('['); + } + + // Check if it's parent[index] pattern (not supported for grouping) + return false; + } + + return false; + } + + // For parents ending with [], check if child starts with expectedPrefix + if (childName.startsWith(expectedPrefix)) { + const remainder = childName.substring(expectedPrefix.length); + return !remainder.includes('.') && !remainder.includes('['); + } + + return false; + } + + function getFieldLevel(fieldName) { + // Count the depth level based on dots and brackets + return (fieldName.match(/[\.\[]/g) || []).length; + } + + function extractTableData(children) { + // Parse the MDX table structure to extract headers and rows + // When we override the table component, we receive thead/tbody as direct children + + const headers = []; + const rows = []; + + // Handle case where children is an array of table parts (thead, tbody) + const childrenArray = React.Children.toArray(children); + + childrenArray.forEach((child) => { + if (React.isValidElement(child)) { + if (child.type === 'thead') { + // Extract headers from thead + React.Children.forEach(child.props.children, (tr) => { + if (React.isValidElement(tr) && tr.type === 'tr') { + React.Children.forEach(tr.props.children, (th) => { + if (React.isValidElement(th) && th.type === 'th') { + headers.push(extractTextContent(th.props.children)); + } + }); + } + }); + } else if (child.type === 'tbody') { + // Extract rows from tbody - preserve rich content for Type and Description columns + React.Children.forEach(child.props.children, (tr) => { + if (React.isValidElement(tr) && tr.type === 'tr') { + const row = []; + React.Children.forEach(tr.props.children, (td, index) => { + if (React.isValidElement(td) && td.type === 'td') { + if (index === 0) { + // First column (Name) - extract text only for field name processing + row.push(extractTextContent(td.props.children)); + } else { + // Other columns (Type, Description) - preserve rich content including links + row.push(extractRichContent(td.props.children)); + } + } + }); + if (row.length > 0) { + rows.push(row); + } + } + }); + } + } + }); + + return { headers, rows }; + } + + function extractTextContent(children) { + if (typeof children === 'string') { + return children; + } + + if (React.isValidElement(children)) { + if (children.type === 'code') { + return extractTextContent(children.props.children); + } + return extractTextContent(children.props.children); + } + + if (Array.isArray(children)) { + return children.map(extractTextContent).join(''); + } + + return String(children || ''); + } + + function extractRichContent(children) { + // This function preserves React elements (like links) instead of just extracting text + if (typeof children === 'string') { + return children; + } + + if (React.isValidElement(children)) { + // Preserve the element as-is for rendering + return children; + } + + if (Array.isArray(children)) { + return children.map(extractRichContent); + } + + return children; + } + + function renderRichContent(content, searchTerm = '') { + if (typeof content === 'string') { + return highlightText(content, searchTerm); + } + + if (React.isValidElement(content)) { + // If it's a React element (like a link), render it as-is + return content; + } + + if (Array.isArray(content)) { + return content.map((item, index) => ( + + {renderRichContent(item, searchTerm)} + + )); + } + + return content; + } + + function highlightText(text, searchTerm) { + if (!searchTerm || !text || typeof text !== 'string') return text; + + const regex = new RegExp(`(${searchTerm.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi'); + const parts = text.split(regex); + + return parts.map((part, index) => + regex.test(part) ? ( + {part} + ) : part + ); + } + + function extractFieldName(cellContent) { + // Extract field name from cell content (remove code formatting, etc.) + if (typeof cellContent === 'string') { + return cellContent.trim(); + } + return String(cellContent || '').trim(); + } + + function isSchemaTable(headers) { + // Check if the table has the schema field structure (Name, Type, Description) + if (headers.length !== 3) { + return false; + } + + // Normalize headers for comparison (remove extra whitespace, make case-insensitive) + const normalizedHeaders = headers.map(header => + header.toLowerCase().trim() + ); + + // Check for exact match or common variations + const expectedHeaders = ['name', 'type', 'description']; + + return normalizedHeaders.every((header, index) => + header === expectedHeaders[index] + ); + } + + export default SmartTable; diff --git a/src/components/shared-libs/generatePath.tsx b/src/components/shared-libs/generatePath.tsx deleted file mode 100644 index f0712a9cb..000000000 --- a/src/components/shared-libs/generatePath.tsx +++ /dev/null @@ -1,20 +0,0 @@ -// Example of basePath = '/schemas/examples/refs' -export default function generatePath(path: string, basePath: string = "") { - const parts = path.toString().split("/") - let finalPath = basePath - - for (let i = 0; i < parts.length; i++) { - if (parts[i] === "..") { - // Move up one directory in the base path - finalPath = finalPath.split("/").slice(0, -1).join("/") - } else if (parts[i] === ".") { - // Ignore current directory notation - continue - } else { - // Append the current directory to the base path - finalPath = `${finalPath}/${parts[i]}` - } - } - - return finalPath - } diff --git a/src/components/shared-libs/generateResolverOptions.tsx b/src/components/shared-libs/generateResolverOptions.tsx deleted file mode 100644 index 47ffa3b33..000000000 --- a/src/components/shared-libs/generateResolverOptions.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import RemoteResolver from "@site/src/components/shared-libs/remoteResolver" -import YAMLFileResolver from "@site/src/components/shared-libs/yamlFileResolver" - -type Params = { - basePath?: string - jsonPointer?: string - remote?: boolean - yamlBasePath?: string -} - -export default function generateResolverOptions(params: Params) { - const { basePath, jsonPointer, remote, yamlBasePath} = params - - let config = {} - - if (yamlBasePath || yamlBasePath == "") { - config["resolvers"] = { - file: YAMLFileResolver(yamlBasePath), - } - } - - if (remote) { - if (config["resolvers"] === undefined) { - config["resolvers"] = {} - } - config["resolvers"]["http"] = RemoteResolver("http") - config["resolvers"]["https"] = RemoteResolver("https") - } - - if (jsonPointer) { - config["jsonPointer"] = jsonPointer - } - - return config -} diff --git a/src/components/shared-libs/remoteResolver.tsx b/src/components/shared-libs/remoteResolver.tsx deleted file mode 100644 index afbcaf894..000000000 --- a/src/components/shared-libs/remoteResolver.tsx +++ /dev/null @@ -1,18 +0,0 @@ -type Param = "http" | "https" - -export default function LocalFileResolver(_type: Param = "http") { - return { - resolve: (ref: string) => { - return new Promise((resolve, reject) => { - fetch(ref.toString(), { - headers: { - Accept: "application/json", - }, - }) - .then((response) => response.json()) - .then((result) => resolve(result)) - .catch((err) => reject(err)) - }) - }, - } -} diff --git a/src/components/shared-libs/yamlFileResolver.tsx b/src/components/shared-libs/yamlFileResolver.tsx deleted file mode 100644 index 65f74c846..000000000 --- a/src/components/shared-libs/yamlFileResolver.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import generatePath from "@site/src/components/shared-libs/generatePath"; -import yaml from "js-yaml"; - -const schemaYamlFiles = require.context('@site/docs/_schema', true, /\.(yaml|yml)$/); -var preloadedYamlSchema = {} - -schemaYamlFiles.keys().forEach(function(path){ - preloadedYamlSchema[path.replace('./', '/')] = yaml.load( - require('!!raw-loader!@site/docs/_schema' + path.replace('./', '/')).default - ); -}) - -export default function YAMLFileResolver(basePath: string = "") { - return { - resolve: (ref: string) => { - return new Promise((resolve, reject) => { - - Promise.resolve().then(function(){ - - var relativeYamlPath = generatePath(ref, basePath) - - if (preloadedYamlSchema.hasOwnProperty(relativeYamlPath)){ - return preloadedYamlSchema[relativeYamlPath]; - }else{ - return {} - } - }).then(function(result){ return resolve(result)} - ).catch(function(err){ return reject(err); }); - }); - } - } - } diff --git a/src/css/custom.css b/src/css/custom.css index c26da2916..f774b517b 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -53,8 +53,8 @@ } [data-theme='light'] .DocSearch { - --docsearch-primary-color: var(--ifm-color-black); - --docsearch-text-color: var(--ifm-font-color-primary); + --docsearch-primary-color: var(--ifm-color-black); + --docsearch-text-color: var(--ifm-font-color-primary); --docsearch-muted-color: var(--ifm-color-black); --docsearch-container-background: rgba(94, 100, 112, 0.7); /* Modal */ @@ -71,7 +71,7 @@ } [data-theme='dark'] .DocSearch { - --docsearch-primary-color: var(--ifm-color-black); + --docsearch-primary-color: var(--ifm-color-black); --docsearch-text-color: var(--ifm-font-color-primary); --docsearch-muted-color: var(--ifm-color-white); --docsearch-container-background: rgba(47, 55, 69, 0.7); @@ -120,3 +120,495 @@ background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsPSIjZTNlM2UzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAwMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4=") 0 0/contain; } +/* =================================>>>>>>> REPLACE + SMART TABLE STYLING + ======================================== */ + +/* Smart table container */ +.smart-table-container { + margin: 1.5rem 0; + background: var(--ifm-background-surface-color); + border-radius: 12px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +/* Table controls */ +.table-controls { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 1.25rem; + background: var(--ifm-color-emphasis-50); + border-bottom: 1px solid var(--ifm-color-emphasis-200); + gap: 1rem; + flex-wrap: wrap; +} + +/* Search container */ +.search-container { + position: relative; + flex: 1; + max-width: 300px; +} + +.table-search { + width: 100%; + padding: 0.5rem 0.75rem; + padding-right: 2.5rem; + border: 2px solid var(--ifm-color-emphasis-300); + border-radius: 6px; + background: var(--ifm-background-color); + color: var(--ifm-font-color-base); + font-size: 0.9rem; + transition: all 0.2s ease; +} + +.table-search:focus { + outline: none; + border-color: var(--ifm-color-primary); + box-shadow: 0 0 0 3px rgba(44, 46, 127, 0.1); +} + +.clear-search { + position: absolute; + right: 0.5rem; + top: 50%; + transform: translateY(-50%); + background: none; + border: none; + color: var(--ifm-color-emphasis-600); + cursor: pointer; + padding: 0.25rem; + border-radius: 3px; + font-size: 0.9rem; + transition: all 0.2s ease; +} + +.clear-search:hover { + background: var(--ifm-color-emphasis-200); + color: var(--ifm-color-emphasis-800); +} + +/* Expand all button */ +.expand-all-button { + padding: 0.5rem 1rem; + background: var(--ifm-color-primary); + color: white; + border: none; + border-radius: 6px; + font-size: 0.85rem; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; + white-space: nowrap; +} + +.expand-all-button:hover { + background: var(--ifm-color-primary-dark); + transform: translateY(-1px); +} + +.expand-all-button:active { + transform: translateY(0); +} + +/* Search results */ +.search-results { + padding: 0.5rem 1.25rem; + background: var(--ifm-color-emphasis-75); + color: var(--ifm-color-emphasis-700); + font-size: 0.85rem; + font-style: italic; + border-bottom: 1px solid var(--ifm-color-emphasis-200); +} + +/* Search highlighting */ +.search-highlight { + background: #ffeb3b; + color: #333; + padding: 0.1rem 0.2rem; + border-radius: 3px; + font-weight: 600; +} + +[data-theme='dark'] .search-highlight { + background: #ff9800; + color: #000; +} + +/* No results message */ +.no-results { + text-align: center; + padding: 2rem; + color: var(--ifm-color-emphasis-600); + font-style: italic; +} + +/* Main table styling */ +.schema-fields-table { + border-collapse: collapse; + width: 100%; + background: var(--ifm-background-surface-color); +} + +/* Table header */ +.schema-fields-table thead { + background: linear-gradient(135deg, var(--ifm-color-primary), var(--ifm-color-primary-dark)); + color: white; +} + +.schema-fields-table thead th { + padding: 1rem 1.25rem; + font-weight: 600; + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 0.5px; + border: none; + text-align: left; +} + +.schema-fields-table thead th:first-child { + text-align: left; + width: 20%; +} + +.schema-fields-table thead th:nth-child(2) { + text-align: center; + width: 18%; +} + +.schema-fields-table thead th:last-child { + width: 62%; +} + +/* Table body rows */ +.schema-fields-table tbody tr { + border-bottom: 1px solid var(--ifm-color-emphasis-200); + transition: background-color 0.2s ease; +} + +.schema-fields-table tbody tr:hover { + background-color: var(--ifm-color-emphasis-100); +} + +.schema-fields-table tbody tr:last-child { + border-bottom: none; +} + +/* Expanded/collapsed row states */ +.schema-fields-table tbody tr.expanded { + background-color: var(--ifm-color-emphasis-50); +} + +.schema-fields-table tbody tr.collapsed { + background-color: var(--ifm-background-surface-color); +} + +/* Nested field rows */ +.schema-fields-table tbody tr.nested-field { + background-color: var(--ifm-color-emphasis-75); + position: relative; + animation: slideIn 0.3s ease-out; +} + +@keyframes slideIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.schema-fields-table tbody tr.nested-field:hover { + background-color: var(--ifm-color-emphasis-150); +} + +.schema-fields-table tbody tr.nested-field td:first-child { + background-color: var(--ifm-color-emphasis-150); + border-left: 4px solid var(--ifm-color-primary); + position: relative; +} + +/* Multi-level nesting support */ +.schema-fields-table tbody tr.nested-level-1 td:first-child { + padding-left: 3.5rem; +} + +.schema-fields-table tbody tr.nested-level-2 td:first-child { + padding-left: 5rem; + border-left-color: var(--ifm-color-primary-light); +} + +.schema-fields-table tbody tr.nested-level-3 td:first-child { + padding-left: 6.5rem; + border-left-color: var(--ifm-color-primary-lighter); +} + +.schema-fields-table tbody tr.nested-level-4 td:first-child { + padding-left: 8rem; + border-left-color: var(--ifm-color-primary-lightest); +} + +/* Add horizontal connector */ +.schema-fields-table tbody tr.nested-field td:first-child::after { + content: ''; + position: absolute; + left: 1.5rem; + top: 50%; + width: 1rem; + height: 2px; + background-color: var(--ifm-color-primary-light); + transform: translateY(-50%); +} + +.schema-fields-table tbody tr.nested-level-2 td:first-child::after { + left: 3rem; +} + +.schema-fields-table tbody tr.nested-level-3 td:first-child::after { + left: 4.5rem; +} + +.schema-fields-table tbody tr.nested-level-4 td:first-child::after { + left: 6rem; +} + +/* Table cells */ +.schema-fields-table tbody td { + padding: 1rem 1.25rem; + vertical-align: top; + border: none; + line-height: 1.6; +} + +.schema-fields-table tbody td:first-child { + text-align: left; + font-family: var(--ifm-font-family-monospace); + font-weight: 600; + color: var(--ifm-color-primary); + background-color: var(--ifm-color-emphasis-50); + border-right: 3px solid var(--ifm-color-primary-lightest); + font-size: 0.9rem; + position: relative; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.schema-fields-table tbody td:nth-child(2) { + text-align: center; + font-family: var(--ifm-font-family-monospace); + font-size: 0.85rem; + color: var(--ifm-color-primary-dark); + background-color: var(--ifm-color-emphasis-25); +} + +.schema-fields-table tbody td:last-child { + font-size: 0.9rem; + color: var(--ifm-font-color-base); + white-space: pre-wrap; +} + +/* Child count indicator */ +.child-count { + font-size: 0.75rem; + color: var(--ifm-color-emphasis-600); + font-weight: 400; + margin-left: 0.5rem; + background: var(--ifm-color-emphasis-200); + padding: 0.1rem 0.4rem; + border-radius: 10px; +} + +/* Expand/collapse button */ +.schema-fields-table .expand-button { + background: transparent; + border: 1px solid var(--ifm-color-emphasis-400); + color: var(--ifm-color-emphasis-600); + cursor: pointer; + font-size: 0.75rem; + padding: 0.2rem; + border-radius: 3px; + transition: all 0.2s ease; + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.2rem; + height: 1.2rem; + flex-shrink: 0; + font-weight: 600; +} + +.schema-fields-table .expand-button:hover { + background-color: var(--ifm-color-emphasis-200); + border-color: var(--ifm-color-emphasis-600); + color: var(--ifm-color-emphasis-800); +} + +.schema-fields-table .expand-button:focus { + outline: 2px solid var(--ifm-color-primary); + outline-offset: 1px; +} + +.expand-icon { + transition: transform 0.2s ease; +} + +.schema-fields-table tr.expanded .expand-icon { + transform: rotate(90deg); +} + +/* Code elements within table cells */ +.schema-fields-table code { + background-color: var(--ifm-color-emphasis-200); + padding: 0.2rem 0.4rem; + border-radius: 4px; + font-size: 0.85em; + border: 1px solid var(--ifm-color-emphasis-300); +} + +.schema-fields-table tbody td:nth-child(2) code { + background: transparent; + padding: 0; + border: none; + color: inherit; +} + +/* Links within table cells */ +.schema-fields-table a { + color: var(--ifm-link-color); + text-decoration: none; + font-weight: 500; +} + +.schema-fields-table a:hover { + color: var(--ifm-link-hover-color); + text-decoration: underline; +} + + +/* Responsive design */ +@media (max-width: 768px) { + .table-controls { + flex-direction: column; + align-items: stretch; + gap: 0.75rem; + } + + .search-container { + max-width: none; + } + + .expand-all-button { + align-self: flex-end; + width: fit-content; + } + + .schema-fields-table { + font-size: 0.8rem; + } + + .schema-fields-table thead th, + .schema-fields-table tbody td { + padding: 0.75rem 0.5rem; + } + + .schema-fields-table tbody td:first-child { + font-size: 0.8rem; + flex-direction: column; + align-items: flex-start; + gap: 0.25rem; + } + + .schema-fields-table tbody td:nth-child(2) { + font-size: 0.75rem; + } + + .schema-fields-table tbody tr.nested-field td:first-child { + padding-left: 1.5rem; + } + + .schema-fields-table .expand-button { + width: 1.25rem; + height: 1.25rem; + font-size: 0.6rem; + } + + .child-count { + font-size: 0.7rem; + margin-left: 0; + } +} + +@media (max-width: 480px) { + .smart-table-container { + margin: 1rem -1rem; + border-radius: 0; + } + + .table-controls { + padding: 0.75rem 1rem; + } + + .schema-fields-table thead th, + .schema-fields-table tbody td { + padding: 0.5rem 0.75rem; + } + + .schema-fields-table thead th:nth-child(2), + .schema-fields-table tbody td:nth-child(2) { + display: none; + } + + .schema-fields-table thead th:first-child { + width: 35%; + } + + .schema-fields-table thead th:last-child { + width: 65%; + } +} + +/* Dark theme adjustments */ +[data-theme='dark'] .schema-fields-table { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); +} + +[data-theme='dark'] .schema-fields-table thead { + background: linear-gradient(135deg, var(--ifm-color-primary-dark), var(--ifm-color-primary-darkest)); +} + +[data-theme='dark'] .schema-fields-table tbody td:first-child { + background-color: var(--ifm-color-emphasis-100); + border-right-color: var(--ifm-color-primary-light); +} + +[data-theme='dark'] .schema-fields-table tbody td:nth-child(2) { + background-color: var(--ifm-color-emphasis-75); +} + +[data-theme='dark'] .schema-fields-table tbody tr.nested-field { + background-color: var(--ifm-color-emphasis-75); +} + +[data-theme='dark'] .schema-fields-table tbody tr.nested-field:hover { + background-color: var(--ifm-color-emphasis-200); +} + +[data-theme='dark'] .schema-fields-table tbody tr.nested-field td:first-child { + background-color: var(--ifm-color-emphasis-150); + border-left-color: var(--ifm-color-primary-light); +} + +[data-theme='dark'] .schema-fields-table .expand-button { + color: var(--ifm-color-primary-light); +} + +[data-theme='dark'] .schema-fields-table .expand-button:hover { + background-color: var(--ifm-color-primary-dark); + color: var(--ifm-color-primary-lightest); +} diff --git a/src/theme/MDXComponents.js b/src/theme/MDXComponents.js new file mode 100644 index 000000000..66362405a --- /dev/null +++ b/src/theme/MDXComponents.js @@ -0,0 +1,14 @@ +import React from 'react'; +import MDXComponents from '@theme-original/MDXComponents'; +import SmartTable from '@site/src/components/SmartTable'; + +export default { + // Re-use the default mapping + ...MDXComponents, + + // Register custom components + SmartTable, + + // Override the default table component to use SmartTable + table: SmartTable, +};