From fe96c27feb941901c89155e59d4f7a77ea951068 Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Wed, 13 Aug 2025 14:37:22 -0700 Subject: [PATCH 1/6] Build docs w/o schema repo dependency initial build of docs with schema reference from pydantic models. --- .gitignore | 5 - .../access-restriction-01-blanket.yaml | 16 + ...estriction-02-private-with-deliveries.yaml | 22 + ...on-03-motor-vehicles-destination-only.yaml | 19 + .../access-restriction-04-axle-limit.yaml | 22 + .../docusaurus/access-restriction.yaml | 28 + .../transportation/docusaurus/connector.yaml | 10 + .../docusaurus/geometric-scoping.yaml | 21 + .../docusaurus/simple-road.yaml | 24 + .../docusaurus/speed-limits-01-simple.yaml | 18 + .../speed-limits-02-directional.yaml | 20 + .../speed-limits-03-variable-max.yaml | 21 + .../subjective-heading-scoping.yaml | 25 + .../docusaurus/subjective-status-scoping.yaml | 19 + .../subjective-usage-purpose-scoping.yaml | 18 + ...subjective-vehicle-attributes-scoping.yaml | 23 + .../docusaurus/temporal-scoping.yaml | 20 + .../turn-restriction-01-connector1.yaml | 10 + .../turn-restriction-01-connector2.yaml | 10 + .../turn-restriction-01-connector3.yaml | 10 + .../docusaurus/turn-restriction-01-exit.yaml | 22 + .../turn-restriction-01-source.yaml | 26 + .../turn-restriction-01-target.yaml | 22 + .../turn-restriction-02-connector1.yaml | 10 + .../turn-restriction-02-connector2.yaml | 10 + .../turn-restriction-02-source.yaml | 40 + .../turn-restriction-02-target.yaml | 28 + .../docusaurus/turn-restriction-02-via.yaml | 25 + .../concepts/by-theme/addresses/index.mdx | 23 + docs/schema/concepts/by-theme/base/index.mdx | 75 + .../by-theme/buildings/3d_buildings.mdx | 55 + .../concepts/by-theme/buildings/index.mdx | 153 ++ .../concepts/by-theme/divisions/index.mdx | 20 + docs/schema/concepts/by-theme/index.mdx | 7 + .../schema/concepts/by-theme/places/index.mdx | 68 + .../by-theme/places/overture_categories.csv | 2118 +++++++++++++++++ .../by-theme/transportation/index.mdx | 83 + .../by-theme/transportation/roads.mdx | 309 +++ .../by-theme/transportation/segments.mdx | 120 + .../transportation/shape-connectivity.mdx | 479 ++++ .../by-theme/transportation/travel-modes.mdx | 197 ++ docs/schema/concepts/cartography.mdx | 10 + docs/schema/concepts/index.mdx | 6 + docs/schema/concepts/names.mdx | 213 ++ docs/schema/concepts/scoping-rules.mdx | 253 ++ docs/schema/reference/addresses/address.md | 12 + docs/schema/reference/base/Bathymetry.md | 27 + docs/schema/reference/base/Infrastructure.md | 40 + docs/schema/reference/base/land.md | 41 + docs/schema/reference/base/land_cover.md | 26 + docs/schema/reference/base/land_use.md | 39 + docs/schema/reference/base/water.mdx | 41 + docs/schema/reference/buildings/building.md | 53 + .../reference/buildings/building_part.md | 51 + docs/schema/reference/divisions/division.md | 105 + .../reference/divisions/division_area.md | 45 + .../reference/divisions/division_boundary.md | 68 + docs/schema/reference/index.mdx | 13 + docs/schema/reference/places/place.md | 51 + .../reference/transportation/connector.md | 22 + .../reference/transportation/segment.md | 123 + docs/schema/schema.md | 69 + fetch_schema.sh | 26 - package-lock.json | 1252 ++++++++-- package.json | 8 +- src/components/SmartTable.jsx | 518 ++++ src/components/shared-libs/generatePath.tsx | 20 - .../shared-libs/generateResolverOptions.tsx | 35 - src/components/shared-libs/remoteResolver.tsx | 18 - .../shared-libs/yamlFileResolver.tsx | 32 - src/css/custom.css | 498 +++- src/theme/MDXComponents.js | 14 + 72 files changed, 7605 insertions(+), 375 deletions(-) create mode 100644 docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml create mode 100644 docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml create mode 100644 docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml create mode 100644 docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml create mode 100644 docs/_examples/transportation/docusaurus/access-restriction.yaml create mode 100644 docs/_examples/transportation/docusaurus/connector.yaml create mode 100644 docs/_examples/transportation/docusaurus/geometric-scoping.yaml create mode 100644 docs/_examples/transportation/docusaurus/simple-road.yaml create mode 100644 docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml create mode 100644 docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml create mode 100644 docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml create mode 100644 docs/_examples/transportation/docusaurus/subjective-heading-scoping.yaml create mode 100644 docs/_examples/transportation/docusaurus/subjective-status-scoping.yaml create mode 100644 docs/_examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml create mode 100644 docs/_examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml create mode 100644 docs/_examples/transportation/docusaurus/temporal-scoping.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml create mode 100644 docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml create mode 100644 docs/schema/concepts/by-theme/addresses/index.mdx create mode 100644 docs/schema/concepts/by-theme/base/index.mdx create mode 100644 docs/schema/concepts/by-theme/buildings/3d_buildings.mdx create mode 100644 docs/schema/concepts/by-theme/buildings/index.mdx create mode 100644 docs/schema/concepts/by-theme/divisions/index.mdx create mode 100644 docs/schema/concepts/by-theme/index.mdx create mode 100644 docs/schema/concepts/by-theme/places/index.mdx create mode 100644 docs/schema/concepts/by-theme/places/overture_categories.csv create mode 100644 docs/schema/concepts/by-theme/transportation/index.mdx create mode 100644 docs/schema/concepts/by-theme/transportation/roads.mdx create mode 100644 docs/schema/concepts/by-theme/transportation/segments.mdx create mode 100644 docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx create mode 100644 docs/schema/concepts/by-theme/transportation/travel-modes.mdx create mode 100644 docs/schema/concepts/cartography.mdx create mode 100644 docs/schema/concepts/index.mdx create mode 100644 docs/schema/concepts/names.mdx create mode 100644 docs/schema/concepts/scoping-rules.mdx create mode 100644 docs/schema/reference/addresses/address.md create mode 100644 docs/schema/reference/base/Bathymetry.md create mode 100644 docs/schema/reference/base/Infrastructure.md create mode 100644 docs/schema/reference/base/land.md create mode 100644 docs/schema/reference/base/land_cover.md create mode 100644 docs/schema/reference/base/land_use.md create mode 100644 docs/schema/reference/base/water.mdx create mode 100644 docs/schema/reference/buildings/building.md create mode 100644 docs/schema/reference/buildings/building_part.md create mode 100644 docs/schema/reference/divisions/division.md create mode 100644 docs/schema/reference/divisions/division_area.md create mode 100644 docs/schema/reference/divisions/division_boundary.md create mode 100644 docs/schema/reference/index.mdx create mode 100644 docs/schema/reference/places/place.md create mode 100644 docs/schema/reference/transportation/connector.md create mode 100644 docs/schema/reference/transportation/segment.md create mode 100644 docs/schema/schema.md delete mode 100755 fetch_schema.sh create mode 100644 src/components/SmartTable.jsx delete mode 100644 src/components/shared-libs/generatePath.tsx delete mode 100644 src/components/shared-libs/generateResolverOptions.tsx delete mode 100644 src/components/shared-libs/remoteResolver.tsx delete mode 100644 src/components/shared-libs/yamlFileResolver.tsx create mode 100644 src/theme/MDXComponents.js 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/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/schema/concepts/by-theme/addresses/index.mdx b/docs/schema/concepts/by-theme/addresses/index.mdx new file mode 100644 index 000000000..1d0afe261 --- /dev/null +++ b/docs/schema/concepts/by-theme/addresses/index.mdx @@ -0,0 +1,23 @@ +--- +title: Addresses schema concepts +draft: true +--- + +## Overview +The Overture Address theme is a compilation of open address datasets usually +published by local authorized sources. In our initial release, we use the datasets +that are collected and distributed by [OpenAddresses](https://openaddresses.io). + +The initial schema for addresses is fairly simple and is expected to expand into +more complex addressing schemes. + + + +## Feature types +The address theme has a single feature type. +- `address` is a point feature type representing a single address point. + +## Theme concepts + +## Schema reference +- [Explore the schema for the address feature type](/schema/reference/Addresses/address) diff --git a/docs/schema/concepts/by-theme/base/index.mdx b/docs/schema/concepts/by-theme/base/index.mdx new file mode 100644 index 000000000..3174e49d7 --- /dev/null +++ b/docs/schema/concepts/by-theme/base/index.mdx @@ -0,0 +1,75 @@ +--- +title: Base schema concepts +description: everything you need to make a real map of the world +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +import QueryBuilder from '@site/src/components/queryBuilder'; + +import OSMtoOvertureInfrastructure from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/infrastructure.sql'; +import OSMtoOvertureLand from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/land.sql'; +import OSMtoOvertureLandUse from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/land_use.sql'; +import OSMtoOvertureWater from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/water.sql'; + + +## Overview +The Overture base theme includes features desired for rendering a complete basemap. We assign a `subtype` and `class` to each feature and pass relevant properties through in the `source_tags` property. Most of the features in the base theme come from OpenStreetMap via the [Daylight Map Distribution](https://daylightmap.org/). + +## Feature types +The base theme has six feature types. + +- `bathymetry`: topographic representation of underwater areas, e.g. an elevation map of the ocean floor +- `infrastructure`: human-made structures such as bridges, towers, pipelines, and airports +- `land`: natural land features +- `land_cover`: land features derived from satellite imagery, e.g. forest, crop, barren, urban +- `land_use`: human-determined land use categories, e.g. residential, agriculture, protected +- `water`: natural and human-made water features, includes ocean data derived from the [OSM Coastline Tool](https://osmcode.org/osmcoastline/) + +## Theme concepts + +### OpenStreetMap tags to Overture properties +The subtype and class properties of an `infrastructure`, `land`, `land_use`, and `water` feature types in the base theme is determined by the original feature's tags on OpenStreetMap. + +Below is the logic that is currently used to convert from OSM tags into Overture schema. + +:::tip +Have a suggestion or improvement to the logic? Please start a discussion on [Github](https://github.com/OvertureMaps/data/discussions/categories/base) +::: + +
+ How do I interpret this query? + + Each `WHEN` line in the `CASE` statement is a condition that defines both the **subtype** and the **class** of a feature. For example: + ```sql + WHEN element_at(tags,'highway') = 'bus_stop' THEN ROW('transit', 'bus_stop') + ``` + + Here, `element_at(tags, 'highway')` is accessing the value of the `highway` tag in OSM. So, when `highway=bus_stop` is present, then the statement returns `ROW(subtype, class)`, in this case, **subtype**=`transit` and **class**=`bus_stop`. + + Since this particular statement is at the top of the list, it will take priority over other tags on the feature. If the same feature was also tagged as an airport gate, those tags would be ignored. +
+ + + + + + + + + + + + + + + + + +## Schema reference +- [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 type](/schema/reference/base/land_use) +- [Explore the schema for the water type](/schema/reference/base/water) diff --git a/docs/schema/concepts/by-theme/buildings/3d_buildings.mdx b/docs/schema/concepts/by-theme/buildings/3d_buildings.mdx new file mode 100644 index 000000000..bf01650ce --- /dev/null +++ b/docs/schema/concepts/by-theme/buildings/3d_buildings.mdx @@ -0,0 +1,55 @@ +--- +title: 3D Parts +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Creating building parts from OpenStreetMap data + +In Overture, 3D building parts must be associated with specific buildings. This relationship is captured in the schema where the **building**'s attribute `has_parts` is True and each of the **building_part** features has a `building_id` pointing to the `id` of the `building` it belongs to. + +Although OpenStreetMap (OSM) offers a building relation (relations with `type=building`) to help facilitate this association, it is seldom utilized. We therefore perform 2 steps to associate a building_part to a building: + + + + + 1. Identify OSM relations with `type=building` that contain exactly one member with `role=outline` and at least one member with `role=part`. + 2. Ensure the outline is either a way or a multipolygon relation with valid geometry. This is becomes a **building** type with `has_parts=True`. + 3. Assign the `building_id` of the outline to each `role=part` feature, these are of **building_part** type features. + 4. Identify any other **building_part** features that are spatially contained by the building outline and assign the `building_id` to them, even if they are not listed explicitly in the relation's members list. + + + + + 1. Ignore any outlines/parts ways/relations that were assigned in the explicit method. + 2. Identify all ways or `type=multipolygon` relations with a `building` tag not equal to "no" as a **building**. + 3. Identify all ways or `type=multipolygon` relations with a `building:part` tag not equal to "no" as a **building_part**. + 4. Perform a spatial join to find all **building** features (from step 2) that completely contain at least one **building_part** feature (from step 3). + 1. Assign `has_parts=True` to each **building** and add the corresponding `building_id` to each **building_part**. + 5. Omit any parts that are not contained by an outline, as Overture does not allow orphaned parts without a known parent. + + + +--- + +Finally, we eliminate all parts that are the only part associated with a building and share the same geometry as the building. This step helps filter out many OSM buildings tagged with both `building=yes` and `building:part=yes` if no other parts are associated with the building. + +### Considerations + +#### Geometric accuracy +We sometimes apply a small buffer to building geometries to handle discrepancies in how spatial functions interpret containment across different query engines. + +#### Data integrity +We adhere to both Overture and OSM standards to ensure that all our data manipulations and transformations preserve the integrity and accuracy of the original OSM data. + +### Known issues + +#### Dual representation +We interpret a single OSM feature with both a `building` and a `building:part` tag as two separate features in Overture, each with its own unique GERS ID. + +#### Ambiguous height tags +When `type=multipolygon` and `building:part=yes`, it is impossible to determine what the `height` tag refers to. It may refer to the height of the entire building (the highest point of all parts) as stated in the OSM wiki, or in some cases, it refers to the height of the part. It is recommended to either remove the `height` from such features or split the features into a building and a separate part feature and assign the proper height to each. In these cases, Overture will assume the height is the height of the building as stated in the wiki. + +#### Tag ambiguity +When `type=multipolygon` and `building:part=yes`, it is impossible to know whether the characteristic tags refer to the building or the building part. It is recommended to either remove the tags from such features or split the features into a `building` and a separate `building_part` feature and assign the proper tags to each. In these cases, Overture will assume that each tag refers to both. diff --git a/docs/schema/concepts/by-theme/buildings/index.mdx b/docs/schema/concepts/by-theme/buildings/index.mdx new file mode 100644 index 000000000..94084cc73 --- /dev/null +++ b/docs/schema/concepts/by-theme/buildings/index.mdx @@ -0,0 +1,153 @@ +--- +title: Buildings schema concepts +description: buildings! buildings! buildings! +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import QueryBuilder from '@site/src/components/queryBuilder'; +import OSMtoOvertureBuildingClass from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_class.sql'; +import OSMtoOvertureBuildingSubtype from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_subtype.sql'; + +import OSMtoOvertureBuildingFacade from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_facade_material.sql'; +import OSMtoOvertureBuildingRoofMaterial from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_roof_material.sql'; +import OSMtoOvertureBuildingRoofShape from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_roof_shape.sql'; + +## Overview + +The Overture buildings theme captures the compilation of many building attributes from a variety of open data sources including OpenStreetMap, Esri Community Maps, Microsoft, Google, and Zenodo. + +## Feature types + +The buildings theme has two feature types: + +- `building` is a polygon or multipolygon geometry that represents the building's footprint (or roofprint, if traced from imagery). +- `building_part` is a polygon that describes part of a building. These come from the OSM features with the tag `building:part=yes`. + +## Theme concepts + +Both building and building_part types may have many **shape** related properties. These are useful for expressing the physical shape characteristics of the buidling including `roof_height`, `roof_shape`, `roof_material`, `facade_material`, etc. + +### Properties derived from OpenStreetMap tags + +In OpenStreetMap, an object is defined as a building by the presence of `building` tag. Most commonly, the value is simply, `building=yes`. However, in cases where there is a more descriptive value, we capture that information along with other building attributes such as height, roof shape, material, etc. and map them to a finite list of values defined in the building schema. + +You can see the SQL query logic that transforms OSM tags into Overture properties for each of these attributes below: + +
+ How do I interpret these queries? + + Each `WHEN` line in the `CASE` statement is a condition that defines the value of the Overture property. For example: + ```sql + WHEN lower(trim(element_at(tags, 'building'))) IN ('clinic','hospital') THEN 'medical' + ``` + Here, `lower(trim(element_at(tags, 'building')))` is accessing the value of the `building` tag in OSM (and ensuring it is lowercase). Therefore, when either the `building=clinic` or `building=hospital` tag is present, the statement returns `medical`. In this case, this defines the **subtype** for a medical building. +
+ + + + + + + + + + + + + + + + + + + +### Building heights from OpenStreetMap + +There are multiple ways to describe the height of an object in OSM. Overture, however, defines height as the number of meters from the ground to the tallest point of the feature. Therefore, we must parse and convert from the OSM string value. + +We look for height values in the following OSM tags: + +- `height` - The overall height of a building or building part. +- `est_height` - The estimated height of a building or building part. +- `min_height` - The minimum height of a building part. +- `roof_height` - The height of the roof of a building or building part. + +The OSM wiki specifically lists the following height values as valid: `4`, `4 m`, `1.35`, `7'4"`. However, there are many other formats present in the data that should be considered. + +
+ Comprehensive list of different height tag formats in OSM + +As of June 2024: +| Format | Count | +|--------|-------| +| `X`| 16,222,092| +| `X m`| 615,927| +| `X meter`| 212| +| `X metre`| 2| +| `X'`| 142,366| +| `X ft`| 721| +| `X feet`| 7| +| `X'Y"`| 2,432| +| `X"` | 6| + +
+ +#### Parsing and conversion + +There are a handful of common formatting issues that we generally allow when parsing height values including leading / trailing white space and incorrectly placed decimal points. We apply the following regular expressions to determine the unit of measurement and then perform the appropriate conversion: + + + + ```sql + ^\s*\d+(\.\d*)?\s*$ + ``` + Height strings that contain only a number value with no indicated units are + assumed to be meters. These values are not rounded. + Examples: + - `10` => 10 + - ` 10 ` => 10 + - `10.0` => 10 + - `10.` => 10 + - `10.6543` => 10.6543 + + + ```sql + ^\s*\d+(\.\d*)?\s*(m|meter|metre)s?\s*$ + ``` + Height strings with a number follwed by a metric unit that matches the singular + or plural version form of `m`, `meter`, and `metre` strings after the number are + also treated as meters and the units are stripped. These values are not rounded. + Examples: + - `10m` => 10 + - ` 10 meters` => 10 + - `10.0 metre ` => 10 + - `10. meter` => 10 + - `10.6543meter` => 10.6543 + + + ``` + ^\s*\d+(\.\d*)?\s*(''|ft|feet)\s*$ + ^\s*\d+(\.\d*)?\s*''\s*\d+(\.\d*)?\s*"\s*$ + ^\s*\d+(\.\d*)?"\s*$ + ``` + Height strings with a number followed by an imperial unit are matched and converted to meters. Strings that are recognized as indicating units of feet are `'`, `ft`, and `feet`. Strings that are recognized as indicating units of inches are `"`. Inches and feet are matched in combination with each other or alone. When both feet and inches are indicated the `'` string must be used to indicate feet and the inches value and `"` string must be after the feet value. These values are then converted into meters by multiplying feet by `0.3048`. Inches are multiplied by `0.0254`. The final meters value is then rounded to two decimal places. + + Examples: + - `10'` => 3.05 + - `10.65 ft` => 3.25 + - `10.65 feet ` => 3.25 + - `10. '` => 3.05 + - ` 10.65feet ` => 3.05 + - `10' 13"` => 3.38 + - `10' 13" ` => 3.38 + - `10'13"` => 3.38 + - `10' 13"` => 3.38 + - `10' 13" ` => 3.38 + - `10'13"` => 3.38 + + + +## Schema reference + +- [Explore the schema for the building feature type](/schema/reference/buildings/building) +- [Explore the schema for the building_part feature type](/schema/reference/buildings/building_part) diff --git a/docs/schema/concepts/by-theme/divisions/index.mdx b/docs/schema/concepts/by-theme/divisions/index.mdx new file mode 100644 index 000000000..446ec0d8f --- /dev/null +++ b/docs/schema/concepts/by-theme/divisions/index.mdx @@ -0,0 +1,20 @@ +--- +title: Divisions schema concepts +draft: true +--- + +## Overview +The Overture divisions theme includes features that represent human settlements in the real world, such as countries, regions, states, cities and towns. + +## Feature types +The divisions theme has three feature types. +- `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 +- `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 +- `division_boundary` is a feature type that represents a shared border between two division features. It has LineString or MultiLineString geometry. The geometry of a boundary is either wholly non-maritime or wholly maritime. A maritime boundary is the extension of a non-maritime boundary into the water + +## Theme concepts + +## Schema reference +- [Explore the schema for the division feature type](/schema/reference/divisions/division) +- [Explore the schema for the division_area feature type](/schema/reference/divisions/division_area) +- [Explore the schema for the division_boundary feature type](/schema/reference/divisions/division_boundary) diff --git a/docs/schema/concepts/by-theme/index.mdx b/docs/schema/concepts/by-theme/index.mdx new file mode 100644 index 000000000..22a22f7f4 --- /dev/null +++ b/docs/schema/concepts/by-theme/index.mdx @@ -0,0 +1,7 @@ +--- +title: Theme-based +--- + +import DocCardList from '@theme/DocCardList'; + + diff --git a/docs/schema/concepts/by-theme/places/index.mdx b/docs/schema/concepts/by-theme/places/index.mdx new file mode 100644 index 000000000..5ea8faee4 --- /dev/null +++ b/docs/schema/concepts/by-theme/places/index.mdx @@ -0,0 +1,68 @@ +--- +title: Places schema concepts +description: everything you ever wanted to know about the places schema +--- + +import overture_categories from '!!raw-loader!./overture_categories.csv'; +import CodeBlock from '@theme/CodeBlock'; + +export const PlacesCategories = (args) => { + + var lines = args.places.split('\n'); + lines.shift(); // Remove the first line (the header) + + var categories = {} + + for (const line of lines) { + const parts = line.split(';'); + const category = parts[0].trim(); + if (parts[1] != undefined) { + var hierarchy = parts[1].trim().slice(1, (parts[1].trim().length - 1)).split(','); + if (categories[hierarchy[0]] == undefined){ + categories[hierarchy[0]] = [] + } + if (hierarchy.length>1){ + categories[hierarchy[0]].push(category.padEnd(45, '.') + hierarchy.join(" > ")); + } + } + }; + + var keys = Object.keys(categories).sort() + + return ( +
+ {keys.map(cat => { + return( +
{cat} + + {categories[cat].join("\n")} + +
+ ) + })} +
+ ); +} + + +## Overview + +The Overture places theme includes more than 50M places and points of interest around the world. The data is sourced from Meta and Microsoft. + +## Feature types + +The places theme has one feature type: + +- `place` is a feature with a Point geometry. + +## Theme concepts + +### Categories + +There are more than 2,000 possible category values for Overture Places. Below are the top-level categories, expand each one to see all possible categories and their hierarchies. + + + +## Schema reference + +- [Explore the schema for the place feature type](/schema/reference/places/place) diff --git a/docs/schema/concepts/by-theme/places/overture_categories.csv b/docs/schema/concepts/by-theme/places/overture_categories.csv new file mode 100644 index 000000000..18cc0325f --- /dev/null +++ b/docs/schema/concepts/by-theme/places/overture_categories.csv @@ -0,0 +1,2118 @@ +Category code; Overture Taxonomy +eat_and_drink; [eat_and_drink] +restaurant; [eat_and_drink,restaurant] +afghan_restaurant; [eat_and_drink,restaurant,afghan_restaurant] +african_restaurant; [eat_and_drink,restaurant,african_restaurant] +ethiopian_restaurant; [eat_and_drink,restaurant,african_restaurant,ethiopian_restaurant] +senegalese_restaurant; [eat_and_drink,restaurant,african_restaurant,senegalese_restaurant] +south_african_restaurant; [eat_and_drink,restaurant,african_restaurant,south_african_restaurant] +moroccan_restaurant; [eat_and_drink,restaurant,african_restaurant,moroccan_restaurant] +nigerian_restaurant; [eat_and_drink,restaurant,african_restaurant,nigerian_restaurant] +american_restaurant; [eat_and_drink,restaurant,american_restaurant] +arabian_restaurant; [eat_and_drink,restaurant,arabian_restaurant] +belgian_restaurant; [eat_and_drink,restaurant,belgian_restaurant] +latin_american_restaurant; [eat_and_drink,restaurant,latin_american_restaurant] +argentine_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,argentine_restaurant] +belizean_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,belizean_restaurant] +bolivian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,bolivian_restaurant] +brazilian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,brazilian_restaurant] +chilean_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,chilean_restaurant] +colombian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,colombian_restaurant] +costa_rican_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,costa_rican_restaurant] +cuban_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,cuban_restaurant] +ecuadorian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,ecuadorian_restaurant] +guatemalan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,guatemalan_restaurant] +honduran_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,honduran_restaurant] +mexican_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,mexican_restaurant] +nicaraguan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,nicaraguan_restaurant] +panamanian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,panamanian_restaurant] +paraguayan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,paraguayan_restaurant] +peruvian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,peruvian_restaurant] +puerto_rican_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,puerto_rican_restaurant] +salvadoran_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,salvadoran_restaurant] +texmex_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,texmex_restaurant] +uruguayan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,uruguayan_restaurant] +venezuelan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,venezuelan_restaurant] +middle_eastern_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant] +armenian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,armenian_restaurant] +azerbaijani_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,azerbaijani_restaurant] +egyptian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,egyptian_restaurant] +georgian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,georgian_restaurant] +israeli_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,israeli_restaurant] +kofta_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,kofta_restaurant] +kurdish_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,kurdish_restaurant] +lebanese_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,lebanese_restaurant] +persian_iranian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,persian_iranian_restaurant] +syrian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,syrian_restaurant] +turkish_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,turkish_restaurant] +asian_restaurant; [eat_and_drink,restaurant,asian_restaurant] +asian_fusion_restaurant; [eat_and_drink,restaurant,asian_restaurant,asian_fusion_restaurant] +pan_asian_restaurant; [eat_and_drink,restaurant,asian_restaurant,pan_asian_restaurant] +burmese_restaurant; [eat_and_drink,restaurant,asian_restaurant,burmese_restaurant] +cambodian_restaurant; [eat_and_drink,restaurant,asian_restaurant,cambodian_restaurant] +chinese_restaurant; [eat_and_drink,restaurant,asian_restaurant,chinese_restaurant] +dim_sum_restaurant; [eat_and_drink,restaurant,asian_restaurant,dim_sum_restaurant] +filipino_restaurant; [eat_and_drink,restaurant,asian_restaurant,filipino_restaurant] +indo_chinese_restaurant; [eat_and_drink,restaurant,asian_restaurant,indo_chinese_restaurant] +indonesian_restaurant; [eat_and_drink,restaurant,asian_restaurant,indonesian_restaurant] +japanese_restaurant; [eat_and_drink,restaurant,asian_restaurant,japanese_restaurant] +korean_restaurant; [eat_and_drink,restaurant,asian_restaurant,korean_restaurant] +sushi_restaurant; [eat_and_drink,restaurant,asian_restaurant,sushi_restaurant] +laotian_restaurant; [eat_and_drink,restaurant,asian_restaurant,laotian_restaurant] +malaysian_restaurant; [eat_and_drink,restaurant,asian_restaurant,malaysian_restaurant] +mongolian_restaurant; [eat_and_drink,restaurant,asian_restaurant,mongolian_restaurant] +noodles_restaurant; [eat_and_drink,restaurant,asian_restaurant,noodles_restaurant] +singaporean_restaurant; [eat_and_drink,restaurant,asian_restaurant,singaporean_restaurant] +taiwanese_restaurant; [eat_and_drink,restaurant,asian_restaurant,taiwanese_restaurant] +thai_restaurant; [eat_and_drink,restaurant,asian_restaurant,thai_restaurant] +vietnamese_restaurant; [eat_and_drink,restaurant,asian_restaurant,vietnamese_restaurant] +hong_kong_style_cafe; [eat_and_drink,restaurant,asian_restaurant,hong_kong_style_cafe] +australian_restaurant; [eat_and_drink,restaurant,australian_restaurant] +austrian_restaurant; [eat_and_drink,restaurant,austrian_restaurant] +bangladeshi_restaurant; [eat_and_drink,restaurant,bangladeshi_restaurant] +indian_restaurant; [eat_and_drink,restaurant,indian_restaurant] +basque_restaurant; [eat_and_drink,restaurant,basque_restaurant] +british_restaurant; [eat_and_drink,restaurant,british_restaurant] +eastern_european_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant] +belarusian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,belarusian_restaurant] +bulgarian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,bulgarian_restaurant] +romanian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,romanian_restaurant] +tatar_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,tatar_restaurant] +ukrainian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,ukrainian_restaurant] +french_restaurant; [eat_and_drink,restaurant,french_restaurant] +cajun_and_creole_restaurant; [eat_and_drink,restaurant,cajun_and_creole_restaurant] +canadian_restaurant; [eat_and_drink,restaurant,canadian_restaurant] +caribbean_restaurant; [eat_and_drink,restaurant,caribbean_restaurant] +dominican_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,dominican_restaurant] +haitian_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,haitian_restaurant] +jamaican_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,jamaican_restaurant] +trinidadian_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,trinidadian_restaurant] +german_restaurant; [eat_and_drink,restaurant,german_restaurant] +catalan_restaurant; [eat_and_drink,restaurant,catalan_restaurant] +italian_restaurant; [eat_and_drink,restaurant,italian_restaurant] +czech_restaurant; [eat_and_drink,restaurant,czech_restaurant] +mediterranean_restaurant; [eat_and_drink,restaurant,mediterranean_restaurant] +greek_restaurant; [eat_and_drink,restaurant,mediterranean_restaurant,greek_restaurant] +guamanian_restaurant; [eat_and_drink,restaurant,guamanian_restaurant] +hawaiian_restaurant; [eat_and_drink,restaurant,hawaiian_restaurant] +himalayan_nepalese_restaurant; [eat_and_drink,restaurant,himalayan_nepalese_restaurant] +hungarian_restaurant; [eat_and_drink,restaurant,hungarian_restaurant] +iberian_restaurant; [eat_and_drink,restaurant,iberian_restaurant] +irish_restaurant; [eat_and_drink,restaurant,irish_restaurant] +jewish_restaurant; [eat_and_drink,restaurant,jewish_restaurant] +international_restaurant; [eat_and_drink,restaurant,international_restaurant] +european_restaurant; [eat_and_drink,restaurant,european_restaurant] +oriental_restaurant; [eat_and_drink,restaurant,oriental_restaurant] +pakistani_restaurant; [eat_and_drink,restaurant,pakistani_restaurant] +polish_restaurant; [eat_and_drink,restaurant,polish_restaurant] +polynesian_restaurant; [eat_and_drink,restaurant,polynesian_restaurant] +portuguese_restaurant; [eat_and_drink,restaurant,portuguese_restaurant] +russian_restaurant; [eat_and_drink,restaurant,russian_restaurant] +scandinavian_restaurant; [eat_and_drink,restaurant,scandinavian_restaurant] +danish_restaurant; [eat_and_drink,restaurant,scandinavian_restaurant,danish_restaurant] +norwegian_restaurant; [eat_and_drink,restaurant,scandinavian_restaurant,norwegian_restaurant] +scottish_restaurant; [eat_and_drink,restaurant,scottish_restaurant] +seafood_restaurant; [eat_and_drink,restaurant,seafood_restaurant] +serbo_croatian_restaurant; [eat_and_drink,restaurant,serbo_croatian_restaurant] +slovakian_restaurant; [eat_and_drink,restaurant,slovakian_restaurant] +southern_restaurant; [eat_and_drink,restaurant,southern_restaurant] +spanish_restaurant; [eat_and_drink,restaurant,spanish_restaurant] +sri_lankan_restaurant; [eat_and_drink,restaurant,sri_lankan_restaurant] +swiss_restaurant; [eat_and_drink,restaurant,swiss_restaurant] +uzbek_restaurant; [eat_and_drink,restaurant,uzbek_restaurant] +molecular_gastronomy_restaurant; [eat_and_drink,restaurant,molecular_gastronomy_restaurant] +haute_cuisine_restaurant; [eat_and_drink,restaurant,haute_cuisine_restaurant] +salad_bar; [eat_and_drink,restaurant,salad_bar] +brasserie; [eat_and_drink,restaurant,brasserie] +buffet_restaurant; [eat_and_drink,restaurant,buffet_restaurant] +barbecue_restaurant; [eat_and_drink,restaurant,barbecue_restaurant] +burger_restaurant; [eat_and_drink,restaurant,burger_restaurant] +canteen; [eat_and_drink,restaurant,canteen] +cafeteria; [eat_and_drink,restaurant,cafeteria] +cheesesteak_restaurant; [eat_and_drink,restaurant,cheesesteak_restaurant] +chicken_restaurant; [eat_and_drink,restaurant,chicken_restaurant] +chicken_wings_restaurant; [eat_and_drink,restaurant,chicken_wings_restaurant] +dog_meat_restaurant; [eat_and_drink,restaurant,dog_meat_restaurant] +dumpling_restaurant; [eat_and_drink,restaurant,dumpling_restaurant] +fast_food_restaurant; [eat_and_drink,restaurant,fast_food_restaurant] +fischbrotchen_restaurant; [eat_and_drink,restaurant,fischbrotchen_restaurant] +acai_bowls; [eat_and_drink,restaurant,acai_bowls] +fish_restaurant; [eat_and_drink,restaurant,fish_restaurant] +fish_and_chips_restaurant; [eat_and_drink,restaurant,fish_and_chips_restaurant] +fondue_restaurant; [eat_and_drink,restaurant,fondue_restaurant] +gluten_free_restaurant; [eat_and_drink,restaurant,gluten_free_restaurant] +baozi_restaurant; [eat_and_drink,restaurant,baozi_restaurant] +halal_restaurant; [eat_and_drink,restaurant,halal_restaurant] +bistro; [eat_and_drink,restaurant,bistro] +health_food_restaurant; [eat_and_drink,restaurant,health_food_restaurant] +kosher_restaurant; [eat_and_drink,restaurant,kosher_restaurant] +comfort_food_restaurant; [eat_and_drink,restaurant,comfort_food_restaurant] +meat_restaurant; [eat_and_drink,restaurant,meat_restaurant] +curry_sausage_restaurant; [eat_and_drink,restaurant,curry_sausage_restaurant] +diner; [eat_and_drink,restaurant,diner] +diy_foods_restaurant; [eat_and_drink,restaurant,diy_foods_restaurant] +doner_kebab; [eat_and_drink,restaurant,doner_kebab] +empanadas; [eat_and_drink,restaurant,empanadas] +nasi_restaurant; [eat_and_drink,restaurant,nasi_restaurant] +flatbread_restaurant; [eat_and_drink,restaurant,flatbread_restaurant] +food_court; [eat_and_drink,restaurant,food_court] +gastropub; [eat_and_drink,restaurant,gastropub] +pizza_restaurant; [eat_and_drink,restaurant,pizza_restaurant] +pop_up_restaurant; [eat_and_drink,restaurant,pop_up_restaurant] +poutinerie_restaurant; [eat_and_drink,restaurant,poutinerie_restaurant] +vegan_restaurant; [eat_and_drink,restaurant,vegan_restaurant] +vegetarian_restaurant; [eat_and_drink,restaurant,vegetarian_restaurant] +wok_restaurant; [eat_and_drink,restaurant,wok_restaurant] +wrap_restaurant; [eat_and_drink,restaurant,wrap_restaurant] +piadina_restaurant; [eat_and_drink,restaurant,piadina_restaurant] +poke_restaurant; [eat_and_drink,restaurant,poke_restaurant] +pigs_trotters_restaurant; [eat_and_drink,restaurant,pigs_trotters_restaurant] +potato_restaurant; [eat_and_drink,restaurant,potato_restaurant] +rotisserie_chicken_restaurant; [eat_and_drink,restaurant,rotisserie_chicken_restaurant] +schnitzel_restaurant; [eat_and_drink,restaurant,schnitzel_restaurant] +soul_food; [eat_and_drink,restaurant,soul_food] +steakhouse; [eat_and_drink,restaurant,steakhouse] +supper_club; [eat_and_drink,restaurant,supper_club] +tapas_bar; [eat_and_drink,restaurant,tapas_bar] +venison_restaurant; [eat_and_drink,restaurant,venison_restaurant] +wild_game_meats_restaurant; [eat_and_drink,restaurant,wild_game_meats_restaurant] +falafel_restaurant; [eat_and_drink,restaurant,falafel_restaurant] +taco_restaurant; [eat_and_drink,restaurant,taco_restaurant] +hot_dog_restaurant; [eat_and_drink,restaurant,hot_dog_restaurant] +live_and_raw_food_restaurant; [eat_and_drink,restaurant,live_and_raw_food_restaurant] +soup_restaurant; [eat_and_drink,restaurant,soup_restaurant] +theme_restaurant; [eat_and_drink,restaurant,theme_restaurant] +bar_and_grill_restaurant; [eat_and_drink,restaurant,bar_and_grill_restaurant] +meatball_restaurant; [eat_and_drink,restaurant,meatball_restaurant] +waffle_restaurant; [eat_and_drink,restaurant,waffle_restaurant] +breakfast_and_brunch_restaurant; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant] +pancake_house; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant,pancake_house] +bagel_restaurant; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant,bagel_restaurant] +baguettes; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant,baguettes] +bar; [eat_and_drink,bar] +airport_lounge; [eat_and_drink,bar,airport_lounge] +beach_bar; [eat_and_drink,bar,beach_bar] +beer_bar; [eat_and_drink,bar,beer_bar] +beer_garden; [eat_and_drink,bar,beer_garden] +brewery; [eat_and_drink,bar,brewery] +bubble_tea; [eat_and_drink,bar,bubble_tea] +champagne_bar; [eat_and_drink,bar,champagne_bar] +cidery; [eat_and_drink,bar,cidery] +cigar_bar; [eat_and_drink,bar,cigar_bar] +cocktail_bar; [eat_and_drink,bar,cocktail_bar] +dive_bar; [eat_and_drink,bar,dive_bar] +drive_thru_bar; [eat_and_drink,bar,drive_thru_bar] +gay_bar; [eat_and_drink,bar,gay_bar] +hookah_bar; [eat_and_drink,bar,hookah_bar] +hotel_bar; [eat_and_drink,bar,hotel_bar] +irish_pub; [eat_and_drink,bar,irish_pub] +kombucha; [eat_and_drink,bar,kombucha] +lounge; [eat_and_drink,bar,lounge] +milk_bar; [eat_and_drink,bar,milk_bar] +milkshake_bar; [eat_and_drink,bar,milkshake_bar] +pub; [eat_and_drink,bar,pub] +sake_bar; [eat_and_drink,bar,sake_bar] +speakeasy; [eat_and_drink,bar,speakeasy] +sports_bar; [eat_and_drink,bar,sports_bar] +sugar_shack; [eat_and_drink,bar,sugar_shack] +tabac; [eat_and_drink,bar,tabac] +tiki_bar; [eat_and_drink,bar,tiki_bar] +vermouth_bar; [eat_and_drink,bar,vermouth_bar] +whiskey_bar; [eat_and_drink,bar,whiskey_bar] +wine_bar; [eat_and_drink,bar,wine_bar] +smoothie_juice_bar; [eat_and_drink,bar,smoothie_juice_bar] +piano_bar; [eat_and_drink,bar,piano_bar] +cafe; [eat_and_drink,cafe] +coffee_roastery; [eat_and_drink,cafe,coffee_roastery] +tea_room; [eat_and_drink,cafe,tea_room] +coffee_shop; [eat_and_drink,cafe,coffee_shop] +accommodation; [accommodation] +bed_and_breakfast; [accommodation,bed_and_breakfast] +cabin; [accommodation,cabin] +campground; [accommodation,campground] +cottage; [accommodation,cottage] +guest_house; [accommodation,guest_house] +health_retreats; [accommodation,health_retreats] +holiday_rental_home; [accommodation,holiday_rental_home] +hostel; [accommodation,hostel] +hotel; [accommodation,hotel] +inn; [accommodation,inn] +lodge; [accommodation,lodge] +motel; [accommodation,motel] +mountain_huts; [accommodation,mountain_huts] +resort; [accommodation,resort] +beach_resort; [accommodation,resort,beach_resort] +rv_park; [accommodation,rv_park] +service_apartments; [accommodation,service_apartments] +automotive; [automotive] +automotive_dealer; [automotive,automotive_dealer] +car_buyer; [automotive,car_buyer] +car_dealer; [automotive,automotive_dealer,car_dealer] +commercial_vehicle_dealer; [automotive,automotive_dealer,commercial_vehicle_dealer] +golf_cart_dealer; [automotive,automotive_dealer,golf_cart_dealer] +motorcycle_dealer; [automotive,automotive_dealer,motorcycle_dealer] +motorsport_vehicle_dealer; [automotive,automotive_dealer,motorsport_vehicle_dealer] +recreational_vehicle_dealer; [automotive,automotive_dealer,recreational_vehicle_dealer] +scooter_dealers; [automotive,automotive_dealer,scooter_dealers] +trailer_dealer; [automotive,automotive_dealer,trailer_dealer] +truck_dealer; [automotive,automotive_dealer,truck_dealer] +used_car_dealer; [automotive,automotive_dealer,used_car_dealer] +automotive_services_and_repair; [automotive,automotive_services_and_repair] +auto_body_shop; [automotive,automotive_services_and_repair,auto_body_shop] +auto_customization; [automotive,automotive_services_and_repair,auto_customization] +auto_detailing; [automotive,automotive_services_and_repair,auto_detailing] +auto_electrical_repair; [automotive,automotive_services_and_repair,auto_electrical_repair] +auto_glass_service; [automotive,automotive_services_and_repair,auto_glass_service] +car_window_tinting; [automotive,automotive_services_and_repair,auto_glass_service,car_window_tinting] +auto_restoration_services; [automotive,automotive_services_and_repair,auto_restoration_services] +auto_security; [automotive,automotive_services_and_repair,auto_security] +automobile_registration_service; [automotive,automotive_services_and_repair,automobile_registration_service] +automotive_consultant; [automotive,automotive_services_and_repair,automotive_consultant] +automotive_storage_facility; [automotive,automotive_services_and_repair,automotive_storage_facility] +brake_service_and_repair; [automotive,automotive_services_and_repair,brake_service_and_repair] +car_inspection; [automotive,automotive_services_and_repair,car_inspection] +car_stereo_installation; [automotive,automotive_services_and_repair,car_stereo_installation] +car_wash; [automotive,automotive_services_and_repair,car_wash] +diy_auto_shop; [automotive,automotive_services_and_repair,diy_auto_shop] +emissions_inspection; [automotive,automotive_services_and_repair,emissions_inspection] +engine_repair_service; [automotive,automotive_services_and_repair,engine_repair_service] +exhaust_and_muffler_repair; [automotive,automotive_services_and_repair,exhaust_and_muffler_repair] +hybrid_car_repair; [automotive,automotive_services_and_repair,hybrid_car_repair] +motorcycle_repair; [automotive,automotive_services_and_repair,motorcycle_repair] +motorsport_vehicle_repair; [automotive,automotive_services_and_repair,motorsport_vehicle_repair] +oil_change_station; [automotive,automotive_services_and_repair,oil_change_station] +recreation_vehicle_repair; [automotive,automotive_services_and_repair,recreation_vehicle_repair] +roadside_assistance; [automotive,automotive_services_and_repair,roadside_assistance] +emergency_roadside_service; [automotive,automotive_services_and_repair,roadside_assistance,emergency_roadside_service] +mobile_dent_repair; [automotive,automotive_services_and_repair,roadside_assistance,mobile_dent_repair] +tire_dealer_and_repair; [automotive,automotive_services_and_repair,tire_dealer_and_repair] +transmission_repair; [automotive,automotive_services_and_repair,transmission_repair] +towing_service; [automotive,automotive_services_and_repair,towing_service] +trailer_repair; [automotive,automotive_services_and_repair,trailer_repair] +truck_repair; [automotive,automotive_services_and_repair,truck_repair] +auto_upholstery; [automotive,automotive_services_and_repair,auto_upholstery] +vehicle_wrap; [automotive,automotive_services_and_repair,vehicle_wrap] +vehicle_shipping; [automotive,automotive_services_and_repair,vehicle_shipping] +wheel_and_rim_repair; [automotive,automotive_services_and_repair,wheel_and_rim_repair] +automotive_wheel_polishing_service; [automotive,automotive_services_and_repair,automotive_wheel_polishing_service] +windshield_installation_and_repair; [automotive,automotive_services_and_repair,windshield_installation_and_repair] +automotive_parts_and_accessories; [automotive,automotive_parts_and_accessories] +recreational_vehicle_parts_and_accessories; [automotive,automotive_parts_and_accessories,recreational_vehicle_parts_and_accessories] +car_stereo_store; [automotive,automotive_parts_and_accessories,car_stereo_store] +motorcycle_gear; [automotive,automotive_parts_and_accessories,motorcycle_gear] +motorsports_store; [automotive,automotive_parts_and_accessories,motorsports_store] +interlock_system; [automotive,automotive_parts_and_accessories,interlock_system] +aircraft_dealer; [automotive,aircraft_dealer] +aircraft_repair; [automotive,aircraft_services_and_repair] +aircraft_parts_and_supplies; [automotive,aircraft_parts_and_supplies] +avionics_shop; [automotive,aircraft_parts_and_supplies,avionics_shop] +boat_dealer; [automotive,boat_dealer] +boat_service_and_repair; [automotive,boat_service_and_repair] +boat_parts_and_accessories; [automotive,boat_parts_and_accessories] +gas_station; [automotive,gas_station] +truck_gas_station; [automotive,gas_station,truck_gas_station] +fuel_dock; [automotive,gas_station,fuel_dock] +ev_charging_station; [automotive,electric_vehicle_charging_station] +truck_stop; [automotive,truck_stop] +automobile_leasing; [automotive,automobile_leasing] +automotive_repair; [automotive,automotive_repair] +auto_company; [automotive,auto_company] +motorcycle_manufacturer; [automotive,motorcycle_manufacturer] +arts_and_entertainment; [arts_and_entertainment] +adult_entertainment; [arts_and_entertainment,adult_entertainment] +erotic_massage; [arts_and_entertainment,adult_entertainment,erotic_massage] +strip_club; [arts_and_entertainment,adult_entertainment,strip_club] +striptease_dancer; [arts_and_entertainment,adult_entertainment,striptease_dancer] +arcade; [arts_and_entertainment,arcade] +auditorium; [arts_and_entertainment,auditorium] +bar_crawl; [arts_and_entertainment,bar_crawl] +betting_center; [arts_and_entertainment,betting_center] +bingo_hall; [arts_and_entertainment,bingo_hall] +bookmakers; [arts_and_entertainment,bookmakers] +cabaret; [arts_and_entertainment,cabaret] +carousel; [arts_and_entertainment,carousel] +casino; [arts_and_entertainment,casino] +chamber_of_handicraft; [arts_and_entertainment,chamber_of_handicraft] +choir; [arts_and_entertainment,choir] +circus; [arts_and_entertainment,circus] +club_crawl; [arts_and_entertainment,club_crawl] +comedy_club; [arts_and_entertainment,comedy_club] +topic_concert_venue; [arts_and_entertainment,topic_concert_venue] +country_club; [arts_and_entertainment,country_club] +country_dance_hall; [arts_and_entertainment,country_dance_hall] +dance_club; [arts_and_entertainment,dance_club] +dinner_theater; [arts_and_entertainment,dinner_theater] +eatertainment; [arts_and_entertainment,eatertainment] +escape_rooms; [arts_and_entertainment,escape_rooms] +exhibition_and_trade_center; [arts_and_entertainment,exhibition_and_trade_center] +glass_blowing; [arts_and_entertainment,glass_blowing] +indoor_playcenter; [arts_and_entertainment,indoor_playcenter] +internet_cafe; [arts_and_entertainment,internet_cafe] +jazz_and_blues; [arts_and_entertainment,jazz_and_blues] +karaoke; [arts_and_entertainment,karaoke] +laser_tag; [arts_and_entertainment,laser_tag] +makerspace; [arts_and_entertainment,makerspace] +marching_band; [arts_and_entertainment,marching_band] +music_venue; [arts_and_entertainment,music_venue] +musical_band_orchestras_and_symphonies; [arts_and_entertainment,musical_band_orchestras_and_symphonies] +opera_and_ballet; [arts_and_entertainment,opera_and_ballet] +paint_and_sip; [arts_and_entertainment,paint_and_sip] +paintball; [arts_and_entertainment,paintball] +performing_arts; [arts_and_entertainment,performing_arts] +planetarium; [arts_and_entertainment,planetarium] +rodeo; [arts_and_entertainment,rodeo] +salsa_club; [arts_and_entertainment,salsa_club] +wildlife_sanctuary; [arts_and_entertainment,wildlife_sanctuary] +stadium_arena; [arts_and_entertainment,stadium_arena] +baseball_stadium; [arts_and_entertainment,stadium_arena,baseball_stadium] +basketball_stadium; [arts_and_entertainment,stadium_arena,basketball_stadium] +cricket_ground; [arts_and_entertainment,stadium_arena,cricket_ground] +football_stadium; [arts_and_entertainment,stadium_arena,football_stadium] +hockey_arena; [arts_and_entertainment,stadium_arena,hockey_arena] +rugby_stadium; [arts_and_entertainment,stadium_arena,rugby_stadium] +soccer_stadium; [arts_and_entertainment,stadium_arena,soccer_stadium] +tennis_stadium; [arts_and_entertainment,stadium_arena,tennis_stadium] +track_stadium; [arts_and_entertainment,stadium_arena,track_stadium] +studio_taping; [arts_and_entertainment,studio_taping] +theaters_and_performance_venues; [arts_and_entertainment,theaters_and_performance_venues] +theatre; [arts_and_entertainment,theaters_and_performance_venues,theatre] +ticket_sales; [arts_and_entertainment,ticket_sales] +virtual_reality_center; [arts_and_entertainment,virtual_reality_center] +water_park; [arts_and_entertainment,water_park] +cinema; [arts_and_entertainment,cinema] +drive_in_theater; [arts_and_entertainment,cinema,drive_in_theater] +outdoor_movies; [arts_and_entertainment,cinema,outdoor_movies] +farm; [arts_and_entertainment,farm] +attraction_farm; [arts_and_entertainment,farm,attraction_farm] +orchard; [arts_and_entertainment,farm,orchard] +pick_your_own_farm; [arts_and_entertainment,farm,pick_your_own_farm] +poultry_farm; [arts_and_entertainment,farm,poultry_farm] +ranch; [arts_and_entertainment,farm,ranch] +festival; [arts_and_entertainment,festival] +fair; [arts_and_entertainment,festival,fair] +film_festivals_and_organizations; [arts_and_entertainment,festival,film_festivals_and_organizations] +general_festivals; [arts_and_entertainment,festival,general_festivals] +holiday_market; [arts_and_entertainment,festival,holiday_market] +music_festivals_and_organizations; [arts_and_entertainment,festival,music_festivals_and_organizations] +trade_fair; [arts_and_entertainment,festival,trade_fair] +social_club; [arts_and_entertainment,social_club] +fraternal_organization; [arts_and_entertainment,social_club,fraternal_organization] +veterans_organization; [arts_and_entertainment,social_club,veterans_organization] +supernatural_reading; [arts_and_entertainment,supernatural_reading] +astrologer; [arts_and_entertainment,supernatural_reading,astrologer] +mystic; [arts_and_entertainment,supernatural_reading,mystic] +psychic; [arts_and_entertainment,supernatural_reading,psychic] +psychic_medium; [arts_and_entertainment,supernatural_reading,psychic_medium] +attractions_and_activities; [attractions_and_activities] +amusement_park; [attractions_and_activities,amusement_park] +aquarium; [attractions_and_activities,aquarium] +architecture; [attractions_and_activities,architecture] +art_gallery; [attractions_and_activities,art_gallery] +atv_rentals_and_tours; [attractions_and_activities,atv_rentals_and_tours] +axe_throwing; [attractions_and_activities,axe_throwing] +backpacking_area; [attractions_and_activities,backpacking_area] +beach; [attractions_and_activities,beach] +beach_combing_area; [attractions_and_activities,beach_combing_area] +boat_rental_and_training; [attractions_and_activities,boat_rental_and_training] +boating_places; [attractions_and_activities,boating_places] +bobsledding_field; [attractions_and_activities,bobsledding_field] +botanical_garden; [attractions_and_activities,botanical_garden] +bungee_jumping_center; [attractions_and_activities,bungee_jumping_center] +canyon; [attractions_and_activities,canyon] +castle; [attractions_and_activities,castle] +cave; [attractions_and_activities,cave] +challenge_courses_center; [attractions_and_activities,challenge_courses_center] +cliff_jumping_center; [attractions_and_activities,cliff_jumping_center] +climbing_service; [attractions_and_activities,climbing_service] +crater; [attractions_and_activities,crater] +cultural_center; [attractions_and_activities,cultural_center] +fishing_charter; [attractions_and_activities,fishing_charter] +flyboarding_rental; [attractions_and_activities,flyboarding_rental] +fort; [attractions_and_activities,fort] +fountain; [attractions_and_activities,fountain] +go_kart_track; [attractions_and_activities,go_kart_track] +haunted_house; [attractions_and_activities,haunted_house] +high_gliding_center; [attractions_and_activities,high_gliding_center] +horseback_riding_service; [attractions_and_activities,horseback_riding_service] +hot_air_balloons_tour; [attractions_and_activities,hot_air_balloons_tour] +hot_springs; [attractions_and_activities,hot_springs] +jet_skis_rental; [attractions_and_activities,jet_skis_rental] +kiteboarding_instruction; [attractions_and_activities,kiteboarding_instruction] +lake; [attractions_and_activities,lake] +landmark_and_historical_building; [attractions_and_activities,landmark_and_historical_building] +lighthouse; [attractions_and_activities,lighthouse] +lookout; [attractions_and_activities,lookout] +marina; [attractions_and_activities,marina] +monument; [attractions_and_activities,monument] +mountain_bike_parks; [attractions_and_activities,mountain_bike_parks] +observatory; [attractions_and_activities,observatory] +paddleboard_rental; [attractions_and_activities,paddleboard_rental] +palace; [attractions_and_activities,palace] +parasailing_ride_service; [attractions_and_activities,parasailing_ride_service] +plaza; [attractions_and_activities,plaza] +rafting_kayaking_area; [attractions_and_activities,rafting_kayaking_area] +rock_climbing_spot; [attractions_and_activities,rock_climbing_spot] +ruin; [attractions_and_activities,ruin] +sailing_area; [attractions_and_activities,sailing_area] +sand_dune; [attractions_and_activities,sand_dune] +scavenger_hunts_provider; [attractions_and_activities,scavenger_hunts_provider] +sculpture_statue; [attractions_and_activities,sculpture_statue] +ski_area; [attractions_and_activities,ski_area] +skyline; [attractions_and_activities,skyline] +sledding_rental; [attractions_and_activities,sledding_rental] +snorkeling_equipment_rental; [attractions_and_activities,snorkeling_equipment_rental] +snorkeling; [attractions_and_activities,snorkeling] +snowboarding_center; [attractions_and_activities,snowboarding_center] +stargazing_area; [attractions_and_activities,stargazing_area] +street_art; [attractions_and_activities,street_art] +trail; [attractions_and_activities,trail] +hiking_trail; [attractions_and_activities,trail,hiking_trail] +mountain_bike_trails; [attractions_and_activities,trail,mountain_bike_trails] +waterfall; [attractions_and_activities,waterfall] +surfing; [attractions_and_activities,surfing] +surfboard_rental; [attractions_and_activities,surfing,surfboard_rental] +windsurfing_center; [attractions_and_activities,surfing,windsurfing_center] +ziplining_center; [attractions_and_activities,ziplining_center] +zoo; [attractions_and_activities,zoo] +petting_zoo; [attractions_and_activities,zoo,petting_zoo] +museum; [attractions_and_activities,museum] +art_museum; [attractions_and_activities,museum,art_museum] +asian_art_museum; [attractions_and_activities,museum,art_museum,asian_art_museum] +cartooning_museum; [attractions_and_activities,museum,art_museum,cartooning_museum] +contemporary_art_museum; [attractions_and_activities,museum,art_museum,contemporary_art_museum] +childrens_museum; [attractions_and_activities,museum,childrens_museum] +costume_museum; [attractions_and_activities,museum,art_museum,costume_museum] +decorative_arts_museum; [attractions_and_activities,museum,art_museum,decorative_arts_museum] +design_museum; [attractions_and_activities,museum,art_museum,design_museum] +modern_art_museum; [attractions_and_activities,museum,art_museum,modern_art_museum] +photography_museum; [attractions_and_activities,museum,art_museum,photography_museum] +textile_museum; [attractions_and_activities,museum,art_museum,textile_museum] +history_museum; [attractions_and_activities,museum,history_museum] +civilization_museum; [attractions_and_activities,museum,history_museum,civilization_museum] +community_museum; [attractions_and_activities,museum,history_museum,community_museum] +military_museum; [attractions_and_activities,museum,military_museum] +national_museum; [attractions_and_activities,museum,national_museum] +science_museum; [attractions_and_activities,museum,science_museum] +computer_museum; [attractions_and_activities,museum,science_museum,computer_museum] +state_museum; [attractions_and_activities,museum,state_museum] +aviation_museum; [attractions_and_activities,museum,aviation_museum] +sports_museum; [attractions_and_activities,museum,sports_museum] +park; [attractions_and_activities,park] +dog_park; [attractions_and_activities,park,dog_park] +memorial_park; [attractions_and_activities,park,memorial_park] +national_park; [attractions_and_activities,park,national_park] +state_park; [attractions_and_activities,park,state_park] +active_life; [active_life] +sports_and_recreation_venue; [active_life,sports_and_recreation_venue] +adventure_sports_center; [active_life,sports_and_recreation_venue,adventure_sports_center] +american_football_field; [active_life,sports_and_recreation_venue,american_football_field] +airsoft_fields; [active_life,sports_and_recreation_venue,airsoft_fields] +archery_range; [active_life,sports_and_recreation_venue,archery_range] +atv_recreation_park; [active_life,sports_and_recreation_venue,atv_recreation_park] +badminton_court; [active_life,sports_and_recreation_venue,badminton_court] +baseball_field; [active_life,sports_and_recreation_venue,baseball_field] +basketball_court; [active_life,sports_and_recreation_venue,basketball_court] +batting_cage; [active_life,sports_and_recreation_venue,batting_cage] +beach_volleyball_court; [active_life,sports_and_recreation_venue,beach_volleyball_court] +bicycle_path; [active_life,sports_and_recreation_venue,bicycle_path] +bocce_ball_court; [active_life,sports_and_recreation_venue,bocce_ball_court] +bowling_alley; [active_life,sports_and_recreation_venue,bowling_alley] +bubble_soccer_field; [active_life,sports_and_recreation_venue,bubble_soccer_field] +disc_golf_course; [active_life,sports_and_recreation_venue,disc_golf_course] +flyboarding_center; [active_life,sports_and_recreation_venue,flyboarding_center] +futsal_field; [active_life,sports_and_recreation_venue,futsal_field] +golf_course; [active_life,sports_and_recreation_venue,golf_course] +driving_range; [active_life,sports_and_recreation_venue,golf_course,driving_range] +gym; [active_life,sports_and_recreation_venue,gym] +gymnastics_center; [active_life,sports_and_recreation_venue,gymnastics_center] +handball_court; [active_life,sports_and_recreation_venue,handball_court] +hockey_field; [active_life,sports_and_recreation_venue,hockey_field] +horse_riding; [active_life,sports_and_recreation_venue,horse_riding] +equestrian_facility; [active_life,sports_and_recreation_venue,horse_riding,equestrian_facility] +horse_racing_track; [active_life,sports_and_recreation_venue,horse_riding,horse_racing_track] +skate_park; [active_life,sports_and_recreation_venue,skate_park] +skating_rink; [active_life,sports_and_recreation_venue,skating_rink] +ice_skating_rink; [active_life,sports_and_recreation_venue,skating_rink,ice_skating_rink] +roller_skating_rink; [active_life,sports_and_recreation_venue,skating_rink,roller_skating_rink] +hang_gliding_center; [active_life,sports_and_recreation_venue,hang_gliding_center] +kiteboarding; [active_life,sports_and_recreation_venue,kiteboarding] +miniature_golf_course; [active_life,sports_and_recreation_venue,miniature_golf_course] +paddleboarding_center; [active_life,sports_and_recreation_venue,paddleboarding_center] +playground; [active_life,sports_and_recreation_venue,playground] +pool_billiards; [active_life,sports_and_recreation_venue,pool_billiards] +pool_hall; [active_life,sports_and_recreation_venue,pool_billiards,pool_hall] +racquetball_court; [active_life,sports_and_recreation_venue,racquetball_court] +rock_climbing_gym; [active_life,sports_and_recreation_venue,rock_climbing_gym] +rugby_pitch; [active_life,sports_and_recreation_venue,rugby_pitch] +shooting_range; [active_life,sports_and_recreation_venue,shooting_range] +sky_diving; [active_life,sports_and_recreation_venue,sky_diving] +soccer_field; [active_life,sports_and_recreation_venue,soccer_field] +squash_court; [active_life,sports_and_recreation_venue,squash_court] +swimming_pool; [active_life,sports_and_recreation_venue,swimming_pool] +tennis_court; [active_life,sports_and_recreation_venue,tennis_court] +trampoline_park; [active_life,sports_and_recreation_venue,trampoline_park] +tubing_provider; [active_life,sports_and_recreation_venue,tubing_provider] +volleyball_court; [active_life,sports_and_recreation_venue,volleyball_court] +wildlife_hunting_range; [active_life,sports_and_recreation_venue,wildlife_hunting_range] +zorbing_center; [active_life,sports_and_recreation_venue,zorbing_center] +diving_center; [active_life,sports_and_recreation_venue,diving_center] +free_diving_center; [active_life,sports_and_recreation_venue,diving_center,free_diving_center] +scuba_diving_center; [active_life,sports_and_recreation_venue,diving_center,scuba_diving_center] +race_track; [active_life,sports_and_recreation_venue,race_track] +sports_and_fitness_instruction; [active_life,sports_and_fitness_instruction] +climbing_class; [active_life,sports_and_fitness_instruction,climbing_class] +cycling_classes; [active_life,sports_and_fitness_instruction,cycling_classes] +golf_instructor; [active_life,sports_and_fitness_instruction,golf_instructor] +paddleboarding_lessons; [active_life,sports_and_fitness_instruction,paddleboarding_lessons] +racing_experience; [active_life,sports_and_fitness_instruction,racing_experience] +rock_climbing_instructor; [active_life,sports_and_fitness_instruction,rock_climbing_instructor] +free_diving_instruction; [active_life,sports_and_fitness_instruction,diving_instruction,free_diving_instruction] +scuba_diving_instruction; [active_life,sports_and_fitness_instruction,diving_instruction,scuba_diving_instruction] +aerial_fitness_center; [active_life,sports_and_fitness_instruction,aerial_fitness_center] +barre_classes; [active_life,sports_and_fitness_instruction,barre_classes] +boot_camp; [active_life,sports_and_fitness_instruction,boot_camp] +boxing_class; [active_life,sports_and_fitness_instruction,boxing_class] +boxing_club; [active_life,sports_and_fitness_instruction,boxing_club] +boxing_gym; [active_life,sports_and_fitness_instruction,boxing_gym] +cardio_classes; [active_life,sports_and_fitness_instruction,cardio_classes] +dance_school; [active_life,sports_and_fitness_instruction,dance_school] +ems_training; [active_life,sports_and_fitness_instruction,ems_training] +fitness_trainer; [active_life,sports_and_fitness_instruction,fitness_trainer] +health_consultant; [active_life,sports_and_fitness_instruction,health_consultant] +meditation_center; [active_life,sports_and_fitness_instruction,meditation_center] +pilates_studio; [active_life,sports_and_fitness_instruction,pilates_studio] +qi_gong_studio; [active_life,sports_and_fitness_instruction,qi_gong_studio] +self_defense_classes; [active_life,sports_and_fitness_instruction,self_defense_classes] +ski_and_snowboard_school; [active_life,sports_and_fitness_instruction,ski_and_snowboard_school] +surfing_school; [active_life,sports_and_fitness_instruction,surfing_school] +swimming_instructor; [active_life,sports_and_fitness_instruction,swimming_instructor] +tai_chi_studio; [active_life,sports_and_fitness_instruction,tai_chi_studio] +yoga_instructor; [active_life,sports_and_fitness_instruction,yoga_instructor] +yoga_studio; [active_life,sports_and_fitness_instruction,yoga_studio] +sports_club_and_league; [active_life,sports_club_and_league] +amateur_sports_league; [active_life,sports_club_and_league,amateur_sports_league] +amateur_sports_team; [active_life,sports_club_and_league,amateur_sports_team] +beach_volleyball_club; [active_life,sports_club_and_league,beach_volleyball_club] +esports_league; [active_life,sports_club_and_league,esports_league] +esports_team; [active_life,sports_club_and_league,esports_team] +fencing_club; [active_life,sports_club_and_league,fencing_club] +fishing_club; [active_life,sports_club_and_league,fishing_club] +football_club; [active_life,sports_club_and_league,football_club] +go_kart_club; [active_life,sports_club_and_league,go_kart_club] +gymnastics_club; [active_life,sports_club_and_league,gymnastics_club] +lawn_bowling_club; [active_life,sports_club_and_league,lawn_bowling_club] +nudist_clubs; [active_life,sports_club_and_league,nudist_clubs] +paddle_tennis_club; [active_life,sports_club_and_league,paddle_tennis_club] +professional_sports_league; [active_life,sports_club_and_league,professional_sports_league] +professional_sports_team; [active_life,sports_club_and_league,professional_sports_team] +rowing_club; [active_life,sports_club_and_league,rowing_club] +sailing_club; [active_life,sports_club_and_league,sailing_club] +school_sports_league; [active_life,sports_club_and_league,school_sports_league] +school_sports_team; [active_life,sports_club_and_league,school_sports_team] +soccer_club; [active_life,sports_club_and_league,soccer_club] +surf_lifesaving_club; [active_life,sports_club_and_league,surf_lifesaving_club] +table_tennis_club; [active_life,sports_club_and_league,table_tennis_club] +volleyball_club; [active_life,sports_club_and_league,volleyball_club] +golf_club; [active_life,sports_club_and_league,golf_club] +indoor_golf_center; [active_life,sports_club_and_league,golf_club,indoor_golf_center] +martial_arts_club; [active_life,sports_club_and_league,martial_arts_club] +brazilian_jiu_jitsu_club; [active_life,sports_club_and_league,martial_arts_club,brazilian_jiu_jitsu_club] +chinese_martial_arts_club; [active_life,sports_club_and_league,martial_arts_club,chinese_martial_arts_club] +karate_club; [active_life,sports_club_and_league,martial_arts_club,karate_club] +kickboxing_club; [active_life,sports_club_and_league,martial_arts_club,kickboxing_club] +muay_thai_club; [active_life,sports_club_and_league,martial_arts_club,muay_thai_club] +taekwondo_club; [active_life,sports_club_and_league,martial_arts_club,taekwondo_club] +sports_and_recreation_rental_and_services; [active_life,sports_and_recreation_rental_and_services] +beach_equipment_rentals; [active_life,sports_and_recreation_rental_and_services,beach_equipment_rentals] +bike_rentals; [active_life,sports_and_recreation_rental_and_services,bike_rentals] +canoe_and_kayak_hire_service; [active_life,sports_and_recreation_rental_and_services,boat_hire_service,canoe_and_kayak_hire_service] +scooter_rental; [active_life,sports_and_recreation_rental_and_services,scooter_rental] +sport_equipment_rentals; [active_life,sports_and_recreation_rental_and_services,sport_equipment_rentals] +beauty_and_spa; [beauty_and_spa] +aromatherapy; [beauty_and_spa,aromatherapy] +beauty_salon; [beauty_and_spa,beauty_salon] +acne_treatment; [beauty_and_spa,acne_treatment] +barber; [beauty_and_spa,barber] +eyebrow_service; [beauty_and_spa,eyebrow_service] +eyelash_service; [beauty_and_spa,eyelash_service] +foot_care; [beauty_and_spa,foot_care] +hair_extensions; [beauty_and_spa,hair_extensions] +hair_loss_center; [beauty_and_spa,hair_loss_center] +hair_replacement; [beauty_and_spa,hair_replacement] +health_spa; [beauty_and_spa,health_spa] +makeup_artist; [beauty_and_spa,makeup_artist] +massage; [beauty_and_spa,massage] +nail_salon; [beauty_and_spa,nail_salon] +onsen; [beauty_and_spa,onsen] +permanent_makeup; [beauty_and_spa,permanent_makeup] +tattoo_and_piercing; [beauty_and_spa,tattoo_and_piercing] +piercing; [beauty_and_spa,tattoo_and_piercing,piercing] +tattoo; [beauty_and_spa,tattoo_and_piercing,tattoo] +public_bath_houses; [beauty_and_spa,public_bath_houses] +teeth_whitening; [beauty_and_spa,teeth_whitening] +turkish_baths; [beauty_and_spa,turkish_baths] +hair_removal; [beauty_and_spa,hair_removal] +laser_hair_removal; [beauty_and_spa,hair_removal,laser_hair_removal] +sugaring; [beauty_and_spa,hair_removal,sugaring] +threading_service; [beauty_and_spa,hair_removal,threading_service] +waxing; [beauty_and_spa,hair_removal,waxing] +hair_salon; [beauty_and_spa,hair_salon] +blow_dry_blow_out_service; [beauty_and_spa,hair_salon,blow_dry_blow_out_service] +hair_stylist; [beauty_and_spa,hair_salon,hair_stylist] +kids_hair_salon; [beauty_and_spa,hair_salon,kids_hair_salon] +spas; [beauty_and_spa,spas] +medical_spa; [beauty_and_spa,spas,medical_spa] +day_spa; [beauty_and_spa,spas,day_spa] +skin_care; [beauty_and_spa,skin_care] +esthetician; [beauty_and_spa,skin_care,esthetician] +tanning_salon; [beauty_and_spa,tanning_salon] +spray_tanning; [beauty_and_spa,tanning_salon,spray_tanning] +tanning_bed; [beauty_and_spa,tanning_salon,tanning_bed] +image_consultant; [beauty_and_spa,image_consultant] +education; [education] +adult_education; [education,adult_education] +board_of_education_offices; [education,board_of_education_offices] +campus_building; [education,campus_building] +college_counseling; [education,college_counseling] +college_university; [education,college_university] +architecture_schools; [education,college_university,architecture_schools] +business_schools; [education,college_university,business_schools] +engineering_schools; [education,college_university,engineering_schools] +law_schools; [education,college_university,law_schools] +medical_sciences_schools; [education,college_university,medical_sciences_schools] +dentistry_schools; [education,college_university,medical_sciences_schools,dentistry_schools] +pharmacy_schools; [education,college_university,medical_sciences_schools,pharmacy_schools] +veterinary_schools; [education,college_university,medical_sciences_schools,veterinary_schools] +science_schools; [education,college_university,science_schools] +educational_research_institute; [education,educational_research_institute] +educational_services; [education,educational_services] +archaeological_services; [education,educational_services,archaeological_services] +educational_camp; [education,educational_camp] +private_tutor; [education,private_tutor] +school; [education,school] +charter_school; [education,school,charter_school] +elementary_school; [education,school,elementary_school] +high_school; [education,school,high_school] +middle_school; [education,school,middle_school] +montessori_school; [education,school,montessori_school] +preschool; [education,school,preschool] +private_school; [education,school,private_school] +public_school; [education,school,public_school] +religious_school; [education,school,religious_school] +waldorf_school; [education,school,waldorf_school] +school_district_offices; [education,school_district_offices] +specialty_school; [education,specialty_school] +art_school; [education,specialty_school,art_school] +bartending_school; [education,specialty_school,bartending_school] +cheerleading; [education,specialty_school,cheerleading] +childbirth_education; [education,specialty_school,childbirth_education] +circus_school; [education,specialty_school,circus_school] +computer_coaching; [education,specialty_school,computer_coaching] +cooking_school; [education,specialty_school,cooking_school] +cosmetology_school; [education,specialty_school,cosmetology_school] +cpr_classes; [education,specialty_school,cpr_classes] +drama_school; [education,specialty_school,drama_school] +driving_school; [education,specialty_school,driving_school] +dui_school; [education,specialty_school,dui_school] +firearm_training; [education,specialty_school,firearm_training] +first_aid_class; [education,specialty_school,first_aid_class] +flight_school; [education,specialty_school,flight_school] +food_safety_training; [education,specialty_school,food_safety_training] +language_school; [education,specialty_school,language_school] +massage_school; [education,specialty_school,massage_school] +medical_school; [education,specialty_school,medical_school] +music_school; [education,specialty_school,music_school] +nursing_school; [education,specialty_school,nursing_school] +parenting_classes; [education,specialty_school,parenting_classes] +photography_classes; [education,specialty_school,photography_classes] +speech_training; [education,specialty_school,speech_training] +sports_school; [education,specialty_school,sports_school] +traffic_school; [education,specialty_school,traffic_school] +vocational_and_technical_school; [education,specialty_school,vocational_and_technical_school] +student_union; [education,student_union] +tasting_classes; [education,tasting_classes] +cheese_tasting_classes; [education,tasting_classes,cheese_tasting_classes] +wine_tasting_classes; [education,tasting_classes,wine_tasting_classes] +test_preparation; [education,test_preparation] +tutoring_center; [education,tutoring_center] +civil_examinations_academy; [education,tutoring_center,civil_examinations_academy] +financial_service; [financial_service] +accountant; [financial_service,accountant] +atms; [financial_service,atms] +bank_credit_union; [financial_service,bank_credit_union] +banks; [financial_service,bank_credit_union,banks] +credit_union; [financial_service,bank_credit_union,credit_union] +brokers; [financial_service,brokers] +business_brokers; [financial_service,brokers,business_brokers] +stock_and_bond_brokers; [financial_service,brokers,stock_and_bond_brokers] +business_banking_service; [financial_service,business_banking_service] +business_financing; [financial_service,business_financing] +check_cashing_payday_loans; [financial_service,check_cashing_payday_loans] +coin_dealers; [financial_service,coin_dealers] +collection_agencies; [financial_service,collection_agencies] +credit_and_debt_counseling; [financial_service,credit_and_debt_counseling] +currency_exchange; [financial_service,currency_exchange] +debt_relief_services; [financial_service,debt_relief_services] +financial_advising; [financial_service,financial_advising] +holding_companies; [financial_service,holding_companies] +investment_management_company; [financial_service,investment_management_company] +installment_loans; [financial_service,installment_loans] +mortgage_lender; [financial_service,installment_loans,mortgage_lender] +auto_loan_provider; [financial_service,installment_loans,auto_loan_provider] +insurance_agency; [financial_service,insurance_agency] +auto_insurance; [financial_service,insurance_agency,auto_insurance] +farm_insurance; [financial_service,insurance_agency,farm_insurance] +fidelity_and_surety_bonds; [financial_service,insurance_agency,fidelity_and_surety_bonds] +home_and_rental_insurance; [financial_service,insurance_agency,home_and_rental_insurance] +life_insurance; [financial_service,insurance_agency,life_insurance] +investing; [financial_service,investing] +money_transfer_services; [financial_service,money_transfer_services] +tax_services; [financial_service,tax_services] +trusts; [financial_service,trusts] +private_establishments_and_corporates; [private_establishments_and_corporates] +corporate_entertainment_services; [private_establishments_and_corporates,corporate_entertainment_services] +corporate_gift_supplier; [private_establishments_and_corporates,corporate_gift_supplier] +corporate_office; [private_establishments_and_corporates,corporate_office] +private_equity_firm; [private_establishments_and_corporates,private_equity_firm] +retail; [retail] +food; [retail,food] +back_shop; [retail,food,back_shop] +bagel_shop; [retail,food,bagel_shop] +bakery; [retail,food,bakery] +flatbread; [retail,food,bakery,flatbread] +beer_wine_and_spirits; [retail,food,beer_wine_and_spirits] +box_lunch_supplier; [retail,food,box_lunch_supplier] +patisserie_cake_shop; [retail,food,patisserie_cake_shop] +chimney_cake_shop; [retail,food,patisserie_cake_shop,chimney_cake_shop] +cupcake_shop; [retail,food,patisserie_cake_shop,cupcake_shop] +custom_cakes_shop; [retail,food,patisserie_cake_shop,custom_cakes_shop] +coffee_and_tea_supplies; [retail,food,coffee_and_tea_supplies] +csa_farm; [retail,food,csa_farm] +desserts; [retail,food,desserts] +donuts; [retail,food,donuts] +fishmonger; [retail,food,fishmonger] +food_delivery_service; [retail,food,food_delivery_service] +food_stand; [retail,food,food_stand] +food_truck; [retail,food,food_truck] +friterie; [retail,food,friterie] +health_food_store; [retail,food,health_food_store] +ice_cream_and_frozen_yoghurt; [retail,food,ice_cream_and_frozen_yoghurt] +gelato; [retail,food,ice_cream_and_frozen_yoghurt,gelato] +ice_cream_shop; [retail,food,ice_cream_and_frozen_yoghurt,ice_cream_shop] +frozen_yoghurt_shop; [retail,food,ice_cream_and_frozen_yoghurt,frozen_yoghurt_shop] +shaved_ice_shop; [retail,food,ice_cream_and_frozen_yoghurt,shaved_ice_shop] +shaved_snow_shop; [retail,food,ice_cream_and_frozen_yoghurt,shaved_snow_shop] +imported_food; [retail,food,imported_food] +kiosk; [retail,food,kiosk] +liquor_store; [retail,food,liquor_store] +mulled_wine; [retail,food,mulled_wine] +pie_shop; [retail,food,pie_shop] +pretzels; [retail,food,pretzels] +sandwich_shop; [retail,food,sandwich_shop] +smokehouse; [retail,food,smokehouse] +street_vendor; [retail,food,street_vendor] +pizza_delivery_service; [retail,food,food_delivery_service,pizza_delivery_service] +specialty_foods; [retail,food,specialty_foods] +delicatessen; [retail,food,specialty_foods,delicatessen] +frozen_foods; [retail,food,specialty_foods,frozen_foods] +indian_sweets_shop; [retail,food,specialty_foods,indian_sweets_shop] +macarons; [retail,food,specialty_foods,macarons] +pasta_shop; [retail,food,specialty_foods,pasta_shop] +winery; [retail,food,winery] +wine_tasting_room; [retail,food,winery,wine_tasting_room] +auto_parts_and_supply_store; [retail,auto_parts_and_supply_store] +beverage_store; [retail,beverage_store] +boat_parts_and_supply_store; [retail,boat_parts_and_supply_store] +butcher_shop; [retail,food,butcher_shop] +candy_store; [retail,food,candy_store] +japanese_confectionery_shop; [retail,food,candy_store,japanese_confectionery_shop] +carpet_store; [retail,carpet_store] +cheese_shop; [retail,food,cheese_shop] +chocolatier; [retail,food,chocolatier] +distillery; [retail,distillery] +drugstore; [retail,drugstore] +flooring_store; [retail,flooring_store] +fruits_and_vegetables; [retail,food,fruits_and_vegetables] +health_market; [retail,health_market] +hearing_aid_provider; [retail,hearing_aid_provider] +herb_and_spice_shop; [retail,herb_and_spice_shop] +honey_farm_shop; [retail,honey_farm_shop] +meat_shop; [retail,meat_shop] +olive_oil; [retail,olive_oil] +party_supply; [retail,party_supply] +pharmacy; [retail,pharmacy] +popcorn_shop; [retail,popcorn_shop] +seafood_market; [retail,seafood_market] +water_store; [retail,water_store] +shopping; [retail,shopping] +arts_and_crafts; [retail,shopping,arts_and_crafts] +art_supply_store; [retail,shopping,arts_and_crafts,art_supply_store] +atelier; [retail,shopping,arts_and_crafts,atelier] +cooking_classes; [retail,shopping,arts_and_crafts,cooking_classes] +costume_store; [retail,shopping,arts_and_crafts,costume_store] +craft_shop; [retail,shopping,arts_and_crafts,craft_shop] +embroidery_and_crochet; [retail,shopping,arts_and_crafts,embroidery_and_crochet] +fabric_store; [retail,shopping,arts_and_crafts,fabric_store] +framing_store; [retail,shopping,arts_and_crafts,framing_store] +handicraft_shop; [retail,shopping,arts_and_crafts,handicraft_shop] +paint_your_own_pottery; [retail,shopping,arts_and_crafts,paint_your_own_pottery] +books_mags_music_and_video; [retail,shopping,books_mags_music_and_video] +bookstore; [retail,shopping,books_mags_music_and_video,bookstore] +academic_bookstore; [retail,shopping,books_mags_music_and_video,academic_bookstore] +comic_books_store; [retail,shopping,books_mags_music_and_video,comic_books_store] +music_and_dvd_store; [retail,shopping,books_mags_music_and_video,music_and_dvd_store] +newspaper_and_magazines_store; [retail,shopping,books_mags_music_and_video,newspaper_and_magazines_store] +video_and_video_game_rentals; [retail,shopping,books_mags_music_and_video,video_and_video_game_rentals] +video_game_store; [retail,shopping,books_mags_music_and_video,video_game_store] +vinyl_record_store; [retail,shopping,books_mags_music_and_video,vinyl_record_store] +building_supply_store; [retail,shopping,building_supply_store] +lumber_store; [retail,shopping,building_supply_store,lumber_store] +fashion; [retail,shopping,fashion] +clothing_store; [retail,shopping,fashion,clothing_store] +ceremonial_clothing; [retail,shopping,fashion,clothing_store,ceremonial_clothing] +childrens_clothing_store; [retail,shopping,fashion,clothing_store,childrens_clothing_store] +clothing_rental; [retail,shopping,fashion,clothing_store,clothing_rental] +denim_wear_store; [retail,shopping,fashion,clothing_store,denim_wear_store] +designer_clothing; [retail,shopping,fashion,clothing_store,designer_clothing] +formal_wear_store; [retail,shopping,fashion,clothing_store,formal_wear_store] +fur_clothing; [retail,shopping,fashion,clothing_store,fur_clothing] +lingerie_store; [retail,shopping,fashion,clothing_store,lingerie_store] +maternity_wear; [retail,shopping,fashion,clothing_store,maternity_wear] +mens_clothing_store; [retail,shopping,fashion,clothing_store,mens_clothing_store] +t_shirt_store; [retail,shopping,fashion,clothing_store,t_shirt_store] +custom_t_shirt_store; [retail,shopping,fashion,clothing_store,t_shirt_store] +traditional_clothing; [retail,shopping,fashion,clothing_store,traditional_clothing] +womens_clothing_store; [retail,shopping,fashion,clothing_store,womens_clothing_store] +fashion_accessories_store; [retail,shopping,fashion,fashion_accessories_store] +hat_shop; [retail,shopping,fashion,hat_shop] +leather_goods; [retail,shopping,fashion,leather_goods] +plus_size_clothing; [retail,shopping,fashion,plus_size_clothing] +saree_shop; [retail,shopping,fashion,saree_shop] +sleepwear; [retail,shopping,fashion,sleepwear] +stocking; [retail,shopping,fashion,stocking] +used_vintage_and_consignment; [retail,shopping,fashion,used_vintage_and_consignment] +handbag_stores; [retail,shopping,fashion,fashion_accessories_store,handbag_stores] +shoe_store; [retail,shopping,fashion,shoe_store] +orthopedic_shoe_store; [retail,shopping,fashion,shoe_store,orthopedic_shoe_store] +cosmetic_and_beauty_supplies; [retail,shopping,cosmetic_and_beauty_supplies] +hair_supply_stores; [retail,shopping,cosmetic_and_beauty_supplies,hair_supply_stores] +eyewear_and_optician; [retail,shopping,eyewear_and_optician] +sunglasses_store; [retail,shopping,eyewear_and_optician,sunglasses_store] +farming_equipment_store; [retail,shopping,farming_equipment_store] +forklift_dealer; [retail,shopping,farming_equipment_store,forklift_dealer] +flowers_and_gifts_shop; [retail,shopping,flowers_and_gifts_shop] +florist; [retail,shopping,flowers_and_gifts_shop,florist] +gift_shop; [retail,shopping,flowers_and_gifts_shop,gift_shop] +grocery_store; [retail,shopping,grocery_store] +specialty_grocery_store; [retail,shopping,grocery_store,specialty_grocery_store] +asian_grocery_store; [retail,shopping,grocery_store,asian_grocery_store] +dairy_stores; [retail,shopping,grocery_store,dairy_stores] +ethical_grocery; [retail,shopping,grocery_store,ethical_grocery] +indian_grocery_store; [retail,shopping,grocery_store,indian_grocery_store] +japanese_grocery_store; [retail,shopping,grocery_store,japanese_grocery_store] +korean_grocery_store; [retail,shopping,grocery_store,korean_grocery_store] +kosher_grocery_store; [retail,shopping,grocery_store,kosher_grocery_store] +mexican_grocery_store; [retail,shopping,grocery_store,mexican_grocery_store] +organic_grocery_store; [retail,shopping,grocery_store,organic_grocery_store] +rice_shop; [retail,shopping,grocery_store,rice_shop] +russian_grocery_store; [retail,shopping,grocery_store,russian_grocery_store] +home_and_garden; [retail,shopping,home_and_garden] +hardware_store; [retail,shopping,home_and_garden,hardware_store] +welding_supply_store; [retail,shopping,home_and_garden,hardware_store,welding_supply_store] +appliance_store; [retail,shopping,home_and_garden,appliance_store] +bedding_and_bath_stores; [retail,shopping,home_and_garden,bedding_and_bath_stores] +candle_store; [retail,shopping,home_and_garden,candle_store] +christmas_trees; [retail,shopping,home_and_garden,christmas_trees] +electrical_supply_store; [retail,shopping,home_and_garden,electrical_supply_store] +furniture_accessory_store; [retail,shopping,home_and_garden,furniture_accessory_store] +furniture_store; [retail,shopping,home_and_garden,furniture_store] +grilling_equipment; [retail,shopping,home_and_garden,grilling_equipment] +holiday_decor; [retail,shopping,home_and_garden,holiday_decor] +home_decor; [retail,shopping,home_and_garden,home_decor] +home_goods_store; [retail,shopping,home_and_garden,home_goods_store] +home_improvement_store; [retail,shopping,home_and_garden,home_improvement_store] +hot_tubs_and_pools; [retail,shopping,home_and_garden,hot_tubs_and_pools] +lawn_mower_store; [retail,shopping,home_and_garden,lawn_mower_store] +lighting_store; [retail,shopping,home_and_garden,lighting_store] +linen; [retail,shopping,home_and_garden,linen] +mattress_store; [retail,shopping,home_and_garden,mattress_store] +nursery_and_gardening; [retail,shopping,home_and_garden,nursery_and_gardening] +outdoor_furniture_store; [retail,shopping,home_and_garden,outdoor_furniture_store] +paint_store; [retail,shopping,home_and_garden,paint_store] +playground_equipment_supplier; [retail,shopping,home_and_garden,playground_equipment_supplier] +pumpkin_patch; [retail,shopping,home_and_garden,pumpkin_patch] +rug_store; [retail,shopping,home_and_garden,rug_store] +tableware_supplier; [retail,shopping,home_and_garden,tableware_supplier] +tile_store; [retail,shopping,home_and_garden,tile_store] +wallpaper_store; [retail,shopping,home_and_garden,wallpaper_store] +window_treatment_store; [retail,shopping,home_and_garden,window_treatment_store] +woodworking_supply_store; [retail,shopping,home_and_garden,woodworking_supply_store] +kitchen_and_bath; [retail,shopping,home_and_garden,kitchen_and_bath] +bathroom_fixture_stores; [retail,shopping,home_and_garden,kitchen_and_bath,bathroom_fixture_stores] +kitchen_supply_store; [retail,shopping,home_and_garden,kitchen_and_bath,kitchen_supply_store] +hydroponic_gardening; [retail,shopping,home_and_garden,nursery_and_gardening,hydroponic_gardening] +medical_supply; [retail,shopping,medical_supply] +dental_supply_store; [retail,shopping,medical_supply,dental_supply_store] +hearing_aids; [retail,shopping,medical_supply,hearing_aids] +pet_store; [retail,shopping,pet_store] +bird_shop; [retail,shopping,pet_store,bird_shop] +aquatic_pet_store; [retail,shopping,pet_store,aquatic_pet_store] +reptile_shop; [retail,shopping,pet_store,reptile_shop] +adult_store; [retail,shopping,adult_store] +agricultural_seed_store; [retail,shopping,agricultural_seed_store] +antique_store; [retail,shopping,antique_store] +army_and_navy_store; [retail,shopping,army_and_navy_store] +auction_house; [retail,shopping,auction_house] +car_auction; [retail,shopping,auction_house,car_auction] +baby_gear_and_furniture; [retail,shopping,baby_gear_and_furniture] +battery_store; [retail,shopping,battery_store] +bazaars; [retail,shopping,bazaars] +boutique; [retail,shopping,boutique] +brewing_supply_store; [retail,shopping,brewing_supply_store] +bridal_shop; [retail,shopping,bridal_shop] +cannabis_dispensary; [retail,shopping,cannabis_dispensary] +cards_and_stationery_store; [retail,shopping,cards_and_stationery_store] +computer_store; [retail,shopping,computer_store] +concept_shop; [retail,shopping,concept_shop] +convenience_store; [retail,shopping,convenience_store] +custom_clothing; [retail,shopping,custom_clothing] +customized_merchandise; [retail,shopping,customized_merchandise] +department_store; [retail,shopping,department_store] +discount_store; [retail,shopping,discount_store] +do_it_yourself_store; [retail,shopping,do_it_yourself_store] +drone_store; [retail,shopping,drone_store] +duty_free_shop; [retail,shopping,duty_free_shop] +educational_supply_store; [retail,shopping,educational_supply_store] +electronics; [retail,shopping,electronics] +farmers_market; [retail,shopping,farmers_market] +firework_retailer; [retail,shopping,firework_retailer] +fitness_exercise_equipment; [retail,shopping,fitness_exercise_equipment] +flea_market; [retail,shopping,flea_market] +flower_markets; [retail,shopping,flower_markets] +gemstone_and_mineral; [retail,shopping,gemstone_and_mineral] +gold_buyer; [retail,shopping,gold_buyer] +guitar_store; [retail,shopping,guitar_store] +gun_and_ammo; [retail,shopping,gun_and_ammo] +herbal_shop; [retail,shopping,herbal_shop] +audio_visual_equipment_store; [retail,shopping,audio_visual_equipment_store] +hobby_shop; [retail,shopping,hobby_shop] +home_theater_systems_stores; [retail,shopping,home_theater_systems_stores] +horse_equipment_shop; [retail,shopping,horse_equipment_shop] +international_grocery_store; [retail,shopping,international_grocery_store] +jewelry_store; [retail,shopping,jewelry_store] +knitting_supply; [retail,shopping,knitting_supply] +livestock_feed_and_supply_store; [retail,shopping,livestock_feed_and_supply_store] +luggage_store; [retail,shopping,luggage_store] +market_stall; [retail,shopping,market_stall] +military_surplus_store; [retail,shopping,military_surplus_store] +mobile_phone_accessories; [retail,shopping,mobile_phone_accessories] +mobile_phone_store; [retail,shopping,mobile_phone_store] +musical_instrument_store; [retail,shopping,musical_instrument_store] +night_market; [retail,shopping,night_market] +office_equipment; [retail,shopping,office_equipment] +online_shop; [retail,shopping,online_shop] +outlet_store; [retail,shopping,outlet_store] +packing_supply; [retail,shopping,packing_supply] +pawn_shop; [retail,shopping,pawn_shop] +pen_store; [retail,shopping,pen_store] +perfume_store; [retail,shopping,perfume_store] +personal_shopper; [retail,shopping,personal_shopper] +photography_store_and_services; [retail,shopping,photography_store_and_services] +piano_store; [retail,shopping,piano_store] +pool_and_billiards; [retail,shopping,pool_and_billiards] +pop_up_shop; [retail,shopping,pop_up_shop] +props; [retail,shopping,props] +public_market; [retail,shopping,public_market] +religious_items; [retail,shopping,religious_items] +rental_kiosks; [retail,shopping,rental_kiosks] +safe_store; [retail,shopping,safe_store] +safety_equipment; [retail,shopping,safety_equipment] +shopping_center; [retail,shopping,shopping_center] +shopping_passage; [retail,shopping,shopping_passage] +souvenir_shop; [retail,shopping,souvenir_shop] +spiritual_shop; [retail,shopping,spiritual_shop] +supermarket; [retail,shopping,supermarket] +superstore; [retail,shopping,superstore] +tabletop_games; [retail,shopping,tabletop_games] +thrift_store; [retail,shopping,thrift_store] +tobacco_shop; [retail,shopping,tobacco_shop] +toy_store; [retail,shopping,toy_store] +trophy_shop; [retail,shopping,trophy_shop] +uniform_store; [retail,shopping,uniform_store] +used_bookstore; [retail,shopping,used_bookstore] +e_cigarette_store; [retail,shopping,e_cigarette_store] +vitamins_and_supplements; [retail,shopping,vitamins_and_supplements] +watch_store; [retail,shopping,watch_store] +wholesale_store; [retail,shopping,wholesale_store] +wig_store; [retail,shopping,wig_store] +sporting_goods; [retail,shopping,sporting_goods] +archery_shop; [retail,shopping,sporting_goods,archery_shop] +bicycle_shop; [retail,shopping,sporting_goods,bicycle_shop] +dive_shop; [retail,shopping,sporting_goods,dive_shop] +golf_equipment; [retail,shopping,sporting_goods,golf_equipment] +hockey_equipment; [retail,shopping,sporting_goods,hockey_equipment] +hunting_and_fishing_supplies; [retail,shopping,sporting_goods,hunting_and_fishing_supplies] +outdoor_gear; [retail,shopping,sporting_goods,outdoor_gear] +skate_shop; [retail,shopping,sporting_goods,skate_shop] +ski_and_snowboard_shop; [retail,shopping,sporting_goods,ski_and_snowboard_shop] +sports_wear; [retail,shopping,sporting_goods,sports_wear] +dance_wear; [retail,shopping,sporting_goods,sports_wear,dance_wear] +surf_shop; [retail,shopping,sporting_goods,surf_shop] +swimwear_store; [retail,shopping,sporting_goods,swimwear_store] +tire_shop; [retail,tire_shop] +tire_repair_shop; [retail,tire_shop,tire_repair_shop] +health_and_medical; [health_and_medical] +abuse_and_addiction_treatment; [health_and_medical,abuse_and_addiction_treatment] +alcohol_and_drug_treatment_centers; [health_and_medical,abuse_and_addiction_treatment,alcohol_and_drug_treatment_centers] +crisis_intervention_services; [health_and_medical,abuse_and_addiction_treatment,crisis_intervention_services] +eating_disorder_treatment_centers; [health_and_medical,abuse_and_addiction_treatment,eating_disorder_treatment_centers] +counseling_and_mental_health; [health_and_medical,counseling_and_mental_health] +family_counselor; [health_and_medical,counseling_and_mental_health,family_counselor] +marriage_or_relationship_counselor; [health_and_medical,counseling_and_mental_health,marriage_or_relationship_counselor] +psychoanalyst; [health_and_medical,counseling_and_mental_health,psychoanalyst] +psychologist; [health_and_medical,counseling_and_mental_health,psychologist] +psychotherapist; [health_and_medical,counseling_and_mental_health,psychotherapist] +sex_therapist; [health_and_medical,counseling_and_mental_health,sex_therapist] +sophrologist; [health_and_medical,counseling_and_mental_health,sophrologist] +sports_psychologist; [health_and_medical,counseling_and_mental_health,sports_psychologist] +stress_management_services; [health_and_medical,counseling_and_mental_health,stress_management_services] +suicide_prevention_services; [health_and_medical,counseling_and_mental_health,suicide_prevention_services] +dental_hygienist; [health_and_medical,dental_hygienist] +mobile_clinic; [health_and_medical,dental_hygienist,mobile_clinic] +storefront_clinic; [health_and_medical,dental_hygienist,storefront_clinic] +dentist; [health_and_medical,dentist] +cosmetic_dentist; [health_and_medical,dentist,cosmetic_dentist] +endodontist; [health_and_medical,dentist,endodontist] +general_dentistry; [health_and_medical,dentist,general_dentistry] +oral_surgeon; [health_and_medical,dentist,oral_surgeon] +orthodontist; [health_and_medical,dentist,orthodontist] +pediatric_dentist; [health_and_medical,dentist,pediatric_dentist] +periodontist; [health_and_medical,dentist,periodontist] +diagnostic_services; [health_and_medical,diagnostic_services] +diagnostic_imaging; [health_and_medical,diagnostic_services,diagnostic_imaging] +laboratory_testing; [health_and_medical,diagnostic_services,laboratory_testing] +doctor; [health_and_medical,doctor] +allergist; [health_and_medical,doctor,allergist] +anesthesiologist; [health_and_medical,doctor,anesthesiologist] +audiologist; [health_and_medical,doctor,audiologist] +cardiologist; [health_and_medical,doctor,cardiologist] +cosmetic_surgeon; [health_and_medical,doctor,cosmetic_surgeon] +dermatologist; [health_and_medical,doctor,dermatologist] +ear_nose_and_throat; [health_and_medical,doctor,ear_nose_and_throat] +emergency_medicine; [health_and_medical,doctor,emergency_medicine] +endocrinologist; [health_and_medical,doctor,endocrinologist] +endoscopist; [health_and_medical,doctor,endoscopist] +family_practice; [health_and_medical,doctor,family_practice] +fertility; [health_and_medical,doctor,fertility] +gastroenterologist; [health_and_medical,doctor,gastroenterologist] +geneticist; [health_and_medical,doctor,geneticist] +gerontologist; [health_and_medical,doctor,gerontologist] +hepatologist; [health_and_medical,doctor,hepatologist] +homeopathic_medicine; [health_and_medical,doctor,homeopathic_medicine] +hospitalist; [health_and_medical,doctor,hospitalist] +immunodermatologist; [health_and_medical,doctor,immunodermatologist] +infectious_disease_specialist; [health_and_medical,doctor,infectious_disease_specialist] +naturopathic_holistic; [health_and_medical,doctor,naturopathic_holistic] +nephrologist; [health_and_medical,doctor,nephrologist] +neurologist; [health_and_medical,doctor,neurologist] +neurotologist; [health_and_medical,doctor,neurotologist] +neuropathologist; [health_and_medical,doctor,neuropathologist] +obstetrician_and_gynecologist; [health_and_medical,doctor,obstetrician_and_gynecologist] +oncologist; [health_and_medical,doctor,oncologist] +orthopedist; [health_and_medical,doctor,orthopedist] +osteopathic_physician; [health_and_medical,doctor,osteopathic_physician] +otologist; [health_and_medical,doctor,otologist] +pain_management; [health_and_medical,doctor,pain_management] +pathologist; [health_and_medical,doctor,pathologist] +phlebologist; [health_and_medical,doctor,phlebologist] +physician_assistant; [health_and_medical,doctor,physician_assistant] +plastic_surgeon; [health_and_medical,doctor,plastic_surgeon] +podiatrist; [health_and_medical,doctor,podiatrist] +preventive_medicine; [health_and_medical,doctor,preventive_medicine] +proctologist; [health_and_medical,doctor,proctologist] +pulmonologist; [health_and_medical,doctor,pulmonologist] +radiologist; [health_and_medical,doctor,radiologist] +rheumatologist; [health_and_medical,doctor,rheumatologist] +spine_surgeon; [health_and_medical,doctor,spine_surgeon] +sports_medicine; [health_and_medical,doctor,sports_medicine] +tattoo_removal; [health_and_medical,doctor,tattoo_removal] +toxicologist; [health_and_medical,doctor,toxicologist] +tropical_medicine; [health_and_medical,doctor,tropical_medicine] +undersea_hyperbaric_medicine; [health_and_medical,doctor,undersea_hyperbaric_medicine] +urologist; [health_and_medical,doctor,urologist] +vascular_medicine; [health_and_medical,doctor,vascular_medicine] +geriatric_medicine; [health_and_medical,doctor,geriatric_medicine] +geriatric_psychiatry; [health_and_medical,doctor,geriatric_medicine,geriatric_psychiatry] +abortion_clinic; [health_and_medical,abortion_clinic] +acupuncture; [health_and_medical,acupuncture] +aesthetician; [health_and_medical,aesthetician] +alcohol_and_drug_treatment_center; [health_and_medical,alcohol_and_drug_treatment_center] +alternative_medicine; [health_and_medical,alternative_medicine] +ambulance_and_ems_services; [health_and_medical,ambulance_and_ems_services] +animal_assisted_therapy; [health_and_medical,animal_assisted_therapy] +assisted_living_facility; [health_and_medical,assisted_living_facility] +ayurveda; [health_and_medical,ayurveda] +behavior_analyst; [health_and_medical,behavior_analyst] +blood_and_plasma_donation_center; [health_and_medical,blood_and_plasma_donation_center] +body_contouring; [health_and_medical,body_contouring] +cancer_treatment_center; [health_and_medical,cancer_treatment_center] +cannabis_clinic; [health_and_medical,cannabis_clinic] +cannabis_collective; [health_and_medical,cannabis_collective] +childrens_hospital; [health_and_medical,childrens_hospital] +chiropractor; [health_and_medical,chiropractor] +colonics; [health_and_medical,colonics] +community_health_center; [health_and_medical,community_health_center] +concierge_medicine; [health_and_medical,concierge_medicine] +cryotherapy; [health_and_medical,cryotherapy] +dialysis_clinic; [health_and_medical,dialysis_clinic] +dietitian; [health_and_medical,dietitian] +doula; [health_and_medical,doula] +emergency_room; [health_and_medical,emergency_room] +environmental_medicine; [health_and_medical,environmental_medicine] +eye_care_clinic; [health_and_medical,eye_care_clinic] +float_spa; [health_and_medical,float_spa] +halfway_house; [health_and_medical,halfway_house] +halotherapy; [health_and_medical,halotherapy] +health_and_wellness_club; [health_and_medical,health_and_wellness_club] +health_coach; [health_and_medical,health_coach] +health_department; [health_and_medical,health_department] +health_insurance_office; [health_and_medical,health_insurance_office] +hospice; [health_and_medical,hospice] +hospital; [health_and_medical,hospital] +hydrotherapy; [health_and_medical,hydrotherapy] +hypnosis_hypnotherapy; [health_and_medical,hypnosis_hypnotherapy] +iv_hydration; [health_and_medical,iv_hydration] +lactation_services; [health_and_medical,lactation_services] +laser_eye_surgery_lasik; [health_and_medical,laser_eye_surgery_lasik] +lice_treatment; [health_and_medical,lice_treatment] +massage_therapy; [health_and_medical,massage_therapy] +maternity_centers; [health_and_medical,maternity_centers] +medical_cannabis_referral; [health_and_medical,medical_cannabis_referral] +medical_service_organizations; [health_and_medical,medical_service_organizations] +medical_transportation; [health_and_medical,medical_transportation] +memory_care; [health_and_medical,memory_care] +midwife; [health_and_medical,midwife] +nurse_practitioner; [health_and_medical,nurse_practitioner] +nutritionist; [health_and_medical,nutritionist] +occupational_medicine; [health_and_medical,occupational_medicine] +occupational_therapy; [health_and_medical,occupational_therapy] +optometrist; [health_and_medical,optometrist] +organ_and_tissue_donor_service; [health_and_medical,organ_and_tissue_donor_service] +orthotics; [health_and_medical,orthotics] +oxygen_bar; [health_and_medical,oxygen_bar] +paternity_tests_and_services; [health_and_medical,paternity_tests_and_services] +physical_therapy; [health_and_medical,physical_therapy] +placenta_encapsulation_service; [health_and_medical,placenta_encapsulation_service] +podiatry; [health_and_medical,podiatry] +prenatal_perinatal_care; [health_and_medical,prenatal_perinatal_care] +prosthetics; [health_and_medical,prosthetics] +prosthodontist; [health_and_medical,prosthodontist] +psychomotor_therapist; [health_and_medical,psychomotor_therapist] +public_health_clinic; [health_and_medical,public_health_clinic] +reflexology; [health_and_medical,reflexology] +reiki; [health_and_medical,reiki] +sauna; [health_and_medical,sauna] +skilled_nursing; [health_and_medical,skilled_nursing] +sleep_specialist; [health_and_medical,sleep_specialist] +speech_therapist; [health_and_medical,speech_therapist] +sperm_clinic; [health_and_medical,sperm_clinic] +surgical_center; [health_and_medical,surgical_center] +ultrasound_imaging_center; [health_and_medical,ultrasound_imaging_center] +urgent_care_clinic; [health_and_medical,urgent_care_clinic] +weight_loss_center; [health_and_medical,weight_loss_center] +wellness_program; [health_and_medical,wellness_program] +womens_health_clinic; [health_and_medical,womens_health_clinic] +internal_medicine; [health_and_medical,doctor,internal_medicine] +hematology; [health_and_medical,doctor,internal_medicine,hematology] +medical_center; [health_and_medical,medical_center] +bulk_billing; [health_and_medical,medical_center,bulk_billing] +osteopath; [health_and_medical,medical_center,osteopath] +walk_in_clinic; [health_and_medical,medical_center,walk_in_clinic] +ophthalmologist; [health_and_medical,doctor,ophthalmologist] +retina_specialist; [health_and_medical,doctor,ophthalmologist,retina_specialist] +pediatrician; [health_and_medical,doctor,pediatrician] +pediatric_anesthesiology; [health_and_medical,doctor,pediatrician,pediatric_anesthesiology] +pediatric_cardiology; [health_and_medical,doctor,pediatrician,pediatric_cardiology] +pediatric_endocrinology; [health_and_medical,doctor,pediatrician,pediatric_endocrinology] +pediatric_gastroenterology; [health_and_medical,doctor,pediatrician,pediatric_gastroenterology] +pediatric_infectious_disease; [health_and_medical,doctor,pediatrician,pediatric_infectious_disease] +pediatric_nephrology; [health_and_medical,doctor,pediatrician,pediatric_nephrology] +pediatric_neurology; [health_and_medical,doctor,pediatrician,pediatric_neurology] +pediatric_oncology; [health_and_medical,doctor,pediatrician,pediatric_oncology] +pediatric_orthopedic_surgery; [health_and_medical,doctor,pediatrician,pediatric_orthopedic_surgery] +pediatric_pulmonology; [health_and_medical,doctor,pediatrician,pediatric_pulmonology] +pediatric_radiology; [health_and_medical,doctor,pediatrician,pediatric_radiology] +pediatric_surgery; [health_and_medical,doctor,pediatrician,pediatric_surgery] +personal_care_service; [health_and_medical,personal_care_service] +home_health_care; [health_and_medical,personal_care_service,home_health_care] +psychiatrist; [health_and_medical,doctor,psychiatrist] +child_psychiatrist; [health_and_medical,doctor,psychiatrist,child_psychiatrist] +rehabilitation_center; [health_and_medical,rehabilitation_center] +addiction_rehabilitation_center; [health_and_medical,rehabilitation_center,addiction_rehabilitation_center] +surgeon; [health_and_medical,doctor,surgeon] +cardiovascular_and_thoracic_surgeon; [health_and_medical,doctor,surgeon,cardiovascular_and_thoracic_surgeon] +traditional_chinese_medicine; [health_and_medical,traditional_chinese_medicine] +tui_na; [health_and_medical,traditional_chinese_medicine,tui_na] +pets; [pets] +pet_services; [pets,pet_services] +animal_hospital; [pets,pet_services,animal_hospital] +animal_physical_therapy; [pets,pet_services,animal_physical_therapy] +aquarium_services; [pets,pet_services,aquarium_services] +dog_walkers; [pets,pet_services,dog_walkers] +emergency_pet_hospital; [pets,pet_services,emergency_pet_hospital] +farrier_services; [pets,pet_services,farrier_services] +holistic_animal_care; [pets,pet_services,holistic_animal_care] +pet_breeder; [pets,pet_services,pet_breeder] +pet_cemetery_and_crematorium_services; [pets,pet_services,pet_cemetery_and_crematorium_services] +pet_groomer; [pets,pet_services,pet_groomer] +pet_hospice; [pets,pet_services,pet_hospice] +pet_insurance; [pets,pet_services,pet_insurance] +pet_photography; [pets,pet_services,pet_photography] +pet_sitting; [pets,pet_services,pet_sitting] +pet_transportation; [pets,pet_services,pet_transportation] +pet_waste_removal; [pets,pet_services,pet_waste_removal] +pet_boarding; [pets,pet_services,pet_sitting,pet_boarding] +pet_training; [pets,pet_services,pet_training] +dog_trainer; [pets,pet_services,pet_training,dog_trainer] +horse_trainer; [pets,pet_services,pet_training,horse_trainer] +animal_rescue_service; [pets,animal_rescue_service] +animal_shelter; [pets,animal_shelter] +horse_boarding; [pets,horse_boarding] +pet_adoption; [pets,pet_adoption] +veterinarian; [pets,veterinarian] +business_to_business; [business_to_business] +business; [business_to_business,business] +travel_company; [business_to_business,business,travel_company] +ferry_boat_company; [business_to_business,business,ferry_boat_company] +airline; [business_to_business,business,airline] +food_beverage_service_distribution; [business_to_business,business,food_beverage_service_distribution] +bottled_water_company; [business_to_business,business,bottled_water_company] +tobacco_company; [business_to_business,business,tobacco_company] +clothing_company; [business_to_business,business,clothing_company] +bags_luggage_company; [business_to_business,business,bags_luggage_company] +hotel_supply_service; [business_to_business,business,hotel_supply_service] +commercial_industrial; [business_to_business,commercial_industrial] +inventory_control_service; [business_to_business,commercial_industrial,inventory_control_service] +industrial_company; [business_to_business,commercial_industrial,industrial_company] +automation_services; [business_to_business,commercial_industrial,automation_services] +occupational_safety; [business_to_business,commercial_industrial,occupational_safety] +b2b_agriculture_and_food; [business_to_business,b2b_agriculture_and_food] +agricultural_service; [business_to_business,b2b_agriculture_and_food,agricultural_service] +agricultural_cooperatives; [business_to_business,b2b_agriculture_and_food,agricultural_cooperatives] +agriculture; [business_to_business,b2b_agriculture_and_food,agriculture] +agricultural_engineering_service; [business_to_business,b2b_agriculture_and_food,agricultural_engineering_service] +apiaries_and_beekeepers; [business_to_business,b2b_agriculture_and_food,apiaries_and_beekeepers] +b2b_dairies; [business_to_business,b2b_agriculture_and_food,b2b_dairies] +b2b_food_products; [business_to_business,b2b_agriculture_and_food,b2b_food_products] +fish_farms_and_hatcheries; [business_to_business,b2b_agriculture_and_food,fish_farms_and_hatcheries] +fish_farm; [business_to_business,b2b_agriculture_and_food,fish_farms_and_hatcheries,fish_farm] +livestock_breeder; [business_to_business,b2b_agriculture_and_food,livestock_breeder] +livestock_dealers; [business_to_business,b2b_agriculture_and_food,livestock_dealers] +poultry_farming; [business_to_business,b2b_agriculture_and_food,poultry_farming] +b2b_farming; [business_to_business,b2b_agriculture_and_food,b2b_farming] +b2b_farms; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms] +pig_farm; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms,pig_farm] +dairy_farm; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms,dairy_farm] +urban_farm; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms,urban_farm] +farming_services; [business_to_business,b2b_agriculture_and_food,b2b_farming,farming_services] +farm_equipment_and_supply; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply] +fertilizer_store; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,fertilizer_store] +grain_elevators; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,grain_elevators] +greenhouses; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,greenhouses] +irrigation_companies; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,irrigation_companies] +crops_production; [business_to_business,b2b_agriculture_and_food,crops_production] +grain_production; [business_to_business,b2b_agriculture_and_food,crops_production,grain_production] +orchards_production; [business_to_business,b2b_agriculture_and_food,crops_production,orchards_production] +business_manufacturing_and_supply; [business_to_business,business_manufacturing_and_supply] +mattress_manufacturing; [business_to_business,business_manufacturing_and_supply,mattress_manufacturing] +glass_manufacturer; [business_to_business,business_manufacturing_and_supply,glass_manufacturer] +appliance_manufacturer; [business_to_business,business_manufacturing_and_supply,appliance_manufacturer] +aircraft_manufacturer; [business_to_business,business_manufacturing_and_supply,aircraft_manufacturer] +b2b_autos_and_vehicles; [business_to_business,business_manufacturing_and_supply,b2b_autos_and_vehicles] +auto_manufacturers_and_distributors; [business_to_business,business_manufacturing_and_supply,b2b_autos_and_vehicles,auto_manufacturers_and_distributors] +b2b_tires; [business_to_business,business_manufacturing_and_supply,b2b_autos_and_vehicles,b2b_tires] +b2b_furniture_and_housewares; [business_to_business,business_manufacturing_and_supply,b2b_furniture_and_housewares] +furniture_manufacturers; [business_to_business,business_manufacturing_and_supply,b2b_furniture_and_housewares,furniture_manufacturers] +furniture_wholesalers; [business_to_business,business_manufacturing_and_supply,b2b_furniture_and_housewares,furniture_wholesalers] +b2b_machinery_and_tools; [business_to_business,business_manufacturing_and_supply,b2b_machinery_and_tools] +b2b_equipment_maintenance_and_repair; [business_to_business,business_manufacturing_and_supply,b2b_machinery_and_tools,b2b_equipment_maintenance_and_repair] +industrial_equipment; [business_to_business,business_manufacturing_and_supply,b2b_machinery_and_tools,industrial_equipment] +abrasives_supplier; [business_to_business,business_manufacturing_and_supply,abrasives_supplier] +aggregate_supplier; [business_to_business,business_manufacturing_and_supply,aggregate_supplier] +aluminum_supplier; [business_to_business,business_manufacturing_and_supply,aluminum_supplier] +b2b_apparel; [business_to_business,business_manufacturing_and_supply,b2b_apparel] +b2b_electronic_equipment; [business_to_business,business_manufacturing_and_supply,b2b_electronic_equipment] +b2b_hardware; [business_to_business,business_manufacturing_and_supply,b2b_hardware] +b2b_jewelers; [business_to_business,business_manufacturing_and_supply,b2b_jewelers] +b2b_rubber_and_plastics; [business_to_business,business_manufacturing_and_supply,b2b_rubber_and_plastics] +plastic_company; [business_to_business,business_manufacturing_and_supply,b2b_rubber_and_plastics,plastic_company] +plastic_manufacturer; [business_to_business,business_manufacturing_and_supply,b2b_rubber_and_plastics,plastic_manufacturer] +b2b_sporting_and_recreation_goods; [business_to_business,business_manufacturing_and_supply,b2b_sporting_and_recreation_goods] +b2b_textiles; [business_to_business,business_manufacturing_and_supply,b2b_textiles] +battery_inverter_supplier; [business_to_business,business_manufacturing_and_supply,battery_inverter_supplier] +bearing_supplier; [business_to_business,business_manufacturing_and_supply,bearing_supplier] +casting_molding_and_machining; [business_to_business,business_manufacturing_and_supply,casting_molding_and_machining] +cement_supplier; [business_to_business,business_manufacturing_and_supply,cement_supplier] +chemical_plant; [business_to_business,business_manufacturing_and_supply,chemical_plant] +cleaning_products_supplier; [business_to_business,business_manufacturing_and_supply,cleaning_products_supplier] +cosmetic_products_manufacturer; [business_to_business,business_manufacturing_and_supply,cosmetic_products_manufacturer] +drinking_water_dispenser; [business_to_business,business_manufacturing_and_supply,drinking_water_dispenser] +fastener_supplier; [business_to_business,business_manufacturing_and_supply,fastener_supplier] +granite_supplier; [business_to_business,business_manufacturing_and_supply,granite_supplier] +hvac_supplier; [business_to_business,business_manufacturing_and_supply,hvac_supplier] +jewelry_and_watches_manufacturer; [business_to_business,business_manufacturing_and_supply,jewelry_and_watches_manufacturer] +jewelry_manufacturer; [business_to_business,business_manufacturing_and_supply,jewelry_manufacturer] +leather_products_manufacturer; [business_to_business,business_manufacturing_and_supply,leather_products_manufacturer] +lighting_fixture_manufacturers; [business_to_business,business_manufacturing_and_supply,lighting_fixture_manufacturers] +pipe_supplier; [business_to_business,business_manufacturing_and_supply,pipe_supplier] +plastic_fabrication_company; [business_to_business,business_manufacturing_and_supply,plastic_fabrication_company] +plastic_injection_molding_workshop; [business_to_business,business_manufacturing_and_supply,plastic_injection_molding_workshop] +printing_equipment_and_supply; [business_to_business,business_manufacturing_and_supply,printing_equipment_and_supply] +retaining_wall_supplier; [business_to_business,business_manufacturing_and_supply,retaining_wall_supplier] +sand_and_gravel_supplier; [business_to_business,business_manufacturing_and_supply,sand_and_gravel_supplier] +scale_supplier; [business_to_business,business_manufacturing_and_supply,scale_supplier] +seal_and_hanko_dealers; [business_to_business,business_manufacturing_and_supply,seal_and_hanko_dealers] +shoe_factory; [business_to_business,business_manufacturing_and_supply,shoe_factory] +spring_supplier; [business_to_business,business_manufacturing_and_supply,spring_supplier] +stone_supplier; [business_to_business,business_manufacturing_and_supply,stone_supplier] +turnery; [business_to_business,business_manufacturing_and_supply,turnery] +window_supplier; [business_to_business,business_manufacturing_and_supply,window_supplier] +metals; [business_to_business,business_manufacturing_and_supply,metals] +metal_supplier; [business_to_business,business_manufacturing_and_supply,metals,metal_supplier] +metal_plating_service; [business_to_business,business_manufacturing_and_supply,metals,metal_plating_service] +metal_fabricator; [business_to_business,business_manufacturing_and_supply,metals,metal_fabricator] +iron_and_steel_industry; [business_to_business,business_manufacturing_and_supply,metals,metal_fabricator,iron_and_steel_industry] +iron_work; [business_to_business,business_manufacturing_and_supply,metals,metal_fabricator,iron_and_steel_industry,iron_work] +scrap_metals; [business_to_business,business_manufacturing_and_supply,metals,scrap_metals] +sheet_metal; [business_to_business,business_manufacturing_and_supply,metals,sheet_metal] +steel_fabricators; [business_to_business,business_manufacturing_and_supply,metals,steel_fabricators] +mills; [business_to_business,business_manufacturing_and_supply,mills] +cotton_mill; [business_to_business,business_manufacturing_and_supply,mills,cotton_mill] +flour_mill; [business_to_business,business_manufacturing_and_supply,mills,flour_mill] +paper_mill; [business_to_business,business_manufacturing_and_supply,mills,paper_mill] +rice_mill; [business_to_business,business_manufacturing_and_supply,mills,rice_mill] +saw_mill; [business_to_business,business_manufacturing_and_supply,mills,saw_mill] +textile_mill; [business_to_business,business_manufacturing_and_supply,mills,textile_mill] +weaving_mill; [business_to_business,business_manufacturing_and_supply,mills,weaving_mill] +wood_and_pulp; [business_to_business,business_manufacturing_and_supply,wood_and_pulp] +logging_equipment_and_supplies; [business_to_business,business_manufacturing_and_supply,wood_and_pulp,logging_equipment_and_supplies] +logging_services; [business_to_business,business_manufacturing_and_supply,wood_and_pulp,logging_services] +logging_contractor; [business_to_business,business_manufacturing_and_supply,wood_and_pulp,logging_contractor] +b2b_medical_support_services; [business_to_business,b2b_medical_support_services] +biotechnology_company; [business_to_business,b2b_medical_support_services,biotechnology_company] +clinical_laboratories; [business_to_business,b2b_medical_support_services,clinical_laboratories] +dental_laboratories; [business_to_business,b2b_medical_support_services,dental_laboratories] +hospital_equipment_and_supplies; [business_to_business,b2b_medical_support_services,hospital_equipment_and_supplies] +medical_research_and_development; [business_to_business,b2b_medical_support_services,medical_research_and_development] +pharmaceutical_companies; [business_to_business,b2b_medical_support_services,pharmaceutical_companies] +surgical_appliances_and_supplies; [business_to_business,b2b_medical_support_services,surgical_appliances_and_supplies] +b2b_science_and_technology; [business_to_business,b2b_science_and_technology] +b2b_scientific_equipment; [business_to_business,b2b_science_and_technology,b2b_scientific_equipment] +research_institute; [business_to_business,b2b_science_and_technology,research_institute] +scientific_laboratories; [business_to_business,b2b_science_and_technology,scientific_laboratories] +business_advertising; [business_to_business,business_advertising] +business_signage; [business_to_business,business_advertising,business_signage] +direct_mail_advertising; [business_to_business,business_advertising,direct_mail_advertising] +marketing_consultant; [business_to_business,business_advertising,marketing_consultant] +newspaper_advertising; [business_to_business,business_advertising,newspaper_advertising] +outdoor_advertising; [business_to_business,business_advertising,outdoor_advertising] +promotional_products_and_services; [business_to_business,business_advertising,promotional_products_and_services] +publicity_service; [business_to_business,business_advertising,publicity_service] +radio_and_television_commercials; [business_to_business,business_advertising,radio_and_television_commercials] +telemarketing_services; [business_to_business,business_advertising,telemarketing_services] +business_equipment_and_supply; [business_to_business,business_equipment_and_supply] +beauty_product_supplier; [business_to_business,business_equipment_and_supply,beauty_product_supplier] +beverage_supplier; [business_to_business,business_equipment_and_supply,beverage_supplier] +business_office_supplies_and_stationery; [business_to_business,business_equipment_and_supply,business_office_supplies_and_stationery] +electronic_parts_supplier; [business_to_business,business_equipment_and_supply,electronic_parts_supplier] +energy_equipment_and_solution; [business_to_business,business_equipment_and_supply,energy_equipment_and_solution] +hydraulic_equipment_supplier; [business_to_business,business_equipment_and_supply,hydraulic_equipment_supplier] +laboratory_equipment_supplier; [business_to_business,business_equipment_and_supply,laboratory_equipment_supplier] +thread_supplier; [business_to_business,business_equipment_and_supply,thread_supplier] +vending_machine_supplier; [business_to_business,business_equipment_and_supply,vending_machine_supplier] +water_softening_equipment_supplier; [business_to_business,business_equipment_and_supply,water_softening_equipment_supplier] +wholesaler; [business_to_business,business_equipment_and_supply,wholesaler] +wholesale_grocer; [business_to_business,business_equipment_and_supply,wholesaler,wholesale_grocer] +spices_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fmcg_wholesaler,spices_wholesaler] +computer_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,computer_wholesaler] +electrical_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,electrical_wholesaler] +fabric_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fabric_wholesaler] +fitness_equipment_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fitness_equipment_wholesaler] +fmcg_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fmcg_wholesaler] +footwear_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,footwear_wholesaler] +greengrocer; [business_to_business,business_equipment_and_supply,wholesaler,greengrocer] +industrial_spares_and_products_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,industrial_spares_and_products_wholesaler] +iron_and_steel_store; [business_to_business,business_equipment_and_supply,wholesaler,iron_and_steel_store] +lingerie_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,lingerie_wholesaler] +meat_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,meat_wholesaler] +optical_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,optical_wholesaler] +pharmaceutical_products_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,pharmaceutical_products_wholesaler] +produce_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,produce_wholesaler] +seafood_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,seafood_wholesaler] +tea_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,tea_wholesaler] +threads_and_yarns_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,threads_and_yarns_wholesaler] +tools_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,tools_wholesaler] +wholesale_florist; [business_to_business,business_equipment_and_supply,wholesaler,wholesale_florist] +wine_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,wine_wholesaler] +restaurant_wholesale; [business_to_business,business_equipment_and_supply,wholesaler,restaurant_wholesale] +restaurant_equipment_and_supply; [business_to_business,business_equipment_and_supply,restaurant_equipment_and_supply] +business_storage_and_transportation; [business_to_business,business_storage_and_transportation] +motor_freight_trucking; [business_to_business,business_storage_and_transportation,motor_freight_trucking] +pipeline_transportation; [business_to_business,business_storage_and_transportation,pipeline_transportation] +railroad_freight; [business_to_business,business_storage_and_transportation,railroad_freight] +b2b_storage_and_warehouses; [business_to_business,business_storage_and_transportation,b2b_storage_and_warehouses] +warehouse_rental_services_and_yards; [business_to_business,business_storage_and_transportation,b2b_storage_and_warehouses,warehouse_rental_services_and_yards] +warehouses; [business_to_business,business_storage_and_transportation,b2b_storage_and_warehouses,warehouses] +freight_and_cargo_service; [business_to_business,business_storage_and_transportation,freight_and_cargo_service] +distribution_services; [business_to_business,business_storage_and_transportation,freight_and_cargo_service,distribution_services] +freight_forwarding_agency; [business_to_business,business_storage_and_transportation,freight_and_cargo_service,freight_forwarding_agency] +trucks_and_industrial_vehicles; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles] +b2b_forklift_dealers; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,b2b_forklift_dealers] +b2b_tractor_dealers; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,b2b_tractor_dealers] +b2b_truck_equipment_parts_and_accessories; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,b2b_truck_equipment_parts_and_accessories] +truck_dealer_for_businesses; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,truck_dealer_for_businesses] +truck_repair_and_services_for_businesses; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,truck_repair_and_services_for_businesses] +business_to_business_services; [business_to_business,business_to_business_services] +agricultural_production; [business_to_business,business_to_business_services,agricultural_production] +audio_visual_production_and_design; [business_to_business,business_to_business_services,audio_visual_production_and_design] +boat_builder; [business_to_business,business_to_business_services,boat_builder] +business_records_storage_and_management; [business_to_business,business_to_business_services,business_records_storage_and_management] +coworking_space; [business_to_business,business_to_business_services,coworking_space] +domestic_business_and_trade_organizations; [business_to_business,business_to_business_services,domestic_business_and_trade_organizations] +human_resource_services; [business_to_business,business_to_business_services,human_resource_services] +information_technology_company; [business_to_business,business_to_business_services,information_technology_company] +laser_cutting_service_provider; [business_to_business,business_to_business_services,laser_cutting_service_provider] +telecommunications_company; [business_to_business,business_to_business_services,telecommunications_company] +tower_communication_service; [business_to_business,business_to_business_services,tower_communication_service] +transcription_services; [business_to_business,business_to_business_services,transcription_services] +translating_and_interpreting_services; [business_to_business,business_to_business_services,translating_and_interpreting_services] +consultant_and_general_service; [business_to_business,business_to_business_services,consultant_and_general_service] +food_consultant; [business_to_business,business_to_business_services,consultant_and_general_service,food_consultant] +business_management_services; [business_to_business,business_to_business_services,consultant_and_general_service,business_management_services] +executive_search_consultants; [business_to_business,business_to_business_services,consultant_and_general_service,executive_search_consultants] +manufacturing_and_industrial_consultant; [business_to_business,business_to_business_services,consultant_and_general_service,manufacturing_and_industrial_consultant] +secretarial_services; [business_to_business,business_to_business_services,consultant_and_general_service,secretarial_services] +manufacturers_agents_and_representatives; [business_to_business,business_to_business_services,domestic_business_and_trade_organizations,manufacturers_agents_and_representatives] +environmental_and_ecological_services_for_businesses; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses] +b2b_cleaning_and_waste_management; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,b2b_cleaning_and_waste_management] +water_treatment_equipment_and_services; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,b2b_cleaning_and_waste_management,water_treatment_equipment_and_services] +energy_management_and_conservation_consultants; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,energy_management_and_conservation_consultants] +environmental_conservation_and_ecological_organizations; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,environmental_conservation_and_ecological_organizations] +environmental_renewable_natural_resource; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,environmental_renewable_natural_resource] +forestry_consultants; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,forestry_consultants] +geological_services; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,geological_services] +food_and_beverage_exporter; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter,exporters,food_and_beverage_exporter] +background_check_services; [business_to_business,business_to_business_services,human_resource_services,background_check_services] +international_business_and_trade_services; [business_to_business,business_to_business_services,international_business_and_trade_services] +importer_and_exporter; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter] +exporters; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter,exporters] +importers; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter,importers] +restaurant_management; [business_to_business,business_to_business_services,restaurant_management] +b2b_energy_and_mining; [business_to_business,b2b_energy_and_mining] +mining; [business_to_business,b2b_energy_and_mining,mining] +coal_and_coke; [business_to_business,b2b_energy_and_mining,mining,coal_and_coke] +quarries; [business_to_business,b2b_energy_and_mining,mining,quarries] +oil_and_gas; [business_to_business,b2b_energy_and_mining,oil_and_gas] +b2b_oil_and_gas_extraction_and_services; [business_to_business,b2b_energy_and_mining,oil_and_gas,b2b_oil_and_gas_extraction_and_services] +oil_and_gas_exploration_and_development; [business_to_business,b2b_energy_and_mining,oil_and_gas,oil_and_gas_exploration_and_development] +oil_and_gas_field_equipment_and_services; [business_to_business,b2b_energy_and_mining,oil_and_gas,oil_and_gas_field_equipment_and_services] +oil_refiners; [business_to_business,b2b_energy_and_mining,oil_and_gas,oil_refiners] +power_plants_and_power_plant_service; [business_to_business,b2b_energy_and_mining,power_plants_and_power_plant_service] +public_service_and_government; [public_service_and_government] +energy_company; [public_service_and_government,public_utility_company,energy_company] +electric_utility_provider; [public_service_and_government,public_utility_company,electric_utility_provider] +public_utility_company; [public_service_and_government,public_utility_company] +law_enforcement; [public_service_and_government,law_enforcement] +organization; [public_service_and_government,organization] +agriculture_association; [public_service_and_government,organization,agriculture_association] +environmental_conservation_organization; [public_service_and_government,organization,environmental_conservation_organization] +home_organization; [public_service_and_government,organization,home_organization] +labor_union; [public_service_and_government,organization,labor_union] +non_governmental_association; [public_service_and_government,organization,non_governmental_association] +political_organization; [public_service_and_government,organization,political_organization] +private_association; [public_service_and_government,organization,private_association] +public_and_government_association; [public_service_and_government,organization,public_and_government_association] +social_service_organizations; [public_service_and_government,organization,social_service_organizations] +charity_organization; [public_service_and_government,organization,social_service_organizations,charity_organization] +food_banks; [public_service_and_government,organization,social_service_organizations,food_banks] +foster_care_services; [public_service_and_government,organization,social_service_organizations,foster_care_services] +gay_and_lesbian_services_organization; [public_service_and_government,organization,social_service_organizations,gay_and_lesbian_services_organization] +homeless_shelter; [public_service_and_government,organization,social_service_organizations,homeless_shelter] +housing_authorities; [public_service_and_government,organization,social_service_organizations,housing_authorities] +senior_citizen_services; [public_service_and_government,organization,social_service_organizations,senior_citizen_services] +social_and_human_services; [public_service_and_government,organization,social_service_organizations,social_and_human_services] +social_welfare_center; [public_service_and_government,organization,social_service_organizations,social_welfare_center] +volunteer_association; [public_service_and_government,organization,social_service_organizations,volunteer_association] +child_protection_service; [public_service_and_government,organization,social_service_organizations,child_protection_service] +youth_organizations; [public_service_and_government,organization,social_service_organizations,youth_organizations] +community_services_non_profits; [public_service_and_government,community_services] +disability_services_and_support_organization; [public_service_and_government,community_services,disability_services_and_support_organization] +government_services; [public_service_and_government,government_services] +social_security_services; [public_service_and_government,government_services,social_security_services] +jail_and_prison; [public_service_and_government,jail_and_prison] +juvenile_detention_center; [public_service_and_government,jail_and_prison,juvenile_detention_center] +post_office; [public_service_and_government,post_office] +shipping_collection_services; [public_service_and_government,post_office,shipping_collection_services] +public_toilet; [public_service_and_government,public_toilet] +armed_forces_branch; [public_service_and_government,armed_forces_branch] +central_government_office; [public_service_and_government,central_government_office] +chambers_of_commerce; [public_service_and_government,chambers_of_commerce] +children_hall; [public_service_and_government,children_hall] +civic_center; [public_service_and_government,civic_center] +community_center; [public_service_and_government,community_center] +courthouse; [public_service_and_government,courthouse] +department_of_motor_vehicles; [public_service_and_government,department_of_motor_vehicles] +department_of_social_service; [public_service_and_government,department_of_social_service] +embassy; [public_service_and_government,embassy] +family_service_center; [public_service_and_government,family_service_center] +federal_government_offices; [public_service_and_government,federal_government_offices] +fire_department; [public_service_and_government,fire_department] +immigration_and_naturalization; [public_service_and_government,immigration_and_naturalization] +library; [public_service_and_government,library] +local_and_state_government_offices; [public_service_and_government,local_and_state_government_offices] +low_income_housing; [public_service_and_government,low_income_housing] +national_security_services; [public_service_and_government,national_security_services] +office_of_vital_records; [public_service_and_government,office_of_vital_records] +pension; [public_service_and_government,pension] +police_department; [public_service_and_government,police_department] +political_party_office; [public_service_and_government,political_party_office] +railway_service; [public_service_and_government,railway_service] +registry_office; [public_service_and_government,registry_office] +retirement_home; [public_service_and_government,retirement_home] +scout_hall; [public_service_and_government,scout_hall] +tax_office; [public_service_and_government,tax_office] +town_hall; [public_service_and_government,town_hall] +unemployment_office; [public_service_and_government,unemployment_office] +weather_station; [public_service_and_government,weather_station] +religious_organization; [religious_organization] +church_cathedral; [religious_organization,church_cathedral] +anglican_church; [religious_organization,church_cathedral,anglican_church] +baptist_church; [religious_organization,church_cathedral,baptist_church] +catholic_church; [religious_organization,church_cathedral,catholic_church] +episcopal_church; [religious_organization,church_cathedral,episcopal_church] +evangelical_church; [religious_organization,church_cathedral,evangelical_church] +jehovahs_witness_kingdom_hall; [religious_organization,church_cathedral,jehovahs_witness_kingdom_hall] +pentecostal_church; [religious_organization,church_cathedral,pentecostal_church] +mission; [religious_organization,mission] +buddhist_temple; [religious_organization,buddhist_temple] +convents_and_monasteries; [religious_organization,convents_and_monasteries] +hindu_temple; [religious_organization,hindu_temple] +mosque; [religious_organization,mosque] +religious_destination; [religious_organization,religious_destination] +shinto_shrines; [religious_organization,shinto_shrines] +sikh_temple; [religious_organization,sikh_temple] +synagogue; [religious_organization,synagogue] +temple; [religious_organization,temple] +real_estate; [real_estate] +real_estate_investment; [real_estate,real_estate_investment] +builders; [real_estate,builders] +home_developer; [real_estate,builders,home_developer] +apartments; [real_estate,apartments] +art_space_rental; [real_estate,art_space_rental] +commercial_real_estate; [real_estate,commercial_real_estate] +condominium; [real_estate,condominium] +display_home_center; [real_estate,display_home_center] +estate_liquidation; [real_estate,estate_liquidation] +holiday_park; [real_estate,holiday_park] +home_staging; [real_estate,home_staging] +homeowner_association; [real_estate,homeowner_association] +housing_cooperative; [real_estate,housing_cooperative] +kitchen_incubator; [real_estate,kitchen_incubator] +mobile_home_dealer; [real_estate,mobile_home_dealer] +mobile_home_park; [real_estate,mobile_home_park] +mortgage_broker; [real_estate,mortgage_broker] +property_management; [real_estate,property_management] +shared_office_space; [real_estate,shared_office_space] +university_housing; [real_estate,university_housing] +real_estate_agent; [real_estate,real_estate_agent] +apartment_agent; [real_estate,real_estate_agent,apartment_agent] +real_estate_service; [real_estate,real_estate_service] +escrow_services; [real_estate,real_estate_service,escrow_services] +land_surveying; [real_estate,real_estate_service,land_surveying] +real_estate_photography; [real_estate,real_estate_service,real_estate_photography] +rental_services; [real_estate,real_estate_service,rental_services] +travel; [travel] +airport; [travel,airport] +airport_terminal; [travel,airport,airport_terminal] +balloon_ports; [travel,airport,balloon_ports] +domestic_airports; [travel,airport,domestic_airports] +gliderports; [travel,airport,gliderports] +heliports; [travel,airport,heliports] +major_airports; [travel,airport,major_airports] +seaplane_bases; [travel,airport,seaplane_bases] +ultralight_airports; [travel,airport,ultralight_airports] +travel_services; [travel,travel_services] +passport_and_visa_services; [travel,travel_services,passport_and_visa_services] +visa_agent; [travel,travel_services,passport_and_visa_services,visa_agent] +travel_agents; [travel,travel_services,travel_agents] +sightseeing_tour_agency; [travel,travel_services,travel_agents,sightseeing_tour_agency] +luggage_storage; [travel,travel_services,luggage_storage] +visitor_center; [travel,travel_services,visitor_center] +road_structures_and_services; [travel,road_structures_and_services] +rest_areas; [travel,road_structures_and_services,rest_areas] +toll_stations; [travel,road_structures_and_services,toll_stations] +tours; [travel,tours] +aerial_tours; [travel,tours,aerial_tours] +architectural_tours; [travel,tours,architectural_tours] +art_tours; [travel,tours,art_tours] +beer_tours; [travel,tours,beer_tours] +bike_tours; [travel,tours,bike_tours] +boat_tours; [travel,tours,boat_tours] +bus_tours; [travel,tours,bus_tours] +cannabis_tour; [travel,tours,cannabis_tour] +food_tours; [travel,tours,food_tours] +historical_tours; [travel,tours,historical_tours] +scooter_tours; [travel,tours,scooter_tours] +walking_tours; [travel,tours,walking_tours] +whale_watching_tours; [travel,tours,whale_watching_tours] +wine_tours; [travel,tours,wine_tours] +transportation; [travel,transportation] +trains; [travel,transportation,trains] +train_station; [travel,transportation,trains,train_station] +airlines; [travel,transportation,airlines] +airport_shuttles; [travel,transportation,airport_shuttles] +bicycle_sharing_location; [travel,transportation,bicycle_sharing_location] +bike_parking; [travel,transportation,bike_parking] +bike_sharing; [travel,transportation,bike_sharing] +bus_service; [travel,transportation,bus_service] +bus_station; [travel,transportation,bus_station] +cable_car_service; [travel,transportation,cable_car_service] +car_sharing; [travel,transportation,car_sharing] +coach_bus; [travel,transportation,coach_bus] +ferry_service; [travel,transportation,ferry_service] +light_rail_and_subway_stations; [travel,transportation,light_rail_and_subway_stations] +limo_services; [travel,transportation,limo_services] +metro_station; [travel,transportation,metro_station] +motorcycle_parking; [travel,transportation,motorcycle_parking] +park_and_rides; [travel,transportation,park_and_rides] +parking; [travel,transportation,parking] +pedicab_service; [travel,transportation,pedicab_service] +private_jet_charters; [travel,transportation,private_jet_charters] +public_transportation; [travel,transportation,public_transportation] +ride_sharing; [travel,transportation,ride_sharing] +taxi_rank; [travel,transportation,taxi_rank] +taxi_service; [travel,transportation,taxi_service] +town_car_service; [travel,transportation,town_car_service] +transport_interchange; [travel,transportation,transport_interchange] +water_taxi; [travel,transportation,water_taxi] +agriturismo; [travel,agriturismo] +airline_ticket_agency; [travel,airline_ticket_agency] +bus_ticket_agency; [travel,bus_ticket_agency] +rental_service; [travel,rental_service] +car_rental_agency; [travel,rental_service,car_rental_agency] +motorcycle_rentals; [travel,rental_service,motorcycle_rentals] +rv_rentals; [travel,rental_service,rv_rentals] +trailer_rentals; [travel,rental_service,trailer_rentals] +truck_rentals; [travel,rental_service,truck_rentals] +country_house; [travel,country_house] +houseboat; [travel,houseboat] +railway_ticket_agent; [travel,railway_ticket_agent] +rest_stop; [travel,rest_stop] +ryokan; [travel,ryokan] +self_catering_accommodation; [travel,self_catering_accommodation] +ski_resort; [travel,ski_resort] +vacation_rental_agents; [travel,vacation_rental_agents] +mass_media; [mass_media] +print_media; [mass_media,print_media] +media_critic; [mass_media,media_critic] +movie_critic; [mass_media,media_critic,movie_critic] +music_critic; [mass_media,media_critic,music_critic] +video_game_critic; [mass_media,media_critic,video_game_critic] +media_news_company; [mass_media,media_news_company] +media_agency; [mass_media,media_news_company,media_agency] +radio_station; [mass_media,media_news_company,radio_station] +television_station; [mass_media,media_news_company,television_station] +weather_forecast_services; [mass_media,media_news_company,weather_forecast_services] +animation_studio; [mass_media,media_news_company,animation_studio] +book_magazine_distribution; [mass_media,media_news_company,book_magazine_distribution] +broadcasting_media_production; [mass_media,media_news_company,broadcasting_media_production] +game_publisher; [mass_media,media_news_company,game_publisher] +movie_television_studio; [mass_media,media_news_company,movie_television_studio] +music_production; [mass_media,media_news_company,music_production] +topic_publisher; [mass_media,media_news_company,topic_publisher] +social_media_company; [mass_media,media_news_company,social_media_company] +media_news_website; [mass_media,media_news_website] +media_restoration_service; [mass_media,media_restoration_service] +art_restoration; [mass_media,media_restoration_service,art_restoration] +theatrical_productions; [mass_media,theatrical_productions] +home_service; [home_service] +ceiling_and_roofing_repair_and_service; [home_service,ceiling_and_roofing_repair_and_service] +ceiling_service; [home_service,ceiling_and_roofing_repair_and_service,ceiling_service] +roofing; [home_service,ceiling_and_roofing_repair_and_service,roofing] +chimney_service; [home_service,chimney_service] +chimney_sweep; [home_service,chimney_service,chimney_sweep] +contractor; [home_service,contractor] +altering_and_remodeling_contractor; [home_service,contractor,altering_and_remodeling_contractor] +building_contractor; [home_service,contractor,building_contractor] +flooring_contractors; [home_service,contractor,flooring_contractors] +paving_contractor; [home_service,contractor,paving_contractor] +damage_restoration; [home_service,damage_restoration] +fire_and_water_damage_restoration; [home_service,damage_restoration,fire_and_water_damage_restoration] +artificial_turf; [home_service,artificial_turf] +bathroom_remodeling; [home_service,bathroom_remodeling] +bathtub_and_sink_repairs; [home_service,bathtub_and_sink_repairs] +cabinet_sales_service; [home_service,cabinet_sales_service] +carpenter; [home_service,carpenter] +carpet_cleaning; [home_service,carpet_cleaning] +carpet_installation; [home_service,carpet_installation] +childproofing; [home_service,childproofing] +closet_remodeling; [home_service,closet_remodeling] +countertop_installation; [home_service,countertop_installation] +deck_and_railing_sales_service; [home_service,deck_and_railing_sales_service] +demolition_service; [home_service,demolition_service] +door_sales_service; [home_service,door_sales_service] +drywall_services; [home_service,drywall_services] +electrician; [home_service,electrician] +excavation_service; [home_service,excavation_service] +exterior_design; [home_service,exterior_design] +fence_and_gate_sales_service; [home_service,fence_and_gate_sales_service] +fire_protection_service; [home_service,fire_protection_service] +fireplace_service; [home_service,fireplace_service] +firewood; [home_service,firewood] +foundation_repair; [home_service,foundation_repair] +furniture_assembly; [home_service,furniture_assembly] +garage_door_service; [home_service,garage_door_service] +glass_and_mirror_sales_service; [home_service,glass_and_mirror_sales_service] +grout_service; [home_service,grout_service] +gutter_service; [home_service,gutter_service] +handyman; [home_service,handyman] +holiday_decorating; [home_service,holiday_decorating] +home_automation; [home_service,home_automation] +home_cleaning; [home_service,home_cleaning] +home_energy_auditor; [home_service,home_energy_auditor] +home_inspector; [home_service,home_inspector] +home_network_installation; [home_service,home_network_installation] +home_security; [home_service,home_security] +home_window_tinting; [home_service,home_window_tinting] +house_sitting; [home_service,house_sitting] +hvac_services; [home_service,hvac_services] +insulation_installation; [home_service,insulation_installation] +interior_design; [home_service,interior_design] +irrigation; [home_service,irrigation] +key_and_locksmith; [home_service,key_and_locksmith] +kitchen_remodeling; [home_service,kitchen_remodeling] +lighting_fixtures_and_equipment; [home_service,lighting_fixtures_and_equipment] +masonry_concrete; [home_service,masonry_concrete] +mobile_home_repair; [home_service,mobile_home_repair] +movers; [home_service,movers] +packing_services; [home_service,packing_services] +painting; [home_service,painting] +patio_covers; [home_service,patio_covers] +plasterer; [home_service,plasterer] +pool_and_hot_tub_services; [home_service,pool_and_hot_tub_services] +pool_cleaning; [home_service,pool_cleaning] +pressure_washing; [home_service,pressure_washing] +refinishing_services; [home_service,refinishing_services] +security_systems; [home_service,security_systems] +shades_and_blinds; [home_service,shades_and_blinds] +shutters; [home_service,shutters] +siding; [home_service,siding] +solar_installation; [home_service,solar_installation] +solar_panel_cleaning; [home_service,solar_panel_cleaning] +structural_engineer; [home_service,structural_engineer] +stucco_services; [home_service,stucco_services] +television_service_providers; [home_service,television_service_providers] +tiling; [home_service,tiling] +wallpaper_installers; [home_service,wallpaper_installers] +washer_and_dryer_repair_service; [home_service,washer_and_dryer_repair_service] +water_heater_installation_repair; [home_service,water_heater_installation_repair] +water_purification_services; [home_service,water_purification_services] +waterproofing; [home_service,waterproofing] +window_washing; [home_service,window_washing] +landscaping; [home_service,landscaping] +gardener; [home_service,landscaping,gardener] +landscape_architect; [home_service,landscaping,landscape_architect] +lawn_service; [home_service,landscaping,lawn_service] +tree_services; [home_service,landscaping,tree_services] +plumbing; [home_service,plumbing] +backflow_services; [home_service,plumbing,backflow_services] +windows_installation; [home_service,windows_installation] +skylight_installation; [home_service,windows_installation,skylight_installation] +professional_services; [professional_services] +cleaning_services; [professional_services,cleaning_services] +industrial_cleaning_services; [professional_services,cleaning_services,industrial_cleaning_services] +janitorial_services; [professional_services,cleaning_services,janitorial_services] +office_cleaning; [professional_services,cleaning_services,office_cleaning] +construction_services; [professional_services,construction_services] +blueprinters; [professional_services,construction_services,blueprinters] +construction_management; [professional_services,construction_services,construction_management] +inspection_services; [professional_services,construction_services,inspection_services] +road_contractor; [professional_services,construction_services,road_contractor] +wind_energy; [professional_services,construction_services,wind_energy] +engineering_services; [professional_services,construction_services,engineering_services] +civil_engineers; [professional_services,construction_services,engineering_services,civil_engineers] +instrumentation_engineers; [professional_services,construction_services,engineering_services,instrumentation_engineers] +mechanical_engineers; [professional_services,construction_services,engineering_services,mechanical_engineers] +metal_materials_and_experts; [professional_services,construction_services,metal_materials_and_experts] +blacksmiths; [professional_services,construction_services,metal_materials_and_experts,blacksmiths] +ironworkers; [professional_services,construction_services,metal_materials_and_experts,ironworkers] +welders; [professional_services,construction_services,metal_materials_and_experts,welders] +stone_and_masonry; [professional_services,construction_services,stone_and_masonry] +gravel_professionals; [professional_services,construction_services,stone_and_masonry,gravel_professionals] +lime_professionals; [professional_services,construction_services,stone_and_masonry,lime_professionals] +marble_and_granite_professionals; [professional_services,construction_services,stone_and_masonry,marble_and_granite_professionals] +masonry_contractors; [professional_services,construction_services,stone_and_masonry,masonry_contractors] +lawyer; [professional_services,lawyer] +estate_planning_law; [professional_services,lawyer,estate_planning_law] +wills_trusts_and_probate; [professional_services,lawyer,estate_planning_law,wills_trusts_and_probate] +appellate_practice_lawyers; [professional_services,lawyer,appellate_practice_lawyers] +bankruptcy_law; [professional_services,lawyer,bankruptcy_law] +business_law; [professional_services,lawyer,business_law] +civil_rights_lawyers; [professional_services,lawyer,civil_rights_lawyers] +contract_law; [professional_services,lawyer,contract_law] +criminal_defense_law; [professional_services,lawyer,criminal_defense_law] +disability_law; [professional_services,lawyer,disability_law] +divorce_and_family_law; [professional_services,lawyer,divorce_and_family_law] +dui_law; [professional_services,lawyer,dui_law] +employment_law; [professional_services,lawyer,employment_law] +entertainment_law; [professional_services,lawyer,entertainment_law] +general_litigation; [professional_services,lawyer,general_litigation] +immigration_law; [professional_services,lawyer,immigration_law] +ip_and_internet_law; [professional_services,lawyer,ip_and_internet_law] +medical_law; [professional_services,lawyer,medical_law] +paralegal_services; [professional_services,lawyer,paralegal_services] +personal_injury_law; [professional_services,lawyer,personal_injury_law] +real_estate_law; [professional_services,lawyer,real_estate_law] +social_security_law; [professional_services,lawyer,social_security_law] +tax_law; [professional_services,lawyer,tax_law] +traffic_ticketing_law; [professional_services,lawyer,traffic_ticketing_law] +workers_compensation_law; [professional_services,lawyer,workers_compensation_law] +event_planning; [professional_services,event_planning] +balloon_services; [professional_services,event_planning,balloon_services] +bartender; [professional_services,event_planning,bartender] +boat_charter; [professional_services,event_planning,boat_charter] +caricature; [professional_services,event_planning,caricature] +caterer; [professional_services,event_planning,caterer] +clown; [professional_services,event_planning,clown] +dj_service; [professional_services,event_planning,dj_service] +event_technology_service; [professional_services,event_planning,event_technology_service] +face_painting; [professional_services,event_planning,face_painting] +floral_designer; [professional_services,event_planning,floral_designer] +game_truck_rental; [professional_services,event_planning,game_truck_rental] +golf_cart_rental; [professional_services,event_planning,golf_cart_rental] +henna_artist; [professional_services,event_planning,henna_artist] +kids_recreation_and_party; [professional_services,event_planning,kids_recreation_and_party] +magician; [professional_services,event_planning,magician] +mohel; [professional_services,event_planning,mohel] +musician; [professional_services,event_planning,musician] +officiating_services; [professional_services,event_planning,officiating_services] +party_and_event_planning; [professional_services,event_planning,party_and_event_planning] +party_bike_rental; [professional_services,event_planning,party_bike_rental] +party_bus_rental; [professional_services,event_planning,party_bus_rental] +party_character; [professional_services,event_planning,party_character] +personal_chef; [professional_services,event_planning,personal_chef] +photo_booth_rental; [professional_services,event_planning,photo_booth_rental] +silent_disco; [professional_services,event_planning,silent_disco] +sommelier_service; [professional_services,event_planning,sommelier_service] +team_building_activity; [professional_services,event_planning,team_building_activity] +trivia_host; [professional_services,event_planning,trivia_host] +valet_service; [professional_services,event_planning,valet_service] +venue_and_event_space; [professional_services,event_planning,venue_and_event_space] +videographer; [professional_services,event_planning,videographer] +wedding_chapel; [professional_services,event_planning,wedding_chapel] +wedding_planning; [professional_services,event_planning,wedding_planning] +party_equipment_rental; [professional_services,event_planning,party_equipment_rental] +audiovisual_equipment_rental; [professional_services,event_planning,party_equipment_rental,audiovisual_equipment_rental] +bounce_house_rental; [professional_services,event_planning,party_equipment_rental,bounce_house_rental] +karaoke_rental; [professional_services,event_planning,party_equipment_rental,karaoke_rental] +photographer; [professional_services,event_planning,photographer] +boudoir_photography; [professional_services,event_planning,photographer,boudoir_photography] +event_photography; [professional_services,event_planning,photographer,event_photography] +session_photography; [professional_services,event_planning,photographer,session_photography] +funeral_services_and_cemeteries; [professional_services,funeral_services_and_cemeteries] +cremation_services; [professional_services,funeral_services_and_cemeteries,cremation_services] +mortuary_services; [professional_services,funeral_services_and_cemeteries,mortuary_services] +internet_service_provider; [professional_services,internet_service_provider] +web_hosting_service; [professional_services,internet_service_provider,web_hosting_service] +it_service_and_computer_repair; [professional_services,it_service_and_computer_repair] +data_recovery; [professional_services,it_service_and_computer_repair,data_recovery] +it_consultant; [professional_services,it_service_and_computer_repair,it_consultant] +it_support_and_service; [professional_services,it_service_and_computer_repair,it_support_and_service] +mobile_phone_repair; [professional_services,it_service_and_computer_repair,mobile_phone_repair] +telecommunications; [professional_services,it_service_and_computer_repair,telecommunications] +junk_removal_and_hauling; [professional_services,junk_removal_and_hauling] +dumpster_rentals; [professional_services,junk_removal_and_hauling,dumpster_rentals] +laundry_services; [professional_services,laundry_services] +dry_cleaning; [professional_services,laundry_services,dry_cleaning] +laundromat; [professional_services,laundry_services,laundromat] +legal_services; [professional_services,legal_services] +court_reporter; [professional_services,legal_services,court_reporter] +process_servers; [professional_services,legal_services,process_servers] +musical_instrument_services; [professional_services,musical_instrument_services] +piano_services; [professional_services,musical_instrument_services,piano_services] +vocal_coach; [professional_services,musical_instrument_services,vocal_coach] +3d_printing_service; [professional_services,3d_printing_service] +acoustical_consultant; [professional_services,acoustical_consultant] +adoption_services; [professional_services,adoption_services] +advertising_agency; [professional_services,advertising_agency] +copywriting_service; [professional_services,copywriting_service] +internet_marketing_service; [professional_services,internet_marketing_service] +merchandising_service; [professional_services,merchandising_service] +social_media_agency; [professional_services,social_media_agency] +after_school_program; [professional_services,after_school_program] +bank_equipment_service; [professional_services,bank_equipment_service] +air_duct_cleaning_service; [professional_services,air_duct_cleaning_service] +antenna_service; [professional_services,antenna_service] +appliance_repair_service; [professional_services,appliance_repair_service] +appraisal_services; [professional_services,appraisal_services] +architect; [professional_services,architect] +architectural_designer; [professional_services,architectural_designer] +art_restoration_service; [professional_services,art_restoration_service] +awning_supplier; [professional_services,awning_supplier] +bail_bonds_service; [professional_services,bail_bonds_service] +bike_repair_maintenance; [professional_services,bike_repair_maintenance] +billing_services; [professional_services,billing_services] +bookbinding; [professional_services,bookbinding] +bookkeeper; [professional_services,bookkeeper] +bus_rentals; [professional_services,bus_rentals] +business_consulting; [professional_services,business_consulting] +calligraphy; [professional_services,calligraphy] +car_broker; [professional_services,car_broker] +career_counseling; [professional_services,career_counseling] +carpet_dyeing; [professional_services,carpet_dyeing] +cemeteries; [professional_services,cemeteries] +certification_agency; [professional_services,certification_agency] +child_care_and_day_care; [professional_services,child_care_and_day_care] +day_care_preschool; [professional_services,child_care_and_day_care,day_care_preschool] +clock_repair_service; [professional_services,clock_repair_service] +commercial_printer; [professional_services,commercial_printer] +commercial_refrigeration; [professional_services,commercial_refrigeration] +commissioned_artist; [professional_services,commissioned_artist] +community_book_boxes; [professional_services,community_book_boxes] +community_gardens; [professional_services,community_gardens] +computer_hardware_company; [professional_services,computer_hardware_company] +courier_and_delivery_services; [professional_services,courier_and_delivery_services] +crane_services; [professional_services,crane_services] +customs_broker; [professional_services,customs_broker] +delegated_driver_service; [professional_services,delegated_driver_service] +diamond_dealer; [professional_services,diamond_dealer] +digitizing_services; [professional_services,digitizing_services] +donation_center; [professional_services,donation_center] +duplication_services; [professional_services,duplication_services] +e_commerce_service; [professional_services,e_commerce_service] +editorial_services; [professional_services,editorial_services] +elder_care_planning; [professional_services,elder_care_planning] +electrical_consultant; [professional_services,electrical_consultant] +electronics_repair_shop; [professional_services,electronics_repair_shop] +elevator_service; [professional_services,elevator_service] +emergency_service; [professional_services,emergency_service] +employment_agencies; [professional_services,employment_agencies] +temp_agency; [professional_services,employment_agencies,temp_agency] +engraving; [professional_services,engraving] +environmental_abatement_services; [professional_services,environmental_abatement_services] +environmental_testing; [professional_services,environmental_testing] +farm_equipment_repair_service; [professional_services,farm_equipment_repair_service] +feng_shui; [professional_services,feng_shui] +fingerprinting_service; [professional_services,fingerprinting_service] +food_and_beverage_consultant; [professional_services,food_and_beverage_consultant] +forestry_service; [professional_services,forestry_service] +fortune_telling_service; [professional_services,fortune_telling_service] +furniture_rental_service; [professional_services,furniture_rental_service] +furniture_repair; [professional_services,furniture_repair] +furniture_reupholstery; [professional_services,furniture_reupholstery] +genealogists; [professional_services,genealogists] +generator_installation_repair; [professional_services,generator_installation_repair] +goldsmith; [professional_services,goldsmith] +graphic_designer; [professional_services,graphic_designer] +gunsmith; [professional_services,gunsmith] +hazardous_waste_disposal; [professional_services,hazardous_waste_disposal] +hydraulic_repair_service; [professional_services,hydraulic_repair_service] +hydro_jetting; [professional_services,hydro_jetting] +ice_supplier; [professional_services,ice_supplier] +immigration_assistance_services; [professional_services,immigration_assistance_services] +indoor_landscaping; [professional_services,indoor_landscaping] +jewelry_repair_service; [professional_services,jewelry_repair_service] +junkyard; [professional_services,junkyard] +knife_sharpening; [professional_services,knife_sharpening] +laboratory; [professional_services,laboratory] +lawn_mower_repair_service; [professional_services,lawn_mower_repair_service] +life_coach; [professional_services,life_coach] +lottery_ticket; [professional_services,lottery_ticket] +machine_and_tool_rentals; [professional_services,machine_and_tool_rentals] +machine_shop; [professional_services,machine_shop] +mailbox_center; [professional_services,mailbox_center] +marketing_agency; [professional_services,marketing_agency] +matchmaker; [professional_services,matchmaker] +mediator; [professional_services,mediator] +metal_detector_services; [professional_services,metal_detector_services] +misting_system_services; [professional_services,misting_system_services] +mobility_equipment_services; [professional_services,mobility_equipment_services] +mooring_service; [professional_services,mooring_service] +music_production_services; [professional_services,music_production_services] +nanny_services; [professional_services,nanny_services] +notary_public; [professional_services,notary_public] +package_locker; [professional_services,package_locker] +packaging_contractors_and_service; [professional_services,packaging_contractors_and_service] +patent_law; [professional_services,patent_law] +payroll_services; [professional_services,payroll_services] +personal_assistant; [professional_services,personal_assistant] +pest_control_service; [professional_services,pest_control_service] +powder_coating_service; [professional_services,powder_coating_service] +printing_services; [professional_services,printing_services] +private_investigation; [professional_services,private_investigation] +product_design; [professional_services,product_design] +propane_supplier; [professional_services,propane_supplier] +public_adjuster; [professional_services,public_adjuster] +public_relations; [professional_services,public_relations] +record_label; [professional_services,record_label] +recording_and_rehearsal_studio; [professional_services,recording_and_rehearsal_studio] +recycling_center; [professional_services,recycling_center] +sandblasting_service; [professional_services,sandblasting_service] +screen_printing_t_shirt_printing; [professional_services,screen_printing_t_shirt_printing] +security_services; [professional_services,security_services] +septic_services; [professional_services,septic_services] +shipping_center; [professional_services,shipping_center] +shoe_repair; [professional_services,shoe_repair] +shoe_shining_service; [professional_services,shoe_shining_service] +shredding_services; [professional_services,shredding_services] +sign_making; [professional_services,sign_making] +snow_removal_service; [professional_services,snow_removal_service] +snuggle_service; [professional_services,snuggle_service] +software_development; [professional_services,software_development] +talent_agency; [professional_services,talent_agency] +taxidermist; [professional_services,taxidermist] +telephone_services; [professional_services,telephone_services] +tenant_and_eviction_law; [professional_services,tenant_and_eviction_law] +tent_house_supplier; [professional_services,tent_house_supplier] +translation_services; [professional_services,translation_services] +tv_mounting; [professional_services,tv_mounting] +typing_services; [professional_services,typing_services] +video_film_production; [professional_services,video_film_production] +watch_repair_service; [professional_services,watch_repair_service] +water_delivery; [professional_services,water_delivery] +web_designer; [professional_services,web_designer] +well_drilling; [professional_services,well_drilling] +wildlife_control; [professional_services,wildlife_control] +writing_service; [professional_services,writing_service] +storage_facility; [professional_services,storage_facility] +rv_and_boat_storage_facility; [professional_services,storage_facility,rv_and_boat_storage_facility] +boat_storage_facility; [professional_services,storage_facility,rv_and_boat_storage_facility,boat_storage_facility] +rv_storage_facility; [professional_services,storage_facility,rv_and_boat_storage_facility,rv_storage_facility] +self_storage_facility; [professional_services,storage_facility,self_storage_facility] +sewing_and_alterations; [professional_services,sewing_and_alterations] +gents_tailor; [professional_services,sewing_and_alterations,gents_tailor] +utility_service; [professional_services,utility_service] +electricity_supplier; [professional_services,utility_service,electricity_supplier] +garbage_collection_service; [professional_services,utility_service,garbage_collection_service] +natural_gas_supplier; [professional_services,utility_service,natural_gas_supplier] +public_phones; [professional_services,utility_service,public_phones] +public_restrooms; [professional_services,utility_service,public_restrooms] +water_supplier; [professional_services,utility_service,water_supplier] +structure_and_geography; [structure_and_geography] +bridge; [structure_and_geography,bridge] +canal; [structure_and_geography,canal] +dam; [structure_and_geography,dam] +desert; [structure_and_geography,desert] +forest; [structure_and_geography,forest] +geologic_formation; [structure_and_geography,geologic_formation] +island; [structure_and_geography,island] +mountain; [structure_and_geography,mountain] +natural_hot_springs; [structure_and_geography,natural_hot_springs] +nature_reserve; [structure_and_geography,nature_reserve] +pier; [structure_and_geography,pier] +public_plaza; [structure_and_geography,public_plaza] +quay; [structure_and_geography,quay] +river; [structure_and_geography,river] +skyscraper; [structure_and_geography,skyscraper] +tower; [structure_and_geography,tower] +weir; [structure_and_geography,weir] diff --git a/docs/schema/concepts/by-theme/transportation/index.mdx b/docs/schema/concepts/by-theme/transportation/index.mdx new file mode 100644 index 000000000..fd9686d7c --- /dev/null +++ b/docs/schema/concepts/by-theme/transportation/index.mdx @@ -0,0 +1,83 @@ +--- +title: Transportation schema concepts +--- +:::tip +For step-by-step examples of accessing and working with our transportation data, please see our [Transportation Data Guide](https://docs.overturemaps.org/guides/transportation/). +::: + +## Overview +The Overture transportation theme describes the infrastructure and conventions of how people and objects travel around the world. The schema defines a hierarchy of structures that attempt to: 1. make it easier to manage this complex dataset and 2. reflect the operational reality of transportation networks. + +The Overture transportation schema aims to do the following: +- capture the hierarchy of features it proposes +- envision inclusion of other datasets such as places, buildings, and divisions +- use GeoJSON features as a base +- model every feature as a spatial object with a well-defined geometry +- model topology +- model shared properties that describe the behavior of other properties: e.g. a value constrained by its location along a segment, a value constrained by both its location along a segment and certain hours, transportation modes, or direction +- model relationships as properties belonging to source segment + +## Feature types and subtypes + +The Overture transportation schema defines two feature types: + +- The `segment` type has a LineString geometry that represents the center-line of a path repeatedly traversed by people or objects. Segment properties describe both the physical properties (e.g. road surface and width) and non-physical properties (e.g. access restriction rules) of that path. +- The `connector` type has a Point geometry that defines the topology of the transportation network by representing the physical connection between two or more segments. Connectors do not have properties beyond geometry and the common properties required for all Overture features. + +The `segment` feature type is further divided into three subtypes: `road`, `rail`, and `water`. Of these, the `road` subtype is the most developed. [Here](roads) we describe in detail how we model road-specific properties in the Overture schema. A more general overview of segments can be found [here](segments). + + +## Key concepts + +### Connectors +To better support routing use cases, the `segment` feature type has a property called `connectors`: array of IDs with pre-computed linear reference values that explicitly link segments and connector features via coordinates. The `connectors` property contains a list of connector features to which a segment feature is physically linked **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. + +Here's an example of how the connectors property is modeled in the schema: + +``` +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 +``` + +### Destinations +The destination property in the `segment` feature type supports routing use cases. It describes the transitions from one segment to another on the way to a specified location. In turn-by-turn routing applications, this is what is known as “follow signs for” — the human-readable directions and signposts along a road, highway, or interstate that get us from point A to point Z, by way of any number of paths in between. We designed the `destinations` property with a flexible schema that will allow us to capture and model navigation data from many different sources. + +### Linear referencing +The `segment` feature type uses linear referencing to describe the properties of specific sections of a road along a road segment. To avoid splitting road segments at any and every property change, we added linear referencing, which defines how some properties apply to portions of a segment can change along a segment that is generally understood to be the same 'road'. Segment splits are then reserved for more significant intersections so that we don't have to version the entire road any time any piece of the road changes. Other than some expected challenges learning how Linear Referencing worked, we noticed that the main difficulty really arises is when people want to convert the transportation data into a routing graph. Many routing engines want the data to be split at every 'decision point' where each decision is what amounts to a connector between segments the routing engine would consider routing on (e.g. vehicle routing would eliminate sidewalks). However that decision of what segments would be considered for routing someone varies significantly by application, even within similar 'types' of routing, so we could not identify a common subset of splitting rules that would meet all or even most of the various use cases of the members, much less the community at large. + +### [Scoped and rule-based properties](/schema/concepts/scoping-rules) +The schema allows the values of properties to be specified at the sub-feature level. For example: + - a speed limit on a road segment might be scoped to apply only to part of the road geometry using _geometric scoping_ + - the directionality of a segment, controlling the direction or directions in which traffic can flow along the segment geometry, may be specified to change at different times of day using _temporal scoping_. + - the categories of people and vehicles who are allowed to travel on a segment can be controlled using _subjective scoping_ + - a real world property that varies under changing environmental conditions can be modeled using _environmental scoping_ + +### [Shape and connectivity](/schema/concepts/by-theme/transportation/shape-connectivity) +The schema captures the shape and connectivity of the transportation network using `segment` and `connector` features. The schema design allows the segmentation process to promote shape stability and ultimately [GERS ID](https://docs.overturemaps.org/gers/) stability. + + +### [Travel modes](/schema/concepts/by-theme/transportation/travel-modes) +The transportation theme supports a fuzzy concept called travel mode which can be used as a way of controlling scoped and rule-based properties. + + +## Schema reference +- [Connector feature type](/schema/reference/transportation/connector) +- [Segment feature type](/schema/reference/transportation/segment) diff --git a/docs/schema/concepts/by-theme/transportation/roads.mdx b/docs/schema/concepts/by-theme/transportation/roads.mdx new file mode 100644 index 000000000..55a78e67f --- /dev/null +++ b/docs/schema/concepts/by-theme/transportation/roads.mdx @@ -0,0 +1,309 @@ +--- +title: Roads +--- + +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ExampleAccessRestrictionsBlanketDeny from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml'; +import ExampleAccessRestrictionPrivateAccessWithDeliveries from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml'; +import ExampleAccessRestrictionMotorVehiclesDestinationOnly from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml'; +import ExampleAccessRestrictionAxleLimit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml'; +import ExampleSpeedLimitsSimple from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml'; +import ExampleSpeedLimitsDirectional from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml'; +import ExampleSpeedLimitsVariableMax from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml'; +import ExampleTurnRestriction1Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml'; +import ExampleTurnRestriction1Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml'; +import ExampleTurnRestriction1Exit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml'; +import ExampleTurnRestriction1Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml'; +import ExampleTurnRestriction1Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml'; +import ExampleTurnRestriction1Connector3 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml'; +import ExampleTurnRestriction2Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml'; +import ExampleTurnRestriction2Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml'; +import ExampleTurnRestriction2Via from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml'; +import ExampleTurnRestriction2Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml'; +import ExampleTurnRestriction2Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml'; + +In the Overture transportation theme, a road is any kind of road, +street, or path, including a dedicated paths for walking or cycling. (Railways and waterways are separate subtypes in the transportation schema.) Road segments comprise the majority of ground-based transportation segments. Roads are modeled using [segment](/schema/reference/transportation/segment) features with the `subtype` property value set to the value `road`. + +This document describes properties specific to the `road` subtype. For more general information regarding segments, please refer to the [segments concept overview](/schema/concepts/by-theme/transportation/segments). + +## Subclass + +The subclass property refines the descriptions of segments by: + +- clearly specifying the usage of a length of road, and using linear referencing instead of further segmentation to pinpoint a change in how the road is used +- properly classifying detailed information from OpenStreetMap + +Subclasses require non-overlapping geometries, which will make it easier for routing engines to consume our road data and generate turn-by-turn directions. The class and subclass structures allow us to capture more 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 subclasses, laying the groundwork for richer and more detailed map displays with Overture data. + +## Surface + +The `road_surface` property of a road indicates its physical surface. If +omitted, a reasonable default value should be assumed based on the +`class` and `subclass`. + +Like many road segment properties, the `road_surface` property supports [geometric scoping](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing) (linear referencing). Consequently, the effective road surface may vary +along different sub-ranges of a road segment's geometry. + + +## Restrictions + +### Access restrictions + +Access restrictions on a road segment specify who is allowed to use the +road, and under what circumstances. + +Every road segment has an *implied* set of access restrictions defined +by its [road class](#class) and local rules, norms, and customs. +(The Overture transportation schema does not specify these implied +access restrictions, which are left to the specific application to +resolve.) + +The implied access restrictions may be modified for the road segment as +a whole by providing an explicit value for the property +`access_restrictions`. + +It is technically possible to specify a blanket access grant or refusal +of access applying to everyone and everything; but where, as is typical, +a more precise outcome is needed, one or more [rules](/schema/concepts/scoping-rules#rules-and-rule-based-properties) will be used to specify access restrictions. As with all rule-based properties, if no rule matches the specific facts, then the default restrictions for the road class govern. + + + + +{ ExampleAccessRestrictionsBlanketDeny } + + + + + +{ ExampleAccessRestrictionPrivateAccessWithDeliveries } + + + + + +{ ExampleAccessRestrictionMotorVehiclesDestinationOnly } + + + + + +{ ExampleAccessRestrictionAxleLimit } + + + + +### Turn restrictions + +Turn restrictions on a road segment limit the transitions which are +allowed from that segment into other [physically connected](/schema/concepts/by-theme/transportation/shape-connectivity#physical-connectivity) segments. + +Every road segment has an implied set of allowed transitions +defined by its [access restrictions](#access-restrictions) as well as +local rules, norms, and customs. An example of a transition restriction +implied by an access restriction, if the segment can only be used along the `forward` [heading](/schema/concepts/by-theme/transportation/shape-connectivity#heading), then it is implied that no transitions are allowed to any connected segments if travelling +along the `backward` heading. An example of a transition restriction +implied by a local rule or norm would be a blanket prohibition on +U-turns in a given jurisdiction. (The Overture transportation schema +does not specify these local rules, norms, and customs, which are left +to the specific application to resolve.) + +Overture takes a permissive-by-default approach to transition +restrictions. By default, all implied transitions are allowed. The +set of allowed transitions may be reduced by adding explicit transition +restrictions in the `prohibited_transitions` property. + +Turn restrictions come in two flavors: simple and via: a simple turn +restriction allows a simple regulation to be stated, such as "No right +turn onto Elm Street"; a via restriction covers more elaborate cases +where the sequence of maneuvers is important. + + + + +
+ +
+ + + +
+ +*Prohibited right turn from "source" to "target" segment at connector 2.* + +
+ +
+ +
+ +
+ +
+Source segment +{ ExampleTurnRestriction1Source } +
+ +
+Connector 1 + +*This connector is not an important part of the example, since it does +not participate in the turn restriction, but it is included to bring +real-world context to the example.* + +{ ExampleTurnRestriction1Connector1 } +
+ +
+Exit segment + +*This segment is not an important part of the example, since all implied +transitions are allowed on it. We include it to bring real-world context +to the example.* + +{ ExampleTurnRestriction1Exit } + +
+ +
+Connector 2 + +*The right turn from the source segment (`forward` heading) to the +target segment (`forward` heading) is prohibited at this connector.* + +{ ExampleTurnRestriction1Connector2 } +
+ +
+Target segment + +*Traffic heading `forward` on the source segment may not enter this +segment heading `forward`, i.e. the right turn from the source segment +to this segment is prohibited.* + +{ ExampleTurnRestriction1Target } +
+ +
+Connector 3 + +*This connector is not an important part of the example, since it does +not participate in the turn restriction, but it is included to bring +real-world context to the example.* + +{ ExampleTurnRestriction1Connector3 } +
+ + +
+ +
+ + + + + +
+ +
+ + + +
+ +*Prohibited transition from "source" to "target" through `via` segment.* + +
+ +
+ +
+ +
+ +
+Source segment +{ ExampleTurnRestriction2Source } +
+ +
+Connector 1 +{ ExampleTurnRestriction2Connector1 } +
+ +
+Via segment +{ ExampleTurnRestriction2Via } +
+ +
+Connector 2 +{ ExampleTurnRestriction2Connector2 } +
+ +
+Target segment +{ ExampleTurnRestriction2Target } +
+ +
+ +
+ + + + +### Speed limits + +Speed limits restrict the speed at which travel is permitted on a road. +Typically speed limits specify maximum allowed speeds, but the +Overture also allows minimum speed limits to be set and variable speed +corridors to be indicated. + +Every road segment has an implied speed limit or set of speed limits +defined by its [road class](#road-class) and local rules, norms, and +customs. Note: as with access and turn restrictions, the Overture +transportation schema does not attempt to specify these implied speed +limits. + +The implied speed limits may be configured for the whole road segment by +providing an explicit value for the property +`speed_limits`. + +As with access restrictions and turn restrictions, speed limits can be specified using [rules](/schema/concepts/scoping-rules#rules-and-rule-based-properties). + + + + +{ ExampleSpeedLimitsSimple } + + + + + +{ ExampleSpeedLimitsDirectional } + + + + + +{ ExampleSpeedLimitsVariableMax } + + + \ No newline at end of file diff --git a/docs/schema/concepts/by-theme/transportation/segments.mdx b/docs/schema/concepts/by-theme/transportation/segments.mdx new file mode 100644 index 000000000..03ebe8231 --- /dev/null +++ b/docs/schema/concepts/by-theme/transportation/segments.mdx @@ -0,0 +1,120 @@ +--- +title: Segments +--- + +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ExampleAccessRestrictionsBlanketDeny from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml'; +import ExampleAccessRestrictionPrivateAccessWithDeliveries from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml'; +import ExampleAccessRestrictionMotorVehiclesDestinationOnly from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml'; +import ExampleAccessRestrictionAxleLimit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml'; +import ExampleSpeedLimitsSimple from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml'; +import ExampleSpeedLimitsDirectional from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml'; +import ExampleSpeedLimitsVariableMax from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml'; +import ExampleTurnRestriction1Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml'; +import ExampleTurnRestriction1Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml'; +import ExampleTurnRestriction1Exit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml'; +import ExampleTurnRestriction1Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml'; +import ExampleTurnRestriction1Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml'; +import ExampleTurnRestriction1Connector3 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml'; +import ExampleTurnRestriction2Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml'; +import ExampleTurnRestriction2Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml'; +import ExampleTurnRestriction2Via from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml'; +import ExampleTurnRestriction2Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml'; +import ExampleTurnRestriction2Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml'; + +In the Overture transportation theme, features with their `type` property set to `segment` represent **paths repeatedly traversed by people or objects**. For example, a segment may represent a major highway, an abandoned subway line, or a ferry route. + +Because of their many possible uses, the segment `type` is further organized by its `subtype`, `class`, and `subclass` properties. Currently, the Overture transportation theme supports three **segment subtypes**: + + + + + + + + + + + + + + + + + + + + + + + + + +
SubtypeDescription% Of Total Segment Length in Overture
[road](/schema/concepts/by-theme/transportation/roads)Roads and footpaths~97%
railAny transit system in which vehicles ride on metal rails~3%
waterShipping lanes and ferry routes<1%
+ +Although allowed segment classes and their interpretations differ across subtypes, segments share a number of common properties (for road subtype-specific property concepts, please refer to the [road](/schema/concepts/by-theme/transportation/roads) document): + +## Geometry + +A segment's geometry approximates the physical centerline of the section of path it models. For roads, information regarding the width of this path is captured in the `width_rules` road-specific property. + +## Granularity + +Occasionally, a real-world feature admits different representations at different granularities. For example, a dual carriageway may be modeled as one segment, or two parallel segments. + +Segments support modeling the transportation network at a range of granularities. For example, a single segment can represent: + +- A bidirectional street including all of its sidewalks +- A Single sidewalk +- Two parallel subway tracks +- A one-way street +- One direction of a dual carriageway + + +## Class + +The `class` property of a segment specifies its general purpose of use within its subtype. Unlike many segment properties, a segment's `class` property does not support [geometric scoping](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing) (linear referencing). Consequently, whenever a linear range of real-world road or rail makes a class transition (for example, between secondary and residential roads), the Overture transportation [segmentation](/schema/concepts/by-theme/transportation/shape-connectivity#segmentation) algorithm will generate a segment split. + +Currently, **only roads and railways have the `class` property**. Within these subtypes, every segment has a class. If the `class` property is missing from a segment's source dataset, the `class` for that segment will be given default value `unknown`, indicating the class is undetermined and may be updated in a later release. + +Like many aspects of Overture transportation schema, `class` is heavily inspired by OpenStreetMap. In this +case, it is similar to, but not the same as, OSM's `highway=*` and `railway=*` tags. + +## Flags + +A segment's flags (`road_flags` for roads, `rail_flags` for rails) are a set of named flag values indicating the presence or absence of simple physical characteristics. + +For example, a road segment with `road_flags = [is_link, is_under_construction]` is a link segment that is physically under construction. + +Like many segment properties, the `road_flags`/`rail_flags` property supports [geometric scoping](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing). Consequently, the applicable flags may vary along different sub-ranges of a road segment's geometry. + + +**Here's an example of how classes, subclasses, and flags are modeled in the Overture schema:** + +``` +class: footway +subclass_rules: + - value: sidewalk + between: [0, 0.6] + - value: crosswalk + between: [0.6, 1.0] +road_flags: + - values: [is_bridge] + between: [0.2, 0.3] + - values: [is_under_construction] + between: [0.3, 0.5] + +class: service +subclass_rules: + - value: driveway + between: [0, 0.5] + +class: primary +subclass: link +subclass_rules: + - value: link +``` diff --git a/docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx b/docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx new file mode 100644 index 000000000..8b62cc144 --- /dev/null +++ b/docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx @@ -0,0 +1,479 @@ +--- +title: Shape and connectivity +--- + +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + + +The Overture transportation theme captures the physical shape and connectivity +of the transportation network through the interaction of the theme's two feature +types: segments and connectors. + + +
+ +
+ + + +
+ +*A connector physically joining three segments.* + +
+
+ +
+ +## Connectors + +The [connector](/schema/reference/transportation/connector) feature type carries point geometry which describes a location where a physical connection between two or more segments occurs (or may occur in the +future). + +Connectors have no properties apart from geometry and standard Overture +feature properties. All other aspects of the transportation theme are +modeled on segments. + +## Segments + +The [segment](/schema/reference/transportation/segment) feature type carries `LineString` geometry which describes the physical shape of a section of the transportation network. A segment may represent an entity with a +tangible real-world existence, such as a paved road; or it may represent +an intangible entity, such as a ferry route, which has a well-known +shape but no observable presence in the real world. + +### Physical connectivity + +Two or more segments are physically connected at a given connector if +each segment's connectors property contains a reference to the +connector. + +The connector geometry's coordinates should preferably be contained +within the segment geometry's coordinates, in which case the connector +coordinates define the point of physical connection. This constraint +will always be met by official Overture data releases. Where this is not +possible, the point of physical connection is the closest point to the +connector coordinates which intersects the segment geometry. + +Conversely, two segments are not physically connected if their +connectors properties do not reference a shared connector, even if +their geometries overlap or even share a coordinate in common. + +Travel from a point on one segment to a point on another +physically-connected segment is allowed, unless limited by an explicit +restriction such as an access or turn restriction. + +All segments in official Overture transportation data releases have a +minimum of two connectors, one at each end of the geometry, even if +those endpoint connectors are not attached to any other segment. This is +not a mandatory minimum and is not enforced by the schema. It is done +to allow new segments to connect into the existing network without +needing to change the properties of existing segments. + +### Start, end, and orientation + +The first coordinate in a segment's geometry is the start of the +segment and the last coordinate is the end. A segment is oriented +away from the start and toward the end. The examples below show two +segment geometries with identical coordinates, oriented in opposite +directions. + +
+ +
+ +```yaml +type: LineString +coordinates: + - [1, 0] # Start + - [0, 0] + - [-1, 0] # End +``` + +
+ + + +
+ +
+ +
+ +*This segment geometry is oriented due west.* + +
+ +
+
+ +
+ +
+ +
+ +```yaml +type: LineString +coordinates: + - [-1, 0] # Start + - [0, 0] + - [1, 0] # End +``` + +
+ + + +
+ +
+ +
+ +*This segment geometry is oriented due east.* + +
+ +
+
+ +
+ +
+ + +### Heading + +Travel along a segment's geometry can follow one of two possible +headings: forward or backward. The forward heading proceeds +toward the end of the segment; while the backward heading proceeds +back toward the start of the segment. + +
+ +
+ + + +
+ +*Travel heading along a segment.* + +
+
+ +
+ +### Subtypes + +Segment features have a `subtype` property whose value gives more +specific information about the segment's role within the transportation +network. + +The `subtype` property may be one of `road`, `rail`, or `water` but +only `road` is currently well defined. A `road` segment models any kind +of road, street, or trail, including a dedicated path for walking, +cycling and similar activities. For more information about `road` segments, see the page on [roads](/schema/concepts/by-theme/transportation/roads). + +### Level (Z-order) + +Segment geometry is two-dimensional. In the real, 3D, world, however the +entities represented by segments can be above or below each other, as +may happen with tunnels, bridges, overpasses, and stacked multi-level +highway interchanges. To accurately render top-down 2D maps, it is +important to know the relative stacking order, or Z-order, of segments. + +Segment Z-order is given by the `level` property. A `level` value of +`0` indicates visual level, with positive numbers indicating above +visual level, negative numbers indicating below visual level, and in +general, a lesser number indicating a lower position in the stacking +order than a greater number. + +
+ +
+ + + +
+ +*Ground level segments stacking above tunnel segments.* + +
+
+ +
+ +Note that two segments with different `level` values may be physically +connected, since `level` is an approximation for rendering and is not +meant be a precise indication of elevation at different points along the +segment. Connectors do not have a `level`. + + + +## Segmentation + +The term segmentation describes the process of converting upstream source data +into Overture transportation shape and connectivity data modeled as segments and +connectors. + +### Shape stability + +A primary goal of Overture's segmentation process is to promote stability of +segment shape across Overture data releases. For example, if a certain +real-world stretch of Main Street is represented by a single segment with +particular geometry in release 1, we will strive to avoid slicing the exact same +geometry up into two, three, or four segments in release 2. + +Note that aiming for segment shape stability categorically does not mean that +Overture aims for a stable transportation dataset. On the contrary, we aim to +continuously improve data accuracy and coverage, and expect the transportation +network dataset to constantly evolve and grow as a result. Our goal is simply +to minimize unnecessary, semantically meaningless, changes in how the geometry +is sliced into segments across data releases. + +Several features of the transportation theme schema were designed to allow the +segmentation process to achieve its segment stability goal. These features +include: + +- [interior connectors](#interior-connectors). +- [geometrically scoped](#geometric-scoping) segment properties. + + + +### ID stability + +Overture pursues shape stability to improve the ability to assess whether two segments from different points in time (or from different upstream data +sources) represent the same real world entity. Overture's success at this assessment directly feeds into the stability and precision of [GERS IDs](https://docs.overturemaps.org/gers) assigned to segments. In turn, higher GERS ID stability and precision makes transportation theme data more useful for conflation. + +### Interior connectors + +A key feature of the Overture transportation schema which enables shape +stability is the ability of segments to support connectors at interior positions +along their geometry, not only at their endpoints. The ability to add internal +connectors prevents the segmentation process from having to blindly follow every +split or join introduced in upstream source data. + +For example, imagine a square city block bordered by road on all four sides has +been mapped in the source data, but a back alley dividing the block along the +east-west axis has not. If the back alley is subsequently mapped in the source +data, the Overture segmentation process can connect to the transportation +network without having to subdivide any existing segments by simply introducing +internal connectors on the north-south road segments bordering the block to the east and west. As a result, the [Overture IDs](https://docs.overturemaps.org/gers) of the north-south road segments remain as they were and no data needs to be re-conflated. + +
+ +
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ +*A square city block bordered by four roads before (left) and after (right) mapping the back alley using internal connectors.* + +
+ +
+ +
+ +Note that in the above example, an official Overture data release would insert +coordinates in the middle of the north-south segments, if they did not already +exist, because Overture data releases will always ensure that every segment's +geometry includes all of its connectors. From a computer's perspective, this is +a very minor alteration of the segment's shape. + +### Geometric scoping + +Many segment properties may include a linear reference so that they apply only +to a part of the segment geometry. We refer to these linearly-referenced +property values as being geometrically scoped and discuss geometric scoping at greater length in the page on [scoped properties](/schema/concepts/scoping-rules). + +Geometric scoping allows the segmentation algorithm to avoid introducing +segment splits simply because a certain property has different values along +different parts of the geometry. Like interior connectors, geometrically-scoped +properties enable the segmentation process to make decisions that promote shape +stability, ultimately resulting in more precise and stable [Overture IDs](https://docs.overturemaps.org/gers) and less churn in conflated data. + +
+ +
+ + + +
+ +*A single segment with multiple geometrically-scoped speed limit values.* + +
+
+ +
+ +### Loops + +Although it is technically possible to use the Overture schema to express a +segment forming a connected loop, such loops are considered invalid and will +never be produced by the segmentation algorithm. + +An illegal loop where one of a segment connects to the other end can be +corrected by splitting the segment and introducing a second connector to +maintain physical connectivity. An illegal self-crossing loop of degree *N* +can be corrected by splitting the segment into N pieces. + +
+ +
+ +
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ +*An illegal loop connected at its endpoints (left) and a possible correction (right).* + +
+ +
+
+ +
+ +
+ +
+ +
+ + + +
+ +
+ + + +
+ +
+ +
+ +
+ +*An illegal self-crossing loop (left) and a possible correction (right).* + +
+ +
+
+ +
+ +
diff --git a/docs/schema/concepts/by-theme/transportation/travel-modes.mdx b/docs/schema/concepts/by-theme/transportation/travel-modes.mdx new file mode 100644 index 000000000..88c825104 --- /dev/null +++ b/docs/schema/concepts/by-theme/transportation/travel-modes.mdx @@ -0,0 +1,197 @@ +--- +title: Travel modes +--- + +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +In the real world, a travel mode can be thought of intuitively as a way +of getting from point A to point B. Travel modes can include non-vehicle +modes (foot), vehicle modes (a bicycle or motor vehicle), and +occasionally more granular details, e.g. a motor vehicle classified as a high occupancy vehicle or a heavy goods vehicle. + +Within the Overture transportation theme schema model, this real world +intuition translates to the following definition: a travel mode is a +recognized mode by which a person or thing may use a [segment](/schema/reference/transportation/segment) feature. + +## Understanding travel modes + +### Implied travel modes + +Every segment has an *implied* set of travel modes that are allowed to use the segment. For [road](/schema/concepts/by-theme/transportation/roads) segments, this implied set derives +from the [road class](/schema/concepts/by-theme/transportation/roads#road-class), as well as local rules, norms, and customs operative where the road segment is situated. + +Since this implied set depends on locality or jurisdiction, and is +susceptible of varying over time, the Overture transportation schema +does not try to specify the implied set. Resolution of the implied set +is done by the specific application in the case where this level of +detail is important for its proper functioning. Note: an accurate routing +engine may need this information, whereas a 2D map render or a geocoder +likely do not. + +### General definitions + +Overture's recognized travel modes are defined in general terms that are +broadly applicable, for example `hov` is a high-occupancy vehicle and +`hgv` is a heavy goods vehicle. In most jurisdictions, these general +terms map to a concept that is in use within the jurisdiction, even +though the local name for the concept may vary, for example one +jurisdiction may say heavy goods vehicle and another may say +large goods vehicle. + +Despite being broadly applicable, travel modes may have different +definitions in different places and at different times. + +- in one jurisdiction, an `hgv` might mean any vehicle with a gross + vehicle weight in excess of 3.5 tonnes (3,500 kg). In another place, + an `hgv` might have a gross vehicle weight of at least 10,001 lbs. +- in one jurisdiction, an `hov` might require a minimum of 2 passengers + while in another place it might have a higher minimum passenger count, + or include battery-electric vehicles, or exclude certain classes of + vehicle or usage. + +As a consequence of the variance in definition across place and time, +Overture gives only general definitions for travel modes, leaving +precise definition to those applications that require them. + +### When is a travel mode recognized? + +A travel mode is recognized by the Overture transportation schema when +it becomes part of the [`mode`](https://github.com/OvertureMaps/schema/blob/5f82f1d6a916031cb32730e1fac7e1a353f10c60/schema/transportation/segment.yaml#L103) +enumeration. This enumeration in early versions of the schema was relatively small and contained only travel modes that are generally-applicable both across jurisdictions and over time. As development of the schema has progressed, this list has grown and will to continue to expand as the world changes and new information arises. + +Our criteria for recognizing a proposed new travel mode are: + +- the proposed new travel mode should represent a generally-accepted + concept meaning that the concept exists in many places with roughly + the same definition. +- the proposed new travel mode should be referred to with well-known + sign iconography or sign text in those jurisdictions where the + concept exists; and this iconography or sign text is preferably + somewhat consistent across many jurisdictions and over time. +- it must be possible to give a relatively precise definition to the + proposed new travel mode and explain how it differs from, or + *intersects* with, other similar travel modes which are already + recognized in the Overture schema. +- the proposed new travel mode should preferably not be trivially + expressible using another existing [scoping property](/schema/concepts/scoping-rules#scoped-values-and-scoping-properties).(*An example of such a trivially-expressible concept might be a three-axle vehicle which is more appropriately phrased as `vehicle: [{dimension: axle_count, comparison: equal_to, value: 3}]`.*) +- the proposed new travel mode must be supported by existing data in at + least one of Overture's upstream data sources. + +There is a risk that the above-described approach will be too slow to +adapt to our users' needs in a vast, ever-changing world. One possible +avenue to mitigate this risk is supporting [custom extensions](#should-we-support-extension-travel-modes) to the built-in list of recognized travel modes. + +## Travel mode schema + +### Scoping to travel modes + +Travel modes can be used to change the scope of scoped and rule-based +properties within the schema. For example, they can affect the scope of access restrictions, turn restrictions, or speed limits on [road](/schema/concepts/by-theme/transportation/roads) segments. Since travel modes are expressed via scoping properties, we recommend you read the section on [scoped and rule-based properties](/schema/concepts/scoping-rules) before proceeding further. + +#### Travel mode scoping: `mode` + +The scoping property `mode` controls whether a given scoped property +applies when a given travel mode is being used for traveling along a +road segment. + +If `mode` is provided, it must be a non-empty array of string values +identifying travel modes, and is interpreted as a set. Values must be +unique, but order is not important. + +#### Vehicle attribute scoping: `vehicle` + +Because travel modes are an fuzzy concept, there are inevitably areas +of overlap between with the more precise, but more limited, `vehicle` +scoping property which is used for [vehicle attributes scoping](/schema/concepts/scoping-rules#vehicle-attributes-scoping). Where there is potential overlap, the method of scoping used in Overture data releases will depend on how the upstream data source has expressed the equivalent concept. Where there is choice, it is preferable to select the scoping method that most accurately reflects the intention expressed on local signage. + +#### Similar scoping properties: `using` and `recognized` + +The scoping properties `using` and `recognized` express concepts that +are meant to be orthogonal to (completely separate from) travel modes. + +- The `using` property indicates [purpose of use](/schema/concepts/scoping-rules#purpose-of-use-scoping) scoping, which relates to the purpose for which the person or thing travelling is using a given segment of the transportation network. Travel modes should ideally not embed a purpose of use. +- The `recognized` property indicates [status scoping](/schema/concepts/scoping-rules#status-scoping-membership-in-a-recognized-group), which relates to a recognized status given to the person or thing traveling, where the recognized status is distinct from the mode of travel itself. Travel modes should ideally not embed a status. + +### The travel modes taxonomy + +Travel modes in Overture form a shallow taxonomy. Some travel modes are +more general, while others are more specific, and a more general travel +mode may contain a more specific one. For example, the general travel +mode `vehicle` contains the more specific mode `motor_vehicle`. The +taxonomy supported in our draft schema `v0.8.0` can be visualized in the +diagram below. + +
+ +
+ + + +
+ +
+ +
+ +*The Overture travel modes taxonomy.* + +
+ +
+ +
+ +As many of the above travel modes draw on the body of knowledge +accumulated in relation to OpenStreetMap +[transport mode access restrictions](https://wiki.openstreetmap.org/wiki/Key:access#Transport_mode_restrictions), +Overture Maps would like acknowledge a intellectual debt to the OSM community in +relation to travel modes as well as to other aspects of the transportation schema. + +## Open questions + +This section discusses some open questions we are debating internally with +regard to travel modes. We would love [your feedback](https://github.com/OvertureMaps/schema/discussions) on these questions and any others you may have. + +### Minimum required travel modes + +We're not yet certain on the minimum set of recognized travel modes is +that will make the Overture transportation schema as usable as possible +to as broad an audience as possible. What do you think we are missing? + +### Should we support extension travel modes? + + + +We live in a time of rapid technological and regulatory change in +the transportation space. No matter how quickly we extend the travel modes in the Overture Maps schema it will always be behind the real world with regard to some technologies, customs, or local rules. + +One way to support users working at the cutting edge is to allow custom extensions to +the list of travel modes. If we did this consistently with how extension +properties +work for features, we could, for example, allow travel mode names with +the `ext_*` to be ignored by the schema validation rules. + +### Internal consistency + +In [another section of this documentation](#vehicle-attribute-scoping-vehicle), we alluded to an overlap between the fuzzy concept of travel modes and vehicle attribute +scoping. We're aware of this overlap and view it as limited but inevitable. + +Our intention is to reduce or eliminate the overlap between travel modes and the other [similar scoping properties](#similar-scoping-properties-using-and-recognized) +(`using` and `recognized`). One area where we may have been unsuccessful +is the `emergency` travel mode in the [current taxonomy](#the-travel-modes-taxonomy). +Arguably, `emergency` should be removed from the taxonomy, and an +`as_emergency_responder` should be included in the status values enumeration for the `recognized` property. diff --git a/docs/schema/concepts/cartography.mdx b/docs/schema/concepts/cartography.mdx new file mode 100644 index 000000000..cc8d58f6b --- /dev/null +++ b/docs/schema/concepts/cartography.mdx @@ -0,0 +1,10 @@ +--- +title: Cartography +--- + + + +import yamlLoad from "@site/src/components/yamlLoad" + + +Cartographic properties offer suggestions for displaying Overture features at specific zoom levels and using sort order to properly layer features in a map.. For example, the **land_cover** feature type is offered at two levels of detail for display, designated by `min_zoom` and `max_zoom` in the schema. diff --git a/docs/schema/concepts/index.mdx b/docs/schema/concepts/index.mdx new file mode 100644 index 000000000..3c4b99a98 --- /dev/null +++ b/docs/schema/concepts/index.mdx @@ -0,0 +1,6 @@ +--- +title: Concepts +--- +import DocCardList from '@theme/DocCardList'; + + diff --git a/docs/schema/concepts/names.mdx b/docs/schema/concepts/names.mdx new file mode 100644 index 000000000..9e9e05dd9 --- /dev/null +++ b/docs/schema/concepts/names.mdx @@ -0,0 +1,213 @@ +--- +title: Names +--- + +import yamlLoad from "@site/src/components/yamlLoad" +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Named entities in Overture share a common schema. + +## `primary` +If a feature has a name, expect `names` to have at least one property: `primary`. This will always be populated with the localized name of a feature. + +```yaml +id: 08b2aa845a18afff02009f7c732067c5 +names: + primary: The White House +``` + +## `common` + +Common name variations are translations of a name. + +```yaml +id: 08b2aa845a18afff02009f7c732067c5 +names: + common: + de: Weißes Haus + hi: व्हाइट हाउस + fi: Valkoinen talo + ru: Белый дом + pt: Casa Branca + lt: Baltieji Rūmai + hr: Bijela kuća + fr: Maison Blanche + hu: Fehér Ház + br: Ti Gwenn + si: ධවල මන්දිරය + uk: Білий дім + sk: Biely dom + sv: Vita huset + ko: 백악관 + en: White House + ku: Qesra Spî + it: Casa Bianca + es: Casa Blanca + zh: 白宫 + cs: Bílý dům + ja: ホワイトハウス + fa: کاخ سفید + ro: Casa Albă + nl: Witte Huis + tr: Beyaz Saray +``` + +## `rules` +Additional names variations such as _official_, _alternate_, or _short_ exist as `rules`. + +Rules can also have `side` and `geometric` range scoping. Read more about [scoping rules here](/schema/concepts/scoping-rules). + +```yaml +id: 08b2aa845a18afff02009f7c732067c5 +names: + rules: + - variant: alternate + language: hr + value: Bila kuća + between: null + side: null +``` + +## Languages + +Languages in the Overture Maps schema are identified by [IETF BCP-47 language tags](https://en.wikipedia.org/wiki/IETF_language_tag); the same tag scheme is used for `common` map entries and `language` values in rules. + +We use the following regular expression validate a BCP-47 language tag: + +```sql +(?:(?:[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})+)*$` +``` + +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](https://datatracker.ietf.org/doc/html/rfc5646), but not that they are validly registered tag in [IANA's language subtag registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry). + +In the regular expression, `'(:?'` indicates a non-capturing group, and 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](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) +``` + +## Conversion from OSM + +In general, OpenStreetMap features with multiple names include tags with keys of the form: `(variant_)name(:language-tag)`, for example: + +| Key | Variant | Language Tag | +| --- | ------- | ------------ | +| name | none | none | +| name:el | none | el | +| loc_name | locally recognized | none | +| loc_name:es | locally recognized | es | +| official_name | official | none | + +Many, but not all OSM language tags are valid BCP-47 tags. In a few cases, we convert the tag to the proper BCP-47 tag. + +
+ Possible BCP-47 Conversions +- `ja_kana' -> 'ja-Kana` +- `ja_hira' -> 'ja-Hira` +- `zh_pinyin' -> 'zh-Latn-pinyin` +- `zh_zhuyin' -> 'zh-Bopo` +- `be-tarask' -> 'be-Latn-tarask` +- `nan-POJ' -> 'nan-Latn` +
+ +### Overture Variants + +Overture allows only `common`, `official`, `alternate`, and `short` variants. OSM variants are mapped to these. + +
+ Mapping of OSM Variant to Overture Variant + +| OSM Variant | Overture Variant | +| ----------- | ---------------- | +| none | common | +| official | official | +| short | short | +| loc | alternate | +| int | alternate | +| nat | alternate | +| old | alternate | +| ref | alternate | +| reg | alternate | +| alt | alternate | +| nick | alternate | + +All other variants are ignored. +
+ +Once all valid variants and language tags have been derived from OSM tags, populating +the Overture names field is as follows: + +* `primary` is always the "common" variant with no language tag. (`name=` in OSM). + +* `common` is a map of the common variants where the keys are the BCP47 language tags and the values are their corresponding tag values. There can only be one entry for each language. + +* `rules` is an array of objects that captures all other variants. Each rule structure has the following fields: + + - `language` - a valid BCP-47 language tag + - `variant` - `common`, `official`, `alternate`, or `short` + - `value` - the name + - `between` - Used for linear-referencing of transportation segments. This is always null for non-transportation features. + - `side` - Used when one side of a transportation segment has a name. This is always null for non-transportation features. + +Because `rules` is a list there are no restrictions on the number of variants or +languages. It is possible to have multiple instances of the same variant and +language combination. + +### Example +The [New York City label node](https://www.openstreetmap.org/node/61785451) includes the following name tags: +name tags: +``` +name=New York +name:br=Evrog Nevez +name:el=Νέα Υόρκη +name:es=Nueva York +name:be-tarask=Нью-Ёрк +old_name:es=Nueva Ámsterdam +loc_name=Big Apple +loc_name:es=La Gran Manzana +official_name=City of New York +... +``` + +The `names` property in Overture includes: + +```json +{ + primary: "New York", + common: { + "br": "Evrog Nevez", + "el": "Νέα Υόρκη", + "es": "Nueva York", + "be-Latn-tarask": "Нью-Ёрк" + }, + rules: [ + { + "value": "City of New York", + "variant": "official", + "language": null, + }, + { + "value": "Nueva Ámsterdam", + "variant": "alternate", + "language": "es", + }, + { + "value": "Big Apple", + "variant": "alternate", + "language": null, + }, + { + "value": "La Gran Manzana", + "variant": "alternate", + "language": "es", + }, + ] +} +``` + +Note that `between` and `side` are always null in this example because it does not apply to a transportation feature. diff --git a/docs/schema/concepts/scoping-rules.mdx b/docs/schema/concepts/scoping-rules.mdx new file mode 100644 index 000000000..57bbc714c --- /dev/null +++ b/docs/schema/concepts/scoping-rules.mdx @@ -0,0 +1,253 @@ +--- +title: Scoped and rule-based properties +--- + +import CodeBlock from '@theme/CodeBlock'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ThemedImage from '@theme/ThemedImage'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ExampleGeometricScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/geometric-scoping.yaml'; +import ExampleTemporalScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/temporal-scoping.yaml'; +import ExampleSubjectiveHeadingScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-heading-scoping.yaml' +import ExampleSubjectiveUsagePurposeScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml'; +import ExampleSubjectiveStatusScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-status-scoping.yaml'; +import ExampleSubjectiveVehicleAttributesScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml'; + + +In the real world, many facts and rules affecting entities have only a partial application, meaning they don't apply everywhere, or they don't apply at all times, or to everyone, or to all sets of external conditions. For example, access restrictions on a road segment might not apply to all people or all kinds of vehicles, or they might vary according to the day of the week. + + +The Overture schema uses two related concepts to capture the partial application of facts and rules: scoped values and rule-based properties. + +## Scoped values and scoping properties + +A *scoped* value is a value which only applies within a limited scope. Most scoped values are rules in the rule lists of [rule-based properties](#rules-and-rule-based-properties). However, scoped values also exist outside of rule-based properties. For example, a `destinations` property belonging to a road segment might be geometrically scoped to its position along the road. + +The scope in which a scoped value applies is controlled by one or more special child properties of the value known as *scoping* properties. + +### Geometric scoping (linear referencing) + + + + +The geometric scoping properties `at` and `between` limit the scope of their parent value to a position or range of positions, respectively, along a segment's geometry. When the parent value is a rule object, the rule only matches the position or range of positions specified in the `at` or `between` property. + +The value of the `at` property is a single real number `a` where `0` ≤ `a` +≤ `1`. It represents a discrete position along the segment's geometry. The +value of the `between` property is a pair of numbers `[a, b]` where `0` ≤ +`a` < `b` ≤ `1`. It represents a range of positions along the segment's +geometry. The numbers `a` and `b` are interpreted as percentage displacements +along the parent segment's geometry starting from the start of the segment. +(*The terms "start" and "end" are explained in +[Shape and connectivity](https://docs.overturemaps.org/guides/transportation/shape-connectivity).*) + +So, for example, the scoping property `"at": 0.15` scopes its parent value +to the position on the segment that is displaced 15% of the segment length from +the start. + +
+ +
+ + +
+*The position along the segment geometry described by `"at": 0.15`.* +
+
+
+ +The scoping property `"between": [0.35, 0.75]` scopes its parent value to the range of positions on the segment beginning at 35% and extending to 75% of the segment length from the start. + +
+ +
+ *The range on the segment geometry described by `"between": [0.35, 0.75]`.* +
+
+
+ + + The example below shows a road segment whose speed limit is defined by two geometrically-scoped speed limit rules: + { ExampleGeometricScoping } + +
+ +### Temporal scoping (opening hours) + + + + +The temporal, or time-based, scoping construct `when: { during: "..." }` limits the scope of its parent value to one or more recurring time ranges. +When the parent value is a rule object, the rule only matches the time range or time ranges specified in the `during` property. + +The `during` property must contain a string expressed in the OpenStreetMap +[opening hours specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification). + + + + +The example below shows a road segment with a temporally-scoped access restriction rule. The rule states that non-bus travellers are prohibited from access to the segment on weekdays between 3PM and 6PM. + +{ ExampleTemporalScoping } + + + + + + +### Subjective scoping + +Subjective scoping means that the scope of a property can be constrained based on subjective factors like *who* or *what* is travelling on the transportation network, or *how* they are doing it. + +The Overture transportation schema supports several subjective factors. The sub-headings below explain each of these subjective factors in greater detail. + +#### Travel-mode scoping + +A travel mode is a way of moving about the transportation network, for example driving in a motor vehicle, or, more specifically, driving in a high-occupancy vehicle. + +The property construct `when: { mode: [...] }` limits the scope its parent value to apply only to people or things travelling using the listed travel modes. + +To dive deeper into this topic, see the page on [travel modes](https://docs.overturemaps.org/guides/transportation/travel-modes). + +#### Heading + + + + +Heading scoping limits the the scope of a parent value to apply only when the traveller is proceeding along the segment geometry in the named direction, either `forward` or `backward`. +(*The directions `forward` and `backward` are defined on the [shape and connectivity](https://docs.overturemaps.org/guides/transportation/shape-connectivity) page.*) + +The property construct `when: { heading: forward|backward }` applies heading scoping to a parent value. + + + + + +The example below shows a road segment with multiple heading-scoped access restriction rules. The rules allow all standard travel modes for the segment class to travel in the forward direction, but only allow buses to travel in the backward direction. + +{ ExampleSubjectiveHeadingScoping } + + + + +#### Purpose of use scoping + + + + +Usage purpose scoping limits the scope of a parent value to apply only when the user is using the feature for one of the listed purposes. +This type of scoping is common when it matters that a person is in the process of doing something like making a delivery or acting as the customer of a business. + +The property construct `when: { using: [...] }` applies usage purpose scoping to a parent value. + + + + +The example below shows a road segment representing a hotel driveway where through traffic is not permitted (only usage by hotel customers or as a final destination is allowed): + + { ExampleSubjectiveUsagePurposeScoping } + + + + +#### Status scoping (membership in a recognized group) + + + + +Status scoping limits the scope of a parent value to apply only when the user has a certain recognized status or is a member of a recognized +group. +This type of scoping is useful when it matters whether a person or thing has a recognized characteristic, such as holding a permit or being an employee of a business or student at an academic institution. + +The property construct `when: { recognized: [...] }` applies status scoping to a parent value. + + + + +The example below shows a road segment modeling a private condominium tower driveway where access is denied to the general public, but allowed to privately-authorized individuals, such as condo unit owners: + +{ ExampleSubjectiveStatusScoping } + + + + +### Vehicle attributes scoping + + + + +Vehicle attribute scoping limits the scope of a parent value to apply only when the vehicle in use meets certain criteria. + +The property construct `when: { vehicle: [{ dimension: ..., comparison: ..., value: ... }] }` applies vehicle attributes scoping to a parent value. + +Note that vehicle attribute scoping can overlap to some degree with [travel mode scoping](#travel-mode-scoping). +For example, some access rules may be scoped to the travel mode "heavy goods vehicle", while another equivalent access rule could be scoped to the vehicle attribute "gross vehicle weight". + + + + +{ ExampleSubjectiveVehicleAttributesScoping } + + + + + + + +## Rules and rule-based properties + +A *rule-based* property is a property whose value in a given situation is determined by evaluating a list of rules against the facts applicable to that situation. +Each individual rule in the list of rules is itself a scoped value, a scoped value, and the assessment of which rule applies to a given set of facts is done by the rule evaluation algorithm. + +### Absolute form + +There are cases when specifying a property value using rules makes sense, and +cases where doing so is unnecessarily complicated because the real-world entity +being modeled has a single unchanging state which is the same in all fact +situations. In these cases, most rule-based properties support a simpler +absolute form without a list of rules. + +### Rule evaluation algorithm + +Given a rule-based property, the actual value of the property in a given fact +pattern is determined by a three-step process: first, all matching rules are +identified; second, the single determining rule is chosen if possible; lastly, +if there is no applicable rule, an appropriate default value may be assumed. + +1. **Matching rules.** For a given rule and a given set of facts, the rule + *matches* the facts if the scope of the rule contains all the facts, *i.e.* + the facts fit within all of the scoping properties expressed in the rule. The + matching criteria for a rule can be thought of as the logical AND of all the + scoping properties expressed in the rule. +2. **Determining rule.** For a given rule-based property and a given set of + facts, *at most* one rule can *determine* the property value. If only one + rule matches, that rules determines the property value. If more than one rule + matches, the last matching rule in the list determines the value. (This is + similar to how OpenStreetMap [conditional restrictions](https://wiki.openstreetmap.org/wiki/Conditional_restrictions) + evaluated.) Therefore it is important to write more general rules before more + specific ones in a rule list. +3. **Fallback to default.** If there are no matching rules, an appropriate + default value may apply, depending on the property being evaluated. + diff --git a/docs/schema/reference/addresses/address.md b/docs/schema/reference/addresses/address.md new file mode 100644 index 000000000..21ae99830 --- /dev/null +++ b/docs/schema/reference/addresses/address.md @@ -0,0 +1,12 @@ + + +# 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. diff --git a/docs/schema/reference/base/Bathymetry.md b/docs/schema/reference/base/Bathymetry.md new file mode 100644 index 000000000..dc9207954 --- /dev/null +++ b/docs/schema/reference/base/Bathymetry.md @@ -0,0 +1,27 @@ +# Bathymetry + +Topographic representation of an underwater area, such as a part of the ocean +floor. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `cartography` | [`CartographicHints`](TK) (optional) | | +| `cartography.prominence` | `integer` (optional) | | +| `cartography.min_zoom` | `integer` (optional) | | +| `cartography.max_zoom` | `integer` (optional) | | +| `cartography.sort_key` | `integer` (optional) | | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Geometry (Polygon or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | | diff --git a/docs/schema/reference/base/Infrastructure.md b/docs/schema/reference/base/Infrastructure.md new file mode 100644 index 000000000..d1e09a582 --- /dev/null +++ b/docs/schema/reference/base/Infrastructure.md @@ -0,0 +1,40 @@ +# 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` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`InfrastructureClass`](TK) | | +| `subtype` | [`InfrastructureSubtype`](TK) | | +| `height` | `float64` (optional) | | +| `surface` | [`SurfaceMaterial`](TK) (optional) | | diff --git a/docs/schema/reference/base/land.md b/docs/schema/reference/base/land.md new file mode 100644 index 000000000..ecd2b55d8 --- /dev/null +++ b/docs/schema/reference/base/land.md @@ -0,0 +1,41 @@ +# 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` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`LandClass`](TK) (optional) | Default: `` | +| `subtype` | [`LandSubtype`](TK) (optional) | Default: `` | +| `elevation` | `int32` (optional) | | +| `surface` | [`SurfaceMaterial`](TK) (optional) | | diff --git a/docs/schema/reference/base/land_cover.md b/docs/schema/reference/base/land_cover.md new file mode 100644 index 000000000..76e782fb2 --- /dev/null +++ b/docs/schema/reference/base/land_cover.md @@ -0,0 +1,26 @@ +# LandCover + +Representation of the Earth's natural surfaces. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `cartography` | [`CartographicHints`](TK) (optional) | | +| `cartography.prominence` | `integer` (optional) | | +| `cartography.min_zoom` | `integer` (optional) | | +| `cartography.max_zoom` | `integer` (optional) | | +| `cartography.sort_key` | `integer` (optional) | | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Geometry (Polygon or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`LandCoverSubtype`](TK) | | diff --git a/docs/schema/reference/base/land_use.md b/docs/schema/reference/base/land_use.md new file mode 100644 index 000000000..caa1b883f --- /dev/null +++ b/docs/schema/reference/base/land_use.md @@ -0,0 +1,39 @@ +# LandUse + +Land use features from OpenStreetMap. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `source_tags` | `record` (optional) | | +| `wikidata` | `string` (optional) | | +| `level` | `int32` (optional) | | +| `names` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Classifications of the human use of a section of land. Translates `landuse` from OpenStreetMap tag from OpenStreetMap. | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`LandUseClass`](TK) | | +| `subtype` | [`LandUseSubtype`](TK) | | +| `elevation` | `int32` (optional) | | +| `surface` | [`SurfaceMaterial`](TK) (optional) | | diff --git a/docs/schema/reference/base/water.mdx b/docs/schema/reference/base/water.mdx new file mode 100644 index 000000000..61f3710bd --- /dev/null +++ b/docs/schema/reference/base/water.mdx @@ -0,0 +1,41 @@ +# 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` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `level` | `int32` (optional) | | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`WaterClass`](TK) (optional) | Default: `` | +| `subtype` | [`WaterSubtype`](TK) (optional) | Default: `` | +| `is_intermittent` | `boolean` (optional) | Is it intermittent water or not | +| `is_salt` | `boolean` (optional) | Is it salt water or not | diff --git a/docs/schema/reference/buildings/building.md b/docs/schema/reference/buildings/building.md new file mode 100644 index 000000000..d13d6a22f --- /dev/null +++ b/docs/schema/reference/buildings/building.md @@ -0,0 +1,53 @@ +# 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` | [`FacadeMaterial`](TK) (optional) | The outer surface material of building facade. | +| `roof_material` | [`RoofMaterial`](TK) (optional) | The outermost material of the roof. | +| `roof_shape` | [`RoofShape`](TK) (optional) | The shape of the roof | +| `roof_direction` | `float64` (optional) | Bearing of the roof ridge line in degrees. | +| `roof_orientation` | [`RoofOrientation`](TK) (optional) | Orientation of the roof shape relative to the footprint shape. Either "along" or "across". | +| `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` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | The building's footprint or roofprint (if traced from aerial/satellite imagery). | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`Subtype`](TK) (optional) | | +| `class` | [`BuildingClass`](TK) (optional) | | +| `has_parts` | `boolean` (optional) | Flag indicating whether the building has parts | diff --git a/docs/schema/reference/buildings/building_part.md b/docs/schema/reference/buildings/building_part.md new file mode 100644 index 000000000..dba8b7d85 --- /dev/null +++ b/docs/schema/reference/buildings/building_part.md @@ -0,0 +1,51 @@ +# 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` | [`FacadeMaterial`](TK) (optional) | The outer surface material of building facade. | +| `roof_material` | [`RoofMaterial`](TK) (optional) | The outermost material of the roof. | +| `roof_shape` | [`RoofShape`](TK) (optional) | The shape of the roof | +| `roof_direction` | `float64` (optional) | Bearing of the roof ridge line in degrees. | +| `roof_orientation` | [`RoofOrientation`](TK) (optional) | Orientation of the roof shape relative to the footprint shape. Either "along" or "across". | +| `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` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | The part's geometry. | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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 | diff --git a/docs/schema/reference/divisions/division.md b/docs/schema/reference/divisions/division.md new file mode 100644 index 000000000..f7c87f675 --- /dev/null +++ b/docs/schema/reference/divisions/division.md @@ -0,0 +1,105 @@ +# 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` | [`CartographicHints`](#) (optional) | | +| `cartography.prominence` | `integer` (optional) | | +| `cartography.min_zoom` | `integer` (optional) | | +| `cartography.max_zoom` | `integer` (optional) | | +| `cartography.sort_key` | `integer` (optional) | | +| `names` | [`Names`](#) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](#)`>` (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` | [`Side`](#) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](#) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](#) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](#) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Approximate location of a position commonly associated with the real-world entity modeled by the division feature. | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](#)`>` (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` | [`PlaceType`](#) | | +| `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` | [`PlaceType`](#) | | +| `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` | [`DivisionClass`](#) (optional) | | +| `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` | [`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` | [`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` | [`Side`](#) (optional) | Side of the road on which vehicles drive in the division. | +| `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<`[`CapitalOfDivisionItem`](#)`>` (optional) | Division IDs and subtypes of divisions this division is a capital of. | +| `capital_of_divisions.division_id` | `string` | | +| `capital_of_divisions.subtype` | [`PlaceType`](#) | | +| `wikidata` | `string` (optional) | | diff --git a/docs/schema/reference/divisions/division_area.md b/docs/schema/reference/divisions/division_area.md new file mode 100644 index 000000000..332a029bc --- /dev/null +++ b/docs/schema/reference/divisions/division_area.md @@ -0,0 +1,45 @@ +# 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` | [`Names`](TK) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | The area covered by the division with which this area feature is associated | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`PlaceType`](TK) | | +| `class` | [`AreaClass`](TK) | | +| `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. | diff --git a/docs/schema/reference/divisions/division_boundary.md b/docs/schema/reference/divisions/division_boundary.md new file mode 100644 index 000000000..7bec87c66 --- /dev/null +++ b/docs/schema/reference/divisions/division_boundary.md @@ -0,0 +1,68 @@ +# 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` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Boundary line or lines | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](#)`>` (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` | [`PlaceType`](#) | | +| `class` | [`BoundaryClass`](#) | | +| `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` | [`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` | [`PerspectiveMode`](#) | Whether the perspective holder accepts or disputes this name. | +| `perspectives.countries` | `list` | Countries holding the given mode of perspective. | diff --git a/docs/schema/reference/index.mdx b/docs/schema/reference/index.mdx new file mode 100644 index 000000000..96d697b53 --- /dev/null +++ b/docs/schema/reference/index.mdx @@ -0,0 +1,13 @@ +--- +title: Reference +slug: /schema/reference +--- + +This section includes the schema reference documentation for Overture's themes: addresses, base, buildings, divisions, places, and transportation. For guides to working with Overture data, including hand-on examples, head over to [docs.overturemaps.org](https://docs.overturemaps.org/guides). + + + + +import DocCardList from '@theme/DocCardList'; + + diff --git a/docs/schema/reference/places/place.md b/docs/schema/reference/places/place.md new file mode 100644 index 000000000..c925b2d2e --- /dev/null +++ b/docs/schema/reference/places/place.md @@ -0,0 +1,51 @@ +# 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` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Position of the place | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`Categories`](TK) (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` | [`Brand`](TK) (optional) | | +| `brand.names` | [`Names`](TK) (optional) | | +| `brand.wikidata` | `string` (optional) | | +| `addresses` | `list<`[`Address`](TK)`>` (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) | | diff --git a/docs/schema/reference/transportation/connector.md b/docs/schema/reference/transportation/connector.md new file mode 100644 index 000000000..f6f4c813c --- /dev/null +++ b/docs/schema/reference/transportation/connector.md @@ -0,0 +1,22 @@ +# Connector + +Connectors create physical connections between segments. + +Connectors are compatible with GeoJSON Point features. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `id` | `string` | | +| `theme` | `Literal` | | +| `type` | `Literal` | | +| `geometry` | `geometry` | Position of the connector | +| `version` | `int32` | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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) | | diff --git a/docs/schema/reference/transportation/segment.md b/docs/schema/reference/transportation/segment.md new file mode 100644 index 000000000..aa155a096 --- /dev/null +++ b/docs/schema/reference/transportation/segment.md @@ -0,0 +1,123 @@ +# Segment + +Transportation segment model representing linear travel infrastructure. + +Encompasses road, rail, and water transportation segments. Models linear features that enable +movement of people, goods, and vehicles through structured networks. Each segment type provides +specialized attributes for its respective transportation mode. + +Supports routing, mapping, navigation, and transportation network analysis through rich geometric +and attribute data. + + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `subtype` | `string` | Discriminator field that determines the variant type. Values: road, rail, water | +| `names` | [`Names`](TK) (optional) | | +| `names.primary` | `string` | The most commonly used name. | +| `names.common` | `object` (optional) | | +| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | +| `names.rules[].between` | `list` (optional) | | +| `names.rules[].value` | `string` | | +| `names.rules[].variant` | [`NameVariant`](TK) | | +| `names.rules[].language` | `string` (optional) | | +| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | +| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | +| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | +| `id` | `string` (optional) | | +| `theme` | `Literal` (optional) | | +| `type` | `Literal` (optional) | | +| `geometry` | `geometry` (optional) | Segment centerline | +| `version` | `int32` (optional) | | +| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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) | | +| `access_restrictions` | `list<`[`AccessRestrictionRule`](TK)`>` (optional) | | +| `access_restrictions.between` | `list` (optional) | | +| `access_restrictions.access_type` | [`AccessType`](TK) | | +| `access_restrictions.when` | [`AccessRestrictionWhenClause`](TK) (optional) | | +| `access_restrictions.when.vehicle` | `list<`[`VehicleScopeRule`](TK)`>` (optional) | Vehicle attributes for which the rule applies | +| `access_restrictions.when.vehicle.dimension` | [`VehicleDimension`](TK) | | +| `access_restrictions.when.vehicle.comparison` | [`VehicleComparison`](TK) | | +| `access_restrictions.when.vehicle.value` | `float64` | | +| `access_restrictions.when.vehicle.unit` | [`LengthUnit`](TK) | [`WeightUnit`](TK) | | +| `access_restrictions.when.mode` | `list<`[`TravelMode`](TK)`>` (optional) | Travel mode(s) to which the rule applies | +| `access_restrictions.when.recognized` | `list<`[`RecognizedStatus`](TK)`>` (optional) | | +| `access_restrictions.when.using` | `list<`[`PurposeOfUse`](TK)`>` (optional) | | +| `access_restrictions.when.heading` | [`Heading`](TK) (optional) | | +| `access_restrictions.when.during` | `string` (optional) | | +| `connectors` | `list<`[`ConnectorReference`](TK)`>` (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<`[`LevelRule`](TK)`>` (optional) | | +| `level_rules.between` | `list` (optional) | | +| `level_rules.value` | `int32` | | +| `routes` | `list<`[`RouteReference`](TK)`>` (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<`[`SubclassRule`](TK)`>` (optional) | | +| `subclass_rules.between` | `list` (optional) | | +| `subclass_rules.value` | [`Subclass`](TK) | | +| `class` | [`RoadClass`](TK) (optional) | | +| `destinations` | `list<`[`DestinationRule`](TK)`>` (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` | [`Heading`](TK) | Direction of travel on the segment identified by 'to_segment_id' that leads to the destination. | +| `destinations.labels` | `list<`[`DestinationLabels`](TK)`>` (optional) | Labeled destinations that can be reached by following the segment. | +| `destinations.labels.value` | `string` | Names the object that is reached | +| `destinations.labels.type` | [`DestinationLabelType`](TK) | | +| `destinations.symbols` | `list<`[`DestinationSignSymbol`](TK)`>` (optional) | A collection of symbols or icons present on the sign next to current destination label. | +| `destinations.when` | [`DestinationWhenClause`](TK) (optional) | | +| `destinations.when.heading` | [`Heading`](TK) (optional) | | +| `prohibited_transitions` | `list<`[`ProhibitedTransitionRule`](TK)`>` (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` | [`Heading`](TK) | Direction of travel that is prohibited on the destination segment of the sequence. | +| `prohibited_transitions.when` | [`ProhibitedTransitionWhenClause`](TK) (optional) | | +| `prohibited_transitions.when.vehicle` | `list<`[`VehicleScopeRule`](TK)`>` (optional) | Vehicle attributes for which the rule applies | +| `prohibited_transitions.when.mode` | `list<`[`TravelMode`](TK)`>` (optional) | Travel mode(s) to which the rule applies | +| `prohibited_transitions.when.recognized` | `list<`[`RecognizedStatus`](TK)`>` (optional) | | +| `prohibited_transitions.when.using` | `list<`[`PurposeOfUse`](TK)`>` (optional) | | +| `prohibited_transitions.when.during` | `string` (optional) | | +| `prohibited_transitions.when.heading` | [`Heading`](TK) (optional) | | +| `road_flags` | `list<`[`RoadFlagRule`](TK)`>` (optional) | | +| `road_flags.between` | `list` (optional) | | +| `road_flags.values` | `list` | | +| `road_surface` | `list<`[`SurfaceRule`](TK)`>` (optional) | | +| `road_surface.between` | `list` (optional) | | +| `road_surface.value` | [`RoadSurface`](TK) | | +| `speed_limits` | `list<`[`SpeedLimitRule`](TK)`>` (optional) | | +| `speed_limits.between` | `list` (optional) | | +| `speed_limits.max_speed` | [`Speed`](TK) (optional) | | +| `speed_limits.max_speed.value` | `int32` | | +| `speed_limits.max_speed.unit` | [`SpeedUnit`](TK) | | +| `speed_limits.min_speed` | [`Speed`](TK) (optional) | | +| `speed_limits.is_max_speed_variable` | `boolean` (optional) | Indicates a variable speed corridor Default: `False` | +| `speed_limits.when` | [`SpeedLimitWhenClause`](TK) (optional) | | +| `speed_limits.when.vehicle` | `list<`[`VehicleScopeRule`](TK)`>` (optional) | Vehicle attributes for which the rule applies | +| `speed_limits.when.mode` | `list<`[`TravelMode`](TK)`>` (optional) | Travel mode(s) to which the rule applies | +| `speed_limits.when.recognized` | `list<`[`RecognizedStatus`](TK)`>` (optional) | | +| `speed_limits.when.using` | `list<`[`PurposeOfUse`](TK)`>` (optional) | | +| `speed_limits.when.heading` | [`Heading`](TK) (optional) | | +| `speed_limits.when.during` | `string` (optional) | | +| `subclass` | [`Subclass`](TK) (optional) | | +| `width_rules` | `list<`[`WidthRule`](TK)`>` (optional) | | +| `width_rules.between` | `list` (optional) | | +| `width_rules.value` | `float64` | | +| `rail_flags` | `list<`[`RailFlagRule`](TK)`>` (optional) | | +| `rail_flags.between` | `list` (optional) | | +| `rail_flags.values` | `list` | | diff --git a/docs/schema/schema.md b/docs/schema/schema.md new file mode 100644 index 000000000..d70e4d69f --- /dev/null +++ b/docs/schema/schema.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, which we describe in detail [here](/schema/concepts/names). + +### 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 [schema concepts](concepts) section of this documentation describes these complexities in detail. + +## 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/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/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, +}; From 6b12f70c661b7c4d8633465825e890c1fd5ec192 Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Sat, 13 Sep 2025 09:00:15 -0700 Subject: [PATCH 2/6] example_2 --- docs/schema/codegen/Names/name_rule.md | 16 ++ docs/schema/codegen/Names/name_variant.md | 10 ++ docs/schema/codegen/Names/names.md | 19 ++ docs/schema/codegen/Names/perspective_mode.md | 8 + docs/schema/codegen/Names/perspectives.md | 10 ++ docs/schema/codegen/Names/side.md | 10 ++ .../codegen/Sources/source_property_item.md | 19 ++ docs/schema/codegen/address.md | 13 ++ .../codegen/addresses/address/address.md | 59 ++++++ .../addresses/address/address_level.md | 14 ++ .../codegen/base/bathymetry/bathymetry.md | 48 +++++ .../base/infrastructure/infrastructure.md | 69 +++++++ .../infrastructure/infrastructure_class.md | 169 ++++++++++++++++++ .../infrastructure/infrastructure_subtype.md | 24 +++ docs/schema/codegen/base/land/land.md | 68 +++++++ docs/schema/codegen/base/land/land_class.md | 48 +++++ docs/schema/codegen/base/land/land_subtype.md | 20 +++ .../codegen/base/land_cover/land_cover.md | 47 +++++ .../base/land_cover/land_cover_subtype.md | 16 ++ docs/schema/codegen/base/land_use/land_use.md | 68 +++++++ .../codegen/base/land_use/land_use_class.md | 115 ++++++++++++ .../codegen/base/land_use/land_use_subtype.md | 30 ++++ docs/schema/codegen/base/surface_material.md | 30 ++++ docs/schema/codegen/base/water/water.md | 69 +++++++ docs/schema/codegen/base/water/water_class.md | 41 +++++ .../codegen/base/water/water_subtype.md | 18 ++ .../codegen/buildings/building/building.md | 88 +++++++++ .../buildings/building/building_class.md | 93 ++++++++++ .../codegen/buildings/building/subtype.md | 22 +++ .../buildings/building_part/building_part.md | 84 +++++++++ .../codegen/buildings/facade_material.md | 17 ++ .../schema/codegen/buildings/roof_material.md | 20 +++ .../codegen/buildings/roof_orientation.md | 10 ++ docs/schema/codegen/buildings/roof_shape.md | 20 +++ docs/schema/codegen/cartographic_hints.md | 12 ++ .../divisions/capital_of_division_item.md | 10 ++ .../codegen/divisions/division/division.md | 111 ++++++++++++ .../codegen/divisions/division/norms.md | 9 + .../divisions/division_area/area_class.md | 8 + .../divisions/division_area/division_area.md | 71 ++++++++ .../division_boundary/boundary_class.md | 8 + .../division_boundary/division_boundary.md | 64 +++++++ .../codegen/divisions/division_class.md | 11 ++ .../codegen/divisions/hierarchy_item.md | 11 ++ docs/schema/codegen/divisions/place_type.md | 19 ++ docs/schema/codegen/places/place/brand.md | 24 +++ .../schema/codegen/places/place/categories.md | 13 ++ docs/schema/codegen/places/place/place.md | 86 +++++++++ .../transportation/access_restriction_rule.md | 22 +++ .../access_restriction_when_clause.md | 21 +++ .../codegen/transportation/access_type.md | 9 + .../transportation/connector/connector.md | 38 ++++ .../transportation/connector_reference.md | 11 ++ .../transportation/destination_label_type.md | 12 ++ .../transportation/destination_labels.md | 10 ++ .../transportation/destination_rule.md | 18 ++ .../transportation/destination_sign_symbol.md | 27 +++ .../transportation/destination_when_clause.md | 12 ++ docs/schema/codegen/transportation/heading.md | 8 + .../codegen/transportation/length_unit.md | 13 ++ .../codegen/transportation/level_rule.md | 11 ++ .../prohibited_transition_rule.md | 25 +++ .../prohibited_transition_when_clause.md | 21 +++ .../codegen/transportation/purpose_of_use.md | 12 ++ .../codegen/transportation/rail_class.md | 14 ++ .../codegen/transportation/rail_flag.md | 16 ++ .../codegen/transportation/rail_flag_rule.md | 10 ++ .../transportation/recognized_status.md | 12 ++ .../codegen/transportation/road_class.md | 23 +++ .../codegen/transportation/road_flag.md | 15 ++ .../codegen/transportation/road_flag_rule.md | 10 ++ .../codegen/transportation/road_surface.md | 13 ++ .../codegen/transportation/route_reference.md | 14 ++ .../transportation/segment/rail_segment.md | 67 +++++++ .../transportation/segment/road_segment.md | 112 ++++++++++++ .../transportation/segment/water_segment.md | 63 +++++++ .../codegen/transportation/sequence_entry.md | 10 ++ docs/schema/codegen/transportation/speed.md | 11 ++ .../transportation/speed_limit_rule.md | 25 +++ .../transportation/speed_limit_when_clause.md | 21 +++ .../codegen/transportation/speed_unit.md | 8 + .../schema/codegen/transportation/subclass.md | 13 ++ .../codegen/transportation/subclass_rule.md | 10 ++ .../codegen/transportation/surface_rule.md | 11 ++ .../codegen/transportation/travel_mode.md | 19 ++ .../transportation/vehicle_comparison.md | 11 ++ .../transportation/vehicle_dimension.md | 11 ++ .../transportation/vehicle_scope_rule.md | 12 ++ .../codegen/transportation/weight_unit.md | 13 ++ .../codegen/transportation/width_rule.md | 11 ++ 90 files changed, 2694 insertions(+) create mode 100644 docs/schema/codegen/Names/name_rule.md create mode 100644 docs/schema/codegen/Names/name_variant.md create mode 100644 docs/schema/codegen/Names/names.md create mode 100644 docs/schema/codegen/Names/perspective_mode.md create mode 100644 docs/schema/codegen/Names/perspectives.md create mode 100644 docs/schema/codegen/Names/side.md create mode 100644 docs/schema/codegen/Sources/source_property_item.md create mode 100644 docs/schema/codegen/address.md create mode 100644 docs/schema/codegen/addresses/address/address.md create mode 100644 docs/schema/codegen/addresses/address/address_level.md create mode 100644 docs/schema/codegen/base/bathymetry/bathymetry.md create mode 100644 docs/schema/codegen/base/infrastructure/infrastructure.md create mode 100644 docs/schema/codegen/base/infrastructure/infrastructure_class.md create mode 100644 docs/schema/codegen/base/infrastructure/infrastructure_subtype.md create mode 100644 docs/schema/codegen/base/land/land.md create mode 100644 docs/schema/codegen/base/land/land_class.md create mode 100644 docs/schema/codegen/base/land/land_subtype.md create mode 100644 docs/schema/codegen/base/land_cover/land_cover.md create mode 100644 docs/schema/codegen/base/land_cover/land_cover_subtype.md create mode 100644 docs/schema/codegen/base/land_use/land_use.md create mode 100644 docs/schema/codegen/base/land_use/land_use_class.md create mode 100644 docs/schema/codegen/base/land_use/land_use_subtype.md create mode 100644 docs/schema/codegen/base/surface_material.md create mode 100644 docs/schema/codegen/base/water/water.md create mode 100644 docs/schema/codegen/base/water/water_class.md create mode 100644 docs/schema/codegen/base/water/water_subtype.md create mode 100644 docs/schema/codegen/buildings/building/building.md create mode 100644 docs/schema/codegen/buildings/building/building_class.md create mode 100644 docs/schema/codegen/buildings/building/subtype.md create mode 100644 docs/schema/codegen/buildings/building_part/building_part.md create mode 100644 docs/schema/codegen/buildings/facade_material.md create mode 100644 docs/schema/codegen/buildings/roof_material.md create mode 100644 docs/schema/codegen/buildings/roof_orientation.md create mode 100644 docs/schema/codegen/buildings/roof_shape.md create mode 100644 docs/schema/codegen/cartographic_hints.md create mode 100644 docs/schema/codegen/divisions/capital_of_division_item.md create mode 100644 docs/schema/codegen/divisions/division/division.md create mode 100644 docs/schema/codegen/divisions/division/norms.md create mode 100644 docs/schema/codegen/divisions/division_area/area_class.md create mode 100644 docs/schema/codegen/divisions/division_area/division_area.md create mode 100644 docs/schema/codegen/divisions/division_boundary/boundary_class.md create mode 100644 docs/schema/codegen/divisions/division_boundary/division_boundary.md create mode 100644 docs/schema/codegen/divisions/division_class.md create mode 100644 docs/schema/codegen/divisions/hierarchy_item.md create mode 100644 docs/schema/codegen/divisions/place_type.md create mode 100644 docs/schema/codegen/places/place/brand.md create mode 100644 docs/schema/codegen/places/place/categories.md create mode 100644 docs/schema/codegen/places/place/place.md create mode 100644 docs/schema/codegen/transportation/access_restriction_rule.md create mode 100644 docs/schema/codegen/transportation/access_restriction_when_clause.md create mode 100644 docs/schema/codegen/transportation/access_type.md create mode 100644 docs/schema/codegen/transportation/connector/connector.md create mode 100644 docs/schema/codegen/transportation/connector_reference.md create mode 100644 docs/schema/codegen/transportation/destination_label_type.md create mode 100644 docs/schema/codegen/transportation/destination_labels.md create mode 100644 docs/schema/codegen/transportation/destination_rule.md create mode 100644 docs/schema/codegen/transportation/destination_sign_symbol.md create mode 100644 docs/schema/codegen/transportation/destination_when_clause.md create mode 100644 docs/schema/codegen/transportation/heading.md create mode 100644 docs/schema/codegen/transportation/length_unit.md create mode 100644 docs/schema/codegen/transportation/level_rule.md create mode 100644 docs/schema/codegen/transportation/prohibited_transition_rule.md create mode 100644 docs/schema/codegen/transportation/prohibited_transition_when_clause.md create mode 100644 docs/schema/codegen/transportation/purpose_of_use.md create mode 100644 docs/schema/codegen/transportation/rail_class.md create mode 100644 docs/schema/codegen/transportation/rail_flag.md create mode 100644 docs/schema/codegen/transportation/rail_flag_rule.md create mode 100644 docs/schema/codegen/transportation/recognized_status.md create mode 100644 docs/schema/codegen/transportation/road_class.md create mode 100644 docs/schema/codegen/transportation/road_flag.md create mode 100644 docs/schema/codegen/transportation/road_flag_rule.md create mode 100644 docs/schema/codegen/transportation/road_surface.md create mode 100644 docs/schema/codegen/transportation/route_reference.md create mode 100644 docs/schema/codegen/transportation/segment/rail_segment.md create mode 100644 docs/schema/codegen/transportation/segment/road_segment.md create mode 100644 docs/schema/codegen/transportation/segment/water_segment.md create mode 100644 docs/schema/codegen/transportation/sequence_entry.md create mode 100644 docs/schema/codegen/transportation/speed.md create mode 100644 docs/schema/codegen/transportation/speed_limit_rule.md create mode 100644 docs/schema/codegen/transportation/speed_limit_when_clause.md create mode 100644 docs/schema/codegen/transportation/speed_unit.md create mode 100644 docs/schema/codegen/transportation/subclass.md create mode 100644 docs/schema/codegen/transportation/subclass_rule.md create mode 100644 docs/schema/codegen/transportation/surface_rule.md create mode 100644 docs/schema/codegen/transportation/travel_mode.md create mode 100644 docs/schema/codegen/transportation/vehicle_comparison.md create mode 100644 docs/schema/codegen/transportation/vehicle_dimension.md create mode 100644 docs/schema/codegen/transportation/vehicle_scope_rule.md create mode 100644 docs/schema/codegen/transportation/weight_unit.md create mode 100644 docs/schema/codegen/transportation/width_rule.md diff --git a/docs/schema/codegen/Names/name_rule.md b/docs/schema/codegen/Names/name_rule.md new file mode 100644 index 000000000..e83a613f6 --- /dev/null +++ b/docs/schema/codegen/Names/name_rule.md @@ -0,0 +1,16 @@ +# NameRule + +Name rule with variant and language specification. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `side` | `string` ([Side](side)) (optional) | Examples: `left`, `right` | +| `between` | `list` (optional) | | +| `value` | `string` | | +| `variant` | `string` ([NameVariant](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/codegen/Names/name_variant.md b/docs/schema/codegen/Names/name_variant.md new file mode 100644 index 000000000..22bc60ed5 --- /dev/null +++ b/docs/schema/codegen/Names/name_variant.md @@ -0,0 +1,10 @@ +# NameVariant + +An enumeration. + +## Values + +- `common` +- `official` +- `alternate` +- `short` diff --git a/docs/schema/codegen/Names/names.md b/docs/schema/codegen/Names/names.md new file mode 100644 index 000000000..aa7976deb --- /dev/null +++ b/docs/schema/codegen/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/codegen/Names/perspective_mode.md b/docs/schema/codegen/Names/perspective_mode.md new file mode 100644 index 000000000..259473873 --- /dev/null +++ b/docs/schema/codegen/Names/perspective_mode.md @@ -0,0 +1,8 @@ +# PerspectiveMode + +Perspective mode for disputed names. + +## Values + +- `accepted_by` +- `disputed_by` diff --git a/docs/schema/codegen/Names/perspectives.md b/docs/schema/codegen/Names/perspectives.md new file mode 100644 index 000000000..088542759 --- /dev/null +++ b/docs/schema/codegen/Names/perspectives.md @@ -0,0 +1,10 @@ +# Perspectives + +Political perspectives container. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `mode` | `string` ([PerspectiveMode](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/codegen/Names/side.md b/docs/schema/codegen/Names/side.md new file mode 100644 index 000000000..f4ed25660 --- /dev/null +++ b/docs/schema/codegen/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/codegen/Sources/source_property_item.md b/docs/schema/codegen/Sources/source_property_item.md new file mode 100644 index 000000000..b0d7338c5 --- /dev/null +++ b/docs/schema/codegen/Sources/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/codegen/address.md b/docs/schema/codegen/address.md new file mode 100644 index 000000000..592281287 --- /dev/null +++ b/docs/schema/codegen/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/codegen/addresses/address/address.md b/docs/schema/codegen/addresses/address/address.md new file mode 100644 index 000000000..a77d75225 --- /dev/null +++ b/docs/schema/codegen/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/codegen/addresses/address/address_level.md b/docs/schema/codegen/addresses/address/address_level.md new file mode 100644 index 000000000..5dd5e3581 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/bathymetry/bathymetry.md b/docs/schema/codegen/base/bathymetry/bathymetry.md new file mode 100644 index 000000000..2051c9827 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/infrastructure/infrastructure.md b/docs/schema/codegen/base/infrastructure/infrastructure.md new file mode 100644 index 000000000..897d6653e --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/infrastructure/infrastructure_class.md b/docs/schema/codegen/base/infrastructure/infrastructure_class.md new file mode 100644 index 000000000..c23fe2f3e --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/infrastructure/infrastructure_subtype.md b/docs/schema/codegen/base/infrastructure/infrastructure_subtype.md new file mode 100644 index 000000000..739cc179a --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land/land.md b/docs/schema/codegen/base/land/land.md new file mode 100644 index 000000000..3c26c5a56 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land/land_class.md b/docs/schema/codegen/base/land/land_class.md new file mode 100644 index 000000000..1c40531c3 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land/land_subtype.md b/docs/schema/codegen/base/land/land_subtype.md new file mode 100644 index 000000000..70868e020 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land_cover/land_cover.md b/docs/schema/codegen/base/land_cover/land_cover.md new file mode 100644 index 000000000..3c2a8b605 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land_cover/land_cover_subtype.md b/docs/schema/codegen/base/land_cover/land_cover_subtype.md new file mode 100644 index 000000000..39591e1eb --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land_use/land_use.md b/docs/schema/codegen/base/land_use/land_use.md new file mode 100644 index 000000000..1cf31b87a --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land_use/land_use_class.md b/docs/schema/codegen/base/land_use/land_use_class.md new file mode 100644 index 000000000..ab87ba6d6 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/land_use/land_use_subtype.md b/docs/schema/codegen/base/land_use/land_use_subtype.md new file mode 100644 index 000000000..c81cf3665 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/surface_material.md b/docs/schema/codegen/base/surface_material.md new file mode 100644 index 000000000..a48df12e1 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/water/water.md b/docs/schema/codegen/base/water/water.md new file mode 100644 index 000000000..a0e041138 --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/water/water_class.md b/docs/schema/codegen/base/water/water_class.md new file mode 100644 index 000000000..9af56817c --- /dev/null +++ b/docs/schema/codegen/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/codegen/base/water/water_subtype.md b/docs/schema/codegen/base/water/water_subtype.md new file mode 100644 index 000000000..42684c99f --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/building/building.md b/docs/schema/codegen/buildings/building/building.md new file mode 100644 index 000000000..357eadc70 --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/building/building_class.md b/docs/schema/codegen/buildings/building/building_class.md new file mode 100644 index 000000000..e48a6ce25 --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/building/subtype.md b/docs/schema/codegen/buildings/building/subtype.md new file mode 100644 index 000000000..6e3c4de18 --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/building_part/building_part.md b/docs/schema/codegen/buildings/building_part/building_part.md new file mode 100644 index 000000000..a4be92408 --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/facade_material.md b/docs/schema/codegen/buildings/facade_material.md new file mode 100644 index 000000000..efcee10ad --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/roof_material.md b/docs/schema/codegen/buildings/roof_material.md new file mode 100644 index 000000000..afb676f86 --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/roof_orientation.md b/docs/schema/codegen/buildings/roof_orientation.md new file mode 100644 index 000000000..dbf261cfa --- /dev/null +++ b/docs/schema/codegen/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/codegen/buildings/roof_shape.md b/docs/schema/codegen/buildings/roof_shape.md new file mode 100644 index 000000000..ac0176a42 --- /dev/null +++ b/docs/schema/codegen/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/codegen/cartographic_hints.md b/docs/schema/codegen/cartographic_hints.md new file mode 100644 index 000000000..1dfc16306 --- /dev/null +++ b/docs/schema/codegen/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/codegen/divisions/capital_of_division_item.md b/docs/schema/codegen/divisions/capital_of_division_item.md new file mode 100644 index 000000000..2f868f141 --- /dev/null +++ b/docs/schema/codegen/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](place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | diff --git a/docs/schema/codegen/divisions/division/division.md b/docs/schema/codegen/divisions/division/division.md new file mode 100644 index 000000000..3606d8f22 --- /dev/null +++ b/docs/schema/codegen/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/codegen/divisions/division/norms.md b/docs/schema/codegen/divisions/division/norms.md new file mode 100644 index 000000000..faebf31e1 --- /dev/null +++ b/docs/schema/codegen/divisions/division/norms.md @@ -0,0 +1,9 @@ +# Norms + +Local norms and standards. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `driving_side` | `string` ([Side](../Names/side)) (optional) | Side of the road on which vehicles drive in the division. Examples: `left`, `right` | diff --git a/docs/schema/codegen/divisions/division_area/area_class.md b/docs/schema/codegen/divisions/division_area/area_class.md new file mode 100644 index 000000000..32640cf3e --- /dev/null +++ b/docs/schema/codegen/divisions/division_area/area_class.md @@ -0,0 +1,8 @@ +# AreaClass + +Area and boundary class designations. + +## Values + +- `land` +- `maritime` diff --git a/docs/schema/codegen/divisions/division_area/division_area.md b/docs/schema/codegen/divisions/division_area/division_area.md new file mode 100644 index 000000000..895ad79a7 --- /dev/null +++ b/docs/schema/codegen/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/codegen/divisions/division_boundary/boundary_class.md b/docs/schema/codegen/divisions/division_boundary/boundary_class.md new file mode 100644 index 000000000..d9792f9f3 --- /dev/null +++ b/docs/schema/codegen/divisions/division_boundary/boundary_class.md @@ -0,0 +1,8 @@ +# BoundaryClass + +An enumeration. + +## Values + +- `land` +- `maritime` diff --git a/docs/schema/codegen/divisions/division_boundary/division_boundary.md b/docs/schema/codegen/divisions/division_boundary/division_boundary.md new file mode 100644 index 000000000..4edc4eccf --- /dev/null +++ b/docs/schema/codegen/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/codegen/divisions/division_class.md b/docs/schema/codegen/divisions/division_class.md new file mode 100644 index 000000000..6975b3d24 --- /dev/null +++ b/docs/schema/codegen/divisions/division_class.md @@ -0,0 +1,11 @@ +# DivisionClass + +Division-specific class designations. + +## Values + +- `megacity` +- `city` +- `town` +- `village` +- `hamlet` diff --git a/docs/schema/codegen/divisions/hierarchy_item.md b/docs/schema/codegen/divisions/hierarchy_item.md new file mode 100644 index 000000000..ceface881 --- /dev/null +++ b/docs/schema/codegen/divisions/hierarchy_item.md @@ -0,0 +1,11 @@ +# HierarchyItem + +One division in a hierarchy. + +## Fields + +| Name | Type | Description | +|-----:|:----:|-------------| +| `division_id` | `string` | | +| `subtype` | `string` ([PlaceType](place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `name` | `string` | Primary name of the division | diff --git a/docs/schema/codegen/divisions/place_type.md b/docs/schema/codegen/divisions/place_type.md new file mode 100644 index 000000000..b8537226d --- /dev/null +++ b/docs/schema/codegen/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/codegen/places/place/brand.md b/docs/schema/codegen/places/place/brand.md new file mode 100644 index 000000000..42c1ffcc0 --- /dev/null +++ b/docs/schema/codegen/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/codegen/places/place/categories.md b/docs/schema/codegen/places/place/categories.md new file mode 100644 index 000000000..21cf70166 --- /dev/null +++ b/docs/schema/codegen/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/codegen/places/place/place.md b/docs/schema/codegen/places/place/place.md new file mode 100644 index 000000000..01db24d6c --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/access_restriction_rule.md b/docs/schema/codegen/transportation/access_restriction_rule.md new file mode 100644 index 000000000..0b985eeb4 --- /dev/null +++ b/docs/schema/codegen/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](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/codegen/transportation/access_restriction_when_clause.md b/docs/schema/codegen/transportation/access_restriction_when_clause.md new file mode 100644 index 000000000..4639c7813 --- /dev/null +++ b/docs/schema/codegen/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](heading)) (optional) | Examples: `forward`, `backward` | +| `during` | `string` (optional) | | diff --git a/docs/schema/codegen/transportation/access_type.md b/docs/schema/codegen/transportation/access_type.md new file mode 100644 index 000000000..a082412f6 --- /dev/null +++ b/docs/schema/codegen/transportation/access_type.md @@ -0,0 +1,9 @@ +# AccessType + +An enumeration. + +## Values + +- `allowed` +- `denied` +- `designated` diff --git a/docs/schema/codegen/transportation/connector/connector.md b/docs/schema/codegen/transportation/connector/connector.md new file mode 100644 index 000000000..289bf8e40 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/connector_reference.md b/docs/schema/codegen/transportation/connector_reference.md new file mode 100644 index 000000000..53c6cbe7b --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/destination_label_type.md b/docs/schema/codegen/transportation/destination_label_type.md new file mode 100644 index 000000000..89fe923c3 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/destination_labels.md b/docs/schema/codegen/transportation/destination_labels.md new file mode 100644 index 000000000..3c39a05a7 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/destination_rule.md b/docs/schema/codegen/transportation/destination_rule.md new file mode 100644 index 000000000..c11c1ecf5 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/destination_sign_symbol.md b/docs/schema/codegen/transportation/destination_sign_symbol.md new file mode 100644 index 000000000..1a35d3290 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/destination_when_clause.md b/docs/schema/codegen/transportation/destination_when_clause.md new file mode 100644 index 000000000..eb6373765 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/heading.md b/docs/schema/codegen/transportation/heading.md new file mode 100644 index 000000000..d665fff8b --- /dev/null +++ b/docs/schema/codegen/transportation/heading.md @@ -0,0 +1,8 @@ +# Heading + +Enumerates possible travel headings along segment geometry. + +## Values + +- `forward` +- `backward` diff --git a/docs/schema/codegen/transportation/length_unit.md b/docs/schema/codegen/transportation/length_unit.md new file mode 100644 index 000000000..8cd4f38be --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/level_rule.md b/docs/schema/codegen/transportation/level_rule.md new file mode 100644 index 000000000..8cc9fcc3e --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/prohibited_transition_rule.md b/docs/schema/codegen/transportation/prohibited_transition_rule.md new file mode 100644 index 000000000..eda7e210b --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/prohibited_transition_when_clause.md b/docs/schema/codegen/transportation/prohibited_transition_when_clause.md new file mode 100644 index 000000000..22a530295 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/purpose_of_use.md b/docs/schema/codegen/transportation/purpose_of_use.md new file mode 100644 index 000000000..befdf60f2 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/rail_class.md b/docs/schema/codegen/transportation/rail_class.md new file mode 100644 index 000000000..fe284a6de --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/rail_flag.md b/docs/schema/codegen/transportation/rail_flag.md new file mode 100644 index 000000000..031d04948 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/rail_flag_rule.md b/docs/schema/codegen/transportation/rail_flag_rule.md new file mode 100644 index 000000000..651a41336 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/recognized_status.md b/docs/schema/codegen/transportation/recognized_status.md new file mode 100644 index 000000000..f2f927f28 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/road_class.md b/docs/schema/codegen/transportation/road_class.md new file mode 100644 index 000000000..c3e409f80 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/road_flag.md b/docs/schema/codegen/transportation/road_flag.md new file mode 100644 index 000000000..1f0a76f4a --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/road_flag_rule.md b/docs/schema/codegen/transportation/road_flag_rule.md new file mode 100644 index 000000000..7d7b3efe2 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/road_surface.md b/docs/schema/codegen/transportation/road_surface.md new file mode 100644 index 000000000..51fa5599d --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/route_reference.md b/docs/schema/codegen/transportation/route_reference.md new file mode 100644 index 000000000..6b8dc2d9b --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/segment/rail_segment.md b/docs/schema/codegen/transportation/segment/rail_segment.md new file mode 100644 index 000000000..dcadc0f01 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/segment/road_segment.md b/docs/schema/codegen/transportation/segment/road_segment.md new file mode 100644 index 000000000..cb0a2404a --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/segment/water_segment.md b/docs/schema/codegen/transportation/segment/water_segment.md new file mode 100644 index 000000000..62bde30e6 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/sequence_entry.md b/docs/schema/codegen/transportation/sequence_entry.md new file mode 100644 index 000000000..6d3a4ea11 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/speed.md b/docs/schema/codegen/transportation/speed.md new file mode 100644 index 000000000..1a2299aa7 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/speed_limit_rule.md b/docs/schema/codegen/transportation/speed_limit_rule.md new file mode 100644 index 000000000..083f319c9 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/speed_limit_when_clause.md b/docs/schema/codegen/transportation/speed_limit_when_clause.md new file mode 100644 index 000000000..99419b3e0 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/speed_unit.md b/docs/schema/codegen/transportation/speed_unit.md new file mode 100644 index 000000000..6e836e0bc --- /dev/null +++ b/docs/schema/codegen/transportation/speed_unit.md @@ -0,0 +1,8 @@ +# SpeedUnit + +Speed unit. + +## Values + +- `mph` +- `km/h` diff --git a/docs/schema/codegen/transportation/subclass.md b/docs/schema/codegen/transportation/subclass.md new file mode 100644 index 000000000..4e9db9c32 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/subclass_rule.md b/docs/schema/codegen/transportation/subclass_rule.md new file mode 100644 index 000000000..7cec1015a --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/surface_rule.md b/docs/schema/codegen/transportation/surface_rule.md new file mode 100644 index 000000000..7bc8672b7 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/travel_mode.md b/docs/schema/codegen/transportation/travel_mode.md new file mode 100644 index 000000000..3a87b8a3d --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/vehicle_comparison.md b/docs/schema/codegen/transportation/vehicle_comparison.md new file mode 100644 index 000000000..4ce54fc36 --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/vehicle_dimension.md b/docs/schema/codegen/transportation/vehicle_dimension.md new file mode 100644 index 000000000..39859bb7e --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/vehicle_scope_rule.md b/docs/schema/codegen/transportation/vehicle_scope_rule.md new file mode 100644 index 000000000..e6119a68b --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/weight_unit.md b/docs/schema/codegen/transportation/weight_unit.md new file mode 100644 index 000000000..9539d459b --- /dev/null +++ b/docs/schema/codegen/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/codegen/transportation/width_rule.md b/docs/schema/codegen/transportation/width_rule.md new file mode 100644 index 000000000..490dff6a3 --- /dev/null +++ b/docs/schema/codegen/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` | | From 2b102b8eef7e904e8e347fb6be16f4f289a5cace Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Sat, 13 Sep 2025 09:03:02 -0700 Subject: [PATCH 3/6] Update docusaurus.config.js --- docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index f7eee1dd8..ed43d2017 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -60,7 +60,7 @@ const config = { locales: ['en'], }, - themes: ["docusaurus-json-schema-plugin"], + themes: [], plugins: [ () => ({ From 5523406fd50a38753fc75415fac6236f618b1e24 Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Sat, 13 Sep 2025 09:09:18 -0700 Subject: [PATCH 4/6] Update docusaurus.config.js --- docusaurus.config.js | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index ed43d2017..4aa6549cb 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -24,17 +24,17 @@ const config = { overtureRelease: '2025-08-20.1', 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), @@ -63,26 +63,22 @@ const config = { themes: [], plugins: [ - () => ({ - name: 'custom-docusaurus-plugin', - configureWebpack() { - return { - module: { - rules: [ - { - test: /\.yaml$/, - use: 'raw-loader' - }, - { - resolve: { - symlinks: false - } - } - ], - }, - }; - }, - }), + // () => ({ + // name: 'custom-docusaurus-plugin', + // configureWebpack() { + // return { + // module: { + // rules: [ + // { + // resolve: { + // symlinks: false + // } + // } + // ], + // }, + // }; + // }, + // }), [ '@docusaurus/plugin-content-pages', { From bd3b41f924537486477318e67adba4448491248c Mon Sep 17 00:00:00 2001 From: Jennings Anderson Date: Sat, 13 Sep 2025 09:09:46 -0700 Subject: [PATCH 5/6] Update docusaurus.config.js --- docusaurus.config.js | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 4aa6549cb..00c15b5c8 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -63,22 +63,6 @@ const config = { themes: [], plugins: [ - // () => ({ - // name: 'custom-docusaurus-plugin', - // configureWebpack() { - // return { - // module: { - // rules: [ - // { - // resolve: { - // symlinks: false - // } - // } - // ], - // }, - // }; - // }, - // }), [ '@docusaurus/plugin-content-pages', { From fb41a19e4dd32f276273d3ea8ba55050398f1304 Mon Sep 17 00:00:00 2001 From: Dana Bauer Date: Mon, 22 Sep 2025 06:47:30 -0400 Subject: [PATCH 6/6] reorg of files --- blog/2024-04-22-beta-release.mdx | 2 +- blog/2024-05-16-land-cover.mdx | 2 +- blog/2024-08-15-preview-august-release.mdx | 4 +- blog/2024-12-18-transportation-to-ga.mdx | 2 +- blog/2024/2024-07-22.0.mdx | 2 +- blog/2024/2024-12-18.0.mdx | 2 +- docs/_examples/addresses/address.yaml | 17 + .../address_all_missing_address_levels.yaml | 17 + .../address_missing_address_level.yaml | 17 + .../addresses/address_postal_city.yaml | 18 + docs/_examples/base/bathymetry-example.yaml | 19 + .../base/infrastructure-example.yaml | 21 + .../base/infrastructure-height-example.yaml | 19 + docs/_examples/base/land-cover-example.yaml | 19 + docs/_examples/base/land-sand-example.yaml | 21 + docs/_examples/base/land-use-example.yaml | 22 + docs/_examples/base/water-body-disputed.yaml | 36 + docs/_examples/base/water-river-example.yaml | 22 + .../base/water-river-with-wikidata.yaml | 21 + docs/_examples/buildings/basic-sources.yaml | 19 + .../buildings/building-multipolygon.yaml | 14 + .../buildings/building-part-basic.yaml | 35 + .../buildings/building-part-name.yaml | 32 + .../_examples/buildings/building-polygon.yaml | 34 + .../buildings/empire-state-building.json | 28 + .../_examples/buildings/names/name-basic.yaml | 16 + .../buildings/names/name-multiple.yaml | 29 + .../buildings/names/name-variations.yaml | 29 + docs/_examples/buildings/osm/outline.yaml | 31 + docs/_examples/buildings/osm/part1.yaml | 29 + docs/_examples/buildings/osm/part2.yaml | 29 + docs/_examples/buildings/time-basic.yaml | 14 + .../buildings/time-precision-seconds.yaml | 14 + .../names-lexically-valid-language-tag.yaml | 27 + .../timestamp/timestamp-leap-second.yaml | 12 + .../common/timestamp/timestamp-utc.yaml | 12 + .../timestamp/timestamp-with-tz-offset.yaml | 10 + .../divisions/division/capital_of.yaml | 29 + docs/_examples/divisions/division/class.yaml | 30 + .../_examples/divisions/division/country.yaml | 21 + .../divisions/division/dependency.yaml | 38 + .../division/hierarchies-multiple.yaml | 43 + .../division/multiple_capital_division.yaml | 30 + .../divisions/division/perspectives.yaml | 29 + .../divisions/division/population.yaml | 31 + .../divisions/division/prominence.yaml | 31 + docs/_examples/divisions/division/region.yaml | 30 + .../divisions/division_area/country_land.yaml | 312 +++ .../division_area/country_maritime.yaml | 88 + .../divisions/division_area/is_land.yaml | 312 +++ .../division_area/is_territorial.yaml | 86 + .../divisions/division_area/region_land.yaml | 82 + .../divisions/division_boundary/disputed.yaml | 19 + .../division_boundary/disputed_both.yaml | 19 + .../divisions/division_boundary/is_land.yaml | 15 + .../division_boundary/is_territorial.yaml | 16 + .../division_boundary/land_county.yaml | 17 + .../division_boundary/land_region.yaml | 16 + .../division_boundary/maritime_country.yaml | 15 + .../places/place-alternate-categories.yaml | 42 + ...ace-no-emails-phones-socials-websites.yaml | 39 + .../places/place-null-categories.yaml | 30 + docs/_examples/places/place.yaml | 47 + docs/_examples/places/place2.yaml | 32 + .../transportation/connector/connector.yaml | 14 + .../segment/missing-update-time.json | 16 + .../segment/rail/rail-freight.yaml | 19 + .../segment/rail/rail-tunnel.yaml | 19 + .../transportation/segment/rail/rail.yaml | 23 + .../road/destinations/road-destinations.yaml | 45 + .../road-restrictions-access.yaml | 67 + ...d-restrictions-prohibited-transitions.yaml | 91 + .../road-restrictions-speed-limits.yaml | 71 + .../segment/road/road-abandoned.yaml | 17 + .../segment/road/road-acesss-restriction.yaml | 36 + .../segment/road/road-alley.yaml | 19 + .../segment/road/road-covered.yaml | 17 + .../segment/road/road-indoors.yaml | 17 + .../segment/road/road-level.yaml | 17 + .../road/road-multiple-connectors.yaml | 21 + .../segment/road/road-oneway-no-lanes.yaml | 21 + .../segment/road/road-path.yaml | 12 + .../segment/road/road-with-lr-name.yaml | 38 + .../segment/road/road-with-lr-sources.yaml | 32 + .../segment/road/road-with-lr-width.yaml | 25 + .../segment/road/road-with-route.yaml | 25 + .../transportation/segment/road/road.yaml | 80 + .../transportation/segment/road/sidewalk.yaml | 22 + docs/_schema/addresses/address.yaml | 102 + docs/_schema/base/bathymetry.yaml | 22 + docs/_schema/base/defs.yaml | 58 + docs/_schema/base/infrastructure.yaml | 217 ++ docs/_schema/base/land.yaml | 93 + docs/_schema/base/land_cover.yaml | 36 + docs/_schema/base/land_use.yaml | 170 ++ docs/_schema/base/water.yaml | 89 + docs/_schema/buildings/building.yaml | 144 ++ docs/_schema/buildings/building_part.yaml | 27 + docs/_schema/buildings/defs.yaml | 122 + docs/_schema/defs.yaml | 401 ++++ docs/_schema/divisions/defs.yaml | 118 + docs/_schema/divisions/division.yaml | 226 ++ docs/_schema/divisions/division_area.yaml | 75 + docs/_schema/divisions/division_boundary.yaml | 135 ++ docs/_schema/places/defs.yaml | 10 + docs/_schema/places/place.yaml | 95 + docs/_schema/schema.yaml | 132 + docs/_schema/transportation/connector.yaml | 21 + docs/_schema/transportation/segment.yaml | 769 ++++++ docs/getting-data/duckdb.mdx | 1 - docs/guides/addresses.mdx | 35 +- docs/guides/base.mdx | 9 +- docs/guides/buildings.mdx | 3 - docs/guides/divisions.mdx | 6 +- docs/guides/places.mdx | 10 +- docs/guides/transportation.mdx | 4 +- docs/schema/codegen/Names/perspectives.md | 10 - .../codegen/divisions/division/norms.md | 9 - .../concepts/by-theme/addresses/index.mdx | 23 - docs/schema/concepts/by-theme/base/index.mdx | 75 - .../by-theme/buildings/3d_buildings.mdx | 55 - .../concepts/by-theme/buildings/index.mdx | 153 -- .../concepts/by-theme/divisions/index.mdx | 20 - docs/schema/concepts/by-theme/index.mdx | 7 - .../schema/concepts/by-theme/places/index.mdx | 68 - .../by-theme/places/overture_categories.csv | 2118 ----------------- .../by-theme/transportation/index.mdx | 83 - .../by-theme/transportation/roads.mdx | 309 --- .../by-theme/transportation/segments.mdx | 120 - .../transportation/shape-connectivity.mdx | 479 ---- .../by-theme/transportation/travel-modes.mdx | 197 -- docs/schema/concepts/cartography.mdx | 10 - docs/schema/concepts/index.mdx | 6 - docs/schema/concepts/names.mdx | 213 -- docs/schema/concepts/scoping-rules.mdx | 253 -- docs/schema/{schema.md => index.md} | 4 +- .../{codegen => reference}/Names/name_rule.md | 4 +- .../Names/name_variant.md | 0 .../{codegen => reference}/Names/names.md | 0 .../Names/perspective_mode.md | 0 docs/schema/reference/Names/perspectives.md | 10 + .../{codegen => reference}/Names/side.md | 0 docs/schema/{codegen => reference}/address.md | 0 docs/schema/reference/addresses/address.md | 12 - .../addresses/address/address.md | 0 .../addresses/address/address_level.md | 0 docs/schema/reference/base/Bathymetry.md | 27 - docs/schema/reference/base/Infrastructure.md | 40 - .../base/bathymetry/bathymetry.md | 0 .../base/infrastructure/infrastructure.md | 8 +- .../infrastructure/infrastructure_class.md | 0 .../infrastructure/infrastructure_subtype.md | 0 docs/schema/reference/base/land.md | 41 - .../{codegen => reference}/base/land/land.md | 8 +- .../base/land/land_class.md | 0 .../base/land/land_subtype.md | 0 docs/schema/reference/base/land_cover.md | 26 - .../base/land_cover/land_cover.md | 0 .../base/land_cover/land_cover_subtype.md | 0 docs/schema/reference/base/land_use.md | 39 - .../base/land_use/land_use.md | 8 +- .../base/land_use/land_use_class.md | 0 .../base/land_use/land_use_subtype.md | 0 .../base/surface_material.md | 0 docs/schema/reference/base/water.mdx | 41 - .../base/water/water.md | 6 +- .../base/water/water_class.md | 0 .../base/water/water_subtype.md | 0 docs/schema/reference/buildings/building.md | 53 - .../buildings/building/building.md | 16 +- .../buildings/building/building_class.md | 0 .../buildings/building/subtype.md | 0 .../reference/buildings/building_part.md | 51 - .../buildings/building_part/building_part.md | 14 +- .../buildings/facade_material.md | 0 .../buildings/roof_material.md | 0 .../buildings/roof_orientation.md | 0 .../buildings/roof_shape.md | 0 .../cartographic_hints.md | 0 .../divisions/capital_of_division_item.md | 2 +- docs/schema/reference/divisions/division.md | 105 - .../divisions/division/division.md | 18 +- .../reference/divisions/division/norms.md | 9 + .../reference/divisions/division_area.md | 45 - .../divisions/division_area/area_class.md | 0 .../divisions/division_area/division_area.md | 2 +- .../reference/divisions/division_boundary.md | 68 - .../division_boundary/boundary_class.md | 0 .../division_boundary/division_boundary.md | 4 +- .../divisions/division_class.md | 0 .../divisions/hierarchy_item.md | 2 +- .../divisions/place_type.md | 0 docs/schema/reference/index.mdx | 13 - docs/schema/reference/places/place.md | 51 - .../places/place/brand.md | 6 +- .../places/place/categories.md | 0 .../places/place/place.md | 6 +- .../source_property_item.md | 0 .../transportation/access_restriction_rule.md | 2 +- .../access_restriction_when_clause.md | 4 +- .../transportation/access_type.md | 0 .../reference/transportation/connector.md | 22 - .../transportation/connector/connector.md | 0 .../transportation/connector_reference.md | 0 .../transportation/destination_label_type.md | 0 .../transportation/destination_labels.md | 0 .../transportation/destination_rule.md | 0 .../transportation/destination_sign_symbol.md | 0 .../transportation/destination_when_clause.md | 0 .../transportation/heading.md | 0 .../transportation/length_unit.md | 0 .../transportation/level_rule.md | 0 .../prohibited_transition_rule.md | 0 .../prohibited_transition_when_clause.md | 0 .../transportation/purpose_of_use.md | 0 .../transportation/rail_class.md | 0 .../transportation/rail_flag.md | 0 .../transportation/rail_flag_rule.md | 0 .../transportation/recognized_status.md | 0 .../transportation/road_class.md | 0 .../transportation/road_flag.md | 0 .../transportation/road_flag_rule.md | 0 .../transportation/road_surface.md | 0 .../transportation/route_reference.md | 0 .../reference/transportation/segment.md | 123 - .../transportation/segment/rail_segment.md | 30 +- .../transportation/segment/road_segment.md | 58 +- .../transportation/segment/water_segment.md | 32 +- .../transportation/sequence_entry.md | 0 .../transportation/speed.md | 0 .../transportation/speed_limit_rule.md | 0 .../transportation/speed_limit_when_clause.md | 0 .../transportation/speed_unit.md | 0 .../transportation/subclass.md | 0 .../transportation/subclass_rule.md | 0 .../transportation/surface_rule.md | 0 .../transportation/travel_mode.md | 0 .../transportation/vehicle_comparison.md | 0 .../transportation/vehicle_dimension.md | 0 .../transportation/vehicle_scope_rule.md | 0 .../transportation/weight_unit.md | 0 .../transportation/width_rule.md | 0 docusaurus.config.js | 4 +- sidebars.js | 287 ++- 244 files changed, 6446 insertions(+), 5153 deletions(-) create mode 100644 docs/_examples/addresses/address.yaml create mode 100644 docs/_examples/addresses/address_all_missing_address_levels.yaml create mode 100644 docs/_examples/addresses/address_missing_address_level.yaml create mode 100644 docs/_examples/addresses/address_postal_city.yaml create mode 100644 docs/_examples/base/bathymetry-example.yaml create mode 100644 docs/_examples/base/infrastructure-example.yaml create mode 100644 docs/_examples/base/infrastructure-height-example.yaml create mode 100644 docs/_examples/base/land-cover-example.yaml create mode 100644 docs/_examples/base/land-sand-example.yaml create mode 100644 docs/_examples/base/land-use-example.yaml create mode 100644 docs/_examples/base/water-body-disputed.yaml create mode 100644 docs/_examples/base/water-river-example.yaml create mode 100644 docs/_examples/base/water-river-with-wikidata.yaml create mode 100644 docs/_examples/buildings/basic-sources.yaml create mode 100644 docs/_examples/buildings/building-multipolygon.yaml create mode 100644 docs/_examples/buildings/building-part-basic.yaml create mode 100644 docs/_examples/buildings/building-part-name.yaml create mode 100644 docs/_examples/buildings/building-polygon.yaml create mode 100644 docs/_examples/buildings/empire-state-building.json create mode 100644 docs/_examples/buildings/names/name-basic.yaml create mode 100644 docs/_examples/buildings/names/name-multiple.yaml create mode 100644 docs/_examples/buildings/names/name-variations.yaml create mode 100644 docs/_examples/buildings/osm/outline.yaml create mode 100644 docs/_examples/buildings/osm/part1.yaml create mode 100644 docs/_examples/buildings/osm/part2.yaml create mode 100644 docs/_examples/buildings/time-basic.yaml create mode 100644 docs/_examples/buildings/time-precision-seconds.yaml create mode 100644 docs/_examples/common/names/names-lexically-valid-language-tag.yaml create mode 100644 docs/_examples/common/timestamp/timestamp-leap-second.yaml create mode 100644 docs/_examples/common/timestamp/timestamp-utc.yaml create mode 100644 docs/_examples/common/timestamp/timestamp-with-tz-offset.yaml create mode 100644 docs/_examples/divisions/division/capital_of.yaml create mode 100644 docs/_examples/divisions/division/class.yaml create mode 100644 docs/_examples/divisions/division/country.yaml create mode 100644 docs/_examples/divisions/division/dependency.yaml create mode 100644 docs/_examples/divisions/division/hierarchies-multiple.yaml create mode 100644 docs/_examples/divisions/division/multiple_capital_division.yaml create mode 100644 docs/_examples/divisions/division/perspectives.yaml create mode 100644 docs/_examples/divisions/division/population.yaml create mode 100644 docs/_examples/divisions/division/prominence.yaml create mode 100644 docs/_examples/divisions/division/region.yaml create mode 100644 docs/_examples/divisions/division_area/country_land.yaml create mode 100644 docs/_examples/divisions/division_area/country_maritime.yaml create mode 100644 docs/_examples/divisions/division_area/is_land.yaml create mode 100644 docs/_examples/divisions/division_area/is_territorial.yaml create mode 100644 docs/_examples/divisions/division_area/region_land.yaml create mode 100644 docs/_examples/divisions/division_boundary/disputed.yaml create mode 100644 docs/_examples/divisions/division_boundary/disputed_both.yaml create mode 100644 docs/_examples/divisions/division_boundary/is_land.yaml create mode 100644 docs/_examples/divisions/division_boundary/is_territorial.yaml create mode 100644 docs/_examples/divisions/division_boundary/land_county.yaml create mode 100644 docs/_examples/divisions/division_boundary/land_region.yaml create mode 100644 docs/_examples/divisions/division_boundary/maritime_country.yaml create mode 100644 docs/_examples/places/place-alternate-categories.yaml create mode 100644 docs/_examples/places/place-no-emails-phones-socials-websites.yaml create mode 100644 docs/_examples/places/place-null-categories.yaml create mode 100644 docs/_examples/places/place.yaml create mode 100644 docs/_examples/places/place2.yaml create mode 100644 docs/_examples/transportation/connector/connector.yaml create mode 100644 docs/_examples/transportation/segment/missing-update-time.json create mode 100644 docs/_examples/transportation/segment/rail/rail-freight.yaml create mode 100644 docs/_examples/transportation/segment/rail/rail-tunnel.yaml create mode 100644 docs/_examples/transportation/segment/rail/rail.yaml create mode 100644 docs/_examples/transportation/segment/road/destinations/road-destinations.yaml create mode 100644 docs/_examples/transportation/segment/road/restrictions/road-restrictions-access.yaml create mode 100644 docs/_examples/transportation/segment/road/restrictions/road-restrictions-prohibited-transitions.yaml create mode 100644 docs/_examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml create mode 100644 docs/_examples/transportation/segment/road/road-abandoned.yaml create mode 100644 docs/_examples/transportation/segment/road/road-acesss-restriction.yaml create mode 100644 docs/_examples/transportation/segment/road/road-alley.yaml create mode 100644 docs/_examples/transportation/segment/road/road-covered.yaml create mode 100644 docs/_examples/transportation/segment/road/road-indoors.yaml create mode 100644 docs/_examples/transportation/segment/road/road-level.yaml create mode 100644 docs/_examples/transportation/segment/road/road-multiple-connectors.yaml create mode 100644 docs/_examples/transportation/segment/road/road-oneway-no-lanes.yaml create mode 100644 docs/_examples/transportation/segment/road/road-path.yaml create mode 100644 docs/_examples/transportation/segment/road/road-with-lr-name.yaml create mode 100644 docs/_examples/transportation/segment/road/road-with-lr-sources.yaml create mode 100644 docs/_examples/transportation/segment/road/road-with-lr-width.yaml create mode 100644 docs/_examples/transportation/segment/road/road-with-route.yaml create mode 100644 docs/_examples/transportation/segment/road/road.yaml create mode 100644 docs/_examples/transportation/segment/road/sidewalk.yaml create mode 100644 docs/_schema/addresses/address.yaml create mode 100644 docs/_schema/base/bathymetry.yaml create mode 100644 docs/_schema/base/defs.yaml create mode 100644 docs/_schema/base/infrastructure.yaml create mode 100644 docs/_schema/base/land.yaml create mode 100644 docs/_schema/base/land_cover.yaml create mode 100644 docs/_schema/base/land_use.yaml create mode 100644 docs/_schema/base/water.yaml create mode 100644 docs/_schema/buildings/building.yaml create mode 100644 docs/_schema/buildings/building_part.yaml create mode 100644 docs/_schema/buildings/defs.yaml create mode 100644 docs/_schema/defs.yaml create mode 100644 docs/_schema/divisions/defs.yaml create mode 100644 docs/_schema/divisions/division.yaml create mode 100644 docs/_schema/divisions/division_area.yaml create mode 100644 docs/_schema/divisions/division_boundary.yaml create mode 100644 docs/_schema/places/defs.yaml create mode 100644 docs/_schema/places/place.yaml create mode 100644 docs/_schema/schema.yaml create mode 100644 docs/_schema/transportation/connector.yaml create mode 100644 docs/_schema/transportation/segment.yaml delete mode 100644 docs/schema/codegen/Names/perspectives.md delete mode 100644 docs/schema/codegen/divisions/division/norms.md delete mode 100644 docs/schema/concepts/by-theme/addresses/index.mdx delete mode 100644 docs/schema/concepts/by-theme/base/index.mdx delete mode 100644 docs/schema/concepts/by-theme/buildings/3d_buildings.mdx delete mode 100644 docs/schema/concepts/by-theme/buildings/index.mdx delete mode 100644 docs/schema/concepts/by-theme/divisions/index.mdx delete mode 100644 docs/schema/concepts/by-theme/index.mdx delete mode 100644 docs/schema/concepts/by-theme/places/index.mdx delete mode 100644 docs/schema/concepts/by-theme/places/overture_categories.csv delete mode 100644 docs/schema/concepts/by-theme/transportation/index.mdx delete mode 100644 docs/schema/concepts/by-theme/transportation/roads.mdx delete mode 100644 docs/schema/concepts/by-theme/transportation/segments.mdx delete mode 100644 docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx delete mode 100644 docs/schema/concepts/by-theme/transportation/travel-modes.mdx delete mode 100644 docs/schema/concepts/cartography.mdx delete mode 100644 docs/schema/concepts/index.mdx delete mode 100644 docs/schema/concepts/names.mdx delete mode 100644 docs/schema/concepts/scoping-rules.mdx rename docs/schema/{schema.md => index.md} (94%) rename docs/schema/{codegen => reference}/Names/name_rule.md (70%) rename docs/schema/{codegen => reference}/Names/name_variant.md (100%) rename docs/schema/{codegen => reference}/Names/names.md (100%) rename docs/schema/{codegen => reference}/Names/perspective_mode.md (100%) create mode 100644 docs/schema/reference/Names/perspectives.md rename docs/schema/{codegen => reference}/Names/side.md (100%) rename docs/schema/{codegen => reference}/address.md (100%) delete mode 100644 docs/schema/reference/addresses/address.md rename docs/schema/{codegen => reference}/addresses/address/address.md (100%) rename docs/schema/{codegen => reference}/addresses/address/address_level.md (100%) delete mode 100644 docs/schema/reference/base/Bathymetry.md delete mode 100644 docs/schema/reference/base/Infrastructure.md rename docs/schema/{codegen => reference}/base/bathymetry/bathymetry.md (100%) rename docs/schema/{codegen => reference}/base/infrastructure/infrastructure.md (86%) rename docs/schema/{codegen => reference}/base/infrastructure/infrastructure_class.md (100%) rename docs/schema/{codegen => reference}/base/infrastructure/infrastructure_subtype.md (100%) delete mode 100644 docs/schema/reference/base/land.md rename docs/schema/{codegen => reference}/base/land/land.md (86%) rename docs/schema/{codegen => reference}/base/land/land_class.md (100%) rename docs/schema/{codegen => reference}/base/land/land_subtype.md (100%) delete mode 100644 docs/schema/reference/base/land_cover.md rename docs/schema/{codegen => reference}/base/land_cover/land_cover.md (100%) rename docs/schema/{codegen => reference}/base/land_cover/land_cover_subtype.md (100%) delete mode 100644 docs/schema/reference/base/land_use.md rename docs/schema/{codegen => reference}/base/land_use/land_use.md (86%) rename docs/schema/{codegen => reference}/base/land_use/land_use_class.md (100%) rename docs/schema/{codegen => reference}/base/land_use/land_use_subtype.md (100%) rename docs/schema/{codegen => reference}/base/surface_material.md (100%) delete mode 100644 docs/schema/reference/base/water.mdx rename docs/schema/{codegen => reference}/base/water/water.md (89%) rename docs/schema/{codegen => reference}/base/water/water_class.md (100%) rename docs/schema/{codegen => reference}/base/water/water_subtype.md (100%) delete mode 100644 docs/schema/reference/buildings/building.md rename docs/schema/{codegen => reference}/buildings/building/building.md (78%) rename docs/schema/{codegen => reference}/buildings/building/building_class.md (100%) rename docs/schema/{codegen => reference}/buildings/building/subtype.md (100%) delete mode 100644 docs/schema/reference/buildings/building_part.md rename docs/schema/{codegen => reference}/buildings/building_part/building_part.md (82%) rename docs/schema/{codegen => reference}/buildings/facade_material.md (100%) rename docs/schema/{codegen => reference}/buildings/roof_material.md (100%) rename docs/schema/{codegen => reference}/buildings/roof_orientation.md (100%) rename docs/schema/{codegen => reference}/buildings/roof_shape.md (100%) rename docs/schema/{codegen => reference}/cartographic_hints.md (100%) rename docs/schema/{codegen => reference}/divisions/capital_of_division_item.md (50%) delete mode 100644 docs/schema/reference/divisions/division.md rename docs/schema/{codegen => reference}/divisions/division/division.md (89%) create mode 100644 docs/schema/reference/divisions/division/norms.md delete mode 100644 docs/schema/reference/divisions/division_area.md rename docs/schema/{codegen => reference}/divisions/division_area/area_class.md (100%) rename docs/schema/{codegen => reference}/divisions/division_area/division_area.md (97%) delete mode 100644 docs/schema/reference/divisions/division_boundary.md rename docs/schema/{codegen => reference}/divisions/division_boundary/boundary_class.md (100%) rename docs/schema/{codegen => reference}/divisions/division_boundary/division_boundary.md (94%) rename docs/schema/{codegen => reference}/divisions/division_class.md (100%) rename docs/schema/{codegen => reference}/divisions/hierarchy_item.md (57%) rename docs/schema/{codegen => reference}/divisions/place_type.md (100%) delete mode 100644 docs/schema/reference/index.mdx delete mode 100644 docs/schema/reference/places/place.md rename docs/schema/{codegen => reference}/places/place/brand.md (76%) rename docs/schema/{codegen => reference}/places/place/categories.md (100%) rename docs/schema/{codegen => reference}/places/place/place.md (92%) rename docs/schema/{codegen/Sources => reference}/source_property_item.md (100%) rename docs/schema/{codegen => reference}/transportation/access_restriction_rule.md (89%) rename docs/schema/{codegen => reference}/transportation/access_restriction_when_clause.md (74%) rename docs/schema/{codegen => reference}/transportation/access_type.md (100%) delete mode 100644 docs/schema/reference/transportation/connector.md rename docs/schema/{codegen => reference}/transportation/connector/connector.md (100%) rename docs/schema/{codegen => reference}/transportation/connector_reference.md (100%) rename docs/schema/{codegen => reference}/transportation/destination_label_type.md (100%) rename docs/schema/{codegen => reference}/transportation/destination_labels.md (100%) rename docs/schema/{codegen => reference}/transportation/destination_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/destination_sign_symbol.md (100%) rename docs/schema/{codegen => reference}/transportation/destination_when_clause.md (100%) rename docs/schema/{codegen => reference}/transportation/heading.md (100%) rename docs/schema/{codegen => reference}/transportation/length_unit.md (100%) rename docs/schema/{codegen => reference}/transportation/level_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/prohibited_transition_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/prohibited_transition_when_clause.md (100%) rename docs/schema/{codegen => reference}/transportation/purpose_of_use.md (100%) rename docs/schema/{codegen => reference}/transportation/rail_class.md (100%) rename docs/schema/{codegen => reference}/transportation/rail_flag.md (100%) rename docs/schema/{codegen => reference}/transportation/rail_flag_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/recognized_status.md (100%) rename docs/schema/{codegen => reference}/transportation/road_class.md (100%) rename docs/schema/{codegen => reference}/transportation/road_flag.md (100%) rename docs/schema/{codegen => reference}/transportation/road_flag_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/road_surface.md (100%) rename docs/schema/{codegen => reference}/transportation/route_reference.md (100%) delete mode 100644 docs/schema/reference/transportation/segment.md rename docs/schema/{codegen => reference}/transportation/segment/rail_segment.md (73%) rename docs/schema/{codegen => reference}/transportation/segment/road_segment.md (72%) rename docs/schema/{codegen => reference}/transportation/segment/water_segment.md (70%) rename docs/schema/{codegen => reference}/transportation/sequence_entry.md (100%) rename docs/schema/{codegen => reference}/transportation/speed.md (100%) rename docs/schema/{codegen => reference}/transportation/speed_limit_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/speed_limit_when_clause.md (100%) rename docs/schema/{codegen => reference}/transportation/speed_unit.md (100%) rename docs/schema/{codegen => reference}/transportation/subclass.md (100%) rename docs/schema/{codegen => reference}/transportation/subclass_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/surface_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/travel_mode.md (100%) rename docs/schema/{codegen => reference}/transportation/vehicle_comparison.md (100%) rename docs/schema/{codegen => reference}/transportation/vehicle_dimension.md (100%) rename docs/schema/{codegen => reference}/transportation/vehicle_scope_rule.md (100%) rename docs/schema/{codegen => reference}/transportation/weight_unit.md (100%) rename docs/schema/{codegen => reference}/transportation/width_rule.md (100%) 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/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 ec680744d..18ca1553d 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 d6334b616..79cba2418 100644 --- a/docs/guides/buildings.mdx +++ b/docs/guides/buildings.mdx @@ -157,7 +157,4 @@ Currently, the Overture buildings dataset is a combination of the following open -## Schema reference -- [Explore the schema reference for the building feature type](/schema/reference/buildings/building). -- [Explore the schema reference for the building part feature type](/schema/reference/buildings/building_part). 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 4ae76278f..87332f2e9 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**. ::: @@ -44,7 +44,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 @@ -58,7 +58,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. | @@ -141,7 +141,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. @@ -173,7 +173,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 f469580f8..2e102cc81 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/codegen/Names/perspectives.md b/docs/schema/codegen/Names/perspectives.md deleted file mode 100644 index 088542759..000000000 --- a/docs/schema/codegen/Names/perspectives.md +++ /dev/null @@ -1,10 +0,0 @@ -# Perspectives - -Political perspectives container. - -## Fields - -| Name | Type | Description | -|-----:|:----:|-------------| -| `mode` | `string` ([PerspectiveMode](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/codegen/divisions/division/norms.md b/docs/schema/codegen/divisions/division/norms.md deleted file mode 100644 index faebf31e1..000000000 --- a/docs/schema/codegen/divisions/division/norms.md +++ /dev/null @@ -1,9 +0,0 @@ -# Norms - -Local norms and standards. - -## Fields - -| Name | Type | Description | -|-----:|:----:|-------------| -| `driving_side` | `string` ([Side](../Names/side)) (optional) | Side of the road on which vehicles drive in the division. Examples: `left`, `right` | diff --git a/docs/schema/concepts/by-theme/addresses/index.mdx b/docs/schema/concepts/by-theme/addresses/index.mdx deleted file mode 100644 index 1d0afe261..000000000 --- a/docs/schema/concepts/by-theme/addresses/index.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Addresses schema concepts -draft: true ---- - -## Overview -The Overture Address theme is a compilation of open address datasets usually -published by local authorized sources. In our initial release, we use the datasets -that are collected and distributed by [OpenAddresses](https://openaddresses.io). - -The initial schema for addresses is fairly simple and is expected to expand into -more complex addressing schemes. - - - -## Feature types -The address theme has a single feature type. -- `address` is a point feature type representing a single address point. - -## Theme concepts - -## Schema reference -- [Explore the schema for the address feature type](/schema/reference/Addresses/address) diff --git a/docs/schema/concepts/by-theme/base/index.mdx b/docs/schema/concepts/by-theme/base/index.mdx deleted file mode 100644 index 3174e49d7..000000000 --- a/docs/schema/concepts/by-theme/base/index.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Base schema concepts -description: everything you need to make a real map of the world ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -import QueryBuilder from '@site/src/components/queryBuilder'; - -import OSMtoOvertureInfrastructure from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/infrastructure.sql'; -import OSMtoOvertureLand from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/land.sql'; -import OSMtoOvertureLandUse from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/land_use.sql'; -import OSMtoOvertureWater from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/water.sql'; - - -## Overview -The Overture base theme includes features desired for rendering a complete basemap. We assign a `subtype` and `class` to each feature and pass relevant properties through in the `source_tags` property. Most of the features in the base theme come from OpenStreetMap via the [Daylight Map Distribution](https://daylightmap.org/). - -## Feature types -The base theme has six feature types. - -- `bathymetry`: topographic representation of underwater areas, e.g. an elevation map of the ocean floor -- `infrastructure`: human-made structures such as bridges, towers, pipelines, and airports -- `land`: natural land features -- `land_cover`: land features derived from satellite imagery, e.g. forest, crop, barren, urban -- `land_use`: human-determined land use categories, e.g. residential, agriculture, protected -- `water`: natural and human-made water features, includes ocean data derived from the [OSM Coastline Tool](https://osmcode.org/osmcoastline/) - -## Theme concepts - -### OpenStreetMap tags to Overture properties -The subtype and class properties of an `infrastructure`, `land`, `land_use`, and `water` feature types in the base theme is determined by the original feature's tags on OpenStreetMap. - -Below is the logic that is currently used to convert from OSM tags into Overture schema. - -:::tip -Have a suggestion or improvement to the logic? Please start a discussion on [Github](https://github.com/OvertureMaps/data/discussions/categories/base) -::: - -
- How do I interpret this query? - - Each `WHEN` line in the `CASE` statement is a condition that defines both the **subtype** and the **class** of a feature. For example: - ```sql - WHEN element_at(tags,'highway') = 'bus_stop' THEN ROW('transit', 'bus_stop') - ``` - - Here, `element_at(tags, 'highway')` is accessing the value of the `highway` tag in OSM. So, when `highway=bus_stop` is present, then the statement returns `ROW(subtype, class)`, in this case, **subtype**=`transit` and **class**=`bus_stop`. - - Since this particular statement is at the top of the list, it will take priority over other tags on the feature. If the same feature was also tagged as an airport gate, those tags would be ignored. -
- - - - - - - - - - - - - - - - - -## Schema reference -- [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 type](/schema/reference/base/land_use) -- [Explore the schema for the water type](/schema/reference/base/water) diff --git a/docs/schema/concepts/by-theme/buildings/3d_buildings.mdx b/docs/schema/concepts/by-theme/buildings/3d_buildings.mdx deleted file mode 100644 index bf01650ce..000000000 --- a/docs/schema/concepts/by-theme/buildings/3d_buildings.mdx +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: 3D Parts ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Creating building parts from OpenStreetMap data - -In Overture, 3D building parts must be associated with specific buildings. This relationship is captured in the schema where the **building**'s attribute `has_parts` is True and each of the **building_part** features has a `building_id` pointing to the `id` of the `building` it belongs to. - -Although OpenStreetMap (OSM) offers a building relation (relations with `type=building`) to help facilitate this association, it is seldom utilized. We therefore perform 2 steps to associate a building_part to a building: - - - - - 1. Identify OSM relations with `type=building` that contain exactly one member with `role=outline` and at least one member with `role=part`. - 2. Ensure the outline is either a way or a multipolygon relation with valid geometry. This is becomes a **building** type with `has_parts=True`. - 3. Assign the `building_id` of the outline to each `role=part` feature, these are of **building_part** type features. - 4. Identify any other **building_part** features that are spatially contained by the building outline and assign the `building_id` to them, even if they are not listed explicitly in the relation's members list. - - - - - 1. Ignore any outlines/parts ways/relations that were assigned in the explicit method. - 2. Identify all ways or `type=multipolygon` relations with a `building` tag not equal to "no" as a **building**. - 3. Identify all ways or `type=multipolygon` relations with a `building:part` tag not equal to "no" as a **building_part**. - 4. Perform a spatial join to find all **building** features (from step 2) that completely contain at least one **building_part** feature (from step 3). - 1. Assign `has_parts=True` to each **building** and add the corresponding `building_id` to each **building_part**. - 5. Omit any parts that are not contained by an outline, as Overture does not allow orphaned parts without a known parent. - - - ---- - -Finally, we eliminate all parts that are the only part associated with a building and share the same geometry as the building. This step helps filter out many OSM buildings tagged with both `building=yes` and `building:part=yes` if no other parts are associated with the building. - -### Considerations - -#### Geometric accuracy -We sometimes apply a small buffer to building geometries to handle discrepancies in how spatial functions interpret containment across different query engines. - -#### Data integrity -We adhere to both Overture and OSM standards to ensure that all our data manipulations and transformations preserve the integrity and accuracy of the original OSM data. - -### Known issues - -#### Dual representation -We interpret a single OSM feature with both a `building` and a `building:part` tag as two separate features in Overture, each with its own unique GERS ID. - -#### Ambiguous height tags -When `type=multipolygon` and `building:part=yes`, it is impossible to determine what the `height` tag refers to. It may refer to the height of the entire building (the highest point of all parts) as stated in the OSM wiki, or in some cases, it refers to the height of the part. It is recommended to either remove the `height` from such features or split the features into a building and a separate part feature and assign the proper height to each. In these cases, Overture will assume the height is the height of the building as stated in the wiki. - -#### Tag ambiguity -When `type=multipolygon` and `building:part=yes`, it is impossible to know whether the characteristic tags refer to the building or the building part. It is recommended to either remove the tags from such features or split the features into a `building` and a separate `building_part` feature and assign the proper tags to each. In these cases, Overture will assume that each tag refers to both. diff --git a/docs/schema/concepts/by-theme/buildings/index.mdx b/docs/schema/concepts/by-theme/buildings/index.mdx deleted file mode 100644 index 94084cc73..000000000 --- a/docs/schema/concepts/by-theme/buildings/index.mdx +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Buildings schema concepts -description: buildings! buildings! buildings! ---- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import QueryBuilder from '@site/src/components/queryBuilder'; -import OSMtoOvertureBuildingClass from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_class.sql'; -import OSMtoOvertureBuildingSubtype from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_subtype.sql'; - -import OSMtoOvertureBuildingFacade from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_facade_material.sql'; -import OSMtoOvertureBuildingRoofMaterial from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_roof_material.sql'; -import OSMtoOvertureBuildingRoofShape from '!!raw-loader!@site/src/queries/partials/osm_conversion_logic/building_roof_shape.sql'; - -## Overview - -The Overture buildings theme captures the compilation of many building attributes from a variety of open data sources including OpenStreetMap, Esri Community Maps, Microsoft, Google, and Zenodo. - -## Feature types - -The buildings theme has two feature types: - -- `building` is a polygon or multipolygon geometry that represents the building's footprint (or roofprint, if traced from imagery). -- `building_part` is a polygon that describes part of a building. These come from the OSM features with the tag `building:part=yes`. - -## Theme concepts - -Both building and building_part types may have many **shape** related properties. These are useful for expressing the physical shape characteristics of the buidling including `roof_height`, `roof_shape`, `roof_material`, `facade_material`, etc. - -### Properties derived from OpenStreetMap tags - -In OpenStreetMap, an object is defined as a building by the presence of `building` tag. Most commonly, the value is simply, `building=yes`. However, in cases where there is a more descriptive value, we capture that information along with other building attributes such as height, roof shape, material, etc. and map them to a finite list of values defined in the building schema. - -You can see the SQL query logic that transforms OSM tags into Overture properties for each of these attributes below: - -
- How do I interpret these queries? - - Each `WHEN` line in the `CASE` statement is a condition that defines the value of the Overture property. For example: - ```sql - WHEN lower(trim(element_at(tags, 'building'))) IN ('clinic','hospital') THEN 'medical' - ``` - Here, `lower(trim(element_at(tags, 'building')))` is accessing the value of the `building` tag in OSM (and ensuring it is lowercase). Therefore, when either the `building=clinic` or `building=hospital` tag is present, the statement returns `medical`. In this case, this defines the **subtype** for a medical building. -
- - - - - - - - - - - - - - - - - - - -### Building heights from OpenStreetMap - -There are multiple ways to describe the height of an object in OSM. Overture, however, defines height as the number of meters from the ground to the tallest point of the feature. Therefore, we must parse and convert from the OSM string value. - -We look for height values in the following OSM tags: - -- `height` - The overall height of a building or building part. -- `est_height` - The estimated height of a building or building part. -- `min_height` - The minimum height of a building part. -- `roof_height` - The height of the roof of a building or building part. - -The OSM wiki specifically lists the following height values as valid: `4`, `4 m`, `1.35`, `7'4"`. However, there are many other formats present in the data that should be considered. - -
- Comprehensive list of different height tag formats in OSM - -As of June 2024: -| Format | Count | -|--------|-------| -| `X`| 16,222,092| -| `X m`| 615,927| -| `X meter`| 212| -| `X metre`| 2| -| `X'`| 142,366| -| `X ft`| 721| -| `X feet`| 7| -| `X'Y"`| 2,432| -| `X"` | 6| - -
- -#### Parsing and conversion - -There are a handful of common formatting issues that we generally allow when parsing height values including leading / trailing white space and incorrectly placed decimal points. We apply the following regular expressions to determine the unit of measurement and then perform the appropriate conversion: - - - - ```sql - ^\s*\d+(\.\d*)?\s*$ - ``` - Height strings that contain only a number value with no indicated units are - assumed to be meters. These values are not rounded. - Examples: - - `10` => 10 - - ` 10 ` => 10 - - `10.0` => 10 - - `10.` => 10 - - `10.6543` => 10.6543 - - - ```sql - ^\s*\d+(\.\d*)?\s*(m|meter|metre)s?\s*$ - ``` - Height strings with a number follwed by a metric unit that matches the singular - or plural version form of `m`, `meter`, and `metre` strings after the number are - also treated as meters and the units are stripped. These values are not rounded. - Examples: - - `10m` => 10 - - ` 10 meters` => 10 - - `10.0 metre ` => 10 - - `10. meter` => 10 - - `10.6543meter` => 10.6543 - - - ``` - ^\s*\d+(\.\d*)?\s*(''|ft|feet)\s*$ - ^\s*\d+(\.\d*)?\s*''\s*\d+(\.\d*)?\s*"\s*$ - ^\s*\d+(\.\d*)?"\s*$ - ``` - Height strings with a number followed by an imperial unit are matched and converted to meters. Strings that are recognized as indicating units of feet are `'`, `ft`, and `feet`. Strings that are recognized as indicating units of inches are `"`. Inches and feet are matched in combination with each other or alone. When both feet and inches are indicated the `'` string must be used to indicate feet and the inches value and `"` string must be after the feet value. These values are then converted into meters by multiplying feet by `0.3048`. Inches are multiplied by `0.0254`. The final meters value is then rounded to two decimal places. - - Examples: - - `10'` => 3.05 - - `10.65 ft` => 3.25 - - `10.65 feet ` => 3.25 - - `10. '` => 3.05 - - ` 10.65feet ` => 3.05 - - `10' 13"` => 3.38 - - `10' 13" ` => 3.38 - - `10'13"` => 3.38 - - `10' 13"` => 3.38 - - `10' 13" ` => 3.38 - - `10'13"` => 3.38 - - - -## Schema reference - -- [Explore the schema for the building feature type](/schema/reference/buildings/building) -- [Explore the schema for the building_part feature type](/schema/reference/buildings/building_part) diff --git a/docs/schema/concepts/by-theme/divisions/index.mdx b/docs/schema/concepts/by-theme/divisions/index.mdx deleted file mode 100644 index 446ec0d8f..000000000 --- a/docs/schema/concepts/by-theme/divisions/index.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Divisions schema concepts -draft: true ---- - -## Overview -The Overture divisions theme includes features that represent human settlements in the real world, such as countries, regions, states, cities and towns. - -## Feature types -The divisions theme has three feature types. -- `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 -- `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 -- `division_boundary` is a feature type that represents a shared border between two division features. It has LineString or MultiLineString geometry. The geometry of a boundary is either wholly non-maritime or wholly maritime. A maritime boundary is the extension of a non-maritime boundary into the water - -## Theme concepts - -## Schema reference -- [Explore the schema for the division feature type](/schema/reference/divisions/division) -- [Explore the schema for the division_area feature type](/schema/reference/divisions/division_area) -- [Explore the schema for the division_boundary feature type](/schema/reference/divisions/division_boundary) diff --git a/docs/schema/concepts/by-theme/index.mdx b/docs/schema/concepts/by-theme/index.mdx deleted file mode 100644 index 22a22f7f4..000000000 --- a/docs/schema/concepts/by-theme/index.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Theme-based ---- - -import DocCardList from '@theme/DocCardList'; - - diff --git a/docs/schema/concepts/by-theme/places/index.mdx b/docs/schema/concepts/by-theme/places/index.mdx deleted file mode 100644 index 5ea8faee4..000000000 --- a/docs/schema/concepts/by-theme/places/index.mdx +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Places schema concepts -description: everything you ever wanted to know about the places schema ---- - -import overture_categories from '!!raw-loader!./overture_categories.csv'; -import CodeBlock from '@theme/CodeBlock'; - -export const PlacesCategories = (args) => { - - var lines = args.places.split('\n'); - lines.shift(); // Remove the first line (the header) - - var categories = {} - - for (const line of lines) { - const parts = line.split(';'); - const category = parts[0].trim(); - if (parts[1] != undefined) { - var hierarchy = parts[1].trim().slice(1, (parts[1].trim().length - 1)).split(','); - if (categories[hierarchy[0]] == undefined){ - categories[hierarchy[0]] = [] - } - if (hierarchy.length>1){ - categories[hierarchy[0]].push(category.padEnd(45, '.') + hierarchy.join(" > ")); - } - } - }; - - var keys = Object.keys(categories).sort() - - return ( -
- {keys.map(cat => { - return( -
{cat} - - {categories[cat].join("\n")} - -
- ) - })} -
- ); -} - - -## Overview - -The Overture places theme includes more than 50M places and points of interest around the world. The data is sourced from Meta and Microsoft. - -## Feature types - -The places theme has one feature type: - -- `place` is a feature with a Point geometry. - -## Theme concepts - -### Categories - -There are more than 2,000 possible category values for Overture Places. Below are the top-level categories, expand each one to see all possible categories and their hierarchies. - - - -## Schema reference - -- [Explore the schema for the place feature type](/schema/reference/places/place) diff --git a/docs/schema/concepts/by-theme/places/overture_categories.csv b/docs/schema/concepts/by-theme/places/overture_categories.csv deleted file mode 100644 index 18cc0325f..000000000 --- a/docs/schema/concepts/by-theme/places/overture_categories.csv +++ /dev/null @@ -1,2118 +0,0 @@ -Category code; Overture Taxonomy -eat_and_drink; [eat_and_drink] -restaurant; [eat_and_drink,restaurant] -afghan_restaurant; [eat_and_drink,restaurant,afghan_restaurant] -african_restaurant; [eat_and_drink,restaurant,african_restaurant] -ethiopian_restaurant; [eat_and_drink,restaurant,african_restaurant,ethiopian_restaurant] -senegalese_restaurant; [eat_and_drink,restaurant,african_restaurant,senegalese_restaurant] -south_african_restaurant; [eat_and_drink,restaurant,african_restaurant,south_african_restaurant] -moroccan_restaurant; [eat_and_drink,restaurant,african_restaurant,moroccan_restaurant] -nigerian_restaurant; [eat_and_drink,restaurant,african_restaurant,nigerian_restaurant] -american_restaurant; [eat_and_drink,restaurant,american_restaurant] -arabian_restaurant; [eat_and_drink,restaurant,arabian_restaurant] -belgian_restaurant; [eat_and_drink,restaurant,belgian_restaurant] -latin_american_restaurant; [eat_and_drink,restaurant,latin_american_restaurant] -argentine_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,argentine_restaurant] -belizean_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,belizean_restaurant] -bolivian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,bolivian_restaurant] -brazilian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,brazilian_restaurant] -chilean_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,chilean_restaurant] -colombian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,colombian_restaurant] -costa_rican_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,costa_rican_restaurant] -cuban_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,cuban_restaurant] -ecuadorian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,ecuadorian_restaurant] -guatemalan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,guatemalan_restaurant] -honduran_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,honduran_restaurant] -mexican_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,mexican_restaurant] -nicaraguan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,nicaraguan_restaurant] -panamanian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,panamanian_restaurant] -paraguayan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,paraguayan_restaurant] -peruvian_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,peruvian_restaurant] -puerto_rican_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,puerto_rican_restaurant] -salvadoran_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,salvadoran_restaurant] -texmex_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,texmex_restaurant] -uruguayan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,uruguayan_restaurant] -venezuelan_restaurant; [eat_and_drink,restaurant,latin_american_restaurant,venezuelan_restaurant] -middle_eastern_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant] -armenian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,armenian_restaurant] -azerbaijani_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,azerbaijani_restaurant] -egyptian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,egyptian_restaurant] -georgian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,georgian_restaurant] -israeli_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,israeli_restaurant] -kofta_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,kofta_restaurant] -kurdish_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,kurdish_restaurant] -lebanese_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,lebanese_restaurant] -persian_iranian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,persian_iranian_restaurant] -syrian_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,syrian_restaurant] -turkish_restaurant; [eat_and_drink,restaurant,middle_eastern_restaurant,turkish_restaurant] -asian_restaurant; [eat_and_drink,restaurant,asian_restaurant] -asian_fusion_restaurant; [eat_and_drink,restaurant,asian_restaurant,asian_fusion_restaurant] -pan_asian_restaurant; [eat_and_drink,restaurant,asian_restaurant,pan_asian_restaurant] -burmese_restaurant; [eat_and_drink,restaurant,asian_restaurant,burmese_restaurant] -cambodian_restaurant; [eat_and_drink,restaurant,asian_restaurant,cambodian_restaurant] -chinese_restaurant; [eat_and_drink,restaurant,asian_restaurant,chinese_restaurant] -dim_sum_restaurant; [eat_and_drink,restaurant,asian_restaurant,dim_sum_restaurant] -filipino_restaurant; [eat_and_drink,restaurant,asian_restaurant,filipino_restaurant] -indo_chinese_restaurant; [eat_and_drink,restaurant,asian_restaurant,indo_chinese_restaurant] -indonesian_restaurant; [eat_and_drink,restaurant,asian_restaurant,indonesian_restaurant] -japanese_restaurant; [eat_and_drink,restaurant,asian_restaurant,japanese_restaurant] -korean_restaurant; [eat_and_drink,restaurant,asian_restaurant,korean_restaurant] -sushi_restaurant; [eat_and_drink,restaurant,asian_restaurant,sushi_restaurant] -laotian_restaurant; [eat_and_drink,restaurant,asian_restaurant,laotian_restaurant] -malaysian_restaurant; [eat_and_drink,restaurant,asian_restaurant,malaysian_restaurant] -mongolian_restaurant; [eat_and_drink,restaurant,asian_restaurant,mongolian_restaurant] -noodles_restaurant; [eat_and_drink,restaurant,asian_restaurant,noodles_restaurant] -singaporean_restaurant; [eat_and_drink,restaurant,asian_restaurant,singaporean_restaurant] -taiwanese_restaurant; [eat_and_drink,restaurant,asian_restaurant,taiwanese_restaurant] -thai_restaurant; [eat_and_drink,restaurant,asian_restaurant,thai_restaurant] -vietnamese_restaurant; [eat_and_drink,restaurant,asian_restaurant,vietnamese_restaurant] -hong_kong_style_cafe; [eat_and_drink,restaurant,asian_restaurant,hong_kong_style_cafe] -australian_restaurant; [eat_and_drink,restaurant,australian_restaurant] -austrian_restaurant; [eat_and_drink,restaurant,austrian_restaurant] -bangladeshi_restaurant; [eat_and_drink,restaurant,bangladeshi_restaurant] -indian_restaurant; [eat_and_drink,restaurant,indian_restaurant] -basque_restaurant; [eat_and_drink,restaurant,basque_restaurant] -british_restaurant; [eat_and_drink,restaurant,british_restaurant] -eastern_european_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant] -belarusian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,belarusian_restaurant] -bulgarian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,bulgarian_restaurant] -romanian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,romanian_restaurant] -tatar_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,tatar_restaurant] -ukrainian_restaurant; [eat_and_drink,restaurant,eastern_european_restaurant,ukrainian_restaurant] -french_restaurant; [eat_and_drink,restaurant,french_restaurant] -cajun_and_creole_restaurant; [eat_and_drink,restaurant,cajun_and_creole_restaurant] -canadian_restaurant; [eat_and_drink,restaurant,canadian_restaurant] -caribbean_restaurant; [eat_and_drink,restaurant,caribbean_restaurant] -dominican_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,dominican_restaurant] -haitian_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,haitian_restaurant] -jamaican_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,jamaican_restaurant] -trinidadian_restaurant; [eat_and_drink,restaurant,caribbean_restaurant,trinidadian_restaurant] -german_restaurant; [eat_and_drink,restaurant,german_restaurant] -catalan_restaurant; [eat_and_drink,restaurant,catalan_restaurant] -italian_restaurant; [eat_and_drink,restaurant,italian_restaurant] -czech_restaurant; [eat_and_drink,restaurant,czech_restaurant] -mediterranean_restaurant; [eat_and_drink,restaurant,mediterranean_restaurant] -greek_restaurant; [eat_and_drink,restaurant,mediterranean_restaurant,greek_restaurant] -guamanian_restaurant; [eat_and_drink,restaurant,guamanian_restaurant] -hawaiian_restaurant; [eat_and_drink,restaurant,hawaiian_restaurant] -himalayan_nepalese_restaurant; [eat_and_drink,restaurant,himalayan_nepalese_restaurant] -hungarian_restaurant; [eat_and_drink,restaurant,hungarian_restaurant] -iberian_restaurant; [eat_and_drink,restaurant,iberian_restaurant] -irish_restaurant; [eat_and_drink,restaurant,irish_restaurant] -jewish_restaurant; [eat_and_drink,restaurant,jewish_restaurant] -international_restaurant; [eat_and_drink,restaurant,international_restaurant] -european_restaurant; [eat_and_drink,restaurant,european_restaurant] -oriental_restaurant; [eat_and_drink,restaurant,oriental_restaurant] -pakistani_restaurant; [eat_and_drink,restaurant,pakistani_restaurant] -polish_restaurant; [eat_and_drink,restaurant,polish_restaurant] -polynesian_restaurant; [eat_and_drink,restaurant,polynesian_restaurant] -portuguese_restaurant; [eat_and_drink,restaurant,portuguese_restaurant] -russian_restaurant; [eat_and_drink,restaurant,russian_restaurant] -scandinavian_restaurant; [eat_and_drink,restaurant,scandinavian_restaurant] -danish_restaurant; [eat_and_drink,restaurant,scandinavian_restaurant,danish_restaurant] -norwegian_restaurant; [eat_and_drink,restaurant,scandinavian_restaurant,norwegian_restaurant] -scottish_restaurant; [eat_and_drink,restaurant,scottish_restaurant] -seafood_restaurant; [eat_and_drink,restaurant,seafood_restaurant] -serbo_croatian_restaurant; [eat_and_drink,restaurant,serbo_croatian_restaurant] -slovakian_restaurant; [eat_and_drink,restaurant,slovakian_restaurant] -southern_restaurant; [eat_and_drink,restaurant,southern_restaurant] -spanish_restaurant; [eat_and_drink,restaurant,spanish_restaurant] -sri_lankan_restaurant; [eat_and_drink,restaurant,sri_lankan_restaurant] -swiss_restaurant; [eat_and_drink,restaurant,swiss_restaurant] -uzbek_restaurant; [eat_and_drink,restaurant,uzbek_restaurant] -molecular_gastronomy_restaurant; [eat_and_drink,restaurant,molecular_gastronomy_restaurant] -haute_cuisine_restaurant; [eat_and_drink,restaurant,haute_cuisine_restaurant] -salad_bar; [eat_and_drink,restaurant,salad_bar] -brasserie; [eat_and_drink,restaurant,brasserie] -buffet_restaurant; [eat_and_drink,restaurant,buffet_restaurant] -barbecue_restaurant; [eat_and_drink,restaurant,barbecue_restaurant] -burger_restaurant; [eat_and_drink,restaurant,burger_restaurant] -canteen; [eat_and_drink,restaurant,canteen] -cafeteria; [eat_and_drink,restaurant,cafeteria] -cheesesteak_restaurant; [eat_and_drink,restaurant,cheesesteak_restaurant] -chicken_restaurant; [eat_and_drink,restaurant,chicken_restaurant] -chicken_wings_restaurant; [eat_and_drink,restaurant,chicken_wings_restaurant] -dog_meat_restaurant; [eat_and_drink,restaurant,dog_meat_restaurant] -dumpling_restaurant; [eat_and_drink,restaurant,dumpling_restaurant] -fast_food_restaurant; [eat_and_drink,restaurant,fast_food_restaurant] -fischbrotchen_restaurant; [eat_and_drink,restaurant,fischbrotchen_restaurant] -acai_bowls; [eat_and_drink,restaurant,acai_bowls] -fish_restaurant; [eat_and_drink,restaurant,fish_restaurant] -fish_and_chips_restaurant; [eat_and_drink,restaurant,fish_and_chips_restaurant] -fondue_restaurant; [eat_and_drink,restaurant,fondue_restaurant] -gluten_free_restaurant; [eat_and_drink,restaurant,gluten_free_restaurant] -baozi_restaurant; [eat_and_drink,restaurant,baozi_restaurant] -halal_restaurant; [eat_and_drink,restaurant,halal_restaurant] -bistro; [eat_and_drink,restaurant,bistro] -health_food_restaurant; [eat_and_drink,restaurant,health_food_restaurant] -kosher_restaurant; [eat_and_drink,restaurant,kosher_restaurant] -comfort_food_restaurant; [eat_and_drink,restaurant,comfort_food_restaurant] -meat_restaurant; [eat_and_drink,restaurant,meat_restaurant] -curry_sausage_restaurant; [eat_and_drink,restaurant,curry_sausage_restaurant] -diner; [eat_and_drink,restaurant,diner] -diy_foods_restaurant; [eat_and_drink,restaurant,diy_foods_restaurant] -doner_kebab; [eat_and_drink,restaurant,doner_kebab] -empanadas; [eat_and_drink,restaurant,empanadas] -nasi_restaurant; [eat_and_drink,restaurant,nasi_restaurant] -flatbread_restaurant; [eat_and_drink,restaurant,flatbread_restaurant] -food_court; [eat_and_drink,restaurant,food_court] -gastropub; [eat_and_drink,restaurant,gastropub] -pizza_restaurant; [eat_and_drink,restaurant,pizza_restaurant] -pop_up_restaurant; [eat_and_drink,restaurant,pop_up_restaurant] -poutinerie_restaurant; [eat_and_drink,restaurant,poutinerie_restaurant] -vegan_restaurant; [eat_and_drink,restaurant,vegan_restaurant] -vegetarian_restaurant; [eat_and_drink,restaurant,vegetarian_restaurant] -wok_restaurant; [eat_and_drink,restaurant,wok_restaurant] -wrap_restaurant; [eat_and_drink,restaurant,wrap_restaurant] -piadina_restaurant; [eat_and_drink,restaurant,piadina_restaurant] -poke_restaurant; [eat_and_drink,restaurant,poke_restaurant] -pigs_trotters_restaurant; [eat_and_drink,restaurant,pigs_trotters_restaurant] -potato_restaurant; [eat_and_drink,restaurant,potato_restaurant] -rotisserie_chicken_restaurant; [eat_and_drink,restaurant,rotisserie_chicken_restaurant] -schnitzel_restaurant; [eat_and_drink,restaurant,schnitzel_restaurant] -soul_food; [eat_and_drink,restaurant,soul_food] -steakhouse; [eat_and_drink,restaurant,steakhouse] -supper_club; [eat_and_drink,restaurant,supper_club] -tapas_bar; [eat_and_drink,restaurant,tapas_bar] -venison_restaurant; [eat_and_drink,restaurant,venison_restaurant] -wild_game_meats_restaurant; [eat_and_drink,restaurant,wild_game_meats_restaurant] -falafel_restaurant; [eat_and_drink,restaurant,falafel_restaurant] -taco_restaurant; [eat_and_drink,restaurant,taco_restaurant] -hot_dog_restaurant; [eat_and_drink,restaurant,hot_dog_restaurant] -live_and_raw_food_restaurant; [eat_and_drink,restaurant,live_and_raw_food_restaurant] -soup_restaurant; [eat_and_drink,restaurant,soup_restaurant] -theme_restaurant; [eat_and_drink,restaurant,theme_restaurant] -bar_and_grill_restaurant; [eat_and_drink,restaurant,bar_and_grill_restaurant] -meatball_restaurant; [eat_and_drink,restaurant,meatball_restaurant] -waffle_restaurant; [eat_and_drink,restaurant,waffle_restaurant] -breakfast_and_brunch_restaurant; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant] -pancake_house; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant,pancake_house] -bagel_restaurant; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant,bagel_restaurant] -baguettes; [eat_and_drink,restaurant,breakfast_and_brunch_restaurant,baguettes] -bar; [eat_and_drink,bar] -airport_lounge; [eat_and_drink,bar,airport_lounge] -beach_bar; [eat_and_drink,bar,beach_bar] -beer_bar; [eat_and_drink,bar,beer_bar] -beer_garden; [eat_and_drink,bar,beer_garden] -brewery; [eat_and_drink,bar,brewery] -bubble_tea; [eat_and_drink,bar,bubble_tea] -champagne_bar; [eat_and_drink,bar,champagne_bar] -cidery; [eat_and_drink,bar,cidery] -cigar_bar; [eat_and_drink,bar,cigar_bar] -cocktail_bar; [eat_and_drink,bar,cocktail_bar] -dive_bar; [eat_and_drink,bar,dive_bar] -drive_thru_bar; [eat_and_drink,bar,drive_thru_bar] -gay_bar; [eat_and_drink,bar,gay_bar] -hookah_bar; [eat_and_drink,bar,hookah_bar] -hotel_bar; [eat_and_drink,bar,hotel_bar] -irish_pub; [eat_and_drink,bar,irish_pub] -kombucha; [eat_and_drink,bar,kombucha] -lounge; [eat_and_drink,bar,lounge] -milk_bar; [eat_and_drink,bar,milk_bar] -milkshake_bar; [eat_and_drink,bar,milkshake_bar] -pub; [eat_and_drink,bar,pub] -sake_bar; [eat_and_drink,bar,sake_bar] -speakeasy; [eat_and_drink,bar,speakeasy] -sports_bar; [eat_and_drink,bar,sports_bar] -sugar_shack; [eat_and_drink,bar,sugar_shack] -tabac; [eat_and_drink,bar,tabac] -tiki_bar; [eat_and_drink,bar,tiki_bar] -vermouth_bar; [eat_and_drink,bar,vermouth_bar] -whiskey_bar; [eat_and_drink,bar,whiskey_bar] -wine_bar; [eat_and_drink,bar,wine_bar] -smoothie_juice_bar; [eat_and_drink,bar,smoothie_juice_bar] -piano_bar; [eat_and_drink,bar,piano_bar] -cafe; [eat_and_drink,cafe] -coffee_roastery; [eat_and_drink,cafe,coffee_roastery] -tea_room; [eat_and_drink,cafe,tea_room] -coffee_shop; [eat_and_drink,cafe,coffee_shop] -accommodation; [accommodation] -bed_and_breakfast; [accommodation,bed_and_breakfast] -cabin; [accommodation,cabin] -campground; [accommodation,campground] -cottage; [accommodation,cottage] -guest_house; [accommodation,guest_house] -health_retreats; [accommodation,health_retreats] -holiday_rental_home; [accommodation,holiday_rental_home] -hostel; [accommodation,hostel] -hotel; [accommodation,hotel] -inn; [accommodation,inn] -lodge; [accommodation,lodge] -motel; [accommodation,motel] -mountain_huts; [accommodation,mountain_huts] -resort; [accommodation,resort] -beach_resort; [accommodation,resort,beach_resort] -rv_park; [accommodation,rv_park] -service_apartments; [accommodation,service_apartments] -automotive; [automotive] -automotive_dealer; [automotive,automotive_dealer] -car_buyer; [automotive,car_buyer] -car_dealer; [automotive,automotive_dealer,car_dealer] -commercial_vehicle_dealer; [automotive,automotive_dealer,commercial_vehicle_dealer] -golf_cart_dealer; [automotive,automotive_dealer,golf_cart_dealer] -motorcycle_dealer; [automotive,automotive_dealer,motorcycle_dealer] -motorsport_vehicle_dealer; [automotive,automotive_dealer,motorsport_vehicle_dealer] -recreational_vehicle_dealer; [automotive,automotive_dealer,recreational_vehicle_dealer] -scooter_dealers; [automotive,automotive_dealer,scooter_dealers] -trailer_dealer; [automotive,automotive_dealer,trailer_dealer] -truck_dealer; [automotive,automotive_dealer,truck_dealer] -used_car_dealer; [automotive,automotive_dealer,used_car_dealer] -automotive_services_and_repair; [automotive,automotive_services_and_repair] -auto_body_shop; [automotive,automotive_services_and_repair,auto_body_shop] -auto_customization; [automotive,automotive_services_and_repair,auto_customization] -auto_detailing; [automotive,automotive_services_and_repair,auto_detailing] -auto_electrical_repair; [automotive,automotive_services_and_repair,auto_electrical_repair] -auto_glass_service; [automotive,automotive_services_and_repair,auto_glass_service] -car_window_tinting; [automotive,automotive_services_and_repair,auto_glass_service,car_window_tinting] -auto_restoration_services; [automotive,automotive_services_and_repair,auto_restoration_services] -auto_security; [automotive,automotive_services_and_repair,auto_security] -automobile_registration_service; [automotive,automotive_services_and_repair,automobile_registration_service] -automotive_consultant; [automotive,automotive_services_and_repair,automotive_consultant] -automotive_storage_facility; [automotive,automotive_services_and_repair,automotive_storage_facility] -brake_service_and_repair; [automotive,automotive_services_and_repair,brake_service_and_repair] -car_inspection; [automotive,automotive_services_and_repair,car_inspection] -car_stereo_installation; [automotive,automotive_services_and_repair,car_stereo_installation] -car_wash; [automotive,automotive_services_and_repair,car_wash] -diy_auto_shop; [automotive,automotive_services_and_repair,diy_auto_shop] -emissions_inspection; [automotive,automotive_services_and_repair,emissions_inspection] -engine_repair_service; [automotive,automotive_services_and_repair,engine_repair_service] -exhaust_and_muffler_repair; [automotive,automotive_services_and_repair,exhaust_and_muffler_repair] -hybrid_car_repair; [automotive,automotive_services_and_repair,hybrid_car_repair] -motorcycle_repair; [automotive,automotive_services_and_repair,motorcycle_repair] -motorsport_vehicle_repair; [automotive,automotive_services_and_repair,motorsport_vehicle_repair] -oil_change_station; [automotive,automotive_services_and_repair,oil_change_station] -recreation_vehicle_repair; [automotive,automotive_services_and_repair,recreation_vehicle_repair] -roadside_assistance; [automotive,automotive_services_and_repair,roadside_assistance] -emergency_roadside_service; [automotive,automotive_services_and_repair,roadside_assistance,emergency_roadside_service] -mobile_dent_repair; [automotive,automotive_services_and_repair,roadside_assistance,mobile_dent_repair] -tire_dealer_and_repair; [automotive,automotive_services_and_repair,tire_dealer_and_repair] -transmission_repair; [automotive,automotive_services_and_repair,transmission_repair] -towing_service; [automotive,automotive_services_and_repair,towing_service] -trailer_repair; [automotive,automotive_services_and_repair,trailer_repair] -truck_repair; [automotive,automotive_services_and_repair,truck_repair] -auto_upholstery; [automotive,automotive_services_and_repair,auto_upholstery] -vehicle_wrap; [automotive,automotive_services_and_repair,vehicle_wrap] -vehicle_shipping; [automotive,automotive_services_and_repair,vehicle_shipping] -wheel_and_rim_repair; [automotive,automotive_services_and_repair,wheel_and_rim_repair] -automotive_wheel_polishing_service; [automotive,automotive_services_and_repair,automotive_wheel_polishing_service] -windshield_installation_and_repair; [automotive,automotive_services_and_repair,windshield_installation_and_repair] -automotive_parts_and_accessories; [automotive,automotive_parts_and_accessories] -recreational_vehicle_parts_and_accessories; [automotive,automotive_parts_and_accessories,recreational_vehicle_parts_and_accessories] -car_stereo_store; [automotive,automotive_parts_and_accessories,car_stereo_store] -motorcycle_gear; [automotive,automotive_parts_and_accessories,motorcycle_gear] -motorsports_store; [automotive,automotive_parts_and_accessories,motorsports_store] -interlock_system; [automotive,automotive_parts_and_accessories,interlock_system] -aircraft_dealer; [automotive,aircraft_dealer] -aircraft_repair; [automotive,aircraft_services_and_repair] -aircraft_parts_and_supplies; [automotive,aircraft_parts_and_supplies] -avionics_shop; [automotive,aircraft_parts_and_supplies,avionics_shop] -boat_dealer; [automotive,boat_dealer] -boat_service_and_repair; [automotive,boat_service_and_repair] -boat_parts_and_accessories; [automotive,boat_parts_and_accessories] -gas_station; [automotive,gas_station] -truck_gas_station; [automotive,gas_station,truck_gas_station] -fuel_dock; [automotive,gas_station,fuel_dock] -ev_charging_station; [automotive,electric_vehicle_charging_station] -truck_stop; [automotive,truck_stop] -automobile_leasing; [automotive,automobile_leasing] -automotive_repair; [automotive,automotive_repair] -auto_company; [automotive,auto_company] -motorcycle_manufacturer; [automotive,motorcycle_manufacturer] -arts_and_entertainment; [arts_and_entertainment] -adult_entertainment; [arts_and_entertainment,adult_entertainment] -erotic_massage; [arts_and_entertainment,adult_entertainment,erotic_massage] -strip_club; [arts_and_entertainment,adult_entertainment,strip_club] -striptease_dancer; [arts_and_entertainment,adult_entertainment,striptease_dancer] -arcade; [arts_and_entertainment,arcade] -auditorium; [arts_and_entertainment,auditorium] -bar_crawl; [arts_and_entertainment,bar_crawl] -betting_center; [arts_and_entertainment,betting_center] -bingo_hall; [arts_and_entertainment,bingo_hall] -bookmakers; [arts_and_entertainment,bookmakers] -cabaret; [arts_and_entertainment,cabaret] -carousel; [arts_and_entertainment,carousel] -casino; [arts_and_entertainment,casino] -chamber_of_handicraft; [arts_and_entertainment,chamber_of_handicraft] -choir; [arts_and_entertainment,choir] -circus; [arts_and_entertainment,circus] -club_crawl; [arts_and_entertainment,club_crawl] -comedy_club; [arts_and_entertainment,comedy_club] -topic_concert_venue; [arts_and_entertainment,topic_concert_venue] -country_club; [arts_and_entertainment,country_club] -country_dance_hall; [arts_and_entertainment,country_dance_hall] -dance_club; [arts_and_entertainment,dance_club] -dinner_theater; [arts_and_entertainment,dinner_theater] -eatertainment; [arts_and_entertainment,eatertainment] -escape_rooms; [arts_and_entertainment,escape_rooms] -exhibition_and_trade_center; [arts_and_entertainment,exhibition_and_trade_center] -glass_blowing; [arts_and_entertainment,glass_blowing] -indoor_playcenter; [arts_and_entertainment,indoor_playcenter] -internet_cafe; [arts_and_entertainment,internet_cafe] -jazz_and_blues; [arts_and_entertainment,jazz_and_blues] -karaoke; [arts_and_entertainment,karaoke] -laser_tag; [arts_and_entertainment,laser_tag] -makerspace; [arts_and_entertainment,makerspace] -marching_band; [arts_and_entertainment,marching_band] -music_venue; [arts_and_entertainment,music_venue] -musical_band_orchestras_and_symphonies; [arts_and_entertainment,musical_band_orchestras_and_symphonies] -opera_and_ballet; [arts_and_entertainment,opera_and_ballet] -paint_and_sip; [arts_and_entertainment,paint_and_sip] -paintball; [arts_and_entertainment,paintball] -performing_arts; [arts_and_entertainment,performing_arts] -planetarium; [arts_and_entertainment,planetarium] -rodeo; [arts_and_entertainment,rodeo] -salsa_club; [arts_and_entertainment,salsa_club] -wildlife_sanctuary; [arts_and_entertainment,wildlife_sanctuary] -stadium_arena; [arts_and_entertainment,stadium_arena] -baseball_stadium; [arts_and_entertainment,stadium_arena,baseball_stadium] -basketball_stadium; [arts_and_entertainment,stadium_arena,basketball_stadium] -cricket_ground; [arts_and_entertainment,stadium_arena,cricket_ground] -football_stadium; [arts_and_entertainment,stadium_arena,football_stadium] -hockey_arena; [arts_and_entertainment,stadium_arena,hockey_arena] -rugby_stadium; [arts_and_entertainment,stadium_arena,rugby_stadium] -soccer_stadium; [arts_and_entertainment,stadium_arena,soccer_stadium] -tennis_stadium; [arts_and_entertainment,stadium_arena,tennis_stadium] -track_stadium; [arts_and_entertainment,stadium_arena,track_stadium] -studio_taping; [arts_and_entertainment,studio_taping] -theaters_and_performance_venues; [arts_and_entertainment,theaters_and_performance_venues] -theatre; [arts_and_entertainment,theaters_and_performance_venues,theatre] -ticket_sales; [arts_and_entertainment,ticket_sales] -virtual_reality_center; [arts_and_entertainment,virtual_reality_center] -water_park; [arts_and_entertainment,water_park] -cinema; [arts_and_entertainment,cinema] -drive_in_theater; [arts_and_entertainment,cinema,drive_in_theater] -outdoor_movies; [arts_and_entertainment,cinema,outdoor_movies] -farm; [arts_and_entertainment,farm] -attraction_farm; [arts_and_entertainment,farm,attraction_farm] -orchard; [arts_and_entertainment,farm,orchard] -pick_your_own_farm; [arts_and_entertainment,farm,pick_your_own_farm] -poultry_farm; [arts_and_entertainment,farm,poultry_farm] -ranch; [arts_and_entertainment,farm,ranch] -festival; [arts_and_entertainment,festival] -fair; [arts_and_entertainment,festival,fair] -film_festivals_and_organizations; [arts_and_entertainment,festival,film_festivals_and_organizations] -general_festivals; [arts_and_entertainment,festival,general_festivals] -holiday_market; [arts_and_entertainment,festival,holiday_market] -music_festivals_and_organizations; [arts_and_entertainment,festival,music_festivals_and_organizations] -trade_fair; [arts_and_entertainment,festival,trade_fair] -social_club; [arts_and_entertainment,social_club] -fraternal_organization; [arts_and_entertainment,social_club,fraternal_organization] -veterans_organization; [arts_and_entertainment,social_club,veterans_organization] -supernatural_reading; [arts_and_entertainment,supernatural_reading] -astrologer; [arts_and_entertainment,supernatural_reading,astrologer] -mystic; [arts_and_entertainment,supernatural_reading,mystic] -psychic; [arts_and_entertainment,supernatural_reading,psychic] -psychic_medium; [arts_and_entertainment,supernatural_reading,psychic_medium] -attractions_and_activities; [attractions_and_activities] -amusement_park; [attractions_and_activities,amusement_park] -aquarium; [attractions_and_activities,aquarium] -architecture; [attractions_and_activities,architecture] -art_gallery; [attractions_and_activities,art_gallery] -atv_rentals_and_tours; [attractions_and_activities,atv_rentals_and_tours] -axe_throwing; [attractions_and_activities,axe_throwing] -backpacking_area; [attractions_and_activities,backpacking_area] -beach; [attractions_and_activities,beach] -beach_combing_area; [attractions_and_activities,beach_combing_area] -boat_rental_and_training; [attractions_and_activities,boat_rental_and_training] -boating_places; [attractions_and_activities,boating_places] -bobsledding_field; [attractions_and_activities,bobsledding_field] -botanical_garden; [attractions_and_activities,botanical_garden] -bungee_jumping_center; [attractions_and_activities,bungee_jumping_center] -canyon; [attractions_and_activities,canyon] -castle; [attractions_and_activities,castle] -cave; [attractions_and_activities,cave] -challenge_courses_center; [attractions_and_activities,challenge_courses_center] -cliff_jumping_center; [attractions_and_activities,cliff_jumping_center] -climbing_service; [attractions_and_activities,climbing_service] -crater; [attractions_and_activities,crater] -cultural_center; [attractions_and_activities,cultural_center] -fishing_charter; [attractions_and_activities,fishing_charter] -flyboarding_rental; [attractions_and_activities,flyboarding_rental] -fort; [attractions_and_activities,fort] -fountain; [attractions_and_activities,fountain] -go_kart_track; [attractions_and_activities,go_kart_track] -haunted_house; [attractions_and_activities,haunted_house] -high_gliding_center; [attractions_and_activities,high_gliding_center] -horseback_riding_service; [attractions_and_activities,horseback_riding_service] -hot_air_balloons_tour; [attractions_and_activities,hot_air_balloons_tour] -hot_springs; [attractions_and_activities,hot_springs] -jet_skis_rental; [attractions_and_activities,jet_skis_rental] -kiteboarding_instruction; [attractions_and_activities,kiteboarding_instruction] -lake; [attractions_and_activities,lake] -landmark_and_historical_building; [attractions_and_activities,landmark_and_historical_building] -lighthouse; [attractions_and_activities,lighthouse] -lookout; [attractions_and_activities,lookout] -marina; [attractions_and_activities,marina] -monument; [attractions_and_activities,monument] -mountain_bike_parks; [attractions_and_activities,mountain_bike_parks] -observatory; [attractions_and_activities,observatory] -paddleboard_rental; [attractions_and_activities,paddleboard_rental] -palace; [attractions_and_activities,palace] -parasailing_ride_service; [attractions_and_activities,parasailing_ride_service] -plaza; [attractions_and_activities,plaza] -rafting_kayaking_area; [attractions_and_activities,rafting_kayaking_area] -rock_climbing_spot; [attractions_and_activities,rock_climbing_spot] -ruin; [attractions_and_activities,ruin] -sailing_area; [attractions_and_activities,sailing_area] -sand_dune; [attractions_and_activities,sand_dune] -scavenger_hunts_provider; [attractions_and_activities,scavenger_hunts_provider] -sculpture_statue; [attractions_and_activities,sculpture_statue] -ski_area; [attractions_and_activities,ski_area] -skyline; [attractions_and_activities,skyline] -sledding_rental; [attractions_and_activities,sledding_rental] -snorkeling_equipment_rental; [attractions_and_activities,snorkeling_equipment_rental] -snorkeling; [attractions_and_activities,snorkeling] -snowboarding_center; [attractions_and_activities,snowboarding_center] -stargazing_area; [attractions_and_activities,stargazing_area] -street_art; [attractions_and_activities,street_art] -trail; [attractions_and_activities,trail] -hiking_trail; [attractions_and_activities,trail,hiking_trail] -mountain_bike_trails; [attractions_and_activities,trail,mountain_bike_trails] -waterfall; [attractions_and_activities,waterfall] -surfing; [attractions_and_activities,surfing] -surfboard_rental; [attractions_and_activities,surfing,surfboard_rental] -windsurfing_center; [attractions_and_activities,surfing,windsurfing_center] -ziplining_center; [attractions_and_activities,ziplining_center] -zoo; [attractions_and_activities,zoo] -petting_zoo; [attractions_and_activities,zoo,petting_zoo] -museum; [attractions_and_activities,museum] -art_museum; [attractions_and_activities,museum,art_museum] -asian_art_museum; [attractions_and_activities,museum,art_museum,asian_art_museum] -cartooning_museum; [attractions_and_activities,museum,art_museum,cartooning_museum] -contemporary_art_museum; [attractions_and_activities,museum,art_museum,contemporary_art_museum] -childrens_museum; [attractions_and_activities,museum,childrens_museum] -costume_museum; [attractions_and_activities,museum,art_museum,costume_museum] -decorative_arts_museum; [attractions_and_activities,museum,art_museum,decorative_arts_museum] -design_museum; [attractions_and_activities,museum,art_museum,design_museum] -modern_art_museum; [attractions_and_activities,museum,art_museum,modern_art_museum] -photography_museum; [attractions_and_activities,museum,art_museum,photography_museum] -textile_museum; [attractions_and_activities,museum,art_museum,textile_museum] -history_museum; [attractions_and_activities,museum,history_museum] -civilization_museum; [attractions_and_activities,museum,history_museum,civilization_museum] -community_museum; [attractions_and_activities,museum,history_museum,community_museum] -military_museum; [attractions_and_activities,museum,military_museum] -national_museum; [attractions_and_activities,museum,national_museum] -science_museum; [attractions_and_activities,museum,science_museum] -computer_museum; [attractions_and_activities,museum,science_museum,computer_museum] -state_museum; [attractions_and_activities,museum,state_museum] -aviation_museum; [attractions_and_activities,museum,aviation_museum] -sports_museum; [attractions_and_activities,museum,sports_museum] -park; [attractions_and_activities,park] -dog_park; [attractions_and_activities,park,dog_park] -memorial_park; [attractions_and_activities,park,memorial_park] -national_park; [attractions_and_activities,park,national_park] -state_park; [attractions_and_activities,park,state_park] -active_life; [active_life] -sports_and_recreation_venue; [active_life,sports_and_recreation_venue] -adventure_sports_center; [active_life,sports_and_recreation_venue,adventure_sports_center] -american_football_field; [active_life,sports_and_recreation_venue,american_football_field] -airsoft_fields; [active_life,sports_and_recreation_venue,airsoft_fields] -archery_range; [active_life,sports_and_recreation_venue,archery_range] -atv_recreation_park; [active_life,sports_and_recreation_venue,atv_recreation_park] -badminton_court; [active_life,sports_and_recreation_venue,badminton_court] -baseball_field; [active_life,sports_and_recreation_venue,baseball_field] -basketball_court; [active_life,sports_and_recreation_venue,basketball_court] -batting_cage; [active_life,sports_and_recreation_venue,batting_cage] -beach_volleyball_court; [active_life,sports_and_recreation_venue,beach_volleyball_court] -bicycle_path; [active_life,sports_and_recreation_venue,bicycle_path] -bocce_ball_court; [active_life,sports_and_recreation_venue,bocce_ball_court] -bowling_alley; [active_life,sports_and_recreation_venue,bowling_alley] -bubble_soccer_field; [active_life,sports_and_recreation_venue,bubble_soccer_field] -disc_golf_course; [active_life,sports_and_recreation_venue,disc_golf_course] -flyboarding_center; [active_life,sports_and_recreation_venue,flyboarding_center] -futsal_field; [active_life,sports_and_recreation_venue,futsal_field] -golf_course; [active_life,sports_and_recreation_venue,golf_course] -driving_range; [active_life,sports_and_recreation_venue,golf_course,driving_range] -gym; [active_life,sports_and_recreation_venue,gym] -gymnastics_center; [active_life,sports_and_recreation_venue,gymnastics_center] -handball_court; [active_life,sports_and_recreation_venue,handball_court] -hockey_field; [active_life,sports_and_recreation_venue,hockey_field] -horse_riding; [active_life,sports_and_recreation_venue,horse_riding] -equestrian_facility; [active_life,sports_and_recreation_venue,horse_riding,equestrian_facility] -horse_racing_track; [active_life,sports_and_recreation_venue,horse_riding,horse_racing_track] -skate_park; [active_life,sports_and_recreation_venue,skate_park] -skating_rink; [active_life,sports_and_recreation_venue,skating_rink] -ice_skating_rink; [active_life,sports_and_recreation_venue,skating_rink,ice_skating_rink] -roller_skating_rink; [active_life,sports_and_recreation_venue,skating_rink,roller_skating_rink] -hang_gliding_center; [active_life,sports_and_recreation_venue,hang_gliding_center] -kiteboarding; [active_life,sports_and_recreation_venue,kiteboarding] -miniature_golf_course; [active_life,sports_and_recreation_venue,miniature_golf_course] -paddleboarding_center; [active_life,sports_and_recreation_venue,paddleboarding_center] -playground; [active_life,sports_and_recreation_venue,playground] -pool_billiards; [active_life,sports_and_recreation_venue,pool_billiards] -pool_hall; [active_life,sports_and_recreation_venue,pool_billiards,pool_hall] -racquetball_court; [active_life,sports_and_recreation_venue,racquetball_court] -rock_climbing_gym; [active_life,sports_and_recreation_venue,rock_climbing_gym] -rugby_pitch; [active_life,sports_and_recreation_venue,rugby_pitch] -shooting_range; [active_life,sports_and_recreation_venue,shooting_range] -sky_diving; [active_life,sports_and_recreation_venue,sky_diving] -soccer_field; [active_life,sports_and_recreation_venue,soccer_field] -squash_court; [active_life,sports_and_recreation_venue,squash_court] -swimming_pool; [active_life,sports_and_recreation_venue,swimming_pool] -tennis_court; [active_life,sports_and_recreation_venue,tennis_court] -trampoline_park; [active_life,sports_and_recreation_venue,trampoline_park] -tubing_provider; [active_life,sports_and_recreation_venue,tubing_provider] -volleyball_court; [active_life,sports_and_recreation_venue,volleyball_court] -wildlife_hunting_range; [active_life,sports_and_recreation_venue,wildlife_hunting_range] -zorbing_center; [active_life,sports_and_recreation_venue,zorbing_center] -diving_center; [active_life,sports_and_recreation_venue,diving_center] -free_diving_center; [active_life,sports_and_recreation_venue,diving_center,free_diving_center] -scuba_diving_center; [active_life,sports_and_recreation_venue,diving_center,scuba_diving_center] -race_track; [active_life,sports_and_recreation_venue,race_track] -sports_and_fitness_instruction; [active_life,sports_and_fitness_instruction] -climbing_class; [active_life,sports_and_fitness_instruction,climbing_class] -cycling_classes; [active_life,sports_and_fitness_instruction,cycling_classes] -golf_instructor; [active_life,sports_and_fitness_instruction,golf_instructor] -paddleboarding_lessons; [active_life,sports_and_fitness_instruction,paddleboarding_lessons] -racing_experience; [active_life,sports_and_fitness_instruction,racing_experience] -rock_climbing_instructor; [active_life,sports_and_fitness_instruction,rock_climbing_instructor] -free_diving_instruction; [active_life,sports_and_fitness_instruction,diving_instruction,free_diving_instruction] -scuba_diving_instruction; [active_life,sports_and_fitness_instruction,diving_instruction,scuba_diving_instruction] -aerial_fitness_center; [active_life,sports_and_fitness_instruction,aerial_fitness_center] -barre_classes; [active_life,sports_and_fitness_instruction,barre_classes] -boot_camp; [active_life,sports_and_fitness_instruction,boot_camp] -boxing_class; [active_life,sports_and_fitness_instruction,boxing_class] -boxing_club; [active_life,sports_and_fitness_instruction,boxing_club] -boxing_gym; [active_life,sports_and_fitness_instruction,boxing_gym] -cardio_classes; [active_life,sports_and_fitness_instruction,cardio_classes] -dance_school; [active_life,sports_and_fitness_instruction,dance_school] -ems_training; [active_life,sports_and_fitness_instruction,ems_training] -fitness_trainer; [active_life,sports_and_fitness_instruction,fitness_trainer] -health_consultant; [active_life,sports_and_fitness_instruction,health_consultant] -meditation_center; [active_life,sports_and_fitness_instruction,meditation_center] -pilates_studio; [active_life,sports_and_fitness_instruction,pilates_studio] -qi_gong_studio; [active_life,sports_and_fitness_instruction,qi_gong_studio] -self_defense_classes; [active_life,sports_and_fitness_instruction,self_defense_classes] -ski_and_snowboard_school; [active_life,sports_and_fitness_instruction,ski_and_snowboard_school] -surfing_school; [active_life,sports_and_fitness_instruction,surfing_school] -swimming_instructor; [active_life,sports_and_fitness_instruction,swimming_instructor] -tai_chi_studio; [active_life,sports_and_fitness_instruction,tai_chi_studio] -yoga_instructor; [active_life,sports_and_fitness_instruction,yoga_instructor] -yoga_studio; [active_life,sports_and_fitness_instruction,yoga_studio] -sports_club_and_league; [active_life,sports_club_and_league] -amateur_sports_league; [active_life,sports_club_and_league,amateur_sports_league] -amateur_sports_team; [active_life,sports_club_and_league,amateur_sports_team] -beach_volleyball_club; [active_life,sports_club_and_league,beach_volleyball_club] -esports_league; [active_life,sports_club_and_league,esports_league] -esports_team; [active_life,sports_club_and_league,esports_team] -fencing_club; [active_life,sports_club_and_league,fencing_club] -fishing_club; [active_life,sports_club_and_league,fishing_club] -football_club; [active_life,sports_club_and_league,football_club] -go_kart_club; [active_life,sports_club_and_league,go_kart_club] -gymnastics_club; [active_life,sports_club_and_league,gymnastics_club] -lawn_bowling_club; [active_life,sports_club_and_league,lawn_bowling_club] -nudist_clubs; [active_life,sports_club_and_league,nudist_clubs] -paddle_tennis_club; [active_life,sports_club_and_league,paddle_tennis_club] -professional_sports_league; [active_life,sports_club_and_league,professional_sports_league] -professional_sports_team; [active_life,sports_club_and_league,professional_sports_team] -rowing_club; [active_life,sports_club_and_league,rowing_club] -sailing_club; [active_life,sports_club_and_league,sailing_club] -school_sports_league; [active_life,sports_club_and_league,school_sports_league] -school_sports_team; [active_life,sports_club_and_league,school_sports_team] -soccer_club; [active_life,sports_club_and_league,soccer_club] -surf_lifesaving_club; [active_life,sports_club_and_league,surf_lifesaving_club] -table_tennis_club; [active_life,sports_club_and_league,table_tennis_club] -volleyball_club; [active_life,sports_club_and_league,volleyball_club] -golf_club; [active_life,sports_club_and_league,golf_club] -indoor_golf_center; [active_life,sports_club_and_league,golf_club,indoor_golf_center] -martial_arts_club; [active_life,sports_club_and_league,martial_arts_club] -brazilian_jiu_jitsu_club; [active_life,sports_club_and_league,martial_arts_club,brazilian_jiu_jitsu_club] -chinese_martial_arts_club; [active_life,sports_club_and_league,martial_arts_club,chinese_martial_arts_club] -karate_club; [active_life,sports_club_and_league,martial_arts_club,karate_club] -kickboxing_club; [active_life,sports_club_and_league,martial_arts_club,kickboxing_club] -muay_thai_club; [active_life,sports_club_and_league,martial_arts_club,muay_thai_club] -taekwondo_club; [active_life,sports_club_and_league,martial_arts_club,taekwondo_club] -sports_and_recreation_rental_and_services; [active_life,sports_and_recreation_rental_and_services] -beach_equipment_rentals; [active_life,sports_and_recreation_rental_and_services,beach_equipment_rentals] -bike_rentals; [active_life,sports_and_recreation_rental_and_services,bike_rentals] -canoe_and_kayak_hire_service; [active_life,sports_and_recreation_rental_and_services,boat_hire_service,canoe_and_kayak_hire_service] -scooter_rental; [active_life,sports_and_recreation_rental_and_services,scooter_rental] -sport_equipment_rentals; [active_life,sports_and_recreation_rental_and_services,sport_equipment_rentals] -beauty_and_spa; [beauty_and_spa] -aromatherapy; [beauty_and_spa,aromatherapy] -beauty_salon; [beauty_and_spa,beauty_salon] -acne_treatment; [beauty_and_spa,acne_treatment] -barber; [beauty_and_spa,barber] -eyebrow_service; [beauty_and_spa,eyebrow_service] -eyelash_service; [beauty_and_spa,eyelash_service] -foot_care; [beauty_and_spa,foot_care] -hair_extensions; [beauty_and_spa,hair_extensions] -hair_loss_center; [beauty_and_spa,hair_loss_center] -hair_replacement; [beauty_and_spa,hair_replacement] -health_spa; [beauty_and_spa,health_spa] -makeup_artist; [beauty_and_spa,makeup_artist] -massage; [beauty_and_spa,massage] -nail_salon; [beauty_and_spa,nail_salon] -onsen; [beauty_and_spa,onsen] -permanent_makeup; [beauty_and_spa,permanent_makeup] -tattoo_and_piercing; [beauty_and_spa,tattoo_and_piercing] -piercing; [beauty_and_spa,tattoo_and_piercing,piercing] -tattoo; [beauty_and_spa,tattoo_and_piercing,tattoo] -public_bath_houses; [beauty_and_spa,public_bath_houses] -teeth_whitening; [beauty_and_spa,teeth_whitening] -turkish_baths; [beauty_and_spa,turkish_baths] -hair_removal; [beauty_and_spa,hair_removal] -laser_hair_removal; [beauty_and_spa,hair_removal,laser_hair_removal] -sugaring; [beauty_and_spa,hair_removal,sugaring] -threading_service; [beauty_and_spa,hair_removal,threading_service] -waxing; [beauty_and_spa,hair_removal,waxing] -hair_salon; [beauty_and_spa,hair_salon] -blow_dry_blow_out_service; [beauty_and_spa,hair_salon,blow_dry_blow_out_service] -hair_stylist; [beauty_and_spa,hair_salon,hair_stylist] -kids_hair_salon; [beauty_and_spa,hair_salon,kids_hair_salon] -spas; [beauty_and_spa,spas] -medical_spa; [beauty_and_spa,spas,medical_spa] -day_spa; [beauty_and_spa,spas,day_spa] -skin_care; [beauty_and_spa,skin_care] -esthetician; [beauty_and_spa,skin_care,esthetician] -tanning_salon; [beauty_and_spa,tanning_salon] -spray_tanning; [beauty_and_spa,tanning_salon,spray_tanning] -tanning_bed; [beauty_and_spa,tanning_salon,tanning_bed] -image_consultant; [beauty_and_spa,image_consultant] -education; [education] -adult_education; [education,adult_education] -board_of_education_offices; [education,board_of_education_offices] -campus_building; [education,campus_building] -college_counseling; [education,college_counseling] -college_university; [education,college_university] -architecture_schools; [education,college_university,architecture_schools] -business_schools; [education,college_university,business_schools] -engineering_schools; [education,college_university,engineering_schools] -law_schools; [education,college_university,law_schools] -medical_sciences_schools; [education,college_university,medical_sciences_schools] -dentistry_schools; [education,college_university,medical_sciences_schools,dentistry_schools] -pharmacy_schools; [education,college_university,medical_sciences_schools,pharmacy_schools] -veterinary_schools; [education,college_university,medical_sciences_schools,veterinary_schools] -science_schools; [education,college_university,science_schools] -educational_research_institute; [education,educational_research_institute] -educational_services; [education,educational_services] -archaeological_services; [education,educational_services,archaeological_services] -educational_camp; [education,educational_camp] -private_tutor; [education,private_tutor] -school; [education,school] -charter_school; [education,school,charter_school] -elementary_school; [education,school,elementary_school] -high_school; [education,school,high_school] -middle_school; [education,school,middle_school] -montessori_school; [education,school,montessori_school] -preschool; [education,school,preschool] -private_school; [education,school,private_school] -public_school; [education,school,public_school] -religious_school; [education,school,religious_school] -waldorf_school; [education,school,waldorf_school] -school_district_offices; [education,school_district_offices] -specialty_school; [education,specialty_school] -art_school; [education,specialty_school,art_school] -bartending_school; [education,specialty_school,bartending_school] -cheerleading; [education,specialty_school,cheerleading] -childbirth_education; [education,specialty_school,childbirth_education] -circus_school; [education,specialty_school,circus_school] -computer_coaching; [education,specialty_school,computer_coaching] -cooking_school; [education,specialty_school,cooking_school] -cosmetology_school; [education,specialty_school,cosmetology_school] -cpr_classes; [education,specialty_school,cpr_classes] -drama_school; [education,specialty_school,drama_school] -driving_school; [education,specialty_school,driving_school] -dui_school; [education,specialty_school,dui_school] -firearm_training; [education,specialty_school,firearm_training] -first_aid_class; [education,specialty_school,first_aid_class] -flight_school; [education,specialty_school,flight_school] -food_safety_training; [education,specialty_school,food_safety_training] -language_school; [education,specialty_school,language_school] -massage_school; [education,specialty_school,massage_school] -medical_school; [education,specialty_school,medical_school] -music_school; [education,specialty_school,music_school] -nursing_school; [education,specialty_school,nursing_school] -parenting_classes; [education,specialty_school,parenting_classes] -photography_classes; [education,specialty_school,photography_classes] -speech_training; [education,specialty_school,speech_training] -sports_school; [education,specialty_school,sports_school] -traffic_school; [education,specialty_school,traffic_school] -vocational_and_technical_school; [education,specialty_school,vocational_and_technical_school] -student_union; [education,student_union] -tasting_classes; [education,tasting_classes] -cheese_tasting_classes; [education,tasting_classes,cheese_tasting_classes] -wine_tasting_classes; [education,tasting_classes,wine_tasting_classes] -test_preparation; [education,test_preparation] -tutoring_center; [education,tutoring_center] -civil_examinations_academy; [education,tutoring_center,civil_examinations_academy] -financial_service; [financial_service] -accountant; [financial_service,accountant] -atms; [financial_service,atms] -bank_credit_union; [financial_service,bank_credit_union] -banks; [financial_service,bank_credit_union,banks] -credit_union; [financial_service,bank_credit_union,credit_union] -brokers; [financial_service,brokers] -business_brokers; [financial_service,brokers,business_brokers] -stock_and_bond_brokers; [financial_service,brokers,stock_and_bond_brokers] -business_banking_service; [financial_service,business_banking_service] -business_financing; [financial_service,business_financing] -check_cashing_payday_loans; [financial_service,check_cashing_payday_loans] -coin_dealers; [financial_service,coin_dealers] -collection_agencies; [financial_service,collection_agencies] -credit_and_debt_counseling; [financial_service,credit_and_debt_counseling] -currency_exchange; [financial_service,currency_exchange] -debt_relief_services; [financial_service,debt_relief_services] -financial_advising; [financial_service,financial_advising] -holding_companies; [financial_service,holding_companies] -investment_management_company; [financial_service,investment_management_company] -installment_loans; [financial_service,installment_loans] -mortgage_lender; [financial_service,installment_loans,mortgage_lender] -auto_loan_provider; [financial_service,installment_loans,auto_loan_provider] -insurance_agency; [financial_service,insurance_agency] -auto_insurance; [financial_service,insurance_agency,auto_insurance] -farm_insurance; [financial_service,insurance_agency,farm_insurance] -fidelity_and_surety_bonds; [financial_service,insurance_agency,fidelity_and_surety_bonds] -home_and_rental_insurance; [financial_service,insurance_agency,home_and_rental_insurance] -life_insurance; [financial_service,insurance_agency,life_insurance] -investing; [financial_service,investing] -money_transfer_services; [financial_service,money_transfer_services] -tax_services; [financial_service,tax_services] -trusts; [financial_service,trusts] -private_establishments_and_corporates; [private_establishments_and_corporates] -corporate_entertainment_services; [private_establishments_and_corporates,corporate_entertainment_services] -corporate_gift_supplier; [private_establishments_and_corporates,corporate_gift_supplier] -corporate_office; [private_establishments_and_corporates,corporate_office] -private_equity_firm; [private_establishments_and_corporates,private_equity_firm] -retail; [retail] -food; [retail,food] -back_shop; [retail,food,back_shop] -bagel_shop; [retail,food,bagel_shop] -bakery; [retail,food,bakery] -flatbread; [retail,food,bakery,flatbread] -beer_wine_and_spirits; [retail,food,beer_wine_and_spirits] -box_lunch_supplier; [retail,food,box_lunch_supplier] -patisserie_cake_shop; [retail,food,patisserie_cake_shop] -chimney_cake_shop; [retail,food,patisserie_cake_shop,chimney_cake_shop] -cupcake_shop; [retail,food,patisserie_cake_shop,cupcake_shop] -custom_cakes_shop; [retail,food,patisserie_cake_shop,custom_cakes_shop] -coffee_and_tea_supplies; [retail,food,coffee_and_tea_supplies] -csa_farm; [retail,food,csa_farm] -desserts; [retail,food,desserts] -donuts; [retail,food,donuts] -fishmonger; [retail,food,fishmonger] -food_delivery_service; [retail,food,food_delivery_service] -food_stand; [retail,food,food_stand] -food_truck; [retail,food,food_truck] -friterie; [retail,food,friterie] -health_food_store; [retail,food,health_food_store] -ice_cream_and_frozen_yoghurt; [retail,food,ice_cream_and_frozen_yoghurt] -gelato; [retail,food,ice_cream_and_frozen_yoghurt,gelato] -ice_cream_shop; [retail,food,ice_cream_and_frozen_yoghurt,ice_cream_shop] -frozen_yoghurt_shop; [retail,food,ice_cream_and_frozen_yoghurt,frozen_yoghurt_shop] -shaved_ice_shop; [retail,food,ice_cream_and_frozen_yoghurt,shaved_ice_shop] -shaved_snow_shop; [retail,food,ice_cream_and_frozen_yoghurt,shaved_snow_shop] -imported_food; [retail,food,imported_food] -kiosk; [retail,food,kiosk] -liquor_store; [retail,food,liquor_store] -mulled_wine; [retail,food,mulled_wine] -pie_shop; [retail,food,pie_shop] -pretzels; [retail,food,pretzels] -sandwich_shop; [retail,food,sandwich_shop] -smokehouse; [retail,food,smokehouse] -street_vendor; [retail,food,street_vendor] -pizza_delivery_service; [retail,food,food_delivery_service,pizza_delivery_service] -specialty_foods; [retail,food,specialty_foods] -delicatessen; [retail,food,specialty_foods,delicatessen] -frozen_foods; [retail,food,specialty_foods,frozen_foods] -indian_sweets_shop; [retail,food,specialty_foods,indian_sweets_shop] -macarons; [retail,food,specialty_foods,macarons] -pasta_shop; [retail,food,specialty_foods,pasta_shop] -winery; [retail,food,winery] -wine_tasting_room; [retail,food,winery,wine_tasting_room] -auto_parts_and_supply_store; [retail,auto_parts_and_supply_store] -beverage_store; [retail,beverage_store] -boat_parts_and_supply_store; [retail,boat_parts_and_supply_store] -butcher_shop; [retail,food,butcher_shop] -candy_store; [retail,food,candy_store] -japanese_confectionery_shop; [retail,food,candy_store,japanese_confectionery_shop] -carpet_store; [retail,carpet_store] -cheese_shop; [retail,food,cheese_shop] -chocolatier; [retail,food,chocolatier] -distillery; [retail,distillery] -drugstore; [retail,drugstore] -flooring_store; [retail,flooring_store] -fruits_and_vegetables; [retail,food,fruits_and_vegetables] -health_market; [retail,health_market] -hearing_aid_provider; [retail,hearing_aid_provider] -herb_and_spice_shop; [retail,herb_and_spice_shop] -honey_farm_shop; [retail,honey_farm_shop] -meat_shop; [retail,meat_shop] -olive_oil; [retail,olive_oil] -party_supply; [retail,party_supply] -pharmacy; [retail,pharmacy] -popcorn_shop; [retail,popcorn_shop] -seafood_market; [retail,seafood_market] -water_store; [retail,water_store] -shopping; [retail,shopping] -arts_and_crafts; [retail,shopping,arts_and_crafts] -art_supply_store; [retail,shopping,arts_and_crafts,art_supply_store] -atelier; [retail,shopping,arts_and_crafts,atelier] -cooking_classes; [retail,shopping,arts_and_crafts,cooking_classes] -costume_store; [retail,shopping,arts_and_crafts,costume_store] -craft_shop; [retail,shopping,arts_and_crafts,craft_shop] -embroidery_and_crochet; [retail,shopping,arts_and_crafts,embroidery_and_crochet] -fabric_store; [retail,shopping,arts_and_crafts,fabric_store] -framing_store; [retail,shopping,arts_and_crafts,framing_store] -handicraft_shop; [retail,shopping,arts_and_crafts,handicraft_shop] -paint_your_own_pottery; [retail,shopping,arts_and_crafts,paint_your_own_pottery] -books_mags_music_and_video; [retail,shopping,books_mags_music_and_video] -bookstore; [retail,shopping,books_mags_music_and_video,bookstore] -academic_bookstore; [retail,shopping,books_mags_music_and_video,academic_bookstore] -comic_books_store; [retail,shopping,books_mags_music_and_video,comic_books_store] -music_and_dvd_store; [retail,shopping,books_mags_music_and_video,music_and_dvd_store] -newspaper_and_magazines_store; [retail,shopping,books_mags_music_and_video,newspaper_and_magazines_store] -video_and_video_game_rentals; [retail,shopping,books_mags_music_and_video,video_and_video_game_rentals] -video_game_store; [retail,shopping,books_mags_music_and_video,video_game_store] -vinyl_record_store; [retail,shopping,books_mags_music_and_video,vinyl_record_store] -building_supply_store; [retail,shopping,building_supply_store] -lumber_store; [retail,shopping,building_supply_store,lumber_store] -fashion; [retail,shopping,fashion] -clothing_store; [retail,shopping,fashion,clothing_store] -ceremonial_clothing; [retail,shopping,fashion,clothing_store,ceremonial_clothing] -childrens_clothing_store; [retail,shopping,fashion,clothing_store,childrens_clothing_store] -clothing_rental; [retail,shopping,fashion,clothing_store,clothing_rental] -denim_wear_store; [retail,shopping,fashion,clothing_store,denim_wear_store] -designer_clothing; [retail,shopping,fashion,clothing_store,designer_clothing] -formal_wear_store; [retail,shopping,fashion,clothing_store,formal_wear_store] -fur_clothing; [retail,shopping,fashion,clothing_store,fur_clothing] -lingerie_store; [retail,shopping,fashion,clothing_store,lingerie_store] -maternity_wear; [retail,shopping,fashion,clothing_store,maternity_wear] -mens_clothing_store; [retail,shopping,fashion,clothing_store,mens_clothing_store] -t_shirt_store; [retail,shopping,fashion,clothing_store,t_shirt_store] -custom_t_shirt_store; [retail,shopping,fashion,clothing_store,t_shirt_store] -traditional_clothing; [retail,shopping,fashion,clothing_store,traditional_clothing] -womens_clothing_store; [retail,shopping,fashion,clothing_store,womens_clothing_store] -fashion_accessories_store; [retail,shopping,fashion,fashion_accessories_store] -hat_shop; [retail,shopping,fashion,hat_shop] -leather_goods; [retail,shopping,fashion,leather_goods] -plus_size_clothing; [retail,shopping,fashion,plus_size_clothing] -saree_shop; [retail,shopping,fashion,saree_shop] -sleepwear; [retail,shopping,fashion,sleepwear] -stocking; [retail,shopping,fashion,stocking] -used_vintage_and_consignment; [retail,shopping,fashion,used_vintage_and_consignment] -handbag_stores; [retail,shopping,fashion,fashion_accessories_store,handbag_stores] -shoe_store; [retail,shopping,fashion,shoe_store] -orthopedic_shoe_store; [retail,shopping,fashion,shoe_store,orthopedic_shoe_store] -cosmetic_and_beauty_supplies; [retail,shopping,cosmetic_and_beauty_supplies] -hair_supply_stores; [retail,shopping,cosmetic_and_beauty_supplies,hair_supply_stores] -eyewear_and_optician; [retail,shopping,eyewear_and_optician] -sunglasses_store; [retail,shopping,eyewear_and_optician,sunglasses_store] -farming_equipment_store; [retail,shopping,farming_equipment_store] -forklift_dealer; [retail,shopping,farming_equipment_store,forklift_dealer] -flowers_and_gifts_shop; [retail,shopping,flowers_and_gifts_shop] -florist; [retail,shopping,flowers_and_gifts_shop,florist] -gift_shop; [retail,shopping,flowers_and_gifts_shop,gift_shop] -grocery_store; [retail,shopping,grocery_store] -specialty_grocery_store; [retail,shopping,grocery_store,specialty_grocery_store] -asian_grocery_store; [retail,shopping,grocery_store,asian_grocery_store] -dairy_stores; [retail,shopping,grocery_store,dairy_stores] -ethical_grocery; [retail,shopping,grocery_store,ethical_grocery] -indian_grocery_store; [retail,shopping,grocery_store,indian_grocery_store] -japanese_grocery_store; [retail,shopping,grocery_store,japanese_grocery_store] -korean_grocery_store; [retail,shopping,grocery_store,korean_grocery_store] -kosher_grocery_store; [retail,shopping,grocery_store,kosher_grocery_store] -mexican_grocery_store; [retail,shopping,grocery_store,mexican_grocery_store] -organic_grocery_store; [retail,shopping,grocery_store,organic_grocery_store] -rice_shop; [retail,shopping,grocery_store,rice_shop] -russian_grocery_store; [retail,shopping,grocery_store,russian_grocery_store] -home_and_garden; [retail,shopping,home_and_garden] -hardware_store; [retail,shopping,home_and_garden,hardware_store] -welding_supply_store; [retail,shopping,home_and_garden,hardware_store,welding_supply_store] -appliance_store; [retail,shopping,home_and_garden,appliance_store] -bedding_and_bath_stores; [retail,shopping,home_and_garden,bedding_and_bath_stores] -candle_store; [retail,shopping,home_and_garden,candle_store] -christmas_trees; [retail,shopping,home_and_garden,christmas_trees] -electrical_supply_store; [retail,shopping,home_and_garden,electrical_supply_store] -furniture_accessory_store; [retail,shopping,home_and_garden,furniture_accessory_store] -furniture_store; [retail,shopping,home_and_garden,furniture_store] -grilling_equipment; [retail,shopping,home_and_garden,grilling_equipment] -holiday_decor; [retail,shopping,home_and_garden,holiday_decor] -home_decor; [retail,shopping,home_and_garden,home_decor] -home_goods_store; [retail,shopping,home_and_garden,home_goods_store] -home_improvement_store; [retail,shopping,home_and_garden,home_improvement_store] -hot_tubs_and_pools; [retail,shopping,home_and_garden,hot_tubs_and_pools] -lawn_mower_store; [retail,shopping,home_and_garden,lawn_mower_store] -lighting_store; [retail,shopping,home_and_garden,lighting_store] -linen; [retail,shopping,home_and_garden,linen] -mattress_store; [retail,shopping,home_and_garden,mattress_store] -nursery_and_gardening; [retail,shopping,home_and_garden,nursery_and_gardening] -outdoor_furniture_store; [retail,shopping,home_and_garden,outdoor_furniture_store] -paint_store; [retail,shopping,home_and_garden,paint_store] -playground_equipment_supplier; [retail,shopping,home_and_garden,playground_equipment_supplier] -pumpkin_patch; [retail,shopping,home_and_garden,pumpkin_patch] -rug_store; [retail,shopping,home_and_garden,rug_store] -tableware_supplier; [retail,shopping,home_and_garden,tableware_supplier] -tile_store; [retail,shopping,home_and_garden,tile_store] -wallpaper_store; [retail,shopping,home_and_garden,wallpaper_store] -window_treatment_store; [retail,shopping,home_and_garden,window_treatment_store] -woodworking_supply_store; [retail,shopping,home_and_garden,woodworking_supply_store] -kitchen_and_bath; [retail,shopping,home_and_garden,kitchen_and_bath] -bathroom_fixture_stores; [retail,shopping,home_and_garden,kitchen_and_bath,bathroom_fixture_stores] -kitchen_supply_store; [retail,shopping,home_and_garden,kitchen_and_bath,kitchen_supply_store] -hydroponic_gardening; [retail,shopping,home_and_garden,nursery_and_gardening,hydroponic_gardening] -medical_supply; [retail,shopping,medical_supply] -dental_supply_store; [retail,shopping,medical_supply,dental_supply_store] -hearing_aids; [retail,shopping,medical_supply,hearing_aids] -pet_store; [retail,shopping,pet_store] -bird_shop; [retail,shopping,pet_store,bird_shop] -aquatic_pet_store; [retail,shopping,pet_store,aquatic_pet_store] -reptile_shop; [retail,shopping,pet_store,reptile_shop] -adult_store; [retail,shopping,adult_store] -agricultural_seed_store; [retail,shopping,agricultural_seed_store] -antique_store; [retail,shopping,antique_store] -army_and_navy_store; [retail,shopping,army_and_navy_store] -auction_house; [retail,shopping,auction_house] -car_auction; [retail,shopping,auction_house,car_auction] -baby_gear_and_furniture; [retail,shopping,baby_gear_and_furniture] -battery_store; [retail,shopping,battery_store] -bazaars; [retail,shopping,bazaars] -boutique; [retail,shopping,boutique] -brewing_supply_store; [retail,shopping,brewing_supply_store] -bridal_shop; [retail,shopping,bridal_shop] -cannabis_dispensary; [retail,shopping,cannabis_dispensary] -cards_and_stationery_store; [retail,shopping,cards_and_stationery_store] -computer_store; [retail,shopping,computer_store] -concept_shop; [retail,shopping,concept_shop] -convenience_store; [retail,shopping,convenience_store] -custom_clothing; [retail,shopping,custom_clothing] -customized_merchandise; [retail,shopping,customized_merchandise] -department_store; [retail,shopping,department_store] -discount_store; [retail,shopping,discount_store] -do_it_yourself_store; [retail,shopping,do_it_yourself_store] -drone_store; [retail,shopping,drone_store] -duty_free_shop; [retail,shopping,duty_free_shop] -educational_supply_store; [retail,shopping,educational_supply_store] -electronics; [retail,shopping,electronics] -farmers_market; [retail,shopping,farmers_market] -firework_retailer; [retail,shopping,firework_retailer] -fitness_exercise_equipment; [retail,shopping,fitness_exercise_equipment] -flea_market; [retail,shopping,flea_market] -flower_markets; [retail,shopping,flower_markets] -gemstone_and_mineral; [retail,shopping,gemstone_and_mineral] -gold_buyer; [retail,shopping,gold_buyer] -guitar_store; [retail,shopping,guitar_store] -gun_and_ammo; [retail,shopping,gun_and_ammo] -herbal_shop; [retail,shopping,herbal_shop] -audio_visual_equipment_store; [retail,shopping,audio_visual_equipment_store] -hobby_shop; [retail,shopping,hobby_shop] -home_theater_systems_stores; [retail,shopping,home_theater_systems_stores] -horse_equipment_shop; [retail,shopping,horse_equipment_shop] -international_grocery_store; [retail,shopping,international_grocery_store] -jewelry_store; [retail,shopping,jewelry_store] -knitting_supply; [retail,shopping,knitting_supply] -livestock_feed_and_supply_store; [retail,shopping,livestock_feed_and_supply_store] -luggage_store; [retail,shopping,luggage_store] -market_stall; [retail,shopping,market_stall] -military_surplus_store; [retail,shopping,military_surplus_store] -mobile_phone_accessories; [retail,shopping,mobile_phone_accessories] -mobile_phone_store; [retail,shopping,mobile_phone_store] -musical_instrument_store; [retail,shopping,musical_instrument_store] -night_market; [retail,shopping,night_market] -office_equipment; [retail,shopping,office_equipment] -online_shop; [retail,shopping,online_shop] -outlet_store; [retail,shopping,outlet_store] -packing_supply; [retail,shopping,packing_supply] -pawn_shop; [retail,shopping,pawn_shop] -pen_store; [retail,shopping,pen_store] -perfume_store; [retail,shopping,perfume_store] -personal_shopper; [retail,shopping,personal_shopper] -photography_store_and_services; [retail,shopping,photography_store_and_services] -piano_store; [retail,shopping,piano_store] -pool_and_billiards; [retail,shopping,pool_and_billiards] -pop_up_shop; [retail,shopping,pop_up_shop] -props; [retail,shopping,props] -public_market; [retail,shopping,public_market] -religious_items; [retail,shopping,religious_items] -rental_kiosks; [retail,shopping,rental_kiosks] -safe_store; [retail,shopping,safe_store] -safety_equipment; [retail,shopping,safety_equipment] -shopping_center; [retail,shopping,shopping_center] -shopping_passage; [retail,shopping,shopping_passage] -souvenir_shop; [retail,shopping,souvenir_shop] -spiritual_shop; [retail,shopping,spiritual_shop] -supermarket; [retail,shopping,supermarket] -superstore; [retail,shopping,superstore] -tabletop_games; [retail,shopping,tabletop_games] -thrift_store; [retail,shopping,thrift_store] -tobacco_shop; [retail,shopping,tobacco_shop] -toy_store; [retail,shopping,toy_store] -trophy_shop; [retail,shopping,trophy_shop] -uniform_store; [retail,shopping,uniform_store] -used_bookstore; [retail,shopping,used_bookstore] -e_cigarette_store; [retail,shopping,e_cigarette_store] -vitamins_and_supplements; [retail,shopping,vitamins_and_supplements] -watch_store; [retail,shopping,watch_store] -wholesale_store; [retail,shopping,wholesale_store] -wig_store; [retail,shopping,wig_store] -sporting_goods; [retail,shopping,sporting_goods] -archery_shop; [retail,shopping,sporting_goods,archery_shop] -bicycle_shop; [retail,shopping,sporting_goods,bicycle_shop] -dive_shop; [retail,shopping,sporting_goods,dive_shop] -golf_equipment; [retail,shopping,sporting_goods,golf_equipment] -hockey_equipment; [retail,shopping,sporting_goods,hockey_equipment] -hunting_and_fishing_supplies; [retail,shopping,sporting_goods,hunting_and_fishing_supplies] -outdoor_gear; [retail,shopping,sporting_goods,outdoor_gear] -skate_shop; [retail,shopping,sporting_goods,skate_shop] -ski_and_snowboard_shop; [retail,shopping,sporting_goods,ski_and_snowboard_shop] -sports_wear; [retail,shopping,sporting_goods,sports_wear] -dance_wear; [retail,shopping,sporting_goods,sports_wear,dance_wear] -surf_shop; [retail,shopping,sporting_goods,surf_shop] -swimwear_store; [retail,shopping,sporting_goods,swimwear_store] -tire_shop; [retail,tire_shop] -tire_repair_shop; [retail,tire_shop,tire_repair_shop] -health_and_medical; [health_and_medical] -abuse_and_addiction_treatment; [health_and_medical,abuse_and_addiction_treatment] -alcohol_and_drug_treatment_centers; [health_and_medical,abuse_and_addiction_treatment,alcohol_and_drug_treatment_centers] -crisis_intervention_services; [health_and_medical,abuse_and_addiction_treatment,crisis_intervention_services] -eating_disorder_treatment_centers; [health_and_medical,abuse_and_addiction_treatment,eating_disorder_treatment_centers] -counseling_and_mental_health; [health_and_medical,counseling_and_mental_health] -family_counselor; [health_and_medical,counseling_and_mental_health,family_counselor] -marriage_or_relationship_counselor; [health_and_medical,counseling_and_mental_health,marriage_or_relationship_counselor] -psychoanalyst; [health_and_medical,counseling_and_mental_health,psychoanalyst] -psychologist; [health_and_medical,counseling_and_mental_health,psychologist] -psychotherapist; [health_and_medical,counseling_and_mental_health,psychotherapist] -sex_therapist; [health_and_medical,counseling_and_mental_health,sex_therapist] -sophrologist; [health_and_medical,counseling_and_mental_health,sophrologist] -sports_psychologist; [health_and_medical,counseling_and_mental_health,sports_psychologist] -stress_management_services; [health_and_medical,counseling_and_mental_health,stress_management_services] -suicide_prevention_services; [health_and_medical,counseling_and_mental_health,suicide_prevention_services] -dental_hygienist; [health_and_medical,dental_hygienist] -mobile_clinic; [health_and_medical,dental_hygienist,mobile_clinic] -storefront_clinic; [health_and_medical,dental_hygienist,storefront_clinic] -dentist; [health_and_medical,dentist] -cosmetic_dentist; [health_and_medical,dentist,cosmetic_dentist] -endodontist; [health_and_medical,dentist,endodontist] -general_dentistry; [health_and_medical,dentist,general_dentistry] -oral_surgeon; [health_and_medical,dentist,oral_surgeon] -orthodontist; [health_and_medical,dentist,orthodontist] -pediatric_dentist; [health_and_medical,dentist,pediatric_dentist] -periodontist; [health_and_medical,dentist,periodontist] -diagnostic_services; [health_and_medical,diagnostic_services] -diagnostic_imaging; [health_and_medical,diagnostic_services,diagnostic_imaging] -laboratory_testing; [health_and_medical,diagnostic_services,laboratory_testing] -doctor; [health_and_medical,doctor] -allergist; [health_and_medical,doctor,allergist] -anesthesiologist; [health_and_medical,doctor,anesthesiologist] -audiologist; [health_and_medical,doctor,audiologist] -cardiologist; [health_and_medical,doctor,cardiologist] -cosmetic_surgeon; [health_and_medical,doctor,cosmetic_surgeon] -dermatologist; [health_and_medical,doctor,dermatologist] -ear_nose_and_throat; [health_and_medical,doctor,ear_nose_and_throat] -emergency_medicine; [health_and_medical,doctor,emergency_medicine] -endocrinologist; [health_and_medical,doctor,endocrinologist] -endoscopist; [health_and_medical,doctor,endoscopist] -family_practice; [health_and_medical,doctor,family_practice] -fertility; [health_and_medical,doctor,fertility] -gastroenterologist; [health_and_medical,doctor,gastroenterologist] -geneticist; [health_and_medical,doctor,geneticist] -gerontologist; [health_and_medical,doctor,gerontologist] -hepatologist; [health_and_medical,doctor,hepatologist] -homeopathic_medicine; [health_and_medical,doctor,homeopathic_medicine] -hospitalist; [health_and_medical,doctor,hospitalist] -immunodermatologist; [health_and_medical,doctor,immunodermatologist] -infectious_disease_specialist; [health_and_medical,doctor,infectious_disease_specialist] -naturopathic_holistic; [health_and_medical,doctor,naturopathic_holistic] -nephrologist; [health_and_medical,doctor,nephrologist] -neurologist; [health_and_medical,doctor,neurologist] -neurotologist; [health_and_medical,doctor,neurotologist] -neuropathologist; [health_and_medical,doctor,neuropathologist] -obstetrician_and_gynecologist; [health_and_medical,doctor,obstetrician_and_gynecologist] -oncologist; [health_and_medical,doctor,oncologist] -orthopedist; [health_and_medical,doctor,orthopedist] -osteopathic_physician; [health_and_medical,doctor,osteopathic_physician] -otologist; [health_and_medical,doctor,otologist] -pain_management; [health_and_medical,doctor,pain_management] -pathologist; [health_and_medical,doctor,pathologist] -phlebologist; [health_and_medical,doctor,phlebologist] -physician_assistant; [health_and_medical,doctor,physician_assistant] -plastic_surgeon; [health_and_medical,doctor,plastic_surgeon] -podiatrist; [health_and_medical,doctor,podiatrist] -preventive_medicine; [health_and_medical,doctor,preventive_medicine] -proctologist; [health_and_medical,doctor,proctologist] -pulmonologist; [health_and_medical,doctor,pulmonologist] -radiologist; [health_and_medical,doctor,radiologist] -rheumatologist; [health_and_medical,doctor,rheumatologist] -spine_surgeon; [health_and_medical,doctor,spine_surgeon] -sports_medicine; [health_and_medical,doctor,sports_medicine] -tattoo_removal; [health_and_medical,doctor,tattoo_removal] -toxicologist; [health_and_medical,doctor,toxicologist] -tropical_medicine; [health_and_medical,doctor,tropical_medicine] -undersea_hyperbaric_medicine; [health_and_medical,doctor,undersea_hyperbaric_medicine] -urologist; [health_and_medical,doctor,urologist] -vascular_medicine; [health_and_medical,doctor,vascular_medicine] -geriatric_medicine; [health_and_medical,doctor,geriatric_medicine] -geriatric_psychiatry; [health_and_medical,doctor,geriatric_medicine,geriatric_psychiatry] -abortion_clinic; [health_and_medical,abortion_clinic] -acupuncture; [health_and_medical,acupuncture] -aesthetician; [health_and_medical,aesthetician] -alcohol_and_drug_treatment_center; [health_and_medical,alcohol_and_drug_treatment_center] -alternative_medicine; [health_and_medical,alternative_medicine] -ambulance_and_ems_services; [health_and_medical,ambulance_and_ems_services] -animal_assisted_therapy; [health_and_medical,animal_assisted_therapy] -assisted_living_facility; [health_and_medical,assisted_living_facility] -ayurveda; [health_and_medical,ayurveda] -behavior_analyst; [health_and_medical,behavior_analyst] -blood_and_plasma_donation_center; [health_and_medical,blood_and_plasma_donation_center] -body_contouring; [health_and_medical,body_contouring] -cancer_treatment_center; [health_and_medical,cancer_treatment_center] -cannabis_clinic; [health_and_medical,cannabis_clinic] -cannabis_collective; [health_and_medical,cannabis_collective] -childrens_hospital; [health_and_medical,childrens_hospital] -chiropractor; [health_and_medical,chiropractor] -colonics; [health_and_medical,colonics] -community_health_center; [health_and_medical,community_health_center] -concierge_medicine; [health_and_medical,concierge_medicine] -cryotherapy; [health_and_medical,cryotherapy] -dialysis_clinic; [health_and_medical,dialysis_clinic] -dietitian; [health_and_medical,dietitian] -doula; [health_and_medical,doula] -emergency_room; [health_and_medical,emergency_room] -environmental_medicine; [health_and_medical,environmental_medicine] -eye_care_clinic; [health_and_medical,eye_care_clinic] -float_spa; [health_and_medical,float_spa] -halfway_house; [health_and_medical,halfway_house] -halotherapy; [health_and_medical,halotherapy] -health_and_wellness_club; [health_and_medical,health_and_wellness_club] -health_coach; [health_and_medical,health_coach] -health_department; [health_and_medical,health_department] -health_insurance_office; [health_and_medical,health_insurance_office] -hospice; [health_and_medical,hospice] -hospital; [health_and_medical,hospital] -hydrotherapy; [health_and_medical,hydrotherapy] -hypnosis_hypnotherapy; [health_and_medical,hypnosis_hypnotherapy] -iv_hydration; [health_and_medical,iv_hydration] -lactation_services; [health_and_medical,lactation_services] -laser_eye_surgery_lasik; [health_and_medical,laser_eye_surgery_lasik] -lice_treatment; [health_and_medical,lice_treatment] -massage_therapy; [health_and_medical,massage_therapy] -maternity_centers; [health_and_medical,maternity_centers] -medical_cannabis_referral; [health_and_medical,medical_cannabis_referral] -medical_service_organizations; [health_and_medical,medical_service_organizations] -medical_transportation; [health_and_medical,medical_transportation] -memory_care; [health_and_medical,memory_care] -midwife; [health_and_medical,midwife] -nurse_practitioner; [health_and_medical,nurse_practitioner] -nutritionist; [health_and_medical,nutritionist] -occupational_medicine; [health_and_medical,occupational_medicine] -occupational_therapy; [health_and_medical,occupational_therapy] -optometrist; [health_and_medical,optometrist] -organ_and_tissue_donor_service; [health_and_medical,organ_and_tissue_donor_service] -orthotics; [health_and_medical,orthotics] -oxygen_bar; [health_and_medical,oxygen_bar] -paternity_tests_and_services; [health_and_medical,paternity_tests_and_services] -physical_therapy; [health_and_medical,physical_therapy] -placenta_encapsulation_service; [health_and_medical,placenta_encapsulation_service] -podiatry; [health_and_medical,podiatry] -prenatal_perinatal_care; [health_and_medical,prenatal_perinatal_care] -prosthetics; [health_and_medical,prosthetics] -prosthodontist; [health_and_medical,prosthodontist] -psychomotor_therapist; [health_and_medical,psychomotor_therapist] -public_health_clinic; [health_and_medical,public_health_clinic] -reflexology; [health_and_medical,reflexology] -reiki; [health_and_medical,reiki] -sauna; [health_and_medical,sauna] -skilled_nursing; [health_and_medical,skilled_nursing] -sleep_specialist; [health_and_medical,sleep_specialist] -speech_therapist; [health_and_medical,speech_therapist] -sperm_clinic; [health_and_medical,sperm_clinic] -surgical_center; [health_and_medical,surgical_center] -ultrasound_imaging_center; [health_and_medical,ultrasound_imaging_center] -urgent_care_clinic; [health_and_medical,urgent_care_clinic] -weight_loss_center; [health_and_medical,weight_loss_center] -wellness_program; [health_and_medical,wellness_program] -womens_health_clinic; [health_and_medical,womens_health_clinic] -internal_medicine; [health_and_medical,doctor,internal_medicine] -hematology; [health_and_medical,doctor,internal_medicine,hematology] -medical_center; [health_and_medical,medical_center] -bulk_billing; [health_and_medical,medical_center,bulk_billing] -osteopath; [health_and_medical,medical_center,osteopath] -walk_in_clinic; [health_and_medical,medical_center,walk_in_clinic] -ophthalmologist; [health_and_medical,doctor,ophthalmologist] -retina_specialist; [health_and_medical,doctor,ophthalmologist,retina_specialist] -pediatrician; [health_and_medical,doctor,pediatrician] -pediatric_anesthesiology; [health_and_medical,doctor,pediatrician,pediatric_anesthesiology] -pediatric_cardiology; [health_and_medical,doctor,pediatrician,pediatric_cardiology] -pediatric_endocrinology; [health_and_medical,doctor,pediatrician,pediatric_endocrinology] -pediatric_gastroenterology; [health_and_medical,doctor,pediatrician,pediatric_gastroenterology] -pediatric_infectious_disease; [health_and_medical,doctor,pediatrician,pediatric_infectious_disease] -pediatric_nephrology; [health_and_medical,doctor,pediatrician,pediatric_nephrology] -pediatric_neurology; [health_and_medical,doctor,pediatrician,pediatric_neurology] -pediatric_oncology; [health_and_medical,doctor,pediatrician,pediatric_oncology] -pediatric_orthopedic_surgery; [health_and_medical,doctor,pediatrician,pediatric_orthopedic_surgery] -pediatric_pulmonology; [health_and_medical,doctor,pediatrician,pediatric_pulmonology] -pediatric_radiology; [health_and_medical,doctor,pediatrician,pediatric_radiology] -pediatric_surgery; [health_and_medical,doctor,pediatrician,pediatric_surgery] -personal_care_service; [health_and_medical,personal_care_service] -home_health_care; [health_and_medical,personal_care_service,home_health_care] -psychiatrist; [health_and_medical,doctor,psychiatrist] -child_psychiatrist; [health_and_medical,doctor,psychiatrist,child_psychiatrist] -rehabilitation_center; [health_and_medical,rehabilitation_center] -addiction_rehabilitation_center; [health_and_medical,rehabilitation_center,addiction_rehabilitation_center] -surgeon; [health_and_medical,doctor,surgeon] -cardiovascular_and_thoracic_surgeon; [health_and_medical,doctor,surgeon,cardiovascular_and_thoracic_surgeon] -traditional_chinese_medicine; [health_and_medical,traditional_chinese_medicine] -tui_na; [health_and_medical,traditional_chinese_medicine,tui_na] -pets; [pets] -pet_services; [pets,pet_services] -animal_hospital; [pets,pet_services,animal_hospital] -animal_physical_therapy; [pets,pet_services,animal_physical_therapy] -aquarium_services; [pets,pet_services,aquarium_services] -dog_walkers; [pets,pet_services,dog_walkers] -emergency_pet_hospital; [pets,pet_services,emergency_pet_hospital] -farrier_services; [pets,pet_services,farrier_services] -holistic_animal_care; [pets,pet_services,holistic_animal_care] -pet_breeder; [pets,pet_services,pet_breeder] -pet_cemetery_and_crematorium_services; [pets,pet_services,pet_cemetery_and_crematorium_services] -pet_groomer; [pets,pet_services,pet_groomer] -pet_hospice; [pets,pet_services,pet_hospice] -pet_insurance; [pets,pet_services,pet_insurance] -pet_photography; [pets,pet_services,pet_photography] -pet_sitting; [pets,pet_services,pet_sitting] -pet_transportation; [pets,pet_services,pet_transportation] -pet_waste_removal; [pets,pet_services,pet_waste_removal] -pet_boarding; [pets,pet_services,pet_sitting,pet_boarding] -pet_training; [pets,pet_services,pet_training] -dog_trainer; [pets,pet_services,pet_training,dog_trainer] -horse_trainer; [pets,pet_services,pet_training,horse_trainer] -animal_rescue_service; [pets,animal_rescue_service] -animal_shelter; [pets,animal_shelter] -horse_boarding; [pets,horse_boarding] -pet_adoption; [pets,pet_adoption] -veterinarian; [pets,veterinarian] -business_to_business; [business_to_business] -business; [business_to_business,business] -travel_company; [business_to_business,business,travel_company] -ferry_boat_company; [business_to_business,business,ferry_boat_company] -airline; [business_to_business,business,airline] -food_beverage_service_distribution; [business_to_business,business,food_beverage_service_distribution] -bottled_water_company; [business_to_business,business,bottled_water_company] -tobacco_company; [business_to_business,business,tobacco_company] -clothing_company; [business_to_business,business,clothing_company] -bags_luggage_company; [business_to_business,business,bags_luggage_company] -hotel_supply_service; [business_to_business,business,hotel_supply_service] -commercial_industrial; [business_to_business,commercial_industrial] -inventory_control_service; [business_to_business,commercial_industrial,inventory_control_service] -industrial_company; [business_to_business,commercial_industrial,industrial_company] -automation_services; [business_to_business,commercial_industrial,automation_services] -occupational_safety; [business_to_business,commercial_industrial,occupational_safety] -b2b_agriculture_and_food; [business_to_business,b2b_agriculture_and_food] -agricultural_service; [business_to_business,b2b_agriculture_and_food,agricultural_service] -agricultural_cooperatives; [business_to_business,b2b_agriculture_and_food,agricultural_cooperatives] -agriculture; [business_to_business,b2b_agriculture_and_food,agriculture] -agricultural_engineering_service; [business_to_business,b2b_agriculture_and_food,agricultural_engineering_service] -apiaries_and_beekeepers; [business_to_business,b2b_agriculture_and_food,apiaries_and_beekeepers] -b2b_dairies; [business_to_business,b2b_agriculture_and_food,b2b_dairies] -b2b_food_products; [business_to_business,b2b_agriculture_and_food,b2b_food_products] -fish_farms_and_hatcheries; [business_to_business,b2b_agriculture_and_food,fish_farms_and_hatcheries] -fish_farm; [business_to_business,b2b_agriculture_and_food,fish_farms_and_hatcheries,fish_farm] -livestock_breeder; [business_to_business,b2b_agriculture_and_food,livestock_breeder] -livestock_dealers; [business_to_business,b2b_agriculture_and_food,livestock_dealers] -poultry_farming; [business_to_business,b2b_agriculture_and_food,poultry_farming] -b2b_farming; [business_to_business,b2b_agriculture_and_food,b2b_farming] -b2b_farms; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms] -pig_farm; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms,pig_farm] -dairy_farm; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms,dairy_farm] -urban_farm; [business_to_business,b2b_agriculture_and_food,b2b_farming,b2b_farms,urban_farm] -farming_services; [business_to_business,b2b_agriculture_and_food,b2b_farming,farming_services] -farm_equipment_and_supply; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply] -fertilizer_store; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,fertilizer_store] -grain_elevators; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,grain_elevators] -greenhouses; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,greenhouses] -irrigation_companies; [business_to_business,b2b_agriculture_and_food,b2b_farming,farm_equipment_and_supply,irrigation_companies] -crops_production; [business_to_business,b2b_agriculture_and_food,crops_production] -grain_production; [business_to_business,b2b_agriculture_and_food,crops_production,grain_production] -orchards_production; [business_to_business,b2b_agriculture_and_food,crops_production,orchards_production] -business_manufacturing_and_supply; [business_to_business,business_manufacturing_and_supply] -mattress_manufacturing; [business_to_business,business_manufacturing_and_supply,mattress_manufacturing] -glass_manufacturer; [business_to_business,business_manufacturing_and_supply,glass_manufacturer] -appliance_manufacturer; [business_to_business,business_manufacturing_and_supply,appliance_manufacturer] -aircraft_manufacturer; [business_to_business,business_manufacturing_and_supply,aircraft_manufacturer] -b2b_autos_and_vehicles; [business_to_business,business_manufacturing_and_supply,b2b_autos_and_vehicles] -auto_manufacturers_and_distributors; [business_to_business,business_manufacturing_and_supply,b2b_autos_and_vehicles,auto_manufacturers_and_distributors] -b2b_tires; [business_to_business,business_manufacturing_and_supply,b2b_autos_and_vehicles,b2b_tires] -b2b_furniture_and_housewares; [business_to_business,business_manufacturing_and_supply,b2b_furniture_and_housewares] -furniture_manufacturers; [business_to_business,business_manufacturing_and_supply,b2b_furniture_and_housewares,furniture_manufacturers] -furniture_wholesalers; [business_to_business,business_manufacturing_and_supply,b2b_furniture_and_housewares,furniture_wholesalers] -b2b_machinery_and_tools; [business_to_business,business_manufacturing_and_supply,b2b_machinery_and_tools] -b2b_equipment_maintenance_and_repair; [business_to_business,business_manufacturing_and_supply,b2b_machinery_and_tools,b2b_equipment_maintenance_and_repair] -industrial_equipment; [business_to_business,business_manufacturing_and_supply,b2b_machinery_and_tools,industrial_equipment] -abrasives_supplier; [business_to_business,business_manufacturing_and_supply,abrasives_supplier] -aggregate_supplier; [business_to_business,business_manufacturing_and_supply,aggregate_supplier] -aluminum_supplier; [business_to_business,business_manufacturing_and_supply,aluminum_supplier] -b2b_apparel; [business_to_business,business_manufacturing_and_supply,b2b_apparel] -b2b_electronic_equipment; [business_to_business,business_manufacturing_and_supply,b2b_electronic_equipment] -b2b_hardware; [business_to_business,business_manufacturing_and_supply,b2b_hardware] -b2b_jewelers; [business_to_business,business_manufacturing_and_supply,b2b_jewelers] -b2b_rubber_and_plastics; [business_to_business,business_manufacturing_and_supply,b2b_rubber_and_plastics] -plastic_company; [business_to_business,business_manufacturing_and_supply,b2b_rubber_and_plastics,plastic_company] -plastic_manufacturer; [business_to_business,business_manufacturing_and_supply,b2b_rubber_and_plastics,plastic_manufacturer] -b2b_sporting_and_recreation_goods; [business_to_business,business_manufacturing_and_supply,b2b_sporting_and_recreation_goods] -b2b_textiles; [business_to_business,business_manufacturing_and_supply,b2b_textiles] -battery_inverter_supplier; [business_to_business,business_manufacturing_and_supply,battery_inverter_supplier] -bearing_supplier; [business_to_business,business_manufacturing_and_supply,bearing_supplier] -casting_molding_and_machining; [business_to_business,business_manufacturing_and_supply,casting_molding_and_machining] -cement_supplier; [business_to_business,business_manufacturing_and_supply,cement_supplier] -chemical_plant; [business_to_business,business_manufacturing_and_supply,chemical_plant] -cleaning_products_supplier; [business_to_business,business_manufacturing_and_supply,cleaning_products_supplier] -cosmetic_products_manufacturer; [business_to_business,business_manufacturing_and_supply,cosmetic_products_manufacturer] -drinking_water_dispenser; [business_to_business,business_manufacturing_and_supply,drinking_water_dispenser] -fastener_supplier; [business_to_business,business_manufacturing_and_supply,fastener_supplier] -granite_supplier; [business_to_business,business_manufacturing_and_supply,granite_supplier] -hvac_supplier; [business_to_business,business_manufacturing_and_supply,hvac_supplier] -jewelry_and_watches_manufacturer; [business_to_business,business_manufacturing_and_supply,jewelry_and_watches_manufacturer] -jewelry_manufacturer; [business_to_business,business_manufacturing_and_supply,jewelry_manufacturer] -leather_products_manufacturer; [business_to_business,business_manufacturing_and_supply,leather_products_manufacturer] -lighting_fixture_manufacturers; [business_to_business,business_manufacturing_and_supply,lighting_fixture_manufacturers] -pipe_supplier; [business_to_business,business_manufacturing_and_supply,pipe_supplier] -plastic_fabrication_company; [business_to_business,business_manufacturing_and_supply,plastic_fabrication_company] -plastic_injection_molding_workshop; [business_to_business,business_manufacturing_and_supply,plastic_injection_molding_workshop] -printing_equipment_and_supply; [business_to_business,business_manufacturing_and_supply,printing_equipment_and_supply] -retaining_wall_supplier; [business_to_business,business_manufacturing_and_supply,retaining_wall_supplier] -sand_and_gravel_supplier; [business_to_business,business_manufacturing_and_supply,sand_and_gravel_supplier] -scale_supplier; [business_to_business,business_manufacturing_and_supply,scale_supplier] -seal_and_hanko_dealers; [business_to_business,business_manufacturing_and_supply,seal_and_hanko_dealers] -shoe_factory; [business_to_business,business_manufacturing_and_supply,shoe_factory] -spring_supplier; [business_to_business,business_manufacturing_and_supply,spring_supplier] -stone_supplier; [business_to_business,business_manufacturing_and_supply,stone_supplier] -turnery; [business_to_business,business_manufacturing_and_supply,turnery] -window_supplier; [business_to_business,business_manufacturing_and_supply,window_supplier] -metals; [business_to_business,business_manufacturing_and_supply,metals] -metal_supplier; [business_to_business,business_manufacturing_and_supply,metals,metal_supplier] -metal_plating_service; [business_to_business,business_manufacturing_and_supply,metals,metal_plating_service] -metal_fabricator; [business_to_business,business_manufacturing_and_supply,metals,metal_fabricator] -iron_and_steel_industry; [business_to_business,business_manufacturing_and_supply,metals,metal_fabricator,iron_and_steel_industry] -iron_work; [business_to_business,business_manufacturing_and_supply,metals,metal_fabricator,iron_and_steel_industry,iron_work] -scrap_metals; [business_to_business,business_manufacturing_and_supply,metals,scrap_metals] -sheet_metal; [business_to_business,business_manufacturing_and_supply,metals,sheet_metal] -steel_fabricators; [business_to_business,business_manufacturing_and_supply,metals,steel_fabricators] -mills; [business_to_business,business_manufacturing_and_supply,mills] -cotton_mill; [business_to_business,business_manufacturing_and_supply,mills,cotton_mill] -flour_mill; [business_to_business,business_manufacturing_and_supply,mills,flour_mill] -paper_mill; [business_to_business,business_manufacturing_and_supply,mills,paper_mill] -rice_mill; [business_to_business,business_manufacturing_and_supply,mills,rice_mill] -saw_mill; [business_to_business,business_manufacturing_and_supply,mills,saw_mill] -textile_mill; [business_to_business,business_manufacturing_and_supply,mills,textile_mill] -weaving_mill; [business_to_business,business_manufacturing_and_supply,mills,weaving_mill] -wood_and_pulp; [business_to_business,business_manufacturing_and_supply,wood_and_pulp] -logging_equipment_and_supplies; [business_to_business,business_manufacturing_and_supply,wood_and_pulp,logging_equipment_and_supplies] -logging_services; [business_to_business,business_manufacturing_and_supply,wood_and_pulp,logging_services] -logging_contractor; [business_to_business,business_manufacturing_and_supply,wood_and_pulp,logging_contractor] -b2b_medical_support_services; [business_to_business,b2b_medical_support_services] -biotechnology_company; [business_to_business,b2b_medical_support_services,biotechnology_company] -clinical_laboratories; [business_to_business,b2b_medical_support_services,clinical_laboratories] -dental_laboratories; [business_to_business,b2b_medical_support_services,dental_laboratories] -hospital_equipment_and_supplies; [business_to_business,b2b_medical_support_services,hospital_equipment_and_supplies] -medical_research_and_development; [business_to_business,b2b_medical_support_services,medical_research_and_development] -pharmaceutical_companies; [business_to_business,b2b_medical_support_services,pharmaceutical_companies] -surgical_appliances_and_supplies; [business_to_business,b2b_medical_support_services,surgical_appliances_and_supplies] -b2b_science_and_technology; [business_to_business,b2b_science_and_technology] -b2b_scientific_equipment; [business_to_business,b2b_science_and_technology,b2b_scientific_equipment] -research_institute; [business_to_business,b2b_science_and_technology,research_institute] -scientific_laboratories; [business_to_business,b2b_science_and_technology,scientific_laboratories] -business_advertising; [business_to_business,business_advertising] -business_signage; [business_to_business,business_advertising,business_signage] -direct_mail_advertising; [business_to_business,business_advertising,direct_mail_advertising] -marketing_consultant; [business_to_business,business_advertising,marketing_consultant] -newspaper_advertising; [business_to_business,business_advertising,newspaper_advertising] -outdoor_advertising; [business_to_business,business_advertising,outdoor_advertising] -promotional_products_and_services; [business_to_business,business_advertising,promotional_products_and_services] -publicity_service; [business_to_business,business_advertising,publicity_service] -radio_and_television_commercials; [business_to_business,business_advertising,radio_and_television_commercials] -telemarketing_services; [business_to_business,business_advertising,telemarketing_services] -business_equipment_and_supply; [business_to_business,business_equipment_and_supply] -beauty_product_supplier; [business_to_business,business_equipment_and_supply,beauty_product_supplier] -beverage_supplier; [business_to_business,business_equipment_and_supply,beverage_supplier] -business_office_supplies_and_stationery; [business_to_business,business_equipment_and_supply,business_office_supplies_and_stationery] -electronic_parts_supplier; [business_to_business,business_equipment_and_supply,electronic_parts_supplier] -energy_equipment_and_solution; [business_to_business,business_equipment_and_supply,energy_equipment_and_solution] -hydraulic_equipment_supplier; [business_to_business,business_equipment_and_supply,hydraulic_equipment_supplier] -laboratory_equipment_supplier; [business_to_business,business_equipment_and_supply,laboratory_equipment_supplier] -thread_supplier; [business_to_business,business_equipment_and_supply,thread_supplier] -vending_machine_supplier; [business_to_business,business_equipment_and_supply,vending_machine_supplier] -water_softening_equipment_supplier; [business_to_business,business_equipment_and_supply,water_softening_equipment_supplier] -wholesaler; [business_to_business,business_equipment_and_supply,wholesaler] -wholesale_grocer; [business_to_business,business_equipment_and_supply,wholesaler,wholesale_grocer] -spices_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fmcg_wholesaler,spices_wholesaler] -computer_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,computer_wholesaler] -electrical_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,electrical_wholesaler] -fabric_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fabric_wholesaler] -fitness_equipment_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fitness_equipment_wholesaler] -fmcg_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,fmcg_wholesaler] -footwear_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,footwear_wholesaler] -greengrocer; [business_to_business,business_equipment_and_supply,wholesaler,greengrocer] -industrial_spares_and_products_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,industrial_spares_and_products_wholesaler] -iron_and_steel_store; [business_to_business,business_equipment_and_supply,wholesaler,iron_and_steel_store] -lingerie_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,lingerie_wholesaler] -meat_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,meat_wholesaler] -optical_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,optical_wholesaler] -pharmaceutical_products_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,pharmaceutical_products_wholesaler] -produce_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,produce_wholesaler] -seafood_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,seafood_wholesaler] -tea_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,tea_wholesaler] -threads_and_yarns_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,threads_and_yarns_wholesaler] -tools_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,tools_wholesaler] -wholesale_florist; [business_to_business,business_equipment_and_supply,wholesaler,wholesale_florist] -wine_wholesaler; [business_to_business,business_equipment_and_supply,wholesaler,wine_wholesaler] -restaurant_wholesale; [business_to_business,business_equipment_and_supply,wholesaler,restaurant_wholesale] -restaurant_equipment_and_supply; [business_to_business,business_equipment_and_supply,restaurant_equipment_and_supply] -business_storage_and_transportation; [business_to_business,business_storage_and_transportation] -motor_freight_trucking; [business_to_business,business_storage_and_transportation,motor_freight_trucking] -pipeline_transportation; [business_to_business,business_storage_and_transportation,pipeline_transportation] -railroad_freight; [business_to_business,business_storage_and_transportation,railroad_freight] -b2b_storage_and_warehouses; [business_to_business,business_storage_and_transportation,b2b_storage_and_warehouses] -warehouse_rental_services_and_yards; [business_to_business,business_storage_and_transportation,b2b_storage_and_warehouses,warehouse_rental_services_and_yards] -warehouses; [business_to_business,business_storage_and_transportation,b2b_storage_and_warehouses,warehouses] -freight_and_cargo_service; [business_to_business,business_storage_and_transportation,freight_and_cargo_service] -distribution_services; [business_to_business,business_storage_and_transportation,freight_and_cargo_service,distribution_services] -freight_forwarding_agency; [business_to_business,business_storage_and_transportation,freight_and_cargo_service,freight_forwarding_agency] -trucks_and_industrial_vehicles; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles] -b2b_forklift_dealers; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,b2b_forklift_dealers] -b2b_tractor_dealers; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,b2b_tractor_dealers] -b2b_truck_equipment_parts_and_accessories; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,b2b_truck_equipment_parts_and_accessories] -truck_dealer_for_businesses; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,truck_dealer_for_businesses] -truck_repair_and_services_for_businesses; [business_to_business,business_storage_and_transportation,trucks_and_industrial_vehicles,truck_repair_and_services_for_businesses] -business_to_business_services; [business_to_business,business_to_business_services] -agricultural_production; [business_to_business,business_to_business_services,agricultural_production] -audio_visual_production_and_design; [business_to_business,business_to_business_services,audio_visual_production_and_design] -boat_builder; [business_to_business,business_to_business_services,boat_builder] -business_records_storage_and_management; [business_to_business,business_to_business_services,business_records_storage_and_management] -coworking_space; [business_to_business,business_to_business_services,coworking_space] -domestic_business_and_trade_organizations; [business_to_business,business_to_business_services,domestic_business_and_trade_organizations] -human_resource_services; [business_to_business,business_to_business_services,human_resource_services] -information_technology_company; [business_to_business,business_to_business_services,information_technology_company] -laser_cutting_service_provider; [business_to_business,business_to_business_services,laser_cutting_service_provider] -telecommunications_company; [business_to_business,business_to_business_services,telecommunications_company] -tower_communication_service; [business_to_business,business_to_business_services,tower_communication_service] -transcription_services; [business_to_business,business_to_business_services,transcription_services] -translating_and_interpreting_services; [business_to_business,business_to_business_services,translating_and_interpreting_services] -consultant_and_general_service; [business_to_business,business_to_business_services,consultant_and_general_service] -food_consultant; [business_to_business,business_to_business_services,consultant_and_general_service,food_consultant] -business_management_services; [business_to_business,business_to_business_services,consultant_and_general_service,business_management_services] -executive_search_consultants; [business_to_business,business_to_business_services,consultant_and_general_service,executive_search_consultants] -manufacturing_and_industrial_consultant; [business_to_business,business_to_business_services,consultant_and_general_service,manufacturing_and_industrial_consultant] -secretarial_services; [business_to_business,business_to_business_services,consultant_and_general_service,secretarial_services] -manufacturers_agents_and_representatives; [business_to_business,business_to_business_services,domestic_business_and_trade_organizations,manufacturers_agents_and_representatives] -environmental_and_ecological_services_for_businesses; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses] -b2b_cleaning_and_waste_management; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,b2b_cleaning_and_waste_management] -water_treatment_equipment_and_services; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,b2b_cleaning_and_waste_management,water_treatment_equipment_and_services] -energy_management_and_conservation_consultants; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,energy_management_and_conservation_consultants] -environmental_conservation_and_ecological_organizations; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,environmental_conservation_and_ecological_organizations] -environmental_renewable_natural_resource; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,environmental_renewable_natural_resource] -forestry_consultants; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,forestry_consultants] -geological_services; [business_to_business,business_to_business_services,environmental_and_ecological_services_for_businesses,geological_services] -food_and_beverage_exporter; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter,exporters,food_and_beverage_exporter] -background_check_services; [business_to_business,business_to_business_services,human_resource_services,background_check_services] -international_business_and_trade_services; [business_to_business,business_to_business_services,international_business_and_trade_services] -importer_and_exporter; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter] -exporters; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter,exporters] -importers; [business_to_business,business_to_business_services,international_business_and_trade_services,importer_and_exporter,importers] -restaurant_management; [business_to_business,business_to_business_services,restaurant_management] -b2b_energy_and_mining; [business_to_business,b2b_energy_and_mining] -mining; [business_to_business,b2b_energy_and_mining,mining] -coal_and_coke; [business_to_business,b2b_energy_and_mining,mining,coal_and_coke] -quarries; [business_to_business,b2b_energy_and_mining,mining,quarries] -oil_and_gas; [business_to_business,b2b_energy_and_mining,oil_and_gas] -b2b_oil_and_gas_extraction_and_services; [business_to_business,b2b_energy_and_mining,oil_and_gas,b2b_oil_and_gas_extraction_and_services] -oil_and_gas_exploration_and_development; [business_to_business,b2b_energy_and_mining,oil_and_gas,oil_and_gas_exploration_and_development] -oil_and_gas_field_equipment_and_services; [business_to_business,b2b_energy_and_mining,oil_and_gas,oil_and_gas_field_equipment_and_services] -oil_refiners; [business_to_business,b2b_energy_and_mining,oil_and_gas,oil_refiners] -power_plants_and_power_plant_service; [business_to_business,b2b_energy_and_mining,power_plants_and_power_plant_service] -public_service_and_government; [public_service_and_government] -energy_company; [public_service_and_government,public_utility_company,energy_company] -electric_utility_provider; [public_service_and_government,public_utility_company,electric_utility_provider] -public_utility_company; [public_service_and_government,public_utility_company] -law_enforcement; [public_service_and_government,law_enforcement] -organization; [public_service_and_government,organization] -agriculture_association; [public_service_and_government,organization,agriculture_association] -environmental_conservation_organization; [public_service_and_government,organization,environmental_conservation_organization] -home_organization; [public_service_and_government,organization,home_organization] -labor_union; [public_service_and_government,organization,labor_union] -non_governmental_association; [public_service_and_government,organization,non_governmental_association] -political_organization; [public_service_and_government,organization,political_organization] -private_association; [public_service_and_government,organization,private_association] -public_and_government_association; [public_service_and_government,organization,public_and_government_association] -social_service_organizations; [public_service_and_government,organization,social_service_organizations] -charity_organization; [public_service_and_government,organization,social_service_organizations,charity_organization] -food_banks; [public_service_and_government,organization,social_service_organizations,food_banks] -foster_care_services; [public_service_and_government,organization,social_service_organizations,foster_care_services] -gay_and_lesbian_services_organization; [public_service_and_government,organization,social_service_organizations,gay_and_lesbian_services_organization] -homeless_shelter; [public_service_and_government,organization,social_service_organizations,homeless_shelter] -housing_authorities; [public_service_and_government,organization,social_service_organizations,housing_authorities] -senior_citizen_services; [public_service_and_government,organization,social_service_organizations,senior_citizen_services] -social_and_human_services; [public_service_and_government,organization,social_service_organizations,social_and_human_services] -social_welfare_center; [public_service_and_government,organization,social_service_organizations,social_welfare_center] -volunteer_association; [public_service_and_government,organization,social_service_organizations,volunteer_association] -child_protection_service; [public_service_and_government,organization,social_service_organizations,child_protection_service] -youth_organizations; [public_service_and_government,organization,social_service_organizations,youth_organizations] -community_services_non_profits; [public_service_and_government,community_services] -disability_services_and_support_organization; [public_service_and_government,community_services,disability_services_and_support_organization] -government_services; [public_service_and_government,government_services] -social_security_services; [public_service_and_government,government_services,social_security_services] -jail_and_prison; [public_service_and_government,jail_and_prison] -juvenile_detention_center; [public_service_and_government,jail_and_prison,juvenile_detention_center] -post_office; [public_service_and_government,post_office] -shipping_collection_services; [public_service_and_government,post_office,shipping_collection_services] -public_toilet; [public_service_and_government,public_toilet] -armed_forces_branch; [public_service_and_government,armed_forces_branch] -central_government_office; [public_service_and_government,central_government_office] -chambers_of_commerce; [public_service_and_government,chambers_of_commerce] -children_hall; [public_service_and_government,children_hall] -civic_center; [public_service_and_government,civic_center] -community_center; [public_service_and_government,community_center] -courthouse; [public_service_and_government,courthouse] -department_of_motor_vehicles; [public_service_and_government,department_of_motor_vehicles] -department_of_social_service; [public_service_and_government,department_of_social_service] -embassy; [public_service_and_government,embassy] -family_service_center; [public_service_and_government,family_service_center] -federal_government_offices; [public_service_and_government,federal_government_offices] -fire_department; [public_service_and_government,fire_department] -immigration_and_naturalization; [public_service_and_government,immigration_and_naturalization] -library; [public_service_and_government,library] -local_and_state_government_offices; [public_service_and_government,local_and_state_government_offices] -low_income_housing; [public_service_and_government,low_income_housing] -national_security_services; [public_service_and_government,national_security_services] -office_of_vital_records; [public_service_and_government,office_of_vital_records] -pension; [public_service_and_government,pension] -police_department; [public_service_and_government,police_department] -political_party_office; [public_service_and_government,political_party_office] -railway_service; [public_service_and_government,railway_service] -registry_office; [public_service_and_government,registry_office] -retirement_home; [public_service_and_government,retirement_home] -scout_hall; [public_service_and_government,scout_hall] -tax_office; [public_service_and_government,tax_office] -town_hall; [public_service_and_government,town_hall] -unemployment_office; [public_service_and_government,unemployment_office] -weather_station; [public_service_and_government,weather_station] -religious_organization; [religious_organization] -church_cathedral; [religious_organization,church_cathedral] -anglican_church; [religious_organization,church_cathedral,anglican_church] -baptist_church; [religious_organization,church_cathedral,baptist_church] -catholic_church; [religious_organization,church_cathedral,catholic_church] -episcopal_church; [religious_organization,church_cathedral,episcopal_church] -evangelical_church; [religious_organization,church_cathedral,evangelical_church] -jehovahs_witness_kingdom_hall; [religious_organization,church_cathedral,jehovahs_witness_kingdom_hall] -pentecostal_church; [religious_organization,church_cathedral,pentecostal_church] -mission; [religious_organization,mission] -buddhist_temple; [religious_organization,buddhist_temple] -convents_and_monasteries; [religious_organization,convents_and_monasteries] -hindu_temple; [religious_organization,hindu_temple] -mosque; [religious_organization,mosque] -religious_destination; [religious_organization,religious_destination] -shinto_shrines; [religious_organization,shinto_shrines] -sikh_temple; [religious_organization,sikh_temple] -synagogue; [religious_organization,synagogue] -temple; [religious_organization,temple] -real_estate; [real_estate] -real_estate_investment; [real_estate,real_estate_investment] -builders; [real_estate,builders] -home_developer; [real_estate,builders,home_developer] -apartments; [real_estate,apartments] -art_space_rental; [real_estate,art_space_rental] -commercial_real_estate; [real_estate,commercial_real_estate] -condominium; [real_estate,condominium] -display_home_center; [real_estate,display_home_center] -estate_liquidation; [real_estate,estate_liquidation] -holiday_park; [real_estate,holiday_park] -home_staging; [real_estate,home_staging] -homeowner_association; [real_estate,homeowner_association] -housing_cooperative; [real_estate,housing_cooperative] -kitchen_incubator; [real_estate,kitchen_incubator] -mobile_home_dealer; [real_estate,mobile_home_dealer] -mobile_home_park; [real_estate,mobile_home_park] -mortgage_broker; [real_estate,mortgage_broker] -property_management; [real_estate,property_management] -shared_office_space; [real_estate,shared_office_space] -university_housing; [real_estate,university_housing] -real_estate_agent; [real_estate,real_estate_agent] -apartment_agent; [real_estate,real_estate_agent,apartment_agent] -real_estate_service; [real_estate,real_estate_service] -escrow_services; [real_estate,real_estate_service,escrow_services] -land_surveying; [real_estate,real_estate_service,land_surveying] -real_estate_photography; [real_estate,real_estate_service,real_estate_photography] -rental_services; [real_estate,real_estate_service,rental_services] -travel; [travel] -airport; [travel,airport] -airport_terminal; [travel,airport,airport_terminal] -balloon_ports; [travel,airport,balloon_ports] -domestic_airports; [travel,airport,domestic_airports] -gliderports; [travel,airport,gliderports] -heliports; [travel,airport,heliports] -major_airports; [travel,airport,major_airports] -seaplane_bases; [travel,airport,seaplane_bases] -ultralight_airports; [travel,airport,ultralight_airports] -travel_services; [travel,travel_services] -passport_and_visa_services; [travel,travel_services,passport_and_visa_services] -visa_agent; [travel,travel_services,passport_and_visa_services,visa_agent] -travel_agents; [travel,travel_services,travel_agents] -sightseeing_tour_agency; [travel,travel_services,travel_agents,sightseeing_tour_agency] -luggage_storage; [travel,travel_services,luggage_storage] -visitor_center; [travel,travel_services,visitor_center] -road_structures_and_services; [travel,road_structures_and_services] -rest_areas; [travel,road_structures_and_services,rest_areas] -toll_stations; [travel,road_structures_and_services,toll_stations] -tours; [travel,tours] -aerial_tours; [travel,tours,aerial_tours] -architectural_tours; [travel,tours,architectural_tours] -art_tours; [travel,tours,art_tours] -beer_tours; [travel,tours,beer_tours] -bike_tours; [travel,tours,bike_tours] -boat_tours; [travel,tours,boat_tours] -bus_tours; [travel,tours,bus_tours] -cannabis_tour; [travel,tours,cannabis_tour] -food_tours; [travel,tours,food_tours] -historical_tours; [travel,tours,historical_tours] -scooter_tours; [travel,tours,scooter_tours] -walking_tours; [travel,tours,walking_tours] -whale_watching_tours; [travel,tours,whale_watching_tours] -wine_tours; [travel,tours,wine_tours] -transportation; [travel,transportation] -trains; [travel,transportation,trains] -train_station; [travel,transportation,trains,train_station] -airlines; [travel,transportation,airlines] -airport_shuttles; [travel,transportation,airport_shuttles] -bicycle_sharing_location; [travel,transportation,bicycle_sharing_location] -bike_parking; [travel,transportation,bike_parking] -bike_sharing; [travel,transportation,bike_sharing] -bus_service; [travel,transportation,bus_service] -bus_station; [travel,transportation,bus_station] -cable_car_service; [travel,transportation,cable_car_service] -car_sharing; [travel,transportation,car_sharing] -coach_bus; [travel,transportation,coach_bus] -ferry_service; [travel,transportation,ferry_service] -light_rail_and_subway_stations; [travel,transportation,light_rail_and_subway_stations] -limo_services; [travel,transportation,limo_services] -metro_station; [travel,transportation,metro_station] -motorcycle_parking; [travel,transportation,motorcycle_parking] -park_and_rides; [travel,transportation,park_and_rides] -parking; [travel,transportation,parking] -pedicab_service; [travel,transportation,pedicab_service] -private_jet_charters; [travel,transportation,private_jet_charters] -public_transportation; [travel,transportation,public_transportation] -ride_sharing; [travel,transportation,ride_sharing] -taxi_rank; [travel,transportation,taxi_rank] -taxi_service; [travel,transportation,taxi_service] -town_car_service; [travel,transportation,town_car_service] -transport_interchange; [travel,transportation,transport_interchange] -water_taxi; [travel,transportation,water_taxi] -agriturismo; [travel,agriturismo] -airline_ticket_agency; [travel,airline_ticket_agency] -bus_ticket_agency; [travel,bus_ticket_agency] -rental_service; [travel,rental_service] -car_rental_agency; [travel,rental_service,car_rental_agency] -motorcycle_rentals; [travel,rental_service,motorcycle_rentals] -rv_rentals; [travel,rental_service,rv_rentals] -trailer_rentals; [travel,rental_service,trailer_rentals] -truck_rentals; [travel,rental_service,truck_rentals] -country_house; [travel,country_house] -houseboat; [travel,houseboat] -railway_ticket_agent; [travel,railway_ticket_agent] -rest_stop; [travel,rest_stop] -ryokan; [travel,ryokan] -self_catering_accommodation; [travel,self_catering_accommodation] -ski_resort; [travel,ski_resort] -vacation_rental_agents; [travel,vacation_rental_agents] -mass_media; [mass_media] -print_media; [mass_media,print_media] -media_critic; [mass_media,media_critic] -movie_critic; [mass_media,media_critic,movie_critic] -music_critic; [mass_media,media_critic,music_critic] -video_game_critic; [mass_media,media_critic,video_game_critic] -media_news_company; [mass_media,media_news_company] -media_agency; [mass_media,media_news_company,media_agency] -radio_station; [mass_media,media_news_company,radio_station] -television_station; [mass_media,media_news_company,television_station] -weather_forecast_services; [mass_media,media_news_company,weather_forecast_services] -animation_studio; [mass_media,media_news_company,animation_studio] -book_magazine_distribution; [mass_media,media_news_company,book_magazine_distribution] -broadcasting_media_production; [mass_media,media_news_company,broadcasting_media_production] -game_publisher; [mass_media,media_news_company,game_publisher] -movie_television_studio; [mass_media,media_news_company,movie_television_studio] -music_production; [mass_media,media_news_company,music_production] -topic_publisher; [mass_media,media_news_company,topic_publisher] -social_media_company; [mass_media,media_news_company,social_media_company] -media_news_website; [mass_media,media_news_website] -media_restoration_service; [mass_media,media_restoration_service] -art_restoration; [mass_media,media_restoration_service,art_restoration] -theatrical_productions; [mass_media,theatrical_productions] -home_service; [home_service] -ceiling_and_roofing_repair_and_service; [home_service,ceiling_and_roofing_repair_and_service] -ceiling_service; [home_service,ceiling_and_roofing_repair_and_service,ceiling_service] -roofing; [home_service,ceiling_and_roofing_repair_and_service,roofing] -chimney_service; [home_service,chimney_service] -chimney_sweep; [home_service,chimney_service,chimney_sweep] -contractor; [home_service,contractor] -altering_and_remodeling_contractor; [home_service,contractor,altering_and_remodeling_contractor] -building_contractor; [home_service,contractor,building_contractor] -flooring_contractors; [home_service,contractor,flooring_contractors] -paving_contractor; [home_service,contractor,paving_contractor] -damage_restoration; [home_service,damage_restoration] -fire_and_water_damage_restoration; [home_service,damage_restoration,fire_and_water_damage_restoration] -artificial_turf; [home_service,artificial_turf] -bathroom_remodeling; [home_service,bathroom_remodeling] -bathtub_and_sink_repairs; [home_service,bathtub_and_sink_repairs] -cabinet_sales_service; [home_service,cabinet_sales_service] -carpenter; [home_service,carpenter] -carpet_cleaning; [home_service,carpet_cleaning] -carpet_installation; [home_service,carpet_installation] -childproofing; [home_service,childproofing] -closet_remodeling; [home_service,closet_remodeling] -countertop_installation; [home_service,countertop_installation] -deck_and_railing_sales_service; [home_service,deck_and_railing_sales_service] -demolition_service; [home_service,demolition_service] -door_sales_service; [home_service,door_sales_service] -drywall_services; [home_service,drywall_services] -electrician; [home_service,electrician] -excavation_service; [home_service,excavation_service] -exterior_design; [home_service,exterior_design] -fence_and_gate_sales_service; [home_service,fence_and_gate_sales_service] -fire_protection_service; [home_service,fire_protection_service] -fireplace_service; [home_service,fireplace_service] -firewood; [home_service,firewood] -foundation_repair; [home_service,foundation_repair] -furniture_assembly; [home_service,furniture_assembly] -garage_door_service; [home_service,garage_door_service] -glass_and_mirror_sales_service; [home_service,glass_and_mirror_sales_service] -grout_service; [home_service,grout_service] -gutter_service; [home_service,gutter_service] -handyman; [home_service,handyman] -holiday_decorating; [home_service,holiday_decorating] -home_automation; [home_service,home_automation] -home_cleaning; [home_service,home_cleaning] -home_energy_auditor; [home_service,home_energy_auditor] -home_inspector; [home_service,home_inspector] -home_network_installation; [home_service,home_network_installation] -home_security; [home_service,home_security] -home_window_tinting; [home_service,home_window_tinting] -house_sitting; [home_service,house_sitting] -hvac_services; [home_service,hvac_services] -insulation_installation; [home_service,insulation_installation] -interior_design; [home_service,interior_design] -irrigation; [home_service,irrigation] -key_and_locksmith; [home_service,key_and_locksmith] -kitchen_remodeling; [home_service,kitchen_remodeling] -lighting_fixtures_and_equipment; [home_service,lighting_fixtures_and_equipment] -masonry_concrete; [home_service,masonry_concrete] -mobile_home_repair; [home_service,mobile_home_repair] -movers; [home_service,movers] -packing_services; [home_service,packing_services] -painting; [home_service,painting] -patio_covers; [home_service,patio_covers] -plasterer; [home_service,plasterer] -pool_and_hot_tub_services; [home_service,pool_and_hot_tub_services] -pool_cleaning; [home_service,pool_cleaning] -pressure_washing; [home_service,pressure_washing] -refinishing_services; [home_service,refinishing_services] -security_systems; [home_service,security_systems] -shades_and_blinds; [home_service,shades_and_blinds] -shutters; [home_service,shutters] -siding; [home_service,siding] -solar_installation; [home_service,solar_installation] -solar_panel_cleaning; [home_service,solar_panel_cleaning] -structural_engineer; [home_service,structural_engineer] -stucco_services; [home_service,stucco_services] -television_service_providers; [home_service,television_service_providers] -tiling; [home_service,tiling] -wallpaper_installers; [home_service,wallpaper_installers] -washer_and_dryer_repair_service; [home_service,washer_and_dryer_repair_service] -water_heater_installation_repair; [home_service,water_heater_installation_repair] -water_purification_services; [home_service,water_purification_services] -waterproofing; [home_service,waterproofing] -window_washing; [home_service,window_washing] -landscaping; [home_service,landscaping] -gardener; [home_service,landscaping,gardener] -landscape_architect; [home_service,landscaping,landscape_architect] -lawn_service; [home_service,landscaping,lawn_service] -tree_services; [home_service,landscaping,tree_services] -plumbing; [home_service,plumbing] -backflow_services; [home_service,plumbing,backflow_services] -windows_installation; [home_service,windows_installation] -skylight_installation; [home_service,windows_installation,skylight_installation] -professional_services; [professional_services] -cleaning_services; [professional_services,cleaning_services] -industrial_cleaning_services; [professional_services,cleaning_services,industrial_cleaning_services] -janitorial_services; [professional_services,cleaning_services,janitorial_services] -office_cleaning; [professional_services,cleaning_services,office_cleaning] -construction_services; [professional_services,construction_services] -blueprinters; [professional_services,construction_services,blueprinters] -construction_management; [professional_services,construction_services,construction_management] -inspection_services; [professional_services,construction_services,inspection_services] -road_contractor; [professional_services,construction_services,road_contractor] -wind_energy; [professional_services,construction_services,wind_energy] -engineering_services; [professional_services,construction_services,engineering_services] -civil_engineers; [professional_services,construction_services,engineering_services,civil_engineers] -instrumentation_engineers; [professional_services,construction_services,engineering_services,instrumentation_engineers] -mechanical_engineers; [professional_services,construction_services,engineering_services,mechanical_engineers] -metal_materials_and_experts; [professional_services,construction_services,metal_materials_and_experts] -blacksmiths; [professional_services,construction_services,metal_materials_and_experts,blacksmiths] -ironworkers; [professional_services,construction_services,metal_materials_and_experts,ironworkers] -welders; [professional_services,construction_services,metal_materials_and_experts,welders] -stone_and_masonry; [professional_services,construction_services,stone_and_masonry] -gravel_professionals; [professional_services,construction_services,stone_and_masonry,gravel_professionals] -lime_professionals; [professional_services,construction_services,stone_and_masonry,lime_professionals] -marble_and_granite_professionals; [professional_services,construction_services,stone_and_masonry,marble_and_granite_professionals] -masonry_contractors; [professional_services,construction_services,stone_and_masonry,masonry_contractors] -lawyer; [professional_services,lawyer] -estate_planning_law; [professional_services,lawyer,estate_planning_law] -wills_trusts_and_probate; [professional_services,lawyer,estate_planning_law,wills_trusts_and_probate] -appellate_practice_lawyers; [professional_services,lawyer,appellate_practice_lawyers] -bankruptcy_law; [professional_services,lawyer,bankruptcy_law] -business_law; [professional_services,lawyer,business_law] -civil_rights_lawyers; [professional_services,lawyer,civil_rights_lawyers] -contract_law; [professional_services,lawyer,contract_law] -criminal_defense_law; [professional_services,lawyer,criminal_defense_law] -disability_law; [professional_services,lawyer,disability_law] -divorce_and_family_law; [professional_services,lawyer,divorce_and_family_law] -dui_law; [professional_services,lawyer,dui_law] -employment_law; [professional_services,lawyer,employment_law] -entertainment_law; [professional_services,lawyer,entertainment_law] -general_litigation; [professional_services,lawyer,general_litigation] -immigration_law; [professional_services,lawyer,immigration_law] -ip_and_internet_law; [professional_services,lawyer,ip_and_internet_law] -medical_law; [professional_services,lawyer,medical_law] -paralegal_services; [professional_services,lawyer,paralegal_services] -personal_injury_law; [professional_services,lawyer,personal_injury_law] -real_estate_law; [professional_services,lawyer,real_estate_law] -social_security_law; [professional_services,lawyer,social_security_law] -tax_law; [professional_services,lawyer,tax_law] -traffic_ticketing_law; [professional_services,lawyer,traffic_ticketing_law] -workers_compensation_law; [professional_services,lawyer,workers_compensation_law] -event_planning; [professional_services,event_planning] -balloon_services; [professional_services,event_planning,balloon_services] -bartender; [professional_services,event_planning,bartender] -boat_charter; [professional_services,event_planning,boat_charter] -caricature; [professional_services,event_planning,caricature] -caterer; [professional_services,event_planning,caterer] -clown; [professional_services,event_planning,clown] -dj_service; [professional_services,event_planning,dj_service] -event_technology_service; [professional_services,event_planning,event_technology_service] -face_painting; [professional_services,event_planning,face_painting] -floral_designer; [professional_services,event_planning,floral_designer] -game_truck_rental; [professional_services,event_planning,game_truck_rental] -golf_cart_rental; [professional_services,event_planning,golf_cart_rental] -henna_artist; [professional_services,event_planning,henna_artist] -kids_recreation_and_party; [professional_services,event_planning,kids_recreation_and_party] -magician; [professional_services,event_planning,magician] -mohel; [professional_services,event_planning,mohel] -musician; [professional_services,event_planning,musician] -officiating_services; [professional_services,event_planning,officiating_services] -party_and_event_planning; [professional_services,event_planning,party_and_event_planning] -party_bike_rental; [professional_services,event_planning,party_bike_rental] -party_bus_rental; [professional_services,event_planning,party_bus_rental] -party_character; [professional_services,event_planning,party_character] -personal_chef; [professional_services,event_planning,personal_chef] -photo_booth_rental; [professional_services,event_planning,photo_booth_rental] -silent_disco; [professional_services,event_planning,silent_disco] -sommelier_service; [professional_services,event_planning,sommelier_service] -team_building_activity; [professional_services,event_planning,team_building_activity] -trivia_host; [professional_services,event_planning,trivia_host] -valet_service; [professional_services,event_planning,valet_service] -venue_and_event_space; [professional_services,event_planning,venue_and_event_space] -videographer; [professional_services,event_planning,videographer] -wedding_chapel; [professional_services,event_planning,wedding_chapel] -wedding_planning; [professional_services,event_planning,wedding_planning] -party_equipment_rental; [professional_services,event_planning,party_equipment_rental] -audiovisual_equipment_rental; [professional_services,event_planning,party_equipment_rental,audiovisual_equipment_rental] -bounce_house_rental; [professional_services,event_planning,party_equipment_rental,bounce_house_rental] -karaoke_rental; [professional_services,event_planning,party_equipment_rental,karaoke_rental] -photographer; [professional_services,event_planning,photographer] -boudoir_photography; [professional_services,event_planning,photographer,boudoir_photography] -event_photography; [professional_services,event_planning,photographer,event_photography] -session_photography; [professional_services,event_planning,photographer,session_photography] -funeral_services_and_cemeteries; [professional_services,funeral_services_and_cemeteries] -cremation_services; [professional_services,funeral_services_and_cemeteries,cremation_services] -mortuary_services; [professional_services,funeral_services_and_cemeteries,mortuary_services] -internet_service_provider; [professional_services,internet_service_provider] -web_hosting_service; [professional_services,internet_service_provider,web_hosting_service] -it_service_and_computer_repair; [professional_services,it_service_and_computer_repair] -data_recovery; [professional_services,it_service_and_computer_repair,data_recovery] -it_consultant; [professional_services,it_service_and_computer_repair,it_consultant] -it_support_and_service; [professional_services,it_service_and_computer_repair,it_support_and_service] -mobile_phone_repair; [professional_services,it_service_and_computer_repair,mobile_phone_repair] -telecommunications; [professional_services,it_service_and_computer_repair,telecommunications] -junk_removal_and_hauling; [professional_services,junk_removal_and_hauling] -dumpster_rentals; [professional_services,junk_removal_and_hauling,dumpster_rentals] -laundry_services; [professional_services,laundry_services] -dry_cleaning; [professional_services,laundry_services,dry_cleaning] -laundromat; [professional_services,laundry_services,laundromat] -legal_services; [professional_services,legal_services] -court_reporter; [professional_services,legal_services,court_reporter] -process_servers; [professional_services,legal_services,process_servers] -musical_instrument_services; [professional_services,musical_instrument_services] -piano_services; [professional_services,musical_instrument_services,piano_services] -vocal_coach; [professional_services,musical_instrument_services,vocal_coach] -3d_printing_service; [professional_services,3d_printing_service] -acoustical_consultant; [professional_services,acoustical_consultant] -adoption_services; [professional_services,adoption_services] -advertising_agency; [professional_services,advertising_agency] -copywriting_service; [professional_services,copywriting_service] -internet_marketing_service; [professional_services,internet_marketing_service] -merchandising_service; [professional_services,merchandising_service] -social_media_agency; [professional_services,social_media_agency] -after_school_program; [professional_services,after_school_program] -bank_equipment_service; [professional_services,bank_equipment_service] -air_duct_cleaning_service; [professional_services,air_duct_cleaning_service] -antenna_service; [professional_services,antenna_service] -appliance_repair_service; [professional_services,appliance_repair_service] -appraisal_services; [professional_services,appraisal_services] -architect; [professional_services,architect] -architectural_designer; [professional_services,architectural_designer] -art_restoration_service; [professional_services,art_restoration_service] -awning_supplier; [professional_services,awning_supplier] -bail_bonds_service; [professional_services,bail_bonds_service] -bike_repair_maintenance; [professional_services,bike_repair_maintenance] -billing_services; [professional_services,billing_services] -bookbinding; [professional_services,bookbinding] -bookkeeper; [professional_services,bookkeeper] -bus_rentals; [professional_services,bus_rentals] -business_consulting; [professional_services,business_consulting] -calligraphy; [professional_services,calligraphy] -car_broker; [professional_services,car_broker] -career_counseling; [professional_services,career_counseling] -carpet_dyeing; [professional_services,carpet_dyeing] -cemeteries; [professional_services,cemeteries] -certification_agency; [professional_services,certification_agency] -child_care_and_day_care; [professional_services,child_care_and_day_care] -day_care_preschool; [professional_services,child_care_and_day_care,day_care_preschool] -clock_repair_service; [professional_services,clock_repair_service] -commercial_printer; [professional_services,commercial_printer] -commercial_refrigeration; [professional_services,commercial_refrigeration] -commissioned_artist; [professional_services,commissioned_artist] -community_book_boxes; [professional_services,community_book_boxes] -community_gardens; [professional_services,community_gardens] -computer_hardware_company; [professional_services,computer_hardware_company] -courier_and_delivery_services; [professional_services,courier_and_delivery_services] -crane_services; [professional_services,crane_services] -customs_broker; [professional_services,customs_broker] -delegated_driver_service; [professional_services,delegated_driver_service] -diamond_dealer; [professional_services,diamond_dealer] -digitizing_services; [professional_services,digitizing_services] -donation_center; [professional_services,donation_center] -duplication_services; [professional_services,duplication_services] -e_commerce_service; [professional_services,e_commerce_service] -editorial_services; [professional_services,editorial_services] -elder_care_planning; [professional_services,elder_care_planning] -electrical_consultant; [professional_services,electrical_consultant] -electronics_repair_shop; [professional_services,electronics_repair_shop] -elevator_service; [professional_services,elevator_service] -emergency_service; [professional_services,emergency_service] -employment_agencies; [professional_services,employment_agencies] -temp_agency; [professional_services,employment_agencies,temp_agency] -engraving; [professional_services,engraving] -environmental_abatement_services; [professional_services,environmental_abatement_services] -environmental_testing; [professional_services,environmental_testing] -farm_equipment_repair_service; [professional_services,farm_equipment_repair_service] -feng_shui; [professional_services,feng_shui] -fingerprinting_service; [professional_services,fingerprinting_service] -food_and_beverage_consultant; [professional_services,food_and_beverage_consultant] -forestry_service; [professional_services,forestry_service] -fortune_telling_service; [professional_services,fortune_telling_service] -furniture_rental_service; [professional_services,furniture_rental_service] -furniture_repair; [professional_services,furniture_repair] -furniture_reupholstery; [professional_services,furniture_reupholstery] -genealogists; [professional_services,genealogists] -generator_installation_repair; [professional_services,generator_installation_repair] -goldsmith; [professional_services,goldsmith] -graphic_designer; [professional_services,graphic_designer] -gunsmith; [professional_services,gunsmith] -hazardous_waste_disposal; [professional_services,hazardous_waste_disposal] -hydraulic_repair_service; [professional_services,hydraulic_repair_service] -hydro_jetting; [professional_services,hydro_jetting] -ice_supplier; [professional_services,ice_supplier] -immigration_assistance_services; [professional_services,immigration_assistance_services] -indoor_landscaping; [professional_services,indoor_landscaping] -jewelry_repair_service; [professional_services,jewelry_repair_service] -junkyard; [professional_services,junkyard] -knife_sharpening; [professional_services,knife_sharpening] -laboratory; [professional_services,laboratory] -lawn_mower_repair_service; [professional_services,lawn_mower_repair_service] -life_coach; [professional_services,life_coach] -lottery_ticket; [professional_services,lottery_ticket] -machine_and_tool_rentals; [professional_services,machine_and_tool_rentals] -machine_shop; [professional_services,machine_shop] -mailbox_center; [professional_services,mailbox_center] -marketing_agency; [professional_services,marketing_agency] -matchmaker; [professional_services,matchmaker] -mediator; [professional_services,mediator] -metal_detector_services; [professional_services,metal_detector_services] -misting_system_services; [professional_services,misting_system_services] -mobility_equipment_services; [professional_services,mobility_equipment_services] -mooring_service; [professional_services,mooring_service] -music_production_services; [professional_services,music_production_services] -nanny_services; [professional_services,nanny_services] -notary_public; [professional_services,notary_public] -package_locker; [professional_services,package_locker] -packaging_contractors_and_service; [professional_services,packaging_contractors_and_service] -patent_law; [professional_services,patent_law] -payroll_services; [professional_services,payroll_services] -personal_assistant; [professional_services,personal_assistant] -pest_control_service; [professional_services,pest_control_service] -powder_coating_service; [professional_services,powder_coating_service] -printing_services; [professional_services,printing_services] -private_investigation; [professional_services,private_investigation] -product_design; [professional_services,product_design] -propane_supplier; [professional_services,propane_supplier] -public_adjuster; [professional_services,public_adjuster] -public_relations; [professional_services,public_relations] -record_label; [professional_services,record_label] -recording_and_rehearsal_studio; [professional_services,recording_and_rehearsal_studio] -recycling_center; [professional_services,recycling_center] -sandblasting_service; [professional_services,sandblasting_service] -screen_printing_t_shirt_printing; [professional_services,screen_printing_t_shirt_printing] -security_services; [professional_services,security_services] -septic_services; [professional_services,septic_services] -shipping_center; [professional_services,shipping_center] -shoe_repair; [professional_services,shoe_repair] -shoe_shining_service; [professional_services,shoe_shining_service] -shredding_services; [professional_services,shredding_services] -sign_making; [professional_services,sign_making] -snow_removal_service; [professional_services,snow_removal_service] -snuggle_service; [professional_services,snuggle_service] -software_development; [professional_services,software_development] -talent_agency; [professional_services,talent_agency] -taxidermist; [professional_services,taxidermist] -telephone_services; [professional_services,telephone_services] -tenant_and_eviction_law; [professional_services,tenant_and_eviction_law] -tent_house_supplier; [professional_services,tent_house_supplier] -translation_services; [professional_services,translation_services] -tv_mounting; [professional_services,tv_mounting] -typing_services; [professional_services,typing_services] -video_film_production; [professional_services,video_film_production] -watch_repair_service; [professional_services,watch_repair_service] -water_delivery; [professional_services,water_delivery] -web_designer; [professional_services,web_designer] -well_drilling; [professional_services,well_drilling] -wildlife_control; [professional_services,wildlife_control] -writing_service; [professional_services,writing_service] -storage_facility; [professional_services,storage_facility] -rv_and_boat_storage_facility; [professional_services,storage_facility,rv_and_boat_storage_facility] -boat_storage_facility; [professional_services,storage_facility,rv_and_boat_storage_facility,boat_storage_facility] -rv_storage_facility; [professional_services,storage_facility,rv_and_boat_storage_facility,rv_storage_facility] -self_storage_facility; [professional_services,storage_facility,self_storage_facility] -sewing_and_alterations; [professional_services,sewing_and_alterations] -gents_tailor; [professional_services,sewing_and_alterations,gents_tailor] -utility_service; [professional_services,utility_service] -electricity_supplier; [professional_services,utility_service,electricity_supplier] -garbage_collection_service; [professional_services,utility_service,garbage_collection_service] -natural_gas_supplier; [professional_services,utility_service,natural_gas_supplier] -public_phones; [professional_services,utility_service,public_phones] -public_restrooms; [professional_services,utility_service,public_restrooms] -water_supplier; [professional_services,utility_service,water_supplier] -structure_and_geography; [structure_and_geography] -bridge; [structure_and_geography,bridge] -canal; [structure_and_geography,canal] -dam; [structure_and_geography,dam] -desert; [structure_and_geography,desert] -forest; [structure_and_geography,forest] -geologic_formation; [structure_and_geography,geologic_formation] -island; [structure_and_geography,island] -mountain; [structure_and_geography,mountain] -natural_hot_springs; [structure_and_geography,natural_hot_springs] -nature_reserve; [structure_and_geography,nature_reserve] -pier; [structure_and_geography,pier] -public_plaza; [structure_and_geography,public_plaza] -quay; [structure_and_geography,quay] -river; [structure_and_geography,river] -skyscraper; [structure_and_geography,skyscraper] -tower; [structure_and_geography,tower] -weir; [structure_and_geography,weir] diff --git a/docs/schema/concepts/by-theme/transportation/index.mdx b/docs/schema/concepts/by-theme/transportation/index.mdx deleted file mode 100644 index fd9686d7c..000000000 --- a/docs/schema/concepts/by-theme/transportation/index.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Transportation schema concepts ---- -:::tip -For step-by-step examples of accessing and working with our transportation data, please see our [Transportation Data Guide](https://docs.overturemaps.org/guides/transportation/). -::: - -## Overview -The Overture transportation theme describes the infrastructure and conventions of how people and objects travel around the world. The schema defines a hierarchy of structures that attempt to: 1. make it easier to manage this complex dataset and 2. reflect the operational reality of transportation networks. - -The Overture transportation schema aims to do the following: -- capture the hierarchy of features it proposes -- envision inclusion of other datasets such as places, buildings, and divisions -- use GeoJSON features as a base -- model every feature as a spatial object with a well-defined geometry -- model topology -- model shared properties that describe the behavior of other properties: e.g. a value constrained by its location along a segment, a value constrained by both its location along a segment and certain hours, transportation modes, or direction -- model relationships as properties belonging to source segment - -## Feature types and subtypes - -The Overture transportation schema defines two feature types: - -- The `segment` type has a LineString geometry that represents the center-line of a path repeatedly traversed by people or objects. Segment properties describe both the physical properties (e.g. road surface and width) and non-physical properties (e.g. access restriction rules) of that path. -- The `connector` type has a Point geometry that defines the topology of the transportation network by representing the physical connection between two or more segments. Connectors do not have properties beyond geometry and the common properties required for all Overture features. - -The `segment` feature type is further divided into three subtypes: `road`, `rail`, and `water`. Of these, the `road` subtype is the most developed. [Here](roads) we describe in detail how we model road-specific properties in the Overture schema. A more general overview of segments can be found [here](segments). - - -## Key concepts - -### Connectors -To better support routing use cases, the `segment` feature type has a property called `connectors`: array of IDs with pre-computed linear reference values that explicitly link segments and connector features via coordinates. The `connectors` property contains a list of connector features to which a segment feature is physically linked **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. - -Here's an example of how the connectors property is modeled in the schema: - -``` -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 -``` - -### Destinations -The destination property in the `segment` feature type supports routing use cases. It describes the transitions from one segment to another on the way to a specified location. In turn-by-turn routing applications, this is what is known as “follow signs for” — the human-readable directions and signposts along a road, highway, or interstate that get us from point A to point Z, by way of any number of paths in between. We designed the `destinations` property with a flexible schema that will allow us to capture and model navigation data from many different sources. - -### Linear referencing -The `segment` feature type uses linear referencing to describe the properties of specific sections of a road along a road segment. To avoid splitting road segments at any and every property change, we added linear referencing, which defines how some properties apply to portions of a segment can change along a segment that is generally understood to be the same 'road'. Segment splits are then reserved for more significant intersections so that we don't have to version the entire road any time any piece of the road changes. Other than some expected challenges learning how Linear Referencing worked, we noticed that the main difficulty really arises is when people want to convert the transportation data into a routing graph. Many routing engines want the data to be split at every 'decision point' where each decision is what amounts to a connector between segments the routing engine would consider routing on (e.g. vehicle routing would eliminate sidewalks). However that decision of what segments would be considered for routing someone varies significantly by application, even within similar 'types' of routing, so we could not identify a common subset of splitting rules that would meet all or even most of the various use cases of the members, much less the community at large. - -### [Scoped and rule-based properties](/schema/concepts/scoping-rules) -The schema allows the values of properties to be specified at the sub-feature level. For example: - - a speed limit on a road segment might be scoped to apply only to part of the road geometry using _geometric scoping_ - - the directionality of a segment, controlling the direction or directions in which traffic can flow along the segment geometry, may be specified to change at different times of day using _temporal scoping_. - - the categories of people and vehicles who are allowed to travel on a segment can be controlled using _subjective scoping_ - - a real world property that varies under changing environmental conditions can be modeled using _environmental scoping_ - -### [Shape and connectivity](/schema/concepts/by-theme/transportation/shape-connectivity) -The schema captures the shape and connectivity of the transportation network using `segment` and `connector` features. The schema design allows the segmentation process to promote shape stability and ultimately [GERS ID](https://docs.overturemaps.org/gers/) stability. - - -### [Travel modes](/schema/concepts/by-theme/transportation/travel-modes) -The transportation theme supports a fuzzy concept called travel mode which can be used as a way of controlling scoped and rule-based properties. - - -## Schema reference -- [Connector feature type](/schema/reference/transportation/connector) -- [Segment feature type](/schema/reference/transportation/segment) diff --git a/docs/schema/concepts/by-theme/transportation/roads.mdx b/docs/schema/concepts/by-theme/transportation/roads.mdx deleted file mode 100644 index 55a78e67f..000000000 --- a/docs/schema/concepts/by-theme/transportation/roads.mdx +++ /dev/null @@ -1,309 +0,0 @@ ---- -title: Roads ---- - -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import ExampleAccessRestrictionsBlanketDeny from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml'; -import ExampleAccessRestrictionPrivateAccessWithDeliveries from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml'; -import ExampleAccessRestrictionMotorVehiclesDestinationOnly from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml'; -import ExampleAccessRestrictionAxleLimit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml'; -import ExampleSpeedLimitsSimple from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml'; -import ExampleSpeedLimitsDirectional from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml'; -import ExampleSpeedLimitsVariableMax from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml'; -import ExampleTurnRestriction1Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml'; -import ExampleTurnRestriction1Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml'; -import ExampleTurnRestriction1Exit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml'; -import ExampleTurnRestriction1Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml'; -import ExampleTurnRestriction1Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml'; -import ExampleTurnRestriction1Connector3 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml'; -import ExampleTurnRestriction2Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml'; -import ExampleTurnRestriction2Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml'; -import ExampleTurnRestriction2Via from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml'; -import ExampleTurnRestriction2Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml'; -import ExampleTurnRestriction2Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml'; - -In the Overture transportation theme, a road is any kind of road, -street, or path, including a dedicated paths for walking or cycling. (Railways and waterways are separate subtypes in the transportation schema.) Road segments comprise the majority of ground-based transportation segments. Roads are modeled using [segment](/schema/reference/transportation/segment) features with the `subtype` property value set to the value `road`. - -This document describes properties specific to the `road` subtype. For more general information regarding segments, please refer to the [segments concept overview](/schema/concepts/by-theme/transportation/segments). - -## Subclass - -The subclass property refines the descriptions of segments by: - -- clearly specifying the usage of a length of road, and using linear referencing instead of further segmentation to pinpoint a change in how the road is used -- properly classifying detailed information from OpenStreetMap - -Subclasses require non-overlapping geometries, which will make it easier for routing engines to consume our road data and generate turn-by-turn directions. The class and subclass structures allow us to capture more 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 subclasses, laying the groundwork for richer and more detailed map displays with Overture data. - -## Surface - -The `road_surface` property of a road indicates its physical surface. If -omitted, a reasonable default value should be assumed based on the -`class` and `subclass`. - -Like many road segment properties, the `road_surface` property supports [geometric scoping](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing) (linear referencing). Consequently, the effective road surface may vary -along different sub-ranges of a road segment's geometry. - - -## Restrictions - -### Access restrictions - -Access restrictions on a road segment specify who is allowed to use the -road, and under what circumstances. - -Every road segment has an *implied* set of access restrictions defined -by its [road class](#class) and local rules, norms, and customs. -(The Overture transportation schema does not specify these implied -access restrictions, which are left to the specific application to -resolve.) - -The implied access restrictions may be modified for the road segment as -a whole by providing an explicit value for the property -`access_restrictions`. - -It is technically possible to specify a blanket access grant or refusal -of access applying to everyone and everything; but where, as is typical, -a more precise outcome is needed, one or more [rules](/schema/concepts/scoping-rules#rules-and-rule-based-properties) will be used to specify access restrictions. As with all rule-based properties, if no rule matches the specific facts, then the default restrictions for the road class govern. - - - - -{ ExampleAccessRestrictionsBlanketDeny } - - - - - -{ ExampleAccessRestrictionPrivateAccessWithDeliveries } - - - - - -{ ExampleAccessRestrictionMotorVehiclesDestinationOnly } - - - - - -{ ExampleAccessRestrictionAxleLimit } - - - - -### Turn restrictions - -Turn restrictions on a road segment limit the transitions which are -allowed from that segment into other [physically connected](/schema/concepts/by-theme/transportation/shape-connectivity#physical-connectivity) segments. - -Every road segment has an implied set of allowed transitions -defined by its [access restrictions](#access-restrictions) as well as -local rules, norms, and customs. An example of a transition restriction -implied by an access restriction, if the segment can only be used along the `forward` [heading](/schema/concepts/by-theme/transportation/shape-connectivity#heading), then it is implied that no transitions are allowed to any connected segments if travelling -along the `backward` heading. An example of a transition restriction -implied by a local rule or norm would be a blanket prohibition on -U-turns in a given jurisdiction. (The Overture transportation schema -does not specify these local rules, norms, and customs, which are left -to the specific application to resolve.) - -Overture takes a permissive-by-default approach to transition -restrictions. By default, all implied transitions are allowed. The -set of allowed transitions may be reduced by adding explicit transition -restrictions in the `prohibited_transitions` property. - -Turn restrictions come in two flavors: simple and via: a simple turn -restriction allows a simple regulation to be stated, such as "No right -turn onto Elm Street"; a via restriction covers more elaborate cases -where the sequence of maneuvers is important. - - - - -
- -
- - - -
- -*Prohibited right turn from "source" to "target" segment at connector 2.* - -
- -
- -
- -
- -
-Source segment -{ ExampleTurnRestriction1Source } -
- -
-Connector 1 - -*This connector is not an important part of the example, since it does -not participate in the turn restriction, but it is included to bring -real-world context to the example.* - -{ ExampleTurnRestriction1Connector1 } -
- -
-Exit segment - -*This segment is not an important part of the example, since all implied -transitions are allowed on it. We include it to bring real-world context -to the example.* - -{ ExampleTurnRestriction1Exit } - -
- -
-Connector 2 - -*The right turn from the source segment (`forward` heading) to the -target segment (`forward` heading) is prohibited at this connector.* - -{ ExampleTurnRestriction1Connector2 } -
- -
-Target segment - -*Traffic heading `forward` on the source segment may not enter this -segment heading `forward`, i.e. the right turn from the source segment -to this segment is prohibited.* - -{ ExampleTurnRestriction1Target } -
- -
-Connector 3 - -*This connector is not an important part of the example, since it does -not participate in the turn restriction, but it is included to bring -real-world context to the example.* - -{ ExampleTurnRestriction1Connector3 } -
- - -
- -
- - - - - -
- -
- - - -
- -*Prohibited transition from "source" to "target" through `via` segment.* - -
- -
- -
- -
- -
-Source segment -{ ExampleTurnRestriction2Source } -
- -
-Connector 1 -{ ExampleTurnRestriction2Connector1 } -
- -
-Via segment -{ ExampleTurnRestriction2Via } -
- -
-Connector 2 -{ ExampleTurnRestriction2Connector2 } -
- -
-Target segment -{ ExampleTurnRestriction2Target } -
- -
- -
- - - - -### Speed limits - -Speed limits restrict the speed at which travel is permitted on a road. -Typically speed limits specify maximum allowed speeds, but the -Overture also allows minimum speed limits to be set and variable speed -corridors to be indicated. - -Every road segment has an implied speed limit or set of speed limits -defined by its [road class](#road-class) and local rules, norms, and -customs. Note: as with access and turn restrictions, the Overture -transportation schema does not attempt to specify these implied speed -limits. - -The implied speed limits may be configured for the whole road segment by -providing an explicit value for the property -`speed_limits`. - -As with access restrictions and turn restrictions, speed limits can be specified using [rules](/schema/concepts/scoping-rules#rules-and-rule-based-properties). - - - - -{ ExampleSpeedLimitsSimple } - - - - - -{ ExampleSpeedLimitsDirectional } - - - - - -{ ExampleSpeedLimitsVariableMax } - - - \ No newline at end of file diff --git a/docs/schema/concepts/by-theme/transportation/segments.mdx b/docs/schema/concepts/by-theme/transportation/segments.mdx deleted file mode 100644 index 03ebe8231..000000000 --- a/docs/schema/concepts/by-theme/transportation/segments.mdx +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Segments ---- - -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import ExampleAccessRestrictionsBlanketDeny from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-01-blanket.yaml'; -import ExampleAccessRestrictionPrivateAccessWithDeliveries from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml'; -import ExampleAccessRestrictionMotorVehiclesDestinationOnly from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml'; -import ExampleAccessRestrictionAxleLimit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml'; -import ExampleSpeedLimitsSimple from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-01-simple.yaml'; -import ExampleSpeedLimitsDirectional from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-02-directional.yaml'; -import ExampleSpeedLimitsVariableMax from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/speed-limits-03-variable-max.yaml'; -import ExampleTurnRestriction1Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-source.yaml'; -import ExampleTurnRestriction1Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-target.yaml'; -import ExampleTurnRestriction1Exit from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-exit.yaml'; -import ExampleTurnRestriction1Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector1.yaml'; -import ExampleTurnRestriction1Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector2.yaml'; -import ExampleTurnRestriction1Connector3 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-01-connector3.yaml'; -import ExampleTurnRestriction2Source from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-source.yaml'; -import ExampleTurnRestriction2Target from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-target.yaml'; -import ExampleTurnRestriction2Via from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-via.yaml'; -import ExampleTurnRestriction2Connector1 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector1.yaml'; -import ExampleTurnRestriction2Connector2 from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/turn-restriction-02-connector2.yaml'; - -In the Overture transportation theme, features with their `type` property set to `segment` represent **paths repeatedly traversed by people or objects**. For example, a segment may represent a major highway, an abandoned subway line, or a ferry route. - -Because of their many possible uses, the segment `type` is further organized by its `subtype`, `class`, and `subclass` properties. Currently, the Overture transportation theme supports three **segment subtypes**: - - - - - - - - - - - - - - - - - - - - - - - - - -
SubtypeDescription% Of Total Segment Length in Overture
[road](/schema/concepts/by-theme/transportation/roads)Roads and footpaths~97%
railAny transit system in which vehicles ride on metal rails~3%
waterShipping lanes and ferry routes<1%
- -Although allowed segment classes and their interpretations differ across subtypes, segments share a number of common properties (for road subtype-specific property concepts, please refer to the [road](/schema/concepts/by-theme/transportation/roads) document): - -## Geometry - -A segment's geometry approximates the physical centerline of the section of path it models. For roads, information regarding the width of this path is captured in the `width_rules` road-specific property. - -## Granularity - -Occasionally, a real-world feature admits different representations at different granularities. For example, a dual carriageway may be modeled as one segment, or two parallel segments. - -Segments support modeling the transportation network at a range of granularities. For example, a single segment can represent: - -- A bidirectional street including all of its sidewalks -- A Single sidewalk -- Two parallel subway tracks -- A one-way street -- One direction of a dual carriageway - - -## Class - -The `class` property of a segment specifies its general purpose of use within its subtype. Unlike many segment properties, a segment's `class` property does not support [geometric scoping](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing) (linear referencing). Consequently, whenever a linear range of real-world road or rail makes a class transition (for example, between secondary and residential roads), the Overture transportation [segmentation](/schema/concepts/by-theme/transportation/shape-connectivity#segmentation) algorithm will generate a segment split. - -Currently, **only roads and railways have the `class` property**. Within these subtypes, every segment has a class. If the `class` property is missing from a segment's source dataset, the `class` for that segment will be given default value `unknown`, indicating the class is undetermined and may be updated in a later release. - -Like many aspects of Overture transportation schema, `class` is heavily inspired by OpenStreetMap. In this -case, it is similar to, but not the same as, OSM's `highway=*` and `railway=*` tags. - -## Flags - -A segment's flags (`road_flags` for roads, `rail_flags` for rails) are a set of named flag values indicating the presence or absence of simple physical characteristics. - -For example, a road segment with `road_flags = [is_link, is_under_construction]` is a link segment that is physically under construction. - -Like many segment properties, the `road_flags`/`rail_flags` property supports [geometric scoping](/schema/concepts/scoping-rules#geometric-scoping-linear-referencing). Consequently, the applicable flags may vary along different sub-ranges of a road segment's geometry. - - -**Here's an example of how classes, subclasses, and flags are modeled in the Overture schema:** - -``` -class: footway -subclass_rules: - - value: sidewalk - between: [0, 0.6] - - value: crosswalk - between: [0.6, 1.0] -road_flags: - - values: [is_bridge] - between: [0.2, 0.3] - - values: [is_under_construction] - between: [0.3, 0.5] - -class: service -subclass_rules: - - value: driveway - between: [0, 0.5] - -class: primary -subclass: link -subclass_rules: - - value: link -``` diff --git a/docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx b/docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx deleted file mode 100644 index 8b62cc144..000000000 --- a/docs/schema/concepts/by-theme/transportation/shape-connectivity.mdx +++ /dev/null @@ -1,479 +0,0 @@ ---- -title: Shape and connectivity ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - - -The Overture transportation theme captures the physical shape and connectivity -of the transportation network through the interaction of the theme's two feature -types: segments and connectors. - - -
- -
- - - -
- -*A connector physically joining three segments.* - -
-
- -
- -## Connectors - -The [connector](/schema/reference/transportation/connector) feature type carries point geometry which describes a location where a physical connection between two or more segments occurs (or may occur in the -future). - -Connectors have no properties apart from geometry and standard Overture -feature properties. All other aspects of the transportation theme are -modeled on segments. - -## Segments - -The [segment](/schema/reference/transportation/segment) feature type carries `LineString` geometry which describes the physical shape of a section of the transportation network. A segment may represent an entity with a -tangible real-world existence, such as a paved road; or it may represent -an intangible entity, such as a ferry route, which has a well-known -shape but no observable presence in the real world. - -### Physical connectivity - -Two or more segments are physically connected at a given connector if -each segment's connectors property contains a reference to the -connector. - -The connector geometry's coordinates should preferably be contained -within the segment geometry's coordinates, in which case the connector -coordinates define the point of physical connection. This constraint -will always be met by official Overture data releases. Where this is not -possible, the point of physical connection is the closest point to the -connector coordinates which intersects the segment geometry. - -Conversely, two segments are not physically connected if their -connectors properties do not reference a shared connector, even if -their geometries overlap or even share a coordinate in common. - -Travel from a point on one segment to a point on another -physically-connected segment is allowed, unless limited by an explicit -restriction such as an access or turn restriction. - -All segments in official Overture transportation data releases have a -minimum of two connectors, one at each end of the geometry, even if -those endpoint connectors are not attached to any other segment. This is -not a mandatory minimum and is not enforced by the schema. It is done -to allow new segments to connect into the existing network without -needing to change the properties of existing segments. - -### Start, end, and orientation - -The first coordinate in a segment's geometry is the start of the -segment and the last coordinate is the end. A segment is oriented -away from the start and toward the end. The examples below show two -segment geometries with identical coordinates, oriented in opposite -directions. - -
- -
- -```yaml -type: LineString -coordinates: - - [1, 0] # Start - - [0, 0] - - [-1, 0] # End -``` - -
- - - -
- -
- -
- -*This segment geometry is oriented due west.* - -
- -
-
- -
- -
- -
- -```yaml -type: LineString -coordinates: - - [-1, 0] # Start - - [0, 0] - - [1, 0] # End -``` - -
- - - -
- -
- -
- -*This segment geometry is oriented due east.* - -
- -
-
- -
- -
- - -### Heading - -Travel along a segment's geometry can follow one of two possible -headings: forward or backward. The forward heading proceeds -toward the end of the segment; while the backward heading proceeds -back toward the start of the segment. - -
- -
- - - -
- -*Travel heading along a segment.* - -
-
- -
- -### Subtypes - -Segment features have a `subtype` property whose value gives more -specific information about the segment's role within the transportation -network. - -The `subtype` property may be one of `road`, `rail`, or `water` but -only `road` is currently well defined. A `road` segment models any kind -of road, street, or trail, including a dedicated path for walking, -cycling and similar activities. For more information about `road` segments, see the page on [roads](/schema/concepts/by-theme/transportation/roads). - -### Level (Z-order) - -Segment geometry is two-dimensional. In the real, 3D, world, however the -entities represented by segments can be above or below each other, as -may happen with tunnels, bridges, overpasses, and stacked multi-level -highway interchanges. To accurately render top-down 2D maps, it is -important to know the relative stacking order, or Z-order, of segments. - -Segment Z-order is given by the `level` property. A `level` value of -`0` indicates visual level, with positive numbers indicating above -visual level, negative numbers indicating below visual level, and in -general, a lesser number indicating a lower position in the stacking -order than a greater number. - -
- -
- - - -
- -*Ground level segments stacking above tunnel segments.* - -
-
- -
- -Note that two segments with different `level` values may be physically -connected, since `level` is an approximation for rendering and is not -meant be a precise indication of elevation at different points along the -segment. Connectors do not have a `level`. - - - -## Segmentation - -The term segmentation describes the process of converting upstream source data -into Overture transportation shape and connectivity data modeled as segments and -connectors. - -### Shape stability - -A primary goal of Overture's segmentation process is to promote stability of -segment shape across Overture data releases. For example, if a certain -real-world stretch of Main Street is represented by a single segment with -particular geometry in release 1, we will strive to avoid slicing the exact same -geometry up into two, three, or four segments in release 2. - -Note that aiming for segment shape stability categorically does not mean that -Overture aims for a stable transportation dataset. On the contrary, we aim to -continuously improve data accuracy and coverage, and expect the transportation -network dataset to constantly evolve and grow as a result. Our goal is simply -to minimize unnecessary, semantically meaningless, changes in how the geometry -is sliced into segments across data releases. - -Several features of the transportation theme schema were designed to allow the -segmentation process to achieve its segment stability goal. These features -include: - -- [interior connectors](#interior-connectors). -- [geometrically scoped](#geometric-scoping) segment properties. - - - -### ID stability - -Overture pursues shape stability to improve the ability to assess whether two segments from different points in time (or from different upstream data -sources) represent the same real world entity. Overture's success at this assessment directly feeds into the stability and precision of [GERS IDs](https://docs.overturemaps.org/gers) assigned to segments. In turn, higher GERS ID stability and precision makes transportation theme data more useful for conflation. - -### Interior connectors - -A key feature of the Overture transportation schema which enables shape -stability is the ability of segments to support connectors at interior positions -along their geometry, not only at their endpoints. The ability to add internal -connectors prevents the segmentation process from having to blindly follow every -split or join introduced in upstream source data. - -For example, imagine a square city block bordered by road on all four sides has -been mapped in the source data, but a back alley dividing the block along the -east-west axis has not. If the back alley is subsequently mapped in the source -data, the Overture segmentation process can connect to the transportation -network without having to subdivide any existing segments by simply introducing -internal connectors on the north-south road segments bordering the block to the east and west. As a result, the [Overture IDs](https://docs.overturemaps.org/gers) of the north-south road segments remain as they were and no data needs to be re-conflated. - -
- -
- - - -
- -
- - - -
- -
- -
- -
- -*A square city block bordered by four roads before (left) and after (right) mapping the back alley using internal connectors.* - -
- -
- -
- -Note that in the above example, an official Overture data release would insert -coordinates in the middle of the north-south segments, if they did not already -exist, because Overture data releases will always ensure that every segment's -geometry includes all of its connectors. From a computer's perspective, this is -a very minor alteration of the segment's shape. - -### Geometric scoping - -Many segment properties may include a linear reference so that they apply only -to a part of the segment geometry. We refer to these linearly-referenced -property values as being geometrically scoped and discuss geometric scoping at greater length in the page on [scoped properties](/schema/concepts/scoping-rules). - -Geometric scoping allows the segmentation algorithm to avoid introducing -segment splits simply because a certain property has different values along -different parts of the geometry. Like interior connectors, geometrically-scoped -properties enable the segmentation process to make decisions that promote shape -stability, ultimately resulting in more precise and stable [Overture IDs](https://docs.overturemaps.org/gers) and less churn in conflated data. - -
- -
- - - -
- -*A single segment with multiple geometrically-scoped speed limit values.* - -
-
- -
- -### Loops - -Although it is technically possible to use the Overture schema to express a -segment forming a connected loop, such loops are considered invalid and will -never be produced by the segmentation algorithm. - -An illegal loop where one of a segment connects to the other end can be -corrected by splitting the segment and introducing a second connector to -maintain physical connectivity. An illegal self-crossing loop of degree *N* -can be corrected by splitting the segment into N pieces. - -
- -
- -
- - - -
- -
- - - -
- -
- -
- -
- -*An illegal loop connected at its endpoints (left) and a possible correction (right).* - -
- -
-
- -
- -
- -
- -
- - - -
- -
- - - -
- -
- -
- -
- -*An illegal self-crossing loop (left) and a possible correction (right).* - -
- -
-
- -
- -
diff --git a/docs/schema/concepts/by-theme/transportation/travel-modes.mdx b/docs/schema/concepts/by-theme/transportation/travel-modes.mdx deleted file mode 100644 index 88c825104..000000000 --- a/docs/schema/concepts/by-theme/transportation/travel-modes.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Travel modes ---- - -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; - -In the real world, a travel mode can be thought of intuitively as a way -of getting from point A to point B. Travel modes can include non-vehicle -modes (foot), vehicle modes (a bicycle or motor vehicle), and -occasionally more granular details, e.g. a motor vehicle classified as a high occupancy vehicle or a heavy goods vehicle. - -Within the Overture transportation theme schema model, this real world -intuition translates to the following definition: a travel mode is a -recognized mode by which a person or thing may use a [segment](/schema/reference/transportation/segment) feature. - -## Understanding travel modes - -### Implied travel modes - -Every segment has an *implied* set of travel modes that are allowed to use the segment. For [road](/schema/concepts/by-theme/transportation/roads) segments, this implied set derives -from the [road class](/schema/concepts/by-theme/transportation/roads#road-class), as well as local rules, norms, and customs operative where the road segment is situated. - -Since this implied set depends on locality or jurisdiction, and is -susceptible of varying over time, the Overture transportation schema -does not try to specify the implied set. Resolution of the implied set -is done by the specific application in the case where this level of -detail is important for its proper functioning. Note: an accurate routing -engine may need this information, whereas a 2D map render or a geocoder -likely do not. - -### General definitions - -Overture's recognized travel modes are defined in general terms that are -broadly applicable, for example `hov` is a high-occupancy vehicle and -`hgv` is a heavy goods vehicle. In most jurisdictions, these general -terms map to a concept that is in use within the jurisdiction, even -though the local name for the concept may vary, for example one -jurisdiction may say heavy goods vehicle and another may say -large goods vehicle. - -Despite being broadly applicable, travel modes may have different -definitions in different places and at different times. - -- in one jurisdiction, an `hgv` might mean any vehicle with a gross - vehicle weight in excess of 3.5 tonnes (3,500 kg). In another place, - an `hgv` might have a gross vehicle weight of at least 10,001 lbs. -- in one jurisdiction, an `hov` might require a minimum of 2 passengers - while in another place it might have a higher minimum passenger count, - or include battery-electric vehicles, or exclude certain classes of - vehicle or usage. - -As a consequence of the variance in definition across place and time, -Overture gives only general definitions for travel modes, leaving -precise definition to those applications that require them. - -### When is a travel mode recognized? - -A travel mode is recognized by the Overture transportation schema when -it becomes part of the [`mode`](https://github.com/OvertureMaps/schema/blob/5f82f1d6a916031cb32730e1fac7e1a353f10c60/schema/transportation/segment.yaml#L103) -enumeration. This enumeration in early versions of the schema was relatively small and contained only travel modes that are generally-applicable both across jurisdictions and over time. As development of the schema has progressed, this list has grown and will to continue to expand as the world changes and new information arises. - -Our criteria for recognizing a proposed new travel mode are: - -- the proposed new travel mode should represent a generally-accepted - concept meaning that the concept exists in many places with roughly - the same definition. -- the proposed new travel mode should be referred to with well-known - sign iconography or sign text in those jurisdictions where the - concept exists; and this iconography or sign text is preferably - somewhat consistent across many jurisdictions and over time. -- it must be possible to give a relatively precise definition to the - proposed new travel mode and explain how it differs from, or - *intersects* with, other similar travel modes which are already - recognized in the Overture schema. -- the proposed new travel mode should preferably not be trivially - expressible using another existing [scoping property](/schema/concepts/scoping-rules#scoped-values-and-scoping-properties).(*An example of such a trivially-expressible concept might be a three-axle vehicle which is more appropriately phrased as `vehicle: [{dimension: axle_count, comparison: equal_to, value: 3}]`.*) -- the proposed new travel mode must be supported by existing data in at - least one of Overture's upstream data sources. - -There is a risk that the above-described approach will be too slow to -adapt to our users' needs in a vast, ever-changing world. One possible -avenue to mitigate this risk is supporting [custom extensions](#should-we-support-extension-travel-modes) to the built-in list of recognized travel modes. - -## Travel mode schema - -### Scoping to travel modes - -Travel modes can be used to change the scope of scoped and rule-based -properties within the schema. For example, they can affect the scope of access restrictions, turn restrictions, or speed limits on [road](/schema/concepts/by-theme/transportation/roads) segments. Since travel modes are expressed via scoping properties, we recommend you read the section on [scoped and rule-based properties](/schema/concepts/scoping-rules) before proceeding further. - -#### Travel mode scoping: `mode` - -The scoping property `mode` controls whether a given scoped property -applies when a given travel mode is being used for traveling along a -road segment. - -If `mode` is provided, it must be a non-empty array of string values -identifying travel modes, and is interpreted as a set. Values must be -unique, but order is not important. - -#### Vehicle attribute scoping: `vehicle` - -Because travel modes are an fuzzy concept, there are inevitably areas -of overlap between with the more precise, but more limited, `vehicle` -scoping property which is used for [vehicle attributes scoping](/schema/concepts/scoping-rules#vehicle-attributes-scoping). Where there is potential overlap, the method of scoping used in Overture data releases will depend on how the upstream data source has expressed the equivalent concept. Where there is choice, it is preferable to select the scoping method that most accurately reflects the intention expressed on local signage. - -#### Similar scoping properties: `using` and `recognized` - -The scoping properties `using` and `recognized` express concepts that -are meant to be orthogonal to (completely separate from) travel modes. - -- The `using` property indicates [purpose of use](/schema/concepts/scoping-rules#purpose-of-use-scoping) scoping, which relates to the purpose for which the person or thing travelling is using a given segment of the transportation network. Travel modes should ideally not embed a purpose of use. -- The `recognized` property indicates [status scoping](/schema/concepts/scoping-rules#status-scoping-membership-in-a-recognized-group), which relates to a recognized status given to the person or thing traveling, where the recognized status is distinct from the mode of travel itself. Travel modes should ideally not embed a status. - -### The travel modes taxonomy - -Travel modes in Overture form a shallow taxonomy. Some travel modes are -more general, while others are more specific, and a more general travel -mode may contain a more specific one. For example, the general travel -mode `vehicle` contains the more specific mode `motor_vehicle`. The -taxonomy supported in our draft schema `v0.8.0` can be visualized in the -diagram below. - -
- -
- - - -
- -
- -
- -*The Overture travel modes taxonomy.* - -
- -
- -
- -As many of the above travel modes draw on the body of knowledge -accumulated in relation to OpenStreetMap -[transport mode access restrictions](https://wiki.openstreetmap.org/wiki/Key:access#Transport_mode_restrictions), -Overture Maps would like acknowledge a intellectual debt to the OSM community in -relation to travel modes as well as to other aspects of the transportation schema. - -## Open questions - -This section discusses some open questions we are debating internally with -regard to travel modes. We would love [your feedback](https://github.com/OvertureMaps/schema/discussions) on these questions and any others you may have. - -### Minimum required travel modes - -We're not yet certain on the minimum set of recognized travel modes is -that will make the Overture transportation schema as usable as possible -to as broad an audience as possible. What do you think we are missing? - -### Should we support extension travel modes? - - - -We live in a time of rapid technological and regulatory change in -the transportation space. No matter how quickly we extend the travel modes in the Overture Maps schema it will always be behind the real world with regard to some technologies, customs, or local rules. - -One way to support users working at the cutting edge is to allow custom extensions to -the list of travel modes. If we did this consistently with how extension -properties -work for features, we could, for example, allow travel mode names with -the `ext_*` to be ignored by the schema validation rules. - -### Internal consistency - -In [another section of this documentation](#vehicle-attribute-scoping-vehicle), we alluded to an overlap between the fuzzy concept of travel modes and vehicle attribute -scoping. We're aware of this overlap and view it as limited but inevitable. - -Our intention is to reduce or eliminate the overlap between travel modes and the other [similar scoping properties](#similar-scoping-properties-using-and-recognized) -(`using` and `recognized`). One area where we may have been unsuccessful -is the `emergency` travel mode in the [current taxonomy](#the-travel-modes-taxonomy). -Arguably, `emergency` should be removed from the taxonomy, and an -`as_emergency_responder` should be included in the status values enumeration for the `recognized` property. diff --git a/docs/schema/concepts/cartography.mdx b/docs/schema/concepts/cartography.mdx deleted file mode 100644 index cc8d58f6b..000000000 --- a/docs/schema/concepts/cartography.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Cartography ---- - - - -import yamlLoad from "@site/src/components/yamlLoad" - - -Cartographic properties offer suggestions for displaying Overture features at specific zoom levels and using sort order to properly layer features in a map.. For example, the **land_cover** feature type is offered at two levels of detail for display, designated by `min_zoom` and `max_zoom` in the schema. diff --git a/docs/schema/concepts/index.mdx b/docs/schema/concepts/index.mdx deleted file mode 100644 index 3c4b99a98..000000000 --- a/docs/schema/concepts/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Concepts ---- -import DocCardList from '@theme/DocCardList'; - - diff --git a/docs/schema/concepts/names.mdx b/docs/schema/concepts/names.mdx deleted file mode 100644 index 9e9e05dd9..000000000 --- a/docs/schema/concepts/names.mdx +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: Names ---- - -import yamlLoad from "@site/src/components/yamlLoad" -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Named entities in Overture share a common schema. - -## `primary` -If a feature has a name, expect `names` to have at least one property: `primary`. This will always be populated with the localized name of a feature. - -```yaml -id: 08b2aa845a18afff02009f7c732067c5 -names: - primary: The White House -``` - -## `common` - -Common name variations are translations of a name. - -```yaml -id: 08b2aa845a18afff02009f7c732067c5 -names: - common: - de: Weißes Haus - hi: व्हाइट हाउस - fi: Valkoinen talo - ru: Белый дом - pt: Casa Branca - lt: Baltieji Rūmai - hr: Bijela kuća - fr: Maison Blanche - hu: Fehér Ház - br: Ti Gwenn - si: ධවල මන්දිරය - uk: Білий дім - sk: Biely dom - sv: Vita huset - ko: 백악관 - en: White House - ku: Qesra Spî - it: Casa Bianca - es: Casa Blanca - zh: 白宫 - cs: Bílý dům - ja: ホワイトハウス - fa: کاخ سفید - ro: Casa Albă - nl: Witte Huis - tr: Beyaz Saray -``` - -## `rules` -Additional names variations such as _official_, _alternate_, or _short_ exist as `rules`. - -Rules can also have `side` and `geometric` range scoping. Read more about [scoping rules here](/schema/concepts/scoping-rules). - -```yaml -id: 08b2aa845a18afff02009f7c732067c5 -names: - rules: - - variant: alternate - language: hr - value: Bila kuća - between: null - side: null -``` - -## Languages - -Languages in the Overture Maps schema are identified by [IETF BCP-47 language tags](https://en.wikipedia.org/wiki/IETF_language_tag); the same tag scheme is used for `common` map entries and `language` values in rules. - -We use the following regular expression validate a BCP-47 language tag: - -```sql -(?:(?:[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})+)*$` -``` - -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](https://datatracker.ietf.org/doc/html/rfc5646), but not that they are validly registered tag in [IANA's language subtag registry](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry). - -In the regular expression, `'(:?'` indicates a non-capturing group, and 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](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) -``` - -## Conversion from OSM - -In general, OpenStreetMap features with multiple names include tags with keys of the form: `(variant_)name(:language-tag)`, for example: - -| Key | Variant | Language Tag | -| --- | ------- | ------------ | -| name | none | none | -| name:el | none | el | -| loc_name | locally recognized | none | -| loc_name:es | locally recognized | es | -| official_name | official | none | - -Many, but not all OSM language tags are valid BCP-47 tags. In a few cases, we convert the tag to the proper BCP-47 tag. - -
- Possible BCP-47 Conversions -- `ja_kana' -> 'ja-Kana` -- `ja_hira' -> 'ja-Hira` -- `zh_pinyin' -> 'zh-Latn-pinyin` -- `zh_zhuyin' -> 'zh-Bopo` -- `be-tarask' -> 'be-Latn-tarask` -- `nan-POJ' -> 'nan-Latn` -
- -### Overture Variants - -Overture allows only `common`, `official`, `alternate`, and `short` variants. OSM variants are mapped to these. - -
- Mapping of OSM Variant to Overture Variant - -| OSM Variant | Overture Variant | -| ----------- | ---------------- | -| none | common | -| official | official | -| short | short | -| loc | alternate | -| int | alternate | -| nat | alternate | -| old | alternate | -| ref | alternate | -| reg | alternate | -| alt | alternate | -| nick | alternate | - -All other variants are ignored. -
- -Once all valid variants and language tags have been derived from OSM tags, populating -the Overture names field is as follows: - -* `primary` is always the "common" variant with no language tag. (`name=` in OSM). - -* `common` is a map of the common variants where the keys are the BCP47 language tags and the values are their corresponding tag values. There can only be one entry for each language. - -* `rules` is an array of objects that captures all other variants. Each rule structure has the following fields: - - - `language` - a valid BCP-47 language tag - - `variant` - `common`, `official`, `alternate`, or `short` - - `value` - the name - - `between` - Used for linear-referencing of transportation segments. This is always null for non-transportation features. - - `side` - Used when one side of a transportation segment has a name. This is always null for non-transportation features. - -Because `rules` is a list there are no restrictions on the number of variants or -languages. It is possible to have multiple instances of the same variant and -language combination. - -### Example -The [New York City label node](https://www.openstreetmap.org/node/61785451) includes the following name tags: -name tags: -``` -name=New York -name:br=Evrog Nevez -name:el=Νέα Υόρκη -name:es=Nueva York -name:be-tarask=Нью-Ёрк -old_name:es=Nueva Ámsterdam -loc_name=Big Apple -loc_name:es=La Gran Manzana -official_name=City of New York -... -``` - -The `names` property in Overture includes: - -```json -{ - primary: "New York", - common: { - "br": "Evrog Nevez", - "el": "Νέα Υόρκη", - "es": "Nueva York", - "be-Latn-tarask": "Нью-Ёрк" - }, - rules: [ - { - "value": "City of New York", - "variant": "official", - "language": null, - }, - { - "value": "Nueva Ámsterdam", - "variant": "alternate", - "language": "es", - }, - { - "value": "Big Apple", - "variant": "alternate", - "language": null, - }, - { - "value": "La Gran Manzana", - "variant": "alternate", - "language": "es", - }, - ] -} -``` - -Note that `between` and `side` are always null in this example because it does not apply to a transportation feature. diff --git a/docs/schema/concepts/scoping-rules.mdx b/docs/schema/concepts/scoping-rules.mdx deleted file mode 100644 index 57bbc714c..000000000 --- a/docs/schema/concepts/scoping-rules.mdx +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: Scoped and rule-based properties ---- - -import CodeBlock from '@theme/CodeBlock'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import ThemedImage from '@theme/ThemedImage'; -import useBaseUrl from '@docusaurus/useBaseUrl'; -import ExampleGeometricScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/geometric-scoping.yaml'; -import ExampleTemporalScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/temporal-scoping.yaml'; -import ExampleSubjectiveHeadingScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-heading-scoping.yaml' -import ExampleSubjectiveUsagePurposeScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml'; -import ExampleSubjectiveStatusScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-status-scoping.yaml'; -import ExampleSubjectiveVehicleAttributesScoping from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml'; - - -In the real world, many facts and rules affecting entities have only a partial application, meaning they don't apply everywhere, or they don't apply at all times, or to everyone, or to all sets of external conditions. For example, access restrictions on a road segment might not apply to all people or all kinds of vehicles, or they might vary according to the day of the week. - - -The Overture schema uses two related concepts to capture the partial application of facts and rules: scoped values and rule-based properties. - -## Scoped values and scoping properties - -A *scoped* value is a value which only applies within a limited scope. Most scoped values are rules in the rule lists of [rule-based properties](#rules-and-rule-based-properties). However, scoped values also exist outside of rule-based properties. For example, a `destinations` property belonging to a road segment might be geometrically scoped to its position along the road. - -The scope in which a scoped value applies is controlled by one or more special child properties of the value known as *scoping* properties. - -### Geometric scoping (linear referencing) - - - - -The geometric scoping properties `at` and `between` limit the scope of their parent value to a position or range of positions, respectively, along a segment's geometry. When the parent value is a rule object, the rule only matches the position or range of positions specified in the `at` or `between` property. - -The value of the `at` property is a single real number `a` where `0` ≤ `a` -≤ `1`. It represents a discrete position along the segment's geometry. The -value of the `between` property is a pair of numbers `[a, b]` where `0` ≤ -`a` < `b` ≤ `1`. It represents a range of positions along the segment's -geometry. The numbers `a` and `b` are interpreted as percentage displacements -along the parent segment's geometry starting from the start of the segment. -(*The terms "start" and "end" are explained in -[Shape and connectivity](https://docs.overturemaps.org/guides/transportation/shape-connectivity).*) - -So, for example, the scoping property `"at": 0.15` scopes its parent value -to the position on the segment that is displaced 15% of the segment length from -the start. - -
- -
- - -
-*The position along the segment geometry described by `"at": 0.15`.* -
-
-
- -The scoping property `"between": [0.35, 0.75]` scopes its parent value to the range of positions on the segment beginning at 35% and extending to 75% of the segment length from the start. - -
- -
- *The range on the segment geometry described by `"between": [0.35, 0.75]`.* -
-
-
- - - The example below shows a road segment whose speed limit is defined by two geometrically-scoped speed limit rules: - { ExampleGeometricScoping } - -
- -### Temporal scoping (opening hours) - - - - -The temporal, or time-based, scoping construct `when: { during: "..." }` limits the scope of its parent value to one or more recurring time ranges. -When the parent value is a rule object, the rule only matches the time range or time ranges specified in the `during` property. - -The `during` property must contain a string expressed in the OpenStreetMap -[opening hours specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification). - - - - -The example below shows a road segment with a temporally-scoped access restriction rule. The rule states that non-bus travellers are prohibited from access to the segment on weekdays between 3PM and 6PM. - -{ ExampleTemporalScoping } - - - - - - -### Subjective scoping - -Subjective scoping means that the scope of a property can be constrained based on subjective factors like *who* or *what* is travelling on the transportation network, or *how* they are doing it. - -The Overture transportation schema supports several subjective factors. The sub-headings below explain each of these subjective factors in greater detail. - -#### Travel-mode scoping - -A travel mode is a way of moving about the transportation network, for example driving in a motor vehicle, or, more specifically, driving in a high-occupancy vehicle. - -The property construct `when: { mode: [...] }` limits the scope its parent value to apply only to people or things travelling using the listed travel modes. - -To dive deeper into this topic, see the page on [travel modes](https://docs.overturemaps.org/guides/transportation/travel-modes). - -#### Heading - - - - -Heading scoping limits the the scope of a parent value to apply only when the traveller is proceeding along the segment geometry in the named direction, either `forward` or `backward`. -(*The directions `forward` and `backward` are defined on the [shape and connectivity](https://docs.overturemaps.org/guides/transportation/shape-connectivity) page.*) - -The property construct `when: { heading: forward|backward }` applies heading scoping to a parent value. - - - - - -The example below shows a road segment with multiple heading-scoped access restriction rules. The rules allow all standard travel modes for the segment class to travel in the forward direction, but only allow buses to travel in the backward direction. - -{ ExampleSubjectiveHeadingScoping } - - - - -#### Purpose of use scoping - - - - -Usage purpose scoping limits the scope of a parent value to apply only when the user is using the feature for one of the listed purposes. -This type of scoping is common when it matters that a person is in the process of doing something like making a delivery or acting as the customer of a business. - -The property construct `when: { using: [...] }` applies usage purpose scoping to a parent value. - - - - -The example below shows a road segment representing a hotel driveway where through traffic is not permitted (only usage by hotel customers or as a final destination is allowed): - - { ExampleSubjectiveUsagePurposeScoping } - - - - -#### Status scoping (membership in a recognized group) - - - - -Status scoping limits the scope of a parent value to apply only when the user has a certain recognized status or is a member of a recognized -group. -This type of scoping is useful when it matters whether a person or thing has a recognized characteristic, such as holding a permit or being an employee of a business or student at an academic institution. - -The property construct `when: { recognized: [...] }` applies status scoping to a parent value. - - - - -The example below shows a road segment modeling a private condominium tower driveway where access is denied to the general public, but allowed to privately-authorized individuals, such as condo unit owners: - -{ ExampleSubjectiveStatusScoping } - - - - -### Vehicle attributes scoping - - - - -Vehicle attribute scoping limits the scope of a parent value to apply only when the vehicle in use meets certain criteria. - -The property construct `when: { vehicle: [{ dimension: ..., comparison: ..., value: ... }] }` applies vehicle attributes scoping to a parent value. - -Note that vehicle attribute scoping can overlap to some degree with [travel mode scoping](#travel-mode-scoping). -For example, some access rules may be scoped to the travel mode "heavy goods vehicle", while another equivalent access rule could be scoped to the vehicle attribute "gross vehicle weight". - - - - -{ ExampleSubjectiveVehicleAttributesScoping } - - - - - - - -## Rules and rule-based properties - -A *rule-based* property is a property whose value in a given situation is determined by evaluating a list of rules against the facts applicable to that situation. -Each individual rule in the list of rules is itself a scoped value, a scoped value, and the assessment of which rule applies to a given set of facts is done by the rule evaluation algorithm. - -### Absolute form - -There are cases when specifying a property value using rules makes sense, and -cases where doing so is unnecessarily complicated because the real-world entity -being modeled has a single unchanging state which is the same in all fact -situations. In these cases, most rule-based properties support a simpler -absolute form without a list of rules. - -### Rule evaluation algorithm - -Given a rule-based property, the actual value of the property in a given fact -pattern is determined by a three-step process: first, all matching rules are -identified; second, the single determining rule is chosen if possible; lastly, -if there is no applicable rule, an appropriate default value may be assumed. - -1. **Matching rules.** For a given rule and a given set of facts, the rule - *matches* the facts if the scope of the rule contains all the facts, *i.e.* - the facts fit within all of the scoping properties expressed in the rule. The - matching criteria for a rule can be thought of as the logical AND of all the - scoping properties expressed in the rule. -2. **Determining rule.** For a given rule-based property and a given set of - facts, *at most* one rule can *determine* the property value. If only one - rule matches, that rules determines the property value. If more than one rule - matches, the last matching rule in the list determines the value. (This is - similar to how OpenStreetMap [conditional restrictions](https://wiki.openstreetmap.org/wiki/Conditional_restrictions) - evaluated.) Therefore it is important to write more general rules before more - specific ones in a rule list. -3. **Fallback to default.** If there are no matching rules, an appropriate - default value may apply, depending on the property being evaluated. - diff --git a/docs/schema/schema.md b/docs/schema/index.md similarity index 94% rename from docs/schema/schema.md rename to docs/schema/index.md index d70e4d69f..8af8f0990 100644 --- a/docs/schema/schema.md +++ b/docs/schema/index.md @@ -27,11 +27,11 @@ In the Overture schema, all features have a unique `id` called a [GERS ID](https ### 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, which we describe in detail [here](/schema/concepts/names). +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 [schema concepts](concepts) section of this documentation describes these complexities in detail. +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 diff --git a/docs/schema/codegen/Names/name_rule.md b/docs/schema/reference/Names/name_rule.md similarity index 70% rename from docs/schema/codegen/Names/name_rule.md rename to docs/schema/reference/Names/name_rule.md index e83a613f6..3aa698c03 100644 --- a/docs/schema/codegen/Names/name_rule.md +++ b/docs/schema/reference/Names/name_rule.md @@ -6,10 +6,10 @@ Name rule with variant and language specification. | Name | Type | Description | |-----:|:----:|-------------| -| `side` | `string` ([Side](side)) (optional) | Examples: `left`, `right` | +| `side` | `string` ([Side](/schema/codegen/Names/name_rule/side/)) (optional) | Examples: `left`, `right` | | `between` | `list` (optional) | | | `value` | `string` | | -| `variant` | `string` ([NameVariant](name_variant)) | Examples: `common`, `official`, `alternate`, ... | +| `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` | diff --git a/docs/schema/codegen/Names/name_variant.md b/docs/schema/reference/Names/name_variant.md similarity index 100% rename from docs/schema/codegen/Names/name_variant.md rename to docs/schema/reference/Names/name_variant.md diff --git a/docs/schema/codegen/Names/names.md b/docs/schema/reference/Names/names.md similarity index 100% rename from docs/schema/codegen/Names/names.md rename to docs/schema/reference/Names/names.md diff --git a/docs/schema/codegen/Names/perspective_mode.md b/docs/schema/reference/Names/perspective_mode.md similarity index 100% rename from docs/schema/codegen/Names/perspective_mode.md rename to docs/schema/reference/Names/perspective_mode.md 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/codegen/Names/side.md b/docs/schema/reference/Names/side.md similarity index 100% rename from docs/schema/codegen/Names/side.md rename to docs/schema/reference/Names/side.md diff --git a/docs/schema/codegen/address.md b/docs/schema/reference/address.md similarity index 100% rename from docs/schema/codegen/address.md rename to docs/schema/reference/address.md diff --git a/docs/schema/reference/addresses/address.md b/docs/schema/reference/addresses/address.md deleted file mode 100644 index 21ae99830..000000000 --- a/docs/schema/reference/addresses/address.md +++ /dev/null @@ -1,12 +0,0 @@ - - -# 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. diff --git a/docs/schema/codegen/addresses/address/address.md b/docs/schema/reference/addresses/address/address.md similarity index 100% rename from docs/schema/codegen/addresses/address/address.md rename to docs/schema/reference/addresses/address/address.md diff --git a/docs/schema/codegen/addresses/address/address_level.md b/docs/schema/reference/addresses/address/address_level.md similarity index 100% rename from docs/schema/codegen/addresses/address/address_level.md rename to docs/schema/reference/addresses/address/address_level.md diff --git a/docs/schema/reference/base/Bathymetry.md b/docs/schema/reference/base/Bathymetry.md deleted file mode 100644 index dc9207954..000000000 --- a/docs/schema/reference/base/Bathymetry.md +++ /dev/null @@ -1,27 +0,0 @@ -# Bathymetry - -Topographic representation of an underwater area, such as a part of the ocean -floor. - -## Fields - -| Name | Type | Description | -|-----:|:----:|-------------| -| `cartography` | [`CartographicHints`](TK) (optional) | | -| `cartography.prominence` | `integer` (optional) | | -| `cartography.min_zoom` | `integer` (optional) | | -| `cartography.max_zoom` | `integer` (optional) | | -| `cartography.sort_key` | `integer` (optional) | | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Geometry (Polygon or MultiPolygon) | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | | diff --git a/docs/schema/reference/base/Infrastructure.md b/docs/schema/reference/base/Infrastructure.md deleted file mode 100644 index d1e09a582..000000000 --- a/docs/schema/reference/base/Infrastructure.md +++ /dev/null @@ -1,40 +0,0 @@ -# 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` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`InfrastructureClass`](TK) | | -| `subtype` | [`InfrastructureSubtype`](TK) | | -| `height` | `float64` (optional) | | -| `surface` | [`SurfaceMaterial`](TK) (optional) | | diff --git a/docs/schema/codegen/base/bathymetry/bathymetry.md b/docs/schema/reference/base/bathymetry/bathymetry.md similarity index 100% rename from docs/schema/codegen/base/bathymetry/bathymetry.md rename to docs/schema/reference/base/bathymetry/bathymetry.md diff --git a/docs/schema/codegen/base/infrastructure/infrastructure.md b/docs/schema/reference/base/infrastructure/infrastructure.md similarity index 86% rename from docs/schema/codegen/base/infrastructure/infrastructure.md rename to docs/schema/reference/base/infrastructure/infrastructure.md index 897d6653e..76e90976f 100644 --- a/docs/schema/codegen/base/infrastructure/infrastructure.md +++ b/docs/schema/reference/base/infrastructure/infrastructure.md @@ -14,13 +14,13 @@ or communication towers and lines. | `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[].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[].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.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"` | | @@ -37,7 +37,7 @@ or communication towers and lines. | `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`, ... | +| `surface` | `string` ([SurfaceMaterial](../surface_material)) (optional) | Examples: `asphalt`, `cobblestone`, `compacted`, ... | ## Examples diff --git a/docs/schema/codegen/base/infrastructure/infrastructure_class.md b/docs/schema/reference/base/infrastructure/infrastructure_class.md similarity index 100% rename from docs/schema/codegen/base/infrastructure/infrastructure_class.md rename to docs/schema/reference/base/infrastructure/infrastructure_class.md diff --git a/docs/schema/codegen/base/infrastructure/infrastructure_subtype.md b/docs/schema/reference/base/infrastructure/infrastructure_subtype.md similarity index 100% rename from docs/schema/codegen/base/infrastructure/infrastructure_subtype.md rename to docs/schema/reference/base/infrastructure/infrastructure_subtype.md diff --git a/docs/schema/reference/base/land.md b/docs/schema/reference/base/land.md deleted file mode 100644 index ecd2b55d8..000000000 --- a/docs/schema/reference/base/land.md +++ /dev/null @@ -1,41 +0,0 @@ -# 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` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`LandClass`](TK) (optional) | Default: `` | -| `subtype` | [`LandSubtype`](TK) (optional) | Default: `` | -| `elevation` | `int32` (optional) | | -| `surface` | [`SurfaceMaterial`](TK) (optional) | | diff --git a/docs/schema/codegen/base/land/land.md b/docs/schema/reference/base/land/land.md similarity index 86% rename from docs/schema/codegen/base/land/land.md rename to docs/schema/reference/base/land/land.md index 3c26c5a56..edae66be6 100644 --- a/docs/schema/codegen/base/land/land.md +++ b/docs/schema/reference/base/land/land.md @@ -15,13 +15,13 @@ Global land derived from the inverse of OSM Coastlines. Translates `natural` tag | `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[].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[].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.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"` | | @@ -38,7 +38,7 @@ Global land derived from the inverse of OSM Coastlines. Translates `natural` tag | `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`, ... | +| `surface` | `string` ([SurfaceMaterial](../surface_material)) (optional) | Examples: `asphalt`, `cobblestone`, `compacted`, ... | ## Examples diff --git a/docs/schema/codegen/base/land/land_class.md b/docs/schema/reference/base/land/land_class.md similarity index 100% rename from docs/schema/codegen/base/land/land_class.md rename to docs/schema/reference/base/land/land_class.md diff --git a/docs/schema/codegen/base/land/land_subtype.md b/docs/schema/reference/base/land/land_subtype.md similarity index 100% rename from docs/schema/codegen/base/land/land_subtype.md rename to docs/schema/reference/base/land/land_subtype.md diff --git a/docs/schema/reference/base/land_cover.md b/docs/schema/reference/base/land_cover.md deleted file mode 100644 index 76e782fb2..000000000 --- a/docs/schema/reference/base/land_cover.md +++ /dev/null @@ -1,26 +0,0 @@ -# LandCover - -Representation of the Earth's natural surfaces. - -## Fields - -| Name | Type | Description | -|-----:|:----:|-------------| -| `cartography` | [`CartographicHints`](TK) (optional) | | -| `cartography.prominence` | `integer` (optional) | | -| `cartography.min_zoom` | `integer` (optional) | | -| `cartography.max_zoom` | `integer` (optional) | | -| `cartography.sort_key` | `integer` (optional) | | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Geometry (Polygon or MultiPolygon) | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`LandCoverSubtype`](TK) | | diff --git a/docs/schema/codegen/base/land_cover/land_cover.md b/docs/schema/reference/base/land_cover/land_cover.md similarity index 100% rename from docs/schema/codegen/base/land_cover/land_cover.md rename to docs/schema/reference/base/land_cover/land_cover.md diff --git a/docs/schema/codegen/base/land_cover/land_cover_subtype.md b/docs/schema/reference/base/land_cover/land_cover_subtype.md similarity index 100% rename from docs/schema/codegen/base/land_cover/land_cover_subtype.md rename to docs/schema/reference/base/land_cover/land_cover_subtype.md diff --git a/docs/schema/reference/base/land_use.md b/docs/schema/reference/base/land_use.md deleted file mode 100644 index caa1b883f..000000000 --- a/docs/schema/reference/base/land_use.md +++ /dev/null @@ -1,39 +0,0 @@ -# LandUse - -Land use features from OpenStreetMap. - -## Fields - -| Name | Type | Description | -|-----:|:----:|-------------| -| `source_tags` | `record` (optional) | | -| `wikidata` | `string` (optional) | | -| `level` | `int32` (optional) | | -| `names` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Classifications of the human use of a section of land. Translates `landuse` from OpenStreetMap tag from OpenStreetMap. | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`LandUseClass`](TK) | | -| `subtype` | [`LandUseSubtype`](TK) | | -| `elevation` | `int32` (optional) | | -| `surface` | [`SurfaceMaterial`](TK) (optional) | | diff --git a/docs/schema/codegen/base/land_use/land_use.md b/docs/schema/reference/base/land_use/land_use.md similarity index 86% rename from docs/schema/codegen/base/land_use/land_use.md rename to docs/schema/reference/base/land_use/land_use.md index 1cf31b87a..13f0d92e8 100644 --- a/docs/schema/codegen/base/land_use/land_use.md +++ b/docs/schema/reference/base/land_use/land_use.md @@ -13,13 +13,13 @@ Land use features from OpenStreetMap. | `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[].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[].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.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"` | | @@ -36,7 +36,7 @@ Land use features from OpenStreetMap. | `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`, ... | +| `surface` | `string` ([SurfaceMaterial](../surface_material)) (optional) | Examples: `asphalt`, `cobblestone`, `compacted`, ... | ## Examples diff --git a/docs/schema/codegen/base/land_use/land_use_class.md b/docs/schema/reference/base/land_use/land_use_class.md similarity index 100% rename from docs/schema/codegen/base/land_use/land_use_class.md rename to docs/schema/reference/base/land_use/land_use_class.md diff --git a/docs/schema/codegen/base/land_use/land_use_subtype.md b/docs/schema/reference/base/land_use/land_use_subtype.md similarity index 100% rename from docs/schema/codegen/base/land_use/land_use_subtype.md rename to docs/schema/reference/base/land_use/land_use_subtype.md diff --git a/docs/schema/codegen/base/surface_material.md b/docs/schema/reference/base/surface_material.md similarity index 100% rename from docs/schema/codegen/base/surface_material.md rename to docs/schema/reference/base/surface_material.md diff --git a/docs/schema/reference/base/water.mdx b/docs/schema/reference/base/water.mdx deleted file mode 100644 index 61f3710bd..000000000 --- a/docs/schema/reference/base/water.mdx +++ /dev/null @@ -1,41 +0,0 @@ -# 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` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `level` | `int32` (optional) | | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Geometry (Point, LineString, Polygon, or MultiPolygon) | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`WaterClass`](TK) (optional) | Default: `` | -| `subtype` | [`WaterSubtype`](TK) (optional) | Default: `` | -| `is_intermittent` | `boolean` (optional) | Is it intermittent water or not | -| `is_salt` | `boolean` (optional) | Is it salt water or not | diff --git a/docs/schema/codegen/base/water/water.md b/docs/schema/reference/base/water/water.md similarity index 89% rename from docs/schema/codegen/base/water/water.md rename to docs/schema/reference/base/water/water.md index a0e041138..61a8c94c4 100644 --- a/docs/schema/codegen/base/water/water.md +++ b/docs/schema/reference/base/water/water.md @@ -14,13 +14,13 @@ Translates `natural` and `waterway` tags from OpenStreetMap. | `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[].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[].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.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` | | diff --git a/docs/schema/codegen/base/water/water_class.md b/docs/schema/reference/base/water/water_class.md similarity index 100% rename from docs/schema/codegen/base/water/water_class.md rename to docs/schema/reference/base/water/water_class.md diff --git a/docs/schema/codegen/base/water/water_subtype.md b/docs/schema/reference/base/water/water_subtype.md similarity index 100% rename from docs/schema/codegen/base/water/water_subtype.md rename to docs/schema/reference/base/water/water_subtype.md diff --git a/docs/schema/reference/buildings/building.md b/docs/schema/reference/buildings/building.md deleted file mode 100644 index d13d6a22f..000000000 --- a/docs/schema/reference/buildings/building.md +++ /dev/null @@ -1,53 +0,0 @@ -# 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` | [`FacadeMaterial`](TK) (optional) | The outer surface material of building facade. | -| `roof_material` | [`RoofMaterial`](TK) (optional) | The outermost material of the roof. | -| `roof_shape` | [`RoofShape`](TK) (optional) | The shape of the roof | -| `roof_direction` | `float64` (optional) | Bearing of the roof ridge line in degrees. | -| `roof_orientation` | [`RoofOrientation`](TK) (optional) | Orientation of the roof shape relative to the footprint shape. Either "along" or "across". | -| `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` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | The building's footprint or roofprint (if traced from aerial/satellite imagery). | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`Subtype`](TK) (optional) | | -| `class` | [`BuildingClass`](TK) (optional) | | -| `has_parts` | `boolean` (optional) | Flag indicating whether the building has parts | diff --git a/docs/schema/codegen/buildings/building/building.md b/docs/schema/reference/buildings/building/building.md similarity index 78% rename from docs/schema/codegen/buildings/building/building.md rename to docs/schema/reference/buildings/building/building.md index 357eadc70..d80824c05 100644 --- a/docs/schema/codegen/buildings/building/building.md +++ b/docs/schema/reference/buildings/building/building.md @@ -16,22 +16,22 @@ Buildings are compatible with GeoJSON Polygon features. | `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`, ... | +| `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_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` | `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[]` | `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[].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` | diff --git a/docs/schema/codegen/buildings/building/building_class.md b/docs/schema/reference/buildings/building/building_class.md similarity index 100% rename from docs/schema/codegen/buildings/building/building_class.md rename to docs/schema/reference/buildings/building/building_class.md diff --git a/docs/schema/codegen/buildings/building/subtype.md b/docs/schema/reference/buildings/building/subtype.md similarity index 100% rename from docs/schema/codegen/buildings/building/subtype.md rename to docs/schema/reference/buildings/building/subtype.md diff --git a/docs/schema/reference/buildings/building_part.md b/docs/schema/reference/buildings/building_part.md deleted file mode 100644 index dba8b7d85..000000000 --- a/docs/schema/reference/buildings/building_part.md +++ /dev/null @@ -1,51 +0,0 @@ -# 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` | [`FacadeMaterial`](TK) (optional) | The outer surface material of building facade. | -| `roof_material` | [`RoofMaterial`](TK) (optional) | The outermost material of the roof. | -| `roof_shape` | [`RoofShape`](TK) (optional) | The shape of the roof | -| `roof_direction` | `float64` (optional) | Bearing of the roof ridge line in degrees. | -| `roof_orientation` | [`RoofOrientation`](TK) (optional) | Orientation of the roof shape relative to the footprint shape. Either "along" or "across". | -| `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` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | The part's geometry. | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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 | diff --git a/docs/schema/codegen/buildings/building_part/building_part.md b/docs/schema/reference/buildings/building_part/building_part.md similarity index 82% rename from docs/schema/codegen/buildings/building_part/building_part.md rename to docs/schema/reference/buildings/building_part/building_part.md index a4be92408..3222199cf 100644 --- a/docs/schema/codegen/buildings/building_part/building_part.md +++ b/docs/schema/reference/buildings/building_part/building_part.md @@ -16,11 +16,11 @@ contain the building with which it is associated. | `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`, ... | +| `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_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) | | @@ -28,13 +28,13 @@ contain the building with which it is associated. | `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[].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[].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.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"` | | diff --git a/docs/schema/codegen/buildings/facade_material.md b/docs/schema/reference/buildings/facade_material.md similarity index 100% rename from docs/schema/codegen/buildings/facade_material.md rename to docs/schema/reference/buildings/facade_material.md diff --git a/docs/schema/codegen/buildings/roof_material.md b/docs/schema/reference/buildings/roof_material.md similarity index 100% rename from docs/schema/codegen/buildings/roof_material.md rename to docs/schema/reference/buildings/roof_material.md diff --git a/docs/schema/codegen/buildings/roof_orientation.md b/docs/schema/reference/buildings/roof_orientation.md similarity index 100% rename from docs/schema/codegen/buildings/roof_orientation.md rename to docs/schema/reference/buildings/roof_orientation.md diff --git a/docs/schema/codegen/buildings/roof_shape.md b/docs/schema/reference/buildings/roof_shape.md similarity index 100% rename from docs/schema/codegen/buildings/roof_shape.md rename to docs/schema/reference/buildings/roof_shape.md diff --git a/docs/schema/codegen/cartographic_hints.md b/docs/schema/reference/cartographic_hints.md similarity index 100% rename from docs/schema/codegen/cartographic_hints.md rename to docs/schema/reference/cartographic_hints.md diff --git a/docs/schema/codegen/divisions/capital_of_division_item.md b/docs/schema/reference/divisions/capital_of_division_item.md similarity index 50% rename from docs/schema/codegen/divisions/capital_of_division_item.md rename to docs/schema/reference/divisions/capital_of_division_item.md index 2f868f141..eab2a75fc 100644 --- a/docs/schema/codegen/divisions/capital_of_division_item.md +++ b/docs/schema/reference/divisions/capital_of_division_item.md @@ -7,4 +7,4 @@ One division that has capital. | Name | Type | Description | |-----:|:----:|-------------| | `division_id` | `string` | | -| `subtype` | `string` ([PlaceType](place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `subtype` | `string` ([PlaceType](/schema/codegen/divisions/capital_of_division_item/place_type/)) | Examples: `country`, `dependency`, `macroregion`, ... | diff --git a/docs/schema/reference/divisions/division.md b/docs/schema/reference/divisions/division.md deleted file mode 100644 index f7c87f675..000000000 --- a/docs/schema/reference/divisions/division.md +++ /dev/null @@ -1,105 +0,0 @@ -# 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` | [`CartographicHints`](#) (optional) | | -| `cartography.prominence` | `integer` (optional) | | -| `cartography.min_zoom` | `integer` (optional) | | -| `cartography.max_zoom` | `integer` (optional) | | -| `cartography.sort_key` | `integer` (optional) | | -| `names` | [`Names`](#) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](#)`>` (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` | [`Side`](#) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](#) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](#) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](#) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Approximate location of a position commonly associated with the real-world entity modeled by the division feature. | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](#)`>` (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` | [`PlaceType`](#) | | -| `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` | [`PlaceType`](#) | | -| `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` | [`DivisionClass`](#) (optional) | | -| `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` | [`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` | [`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` | [`Side`](#) (optional) | Side of the road on which vehicles drive in the division. | -| `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<`[`CapitalOfDivisionItem`](#)`>` (optional) | Division IDs and subtypes of divisions this division is a capital of. | -| `capital_of_divisions.division_id` | `string` | | -| `capital_of_divisions.subtype` | [`PlaceType`](#) | | -| `wikidata` | `string` (optional) | | diff --git a/docs/schema/codegen/divisions/division/division.md b/docs/schema/reference/divisions/division/division.md similarity index 89% rename from docs/schema/codegen/divisions/division/division.md rename to docs/schema/reference/divisions/division/division.md index 3606d8f22..e5cc2616b 100644 --- a/docs/schema/codegen/divisions/division/division.md +++ b/docs/schema/reference/divisions/division/division.md @@ -18,13 +18,13 @@ Examples include countries, provinces, cities, towns, neighborhoods, etc. | `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[].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[].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.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"` | | @@ -38,24 +38,24 @@ Examples include countries, provinces, cities, towns, neighborhoods, etc. | `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`, ... | +| `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.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`, ... | +| `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` | +| `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` | `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`, ... | +| `capital_of_divisions.subtype` | `string` ([PlaceType](../place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | | `wikidata` | `string` (optional) | | ## Examples 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.md b/docs/schema/reference/divisions/division_area.md deleted file mode 100644 index 332a029bc..000000000 --- a/docs/schema/reference/divisions/division_area.md +++ /dev/null @@ -1,45 +0,0 @@ -# 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` | [`Names`](TK) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | The area covered by the division with which this area feature is associated | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`PlaceType`](TK) | | -| `class` | [`AreaClass`](TK) | | -| `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. | diff --git a/docs/schema/codegen/divisions/division_area/area_class.md b/docs/schema/reference/divisions/division_area/area_class.md similarity index 100% rename from docs/schema/codegen/divisions/division_area/area_class.md rename to docs/schema/reference/divisions/division_area/area_class.md diff --git a/docs/schema/codegen/divisions/division_area/division_area.md b/docs/schema/reference/divisions/division_area/division_area.md similarity index 97% rename from docs/schema/codegen/divisions/division_area/division_area.md rename to docs/schema/reference/divisions/division_area/division_area.md index 895ad79a7..ed8642798 100644 --- a/docs/schema/codegen/divisions/division_area/division_area.md +++ b/docs/schema/reference/divisions/division_area/division_area.md @@ -36,7 +36,7 @@ belongs to. | `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`, ... | +| `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. | diff --git a/docs/schema/reference/divisions/division_boundary.md b/docs/schema/reference/divisions/division_boundary.md deleted file mode 100644 index 7bec87c66..000000000 --- a/docs/schema/reference/divisions/division_boundary.md +++ /dev/null @@ -1,68 +0,0 @@ -# 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` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Boundary line or lines | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](#)`>` (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` | [`PlaceType`](#) | | -| `class` | [`BoundaryClass`](#) | | -| `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` | [`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` | [`PerspectiveMode`](#) | Whether the perspective holder accepts or disputes this name. | -| `perspectives.countries` | `list` | Countries holding the given mode of perspective. | diff --git a/docs/schema/codegen/divisions/division_boundary/boundary_class.md b/docs/schema/reference/divisions/division_boundary/boundary_class.md similarity index 100% rename from docs/schema/codegen/divisions/division_boundary/boundary_class.md rename to docs/schema/reference/divisions/division_boundary/boundary_class.md diff --git a/docs/schema/codegen/divisions/division_boundary/division_boundary.md b/docs/schema/reference/divisions/division_boundary/division_boundary.md similarity index 94% rename from docs/schema/codegen/divisions/division_boundary/division_boundary.md rename to docs/schema/reference/divisions/division_boundary/division_boundary.md index 4edc4eccf..766218107 100644 --- a/docs/schema/codegen/divisions/division_boundary/division_boundary.md +++ b/docs/schema/reference/divisions/division_boundary/division_boundary.md @@ -20,7 +20,7 @@ Some boundaries may be disputed by the divisions on one or both sides. | `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`, ... | +| `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. | @@ -29,7 +29,7 @@ Some boundaries may be disputed by the divisions on one or both sides. | `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.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 diff --git a/docs/schema/codegen/divisions/division_class.md b/docs/schema/reference/divisions/division_class.md similarity index 100% rename from docs/schema/codegen/divisions/division_class.md rename to docs/schema/reference/divisions/division_class.md diff --git a/docs/schema/codegen/divisions/hierarchy_item.md b/docs/schema/reference/divisions/hierarchy_item.md similarity index 57% rename from docs/schema/codegen/divisions/hierarchy_item.md rename to docs/schema/reference/divisions/hierarchy_item.md index ceface881..d3f14f222 100644 --- a/docs/schema/codegen/divisions/hierarchy_item.md +++ b/docs/schema/reference/divisions/hierarchy_item.md @@ -7,5 +7,5 @@ One division in a hierarchy. | Name | Type | Description | |-----:|:----:|-------------| | `division_id` | `string` | | -| `subtype` | `string` ([PlaceType](place_type)) | Examples: `country`, `dependency`, `macroregion`, ... | +| `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/codegen/divisions/place_type.md b/docs/schema/reference/divisions/place_type.md similarity index 100% rename from docs/schema/codegen/divisions/place_type.md rename to docs/schema/reference/divisions/place_type.md diff --git a/docs/schema/reference/index.mdx b/docs/schema/reference/index.mdx deleted file mode 100644 index 96d697b53..000000000 --- a/docs/schema/reference/index.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Reference -slug: /schema/reference ---- - -This section includes the schema reference documentation for Overture's themes: addresses, base, buildings, divisions, places, and transportation. For guides to working with Overture data, including hand-on examples, head over to [docs.overturemaps.org](https://docs.overturemaps.org/guides). - - - - -import DocCardList from '@theme/DocCardList'; - - diff --git a/docs/schema/reference/places/place.md b/docs/schema/reference/places/place.md deleted file mode 100644 index c925b2d2e..000000000 --- a/docs/schema/reference/places/place.md +++ /dev/null @@ -1,51 +0,0 @@ -# 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` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Position of the place | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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` | [`Categories`](TK) (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` | [`Brand`](TK) (optional) | | -| `brand.names` | [`Names`](TK) (optional) | | -| `brand.wikidata` | `string` (optional) | | -| `addresses` | `list<`[`Address`](TK)`>` (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) | | diff --git a/docs/schema/codegen/places/place/brand.md b/docs/schema/reference/places/place/brand.md similarity index 76% rename from docs/schema/codegen/places/place/brand.md rename to docs/schema/reference/places/place/brand.md index 42c1ffcc0..f6fb01f81 100644 --- a/docs/schema/codegen/places/place/brand.md +++ b/docs/schema/reference/places/place/brand.md @@ -13,12 +13,12 @@ its own brand. | `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[].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[].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.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/codegen/places/place/categories.md b/docs/schema/reference/places/place/categories.md similarity index 100% rename from docs/schema/codegen/places/place/categories.md rename to docs/schema/reference/places/place/categories.md diff --git a/docs/schema/codegen/places/place/place.md b/docs/schema/reference/places/place/place.md similarity index 92% rename from docs/schema/codegen/places/place/place.md rename to docs/schema/reference/places/place/place.md index 01db24d6c..85ab4d6c2 100644 --- a/docs/schema/codegen/places/place/place.md +++ b/docs/schema/reference/places/place/place.md @@ -12,13 +12,13 @@ Place features are compatible with GeoJSON Point features. | `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[].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[].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.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"` | | diff --git a/docs/schema/codegen/Sources/source_property_item.md b/docs/schema/reference/source_property_item.md similarity index 100% rename from docs/schema/codegen/Sources/source_property_item.md rename to docs/schema/reference/source_property_item.md diff --git a/docs/schema/codegen/transportation/access_restriction_rule.md b/docs/schema/reference/transportation/access_restriction_rule.md similarity index 89% rename from docs/schema/codegen/transportation/access_restriction_rule.md rename to docs/schema/reference/transportation/access_restriction_rule.md index 0b985eeb4..7f5290841 100644 --- a/docs/schema/codegen/transportation/access_restriction_rule.md +++ b/docs/schema/reference/transportation/access_restriction_rule.md @@ -8,7 +8,7 @@ something is physically located or where a rule is active. | Name | Type | Description | |-----:|:----:|-------------| | `between` | `list` (optional) | | -| `access_type` | `string` ([AccessType](access_type)) | Examples: `allowed`, `denied`, `designated` | +| `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`, ... | diff --git a/docs/schema/codegen/transportation/access_restriction_when_clause.md b/docs/schema/reference/transportation/access_restriction_when_clause.md similarity index 74% rename from docs/schema/codegen/transportation/access_restriction_when_clause.md rename to docs/schema/reference/transportation/access_restriction_when_clause.md index 4639c7813..77c9c1c9e 100644 --- a/docs/schema/codegen/transportation/access_restriction_when_clause.md +++ b/docs/schema/reference/transportation/access_restriction_when_clause.md @@ -9,7 +9,7 @@ Use it like: class MyModel(ConstraintValidatedModel, BaseModel) | Name | Type | Description | |-----:|:----:|-------------| -| `vehicle` | `list` (optional) | Vehicle attributes for which the rule applies | +| `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` | | @@ -17,5 +17,5 @@ Use it like: class MyModel(ConstraintValidatedModel, BaseModel) | `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` | +| `heading` | `string` ([Heading](/schema/codegen/transportation/access_restriction_when_clause/heading/)) (optional) | Examples: `forward`, `backward` | | `during` | `string` (optional) | | diff --git a/docs/schema/codegen/transportation/access_type.md b/docs/schema/reference/transportation/access_type.md similarity index 100% rename from docs/schema/codegen/transportation/access_type.md rename to docs/schema/reference/transportation/access_type.md diff --git a/docs/schema/reference/transportation/connector.md b/docs/schema/reference/transportation/connector.md deleted file mode 100644 index f6f4c813c..000000000 --- a/docs/schema/reference/transportation/connector.md +++ /dev/null @@ -1,22 +0,0 @@ -# Connector - -Connectors create physical connections between segments. - -Connectors are compatible with GeoJSON Point features. - -## Fields - -| Name | Type | Description | -|-----:|:----:|-------------| -| `id` | `string` | | -| `theme` | `Literal` | | -| `type` | `Literal` | | -| `geometry` | `geometry` | Position of the connector | -| `version` | `int32` | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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) | | diff --git a/docs/schema/codegen/transportation/connector/connector.md b/docs/schema/reference/transportation/connector/connector.md similarity index 100% rename from docs/schema/codegen/transportation/connector/connector.md rename to docs/schema/reference/transportation/connector/connector.md diff --git a/docs/schema/codegen/transportation/connector_reference.md b/docs/schema/reference/transportation/connector_reference.md similarity index 100% rename from docs/schema/codegen/transportation/connector_reference.md rename to docs/schema/reference/transportation/connector_reference.md diff --git a/docs/schema/codegen/transportation/destination_label_type.md b/docs/schema/reference/transportation/destination_label_type.md similarity index 100% rename from docs/schema/codegen/transportation/destination_label_type.md rename to docs/schema/reference/transportation/destination_label_type.md diff --git a/docs/schema/codegen/transportation/destination_labels.md b/docs/schema/reference/transportation/destination_labels.md similarity index 100% rename from docs/schema/codegen/transportation/destination_labels.md rename to docs/schema/reference/transportation/destination_labels.md diff --git a/docs/schema/codegen/transportation/destination_rule.md b/docs/schema/reference/transportation/destination_rule.md similarity index 100% rename from docs/schema/codegen/transportation/destination_rule.md rename to docs/schema/reference/transportation/destination_rule.md diff --git a/docs/schema/codegen/transportation/destination_sign_symbol.md b/docs/schema/reference/transportation/destination_sign_symbol.md similarity index 100% rename from docs/schema/codegen/transportation/destination_sign_symbol.md rename to docs/schema/reference/transportation/destination_sign_symbol.md diff --git a/docs/schema/codegen/transportation/destination_when_clause.md b/docs/schema/reference/transportation/destination_when_clause.md similarity index 100% rename from docs/schema/codegen/transportation/destination_when_clause.md rename to docs/schema/reference/transportation/destination_when_clause.md diff --git a/docs/schema/codegen/transportation/heading.md b/docs/schema/reference/transportation/heading.md similarity index 100% rename from docs/schema/codegen/transportation/heading.md rename to docs/schema/reference/transportation/heading.md diff --git a/docs/schema/codegen/transportation/length_unit.md b/docs/schema/reference/transportation/length_unit.md similarity index 100% rename from docs/schema/codegen/transportation/length_unit.md rename to docs/schema/reference/transportation/length_unit.md diff --git a/docs/schema/codegen/transportation/level_rule.md b/docs/schema/reference/transportation/level_rule.md similarity index 100% rename from docs/schema/codegen/transportation/level_rule.md rename to docs/schema/reference/transportation/level_rule.md diff --git a/docs/schema/codegen/transportation/prohibited_transition_rule.md b/docs/schema/reference/transportation/prohibited_transition_rule.md similarity index 100% rename from docs/schema/codegen/transportation/prohibited_transition_rule.md rename to docs/schema/reference/transportation/prohibited_transition_rule.md diff --git a/docs/schema/codegen/transportation/prohibited_transition_when_clause.md b/docs/schema/reference/transportation/prohibited_transition_when_clause.md similarity index 100% rename from docs/schema/codegen/transportation/prohibited_transition_when_clause.md rename to docs/schema/reference/transportation/prohibited_transition_when_clause.md diff --git a/docs/schema/codegen/transportation/purpose_of_use.md b/docs/schema/reference/transportation/purpose_of_use.md similarity index 100% rename from docs/schema/codegen/transportation/purpose_of_use.md rename to docs/schema/reference/transportation/purpose_of_use.md diff --git a/docs/schema/codegen/transportation/rail_class.md b/docs/schema/reference/transportation/rail_class.md similarity index 100% rename from docs/schema/codegen/transportation/rail_class.md rename to docs/schema/reference/transportation/rail_class.md diff --git a/docs/schema/codegen/transportation/rail_flag.md b/docs/schema/reference/transportation/rail_flag.md similarity index 100% rename from docs/schema/codegen/transportation/rail_flag.md rename to docs/schema/reference/transportation/rail_flag.md diff --git a/docs/schema/codegen/transportation/rail_flag_rule.md b/docs/schema/reference/transportation/rail_flag_rule.md similarity index 100% rename from docs/schema/codegen/transportation/rail_flag_rule.md rename to docs/schema/reference/transportation/rail_flag_rule.md diff --git a/docs/schema/codegen/transportation/recognized_status.md b/docs/schema/reference/transportation/recognized_status.md similarity index 100% rename from docs/schema/codegen/transportation/recognized_status.md rename to docs/schema/reference/transportation/recognized_status.md diff --git a/docs/schema/codegen/transportation/road_class.md b/docs/schema/reference/transportation/road_class.md similarity index 100% rename from docs/schema/codegen/transportation/road_class.md rename to docs/schema/reference/transportation/road_class.md diff --git a/docs/schema/codegen/transportation/road_flag.md b/docs/schema/reference/transportation/road_flag.md similarity index 100% rename from docs/schema/codegen/transportation/road_flag.md rename to docs/schema/reference/transportation/road_flag.md diff --git a/docs/schema/codegen/transportation/road_flag_rule.md b/docs/schema/reference/transportation/road_flag_rule.md similarity index 100% rename from docs/schema/codegen/transportation/road_flag_rule.md rename to docs/schema/reference/transportation/road_flag_rule.md diff --git a/docs/schema/codegen/transportation/road_surface.md b/docs/schema/reference/transportation/road_surface.md similarity index 100% rename from docs/schema/codegen/transportation/road_surface.md rename to docs/schema/reference/transportation/road_surface.md diff --git a/docs/schema/codegen/transportation/route_reference.md b/docs/schema/reference/transportation/route_reference.md similarity index 100% rename from docs/schema/codegen/transportation/route_reference.md rename to docs/schema/reference/transportation/route_reference.md diff --git a/docs/schema/reference/transportation/segment.md b/docs/schema/reference/transportation/segment.md deleted file mode 100644 index aa155a096..000000000 --- a/docs/schema/reference/transportation/segment.md +++ /dev/null @@ -1,123 +0,0 @@ -# Segment - -Transportation segment model representing linear travel infrastructure. - -Encompasses road, rail, and water transportation segments. Models linear features that enable -movement of people, goods, and vehicles through structured networks. Each segment type provides -specialized attributes for its respective transportation mode. - -Supports routing, mapping, navigation, and transportation network analysis through rich geometric -and attribute data. - - -## Fields - -| Name | Type | Description | -|-----:|:----:|-------------| -| `subtype` | `string` | Discriminator field that determines the variant type. Values: road, rail, water | -| `names` | [`Names`](TK) (optional) | | -| `names.primary` | `string` | The most commonly used name. | -| `names.common` | `object` (optional) | | -| `names.rules[]` | `list<`[`NameRule`](TK)`>` (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` | [`Side`](TK) (optional) | | -| `names.rules[].between` | `list` (optional) | | -| `names.rules[].value` | `string` | | -| `names.rules[].variant` | [`NameVariant`](TK) | | -| `names.rules[].language` | `string` (optional) | | -| `names.rules[].perspectives` | [`Perspectives`](TK) (optional) | | -| `names.rules[].perspectives.mode` | [`PerspectiveMode`](TK) | Whether the perspective holder accepts or disputes this name. | -| `names.rules[].perspectives.countries` | `list` | Countries holding the given mode of perspective. | -| `id` | `string` (optional) | | -| `theme` | `Literal` (optional) | | -| `type` | `Literal` (optional) | | -| `geometry` | `geometry` (optional) | Segment centerline | -| `version` | `int32` (optional) | | -| `sources[]` | `list<`[`SourcePropertyItem`](TK)`>` (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) | | -| `access_restrictions` | `list<`[`AccessRestrictionRule`](TK)`>` (optional) | | -| `access_restrictions.between` | `list` (optional) | | -| `access_restrictions.access_type` | [`AccessType`](TK) | | -| `access_restrictions.when` | [`AccessRestrictionWhenClause`](TK) (optional) | | -| `access_restrictions.when.vehicle` | `list<`[`VehicleScopeRule`](TK)`>` (optional) | Vehicle attributes for which the rule applies | -| `access_restrictions.when.vehicle.dimension` | [`VehicleDimension`](TK) | | -| `access_restrictions.when.vehicle.comparison` | [`VehicleComparison`](TK) | | -| `access_restrictions.when.vehicle.value` | `float64` | | -| `access_restrictions.when.vehicle.unit` | [`LengthUnit`](TK) | [`WeightUnit`](TK) | | -| `access_restrictions.when.mode` | `list<`[`TravelMode`](TK)`>` (optional) | Travel mode(s) to which the rule applies | -| `access_restrictions.when.recognized` | `list<`[`RecognizedStatus`](TK)`>` (optional) | | -| `access_restrictions.when.using` | `list<`[`PurposeOfUse`](TK)`>` (optional) | | -| `access_restrictions.when.heading` | [`Heading`](TK) (optional) | | -| `access_restrictions.when.during` | `string` (optional) | | -| `connectors` | `list<`[`ConnectorReference`](TK)`>` (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<`[`LevelRule`](TK)`>` (optional) | | -| `level_rules.between` | `list` (optional) | | -| `level_rules.value` | `int32` | | -| `routes` | `list<`[`RouteReference`](TK)`>` (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<`[`SubclassRule`](TK)`>` (optional) | | -| `subclass_rules.between` | `list` (optional) | | -| `subclass_rules.value` | [`Subclass`](TK) | | -| `class` | [`RoadClass`](TK) (optional) | | -| `destinations` | `list<`[`DestinationRule`](TK)`>` (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` | [`Heading`](TK) | Direction of travel on the segment identified by 'to_segment_id' that leads to the destination. | -| `destinations.labels` | `list<`[`DestinationLabels`](TK)`>` (optional) | Labeled destinations that can be reached by following the segment. | -| `destinations.labels.value` | `string` | Names the object that is reached | -| `destinations.labels.type` | [`DestinationLabelType`](TK) | | -| `destinations.symbols` | `list<`[`DestinationSignSymbol`](TK)`>` (optional) | A collection of symbols or icons present on the sign next to current destination label. | -| `destinations.when` | [`DestinationWhenClause`](TK) (optional) | | -| `destinations.when.heading` | [`Heading`](TK) (optional) | | -| `prohibited_transitions` | `list<`[`ProhibitedTransitionRule`](TK)`>` (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` | [`Heading`](TK) | Direction of travel that is prohibited on the destination segment of the sequence. | -| `prohibited_transitions.when` | [`ProhibitedTransitionWhenClause`](TK) (optional) | | -| `prohibited_transitions.when.vehicle` | `list<`[`VehicleScopeRule`](TK)`>` (optional) | Vehicle attributes for which the rule applies | -| `prohibited_transitions.when.mode` | `list<`[`TravelMode`](TK)`>` (optional) | Travel mode(s) to which the rule applies | -| `prohibited_transitions.when.recognized` | `list<`[`RecognizedStatus`](TK)`>` (optional) | | -| `prohibited_transitions.when.using` | `list<`[`PurposeOfUse`](TK)`>` (optional) | | -| `prohibited_transitions.when.during` | `string` (optional) | | -| `prohibited_transitions.when.heading` | [`Heading`](TK) (optional) | | -| `road_flags` | `list<`[`RoadFlagRule`](TK)`>` (optional) | | -| `road_flags.between` | `list` (optional) | | -| `road_flags.values` | `list` | | -| `road_surface` | `list<`[`SurfaceRule`](TK)`>` (optional) | | -| `road_surface.between` | `list` (optional) | | -| `road_surface.value` | [`RoadSurface`](TK) | | -| `speed_limits` | `list<`[`SpeedLimitRule`](TK)`>` (optional) | | -| `speed_limits.between` | `list` (optional) | | -| `speed_limits.max_speed` | [`Speed`](TK) (optional) | | -| `speed_limits.max_speed.value` | `int32` | | -| `speed_limits.max_speed.unit` | [`SpeedUnit`](TK) | | -| `speed_limits.min_speed` | [`Speed`](TK) (optional) | | -| `speed_limits.is_max_speed_variable` | `boolean` (optional) | Indicates a variable speed corridor Default: `False` | -| `speed_limits.when` | [`SpeedLimitWhenClause`](TK) (optional) | | -| `speed_limits.when.vehicle` | `list<`[`VehicleScopeRule`](TK)`>` (optional) | Vehicle attributes for which the rule applies | -| `speed_limits.when.mode` | `list<`[`TravelMode`](TK)`>` (optional) | Travel mode(s) to which the rule applies | -| `speed_limits.when.recognized` | `list<`[`RecognizedStatus`](TK)`>` (optional) | | -| `speed_limits.when.using` | `list<`[`PurposeOfUse`](TK)`>` (optional) | | -| `speed_limits.when.heading` | [`Heading`](TK) (optional) | | -| `speed_limits.when.during` | `string` (optional) | | -| `subclass` | [`Subclass`](TK) (optional) | | -| `width_rules` | `list<`[`WidthRule`](TK)`>` (optional) | | -| `width_rules.between` | `list` (optional) | | -| `width_rules.value` | `float64` | | -| `rail_flags` | `list<`[`RailFlagRule`](TK)`>` (optional) | | -| `rail_flags.between` | `list` (optional) | | -| `rail_flags.values` | `list` | | diff --git a/docs/schema/codegen/transportation/segment/rail_segment.md b/docs/schema/reference/transportation/segment/rail_segment.md similarity index 73% rename from docs/schema/codegen/transportation/segment/rail_segment.md rename to docs/schema/reference/transportation/segment/rail_segment.md index dcadc0f01..ab06a4c70 100644 --- a/docs/schema/codegen/transportation/segment/rail_segment.md +++ b/docs/schema/reference/transportation/segment/rail_segment.md @@ -10,13 +10,13 @@ Rail Segment Properties. | `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[].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[].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.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"` | | @@ -31,37 +31,37 @@ Rail Segment Properties. | `sources[].update_time` | `string` (optional) | | | `sources[].confidence` | `float64` (optional) | | | `subtype` | `"rail"` | | -| `access_restrictions` | `list` (optional) | | +| `access_restrictions` | `list` (optional) | | | `access_restrictions.between` | `list` (optional) | | -| `access_restrictions.access_type` | `string` ([AccessType](access_type)) | Examples: `allowed`, `denied`, `designated` | +| `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.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.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.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` | `list` (optional) | | | `level_rules.between` | `list` (optional) | | | `level_rules.value` | `int32` | | -| `routes` | `list` (optional) | | +| `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` | `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) | | +| `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/codegen/transportation/segment/road_segment.md b/docs/schema/reference/transportation/segment/road_segment.md similarity index 72% rename from docs/schema/codegen/transportation/segment/road_segment.md rename to docs/schema/reference/transportation/segment/road_segment.md index cb0a2404a..31dcea464 100644 --- a/docs/schema/codegen/transportation/segment/road_segment.md +++ b/docs/schema/reference/transportation/segment/road_segment.md @@ -10,13 +10,13 @@ Road Segment Properties. | `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[].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[].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.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"` | | @@ -31,72 +31,72 @@ Road Segment Properties. | `sources[].update_time` | `string` (optional) | | | `sources[].confidence` | `float64` (optional) | | | `subtype` | `"road"` | | -| `access_restrictions` | `list` (optional) | | +| `access_restrictions` | `list` (optional) | | | `access_restrictions.between` | `list` (optional) | | -| `access_restrictions.access_type` | `string` ([AccessType](access_type)) | Examples: `allowed`, `denied`, `designated` | +| `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.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.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.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` | `list` (optional) | | | `level_rules.between` | `list` (optional) | | | `level_rules.value` | `int32` | | -| `routes` | `list` (optional) | | +| `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` | `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) | | +| `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.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.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) | | +| `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.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) | | +| `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` | `list` (optional) | | | `road_surface.between` | `list` (optional) | | -| `road_surface.value` | `string` ([RoadSurface](road_surface)) | Examples: `unknown`, `paved`, `unpaved`, ... | -| `speed_limits` | `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.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) | | @@ -104,9 +104,9 @@ Road Segment Properties. | `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.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) | | +| `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/codegen/transportation/segment/water_segment.md b/docs/schema/reference/transportation/segment/water_segment.md similarity index 70% rename from docs/schema/codegen/transportation/segment/water_segment.md rename to docs/schema/reference/transportation/segment/water_segment.md index 62bde30e6..37732d468 100644 --- a/docs/schema/codegen/transportation/segment/water_segment.md +++ b/docs/schema/reference/transportation/segment/water_segment.md @@ -10,13 +10,13 @@ Water Segment Properties. | `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[].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[].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.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"` | | @@ -31,33 +31,33 @@ Water Segment Properties. | `sources[].update_time` | `string` (optional) | | | `sources[].confidence` | `float64` (optional) | | | `subtype` | `"water"` | | -| `access_restrictions` | `list` (optional) | | +| `access_restrictions` | `list` (optional) | | | `access_restrictions.between` | `list` (optional) | | -| `access_restrictions.access_type` | `string` ([AccessType](access_type)) | Examples: `allowed`, `denied`, `designated` | +| `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.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.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` | `list` (optional) | | | `level_rules.between` | `list` (optional) | | | `level_rules.value` | `int32` | | -| `routes` | `list` (optional) | | +| `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` | `list` (optional) | | | `subclass_rules.between` | `list` (optional) | | -| `subclass_rules.value` | `string` ([Subclass](subclass)) | Examples: `link`, `sidewalk`, `crosswalk`, ... | +| `subclass_rules.value` | `string` ([Subclass](../subclass)) | Examples: `link`, `sidewalk`, `crosswalk`, ... | diff --git a/docs/schema/codegen/transportation/sequence_entry.md b/docs/schema/reference/transportation/sequence_entry.md similarity index 100% rename from docs/schema/codegen/transportation/sequence_entry.md rename to docs/schema/reference/transportation/sequence_entry.md diff --git a/docs/schema/codegen/transportation/speed.md b/docs/schema/reference/transportation/speed.md similarity index 100% rename from docs/schema/codegen/transportation/speed.md rename to docs/schema/reference/transportation/speed.md diff --git a/docs/schema/codegen/transportation/speed_limit_rule.md b/docs/schema/reference/transportation/speed_limit_rule.md similarity index 100% rename from docs/schema/codegen/transportation/speed_limit_rule.md rename to docs/schema/reference/transportation/speed_limit_rule.md diff --git a/docs/schema/codegen/transportation/speed_limit_when_clause.md b/docs/schema/reference/transportation/speed_limit_when_clause.md similarity index 100% rename from docs/schema/codegen/transportation/speed_limit_when_clause.md rename to docs/schema/reference/transportation/speed_limit_when_clause.md diff --git a/docs/schema/codegen/transportation/speed_unit.md b/docs/schema/reference/transportation/speed_unit.md similarity index 100% rename from docs/schema/codegen/transportation/speed_unit.md rename to docs/schema/reference/transportation/speed_unit.md diff --git a/docs/schema/codegen/transportation/subclass.md b/docs/schema/reference/transportation/subclass.md similarity index 100% rename from docs/schema/codegen/transportation/subclass.md rename to docs/schema/reference/transportation/subclass.md diff --git a/docs/schema/codegen/transportation/subclass_rule.md b/docs/schema/reference/transportation/subclass_rule.md similarity index 100% rename from docs/schema/codegen/transportation/subclass_rule.md rename to docs/schema/reference/transportation/subclass_rule.md diff --git a/docs/schema/codegen/transportation/surface_rule.md b/docs/schema/reference/transportation/surface_rule.md similarity index 100% rename from docs/schema/codegen/transportation/surface_rule.md rename to docs/schema/reference/transportation/surface_rule.md diff --git a/docs/schema/codegen/transportation/travel_mode.md b/docs/schema/reference/transportation/travel_mode.md similarity index 100% rename from docs/schema/codegen/transportation/travel_mode.md rename to docs/schema/reference/transportation/travel_mode.md diff --git a/docs/schema/codegen/transportation/vehicle_comparison.md b/docs/schema/reference/transportation/vehicle_comparison.md similarity index 100% rename from docs/schema/codegen/transportation/vehicle_comparison.md rename to docs/schema/reference/transportation/vehicle_comparison.md diff --git a/docs/schema/codegen/transportation/vehicle_dimension.md b/docs/schema/reference/transportation/vehicle_dimension.md similarity index 100% rename from docs/schema/codegen/transportation/vehicle_dimension.md rename to docs/schema/reference/transportation/vehicle_dimension.md diff --git a/docs/schema/codegen/transportation/vehicle_scope_rule.md b/docs/schema/reference/transportation/vehicle_scope_rule.md similarity index 100% rename from docs/schema/codegen/transportation/vehicle_scope_rule.md rename to docs/schema/reference/transportation/vehicle_scope_rule.md diff --git a/docs/schema/codegen/transportation/weight_unit.md b/docs/schema/reference/transportation/weight_unit.md similarity index 100% rename from docs/schema/codegen/transportation/weight_unit.md rename to docs/schema/reference/transportation/weight_unit.md diff --git a/docs/schema/codegen/transportation/width_rule.md b/docs/schema/reference/transportation/width_rule.md similarity index 100% rename from docs/schema/codegen/transportation/width_rule.md rename to docs/schema/reference/transportation/width_rule.md diff --git a/docusaurus.config.js b/docusaurus.config.js index 00c15b5c8..82de7b36d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -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, 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;