├── .github ├── pull_request_template.md └── workflows │ ├── github-actions-copy-latest-docs-to-staging.yaml │ ├── github-actions-copy-pr-docs-to-staging.yaml │ ├── github-actions-enforce-change-type-label.yaml │ ├── github-actions-publish-docs-gh-pages.yaml │ └── github-actions-test-schema.yaml ├── .gitignore ├── GLOSSARY.md ├── LICENSE ├── README.md ├── SCHEMA_CONVENTIONS.md ├── counterexamples ├── addresses │ ├── bad-address-empty-levels.yaml │ ├── bad-address-too-many-levels.yaml │ └── bad-address-white-space.yaml ├── bad-theme.json ├── base │ └── bathymetry │ │ ├── bad-depth.yaml │ │ └── missing-depth.yaml ├── buildings │ ├── bad-class.json │ ├── bad-confidence-in-source.yaml │ ├── bad-floors-underground.yaml │ ├── bad-geometry-type.json │ ├── bad-names │ │ ├── bad-common-language.yaml │ │ ├── bad-name-language.yaml │ │ └── bad-name-no-primary.yaml │ ├── bad-time.yaml │ ├── bad-type.json │ ├── building-part-bad-name.yaml │ ├── negative-height.json │ └── negative-num-floors.json ├── common │ └── names │ │ ├── names-invalid-language.yaml │ │ └── names-invalid-variant.yaml ├── divisions │ ├── division │ │ ├── bad-capital-division-id.yaml │ │ ├── bad-class.yml │ │ ├── bad-country.yaml │ │ ├── bad-geometry-coordinates.yaml │ │ ├── bad-geometry-type.yaml │ │ ├── bad-hierarchies.yaml │ │ ├── bad-names.yaml │ │ ├── bad-norms.yaml │ │ ├── bad-parent-division-id.yaml │ │ ├── bad-region.yaml │ │ ├── bad-subtype.yaml │ │ ├── missing-properties.yaml │ │ ├── parent-not-allowed-on-country.yaml │ │ └── parent-required-on-sub-country.yaml │ ├── division_area │ │ ├── bad-class.yaml │ │ ├── bad-country.yaml │ │ ├── bad-division-id.yaml │ │ ├── bad-geometry-coordinates.yaml │ │ ├── bad-geometry-type.yaml │ │ ├── bad-is-land.yaml │ │ ├── bad-is-territorial.yaml │ │ ├── bad-missing-is-land.yaml │ │ ├── bad-region.yaml │ │ ├── bad-subtype.yaml │ │ └── missing-properties.yaml │ └── division_boundary │ │ ├── bad-class.yaml │ │ ├── bad-division_ids-1.yaml │ │ ├── bad-division_ids-2.yaml │ │ ├── bad-geometry-type.yaml │ │ ├── bad-is-land.yaml │ │ ├── bad-is-territorial.yaml │ │ ├── bad-not-both.yaml │ │ ├── bad-subtype.yaml │ │ ├── missing-class.yaml │ │ ├── missing-country.yaml │ │ ├── missing-division_ids.yaml │ │ └── missing-subtype.yaml ├── empty-object.json ├── places │ ├── bad-address-invalid-property.yaml │ ├── bad-categories-missing-primary.yaml │ ├── bad-categories-value.yaml │ └── bad-geometry.yaml ├── theme-type-mismatch.json ├── transportation │ ├── bad-type.json │ ├── connector │ │ ├── bad-geometry-type.json │ │ └── level-property-not-allowed.json │ └── segment │ │ ├── bad-class.yaml │ │ ├── bad-connector-duplicate.json │ │ ├── bad-connector.json │ │ ├── bad-geometry-type.json │ │ ├── bad-lr-width-missing-items.json │ │ ├── bad-lr-width.json │ │ ├── bad-route.yaml │ │ ├── bad-source-between.yaml │ │ ├── missing-subtype.json │ │ ├── missing-version.json │ │ ├── property-subtype-mismatch.yaml │ │ ├── rail │ │ ├── bad-rail-class.json │ │ ├── bad-rail-flags-duplicate-flag.json │ │ └── bad-rail-flags-invalid-flag.json │ │ └── road │ │ ├── bad-road-class.json │ │ ├── bad-road-destinations.yaml │ │ ├── bad-road-flags-duplicate-flag.json │ │ ├── bad-road-flags-invalid-flag.json │ │ ├── bad-road-flags-invalid-is_private-flag.json │ │ ├── bad-road-flags-invalid-string-value.json │ │ ├── bad-road-invalid-temporal-scoping.json │ │ ├── bad-road-level-invalid-value.yaml │ │ ├── bad-road-level-unsupported-properties.yaml │ │ ├── bad-road-surface-invalid-rule-value.json │ │ ├── destinations │ │ ├── bad-road-destinations-bad-label-type.yaml │ │ ├── bad-road-destinations-duplicate.yaml │ │ ├── bad-road-destinations-empty-label-value.yaml │ │ ├── bad-road-destinations-invalid-symbol.yaml │ │ └── bad-road-destinations-missing-final_heading.yaml │ │ └── restrictions │ │ ├── access │ │ ├── bad-access-mode.yaml │ │ ├── bad-access-restrictions-vehicle.yaml │ │ └── bad-access-unsupported-properties.yaml │ │ ├── prohibited_transitions │ │ ├── bad-sequence-duplicate-entry.yaml │ │ ├── bad-sequence-empty.yaml │ │ ├── missing-final-heading.yaml │ │ └── unsupported-properties.yaml │ │ └── speed_limits │ │ ├── bad-speed-limits-empty-rule.json │ │ ├── bad-speed-limits-invalid-type.json │ │ └── bad-speed-limits-mode.yaml └── unrecognized-property.json ├── docs ├── README.md ├── build_docs.sh └── schema │ ├── 0-Schema.mdx │ ├── concepts │ ├── by-theme │ │ ├── addresses │ │ │ └── index.mdx │ │ ├── base │ │ │ └── index.mdx │ │ ├── buildings │ │ │ ├── 3d_buildings.mdx │ │ │ └── index.mdx │ │ ├── divisions │ │ │ └── index.mdx │ │ ├── index.mdx │ │ ├── places │ │ │ ├── index.mdx │ │ │ └── overture_categories.csv │ │ └── transportation │ │ │ ├── index.mdx │ │ │ ├── roads.mdx │ │ │ ├── segments.mdx │ │ │ ├── shape-connectivity.mdx │ │ │ └── travel-modes.mdx │ ├── cartography.mdx │ ├── index.mdx │ ├── names.mdx │ └── scoping-rules.mdx │ └── reference │ ├── addresses │ └── address.mdx │ ├── base │ ├── bathymetry.mdx │ ├── infrastructure.mdx │ ├── land.mdx │ ├── land_cover.mdx │ ├── land_use.mdx │ └── water.mdx │ ├── buildings │ ├── building.mdx │ └── building_part.mdx │ ├── divisions │ ├── division.mdx │ ├── division_area.mdx │ └── division_boundary.mdx │ ├── index.mdx │ ├── places │ └── place.mdx │ └── transportation │ ├── connector.mdx │ └── segment.mdx ├── examples ├── addresses │ ├── address.yaml │ ├── address_all_missing_address_levels.yaml │ ├── address_missing_address_level.yaml │ └── address_postal_city.yaml ├── base │ ├── bathymetry-example.yaml │ ├── infrastructure-example.yaml │ ├── infrastructure-height-example.yaml │ ├── land-cover-example.yaml │ ├── land-sand-example.yaml │ ├── land-use-example.yaml │ ├── water-body-disputed.yaml │ ├── water-river-example.yaml │ └── water-river-with-wikidata.yaml ├── buildings │ ├── basic-sources.yaml │ ├── building-multipolygon.yaml │ ├── building-part-basic.yaml │ ├── building-part-name.yaml │ ├── building-polygon.yaml │ ├── empire-state-building.json │ ├── names │ │ ├── name-basic.yaml │ │ ├── name-multiple.yaml │ │ └── name-variations.yaml │ ├── osm │ │ ├── outline.yaml │ │ ├── part1.yaml │ │ └── part2.yaml │ ├── time-basic.yaml │ └── time-precision-seconds.yaml ├── common │ ├── names │ │ └── names-lexically-valid-language-tag.yaml │ └── timestamp │ │ ├── timestamp-leap-second.yaml │ │ ├── timestamp-utc.yaml │ │ └── timestamp-with-tz-offset.yaml ├── divisions │ ├── division │ │ ├── capital_of.yaml │ │ ├── class.yaml │ │ ├── country.yaml │ │ ├── dependency.yaml │ │ ├── hierarchies-multiple.yaml │ │ ├── multiple_capital_division.yaml │ │ ├── perspectives.yaml │ │ ├── population.yaml │ │ ├── prominence.yaml │ │ └── region.yaml │ ├── division_area │ │ ├── country_land.yaml │ │ ├── country_maritime.yaml │ │ ├── is_land.yaml │ │ ├── is_territorial.yaml │ │ └── region_land.yaml │ └── division_boundary │ │ ├── disputed.yaml │ │ ├── disputed_both.yaml │ │ ├── is_land.yaml │ │ ├── is_territorial.yaml │ │ ├── land_county.yaml │ │ ├── land_region.yaml │ │ └── maritime_country.yaml ├── places │ ├── place-alternate-categories.yaml │ ├── place-null-categories.yaml │ ├── place.yaml │ └── place2.yaml └── transportation │ ├── connector │ └── connector.yaml │ ├── docusaurus │ ├── access-restriction-01-blanket.yaml │ ├── access-restriction-02-private-with-deliveries.yaml │ ├── access-restriction-03-motor-vehicles-destination-only.yaml │ ├── access-restriction-04-axle-limit.yaml │ ├── access-restriction.yaml │ ├── connector.yaml │ ├── geometric-scoping.yaml │ ├── simple-road.yaml │ ├── speed-limits-01-simple.yaml │ ├── speed-limits-02-directional.yaml │ ├── speed-limits-03-variable-max.yaml │ ├── subjective-heading-scoping.yaml │ ├── subjective-status-scoping.yaml │ ├── subjective-usage-purpose-scoping.yaml │ ├── subjective-vehicle-attributes-scoping.yaml │ ├── temporal-scoping.yaml │ ├── turn-restriction-01-connector1.yaml │ ├── turn-restriction-01-connector2.yaml │ ├── turn-restriction-01-connector3.yaml │ ├── turn-restriction-01-exit.yaml │ ├── turn-restriction-01-source.yaml │ ├── turn-restriction-01-target.yaml │ ├── turn-restriction-02-connector1.yaml │ ├── turn-restriction-02-connector2.yaml │ ├── turn-restriction-02-source.yaml │ ├── turn-restriction-02-target.yaml │ └── turn-restriction-02-via.yaml │ └── segment │ ├── missing-update-time.json │ ├── rail │ ├── rail-freight.yaml │ ├── rail-tunnel.yaml │ └── rail.yaml │ └── road │ ├── destinations │ └── road-destinations.yaml │ ├── restrictions │ ├── road-restrictions-access.yaml │ ├── road-restrictions-prohibited-transitions.yaml │ └── road-restrictions-speed-limits.yaml │ ├── road-abandoned.yaml │ ├── road-acesss-restriction.yaml │ ├── road-alley.yaml │ ├── road-covered.yaml │ ├── road-indoors.yaml │ ├── road-level.yaml │ ├── road-multiple-connectors.yaml │ ├── road-oneway-no-lanes.yaml │ ├── road-path.yaml │ ├── road-with-lr-name.yaml │ ├── road-with-lr-sources.yaml │ ├── road-with-lr-width.yaml │ ├── road-with-route.yaml │ ├── road.yaml │ └── sidewalk.yaml ├── gers └── examples │ └── python │ ├── MATCH_TRACES.md │ ├── README.md │ ├── __init__.py │ ├── constants.py │ ├── data │ ├── macon-manual-traces.geojson │ ├── macon-manual-traces.labeled.txt │ ├── macon-osm-traces-combined.geojson │ └── overture-transportation-macon.geojson │ ├── match_classes.py │ ├── match_traces.ipynb │ ├── match_traces.py │ ├── requirements.txt │ ├── route_utils.py │ ├── tests │ ├── __init__.py │ ├── match_traces_test.py │ ├── test_setup.py │ └── utils_test.py │ └── utils.py ├── schema ├── addresses │ └── address.yaml ├── base │ ├── bathymetry.yaml │ ├── defs.yaml │ ├── infrastructure.yaml │ ├── land.yaml │ ├── land_cover.yaml │ ├── land_use.yaml │ └── water.yaml ├── buildings │ ├── building.yaml │ ├── building_part.yaml │ └── defs.yaml ├── defs.yaml ├── divisions │ ├── defs.yaml │ ├── division.yaml │ ├── division_area.yaml │ └── division_boundary.yaml ├── places │ ├── defs.yaml │ └── place.yaml ├── schema.yaml └── transportation │ ├── connector.yaml │ └── segment.yaml └── test.sh /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | # Major change release plan 2 | 3 | TODO: For any non-MAJOR change, delete this whole section. 4 | 5 | *For a MAJOR change as defined in [Schema versioning and stability](https://lf-overturemaps.atlassian.net/wiki/x/GgDa), 6 | indicate the expected release date, related minor change steps, and your 7 | public documentation and messaging plan.* 8 | 9 | ## A. Expected release date for this MAJOR change 10 | 11 | TODO. 12 | 13 | ## B. Related MINOR change steps 14 | 15 | - TODO. List each related MINOR change as a bullet. 16 | 17 | ## C. Public documentation and messaging plan 18 | 19 | TODO. 20 | 21 | # Description 22 | 23 | *Brief description of the business purpose and effect of the pull request.* 24 | 25 | TODO. 26 | 27 | # Reference 28 | 29 | *List of relevant links to GitHub issues, PRs, and other documentation.* 30 | 31 | 1. TODO. 32 | 33 | # Testing 34 | 35 | *Brief description of the testing done for this change showing why you are confident it works as expected and does not introduce regressions. Provide sample output data where appropriate.* 36 | 37 | TODO. 38 | 39 | # Checklist 40 | 41 | *Checklist of tasks commonly-associated with schema pull requests. Please review the relevant checklists and ensure you do all the tasks that are required for the change you made.* 42 | 43 | 1. [ ] Add relevant examples. 44 | 2. [ ] Add relevant counterexamples. 45 | 3. [ ] Update any counterexamples that became obsolete. For example, if a counterexample uses property `A` but is not intended to test property `A`'s validity, and you made a schema change that invalidates property `A` in that counterexample, fix the counterexample to align it with your schema change. 46 | 4. [ ] Update in-schema documentation using plain English written in complete sentences, if an update is required. 47 | 5. [ ] Update Docusaurus documentation, if an update is required. 48 | 6. [ ] Review change with Overture technical writer to ensure any advanced documentation needs will be taken care of, unless the change is trivial and would not affect the documentation. 49 | 50 | # Documentation website 51 | 52 | *Update the hyperlink below to put the pull request number in.* 53 | 54 | [Docs preview for this PR.](https://dfhx9f55j8eg5.cloudfront.net/pr/) 55 | -------------------------------------------------------------------------------- /.github/workflows/github-actions-copy-latest-docs-to-staging.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Publish docs to staging website (/latest/) 3 | 4 | on: 5 | push: 6 | branches: [dev] 7 | 8 | # Allow running from the actions tab 9 | workflow_dispatch: 10 | 11 | permissions: 12 | id-token: write 13 | contents: read 14 | 15 | jobs: 16 | publish: 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Check out the schema repository 20 | uses: actions/checkout@v4 21 | 22 | - name: Set up Node.js 23 | uses: actions/setup-node@v4 24 | with: 25 | node-version: "20" 26 | 27 | - name: Checkout Documentation 28 | uses: actions/checkout@v4 29 | with: 30 | repository: OvertureMaps/docs 31 | ref: main 32 | path: docusaurus 33 | 34 | - name: Copy Examples, Schema, & Docs 35 | run: | 36 | mkdir -p docusaurus/docs/_examples 37 | cp -R examples/* docusaurus/docs/_examples/ 38 | mkdir -p docusaurus/docs/_schema 39 | cp -R schema/* docusaurus/docs/_schema/ 40 | cp -R docs/schema docusaurus/docs/ 41 | 42 | - name: Build Docusaurus website 43 | env: 44 | DOCUSAURUS_URL: https://dfhx9f55j8eg5.cloudfront.net/ 45 | DOCUSAURUS_BASE_URL: /latest/ 46 | run: | 47 | cd docusaurus 48 | npm install --prefer-dedupe 49 | npm run docusaurus build 50 | 51 | - name: Fetch AWS credentials 52 | uses: aws-actions/configure-aws-credentials@v4 53 | with: 54 | role-to-assume: arn:aws:iam::207370808101:role/Overture_GitHub_schema_Publish_Docs_Staging 55 | aws-region: us-east-2 56 | 57 | - name: Copy Docusaurus website to staging bucket /latest/ 58 | run: | 59 | aws --region us-east-2 s3 sync --delete --storage-class INTELLIGENT_TIERING docusaurus/build s3://overture-schema-docs-static-staging-us-east-2/latest 60 | 61 | - name: Purge CDN cache 62 | run: | 63 | aws cloudfront create-invalidation --distribution-id E3L106P8HVBE9L --paths "/latest/*" 64 | 65 | - name: Publish URL 66 | run: echo "### [https://dfhx9f55j8eg5.cloudfront.net/latest/schema/](https://dfhx9f55j8eg5.cloudfront.net/latest/schema/)" >> $GITHUB_STEP_SUMMARY 67 | -------------------------------------------------------------------------------- /.github/workflows/github-actions-copy-pr-docs-to-staging.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Publish docs to staging website (for PR) 3 | run-name: Publish schema documentation to staging website 4 | 5 | on: [pull_request] 6 | 7 | permissions: 8 | id-token: write 9 | contents: read 10 | 11 | jobs: 12 | publish: 13 | environment: 14 | name: staging 15 | url: https://dfhx9f55j8eg5.cloudfront.net/pr/${{github.event.number}}/schema 16 | runs-on: ubuntu-latest 17 | steps: 18 | - name: Check out the schema repository 19 | uses: actions/checkout@v4 20 | 21 | - name: Set up Node.js 22 | uses: actions/setup-node@v4 23 | with: 24 | node-version: "20" 25 | 26 | - name: Checkout Documentation 27 | uses: actions/checkout@v4 28 | with: 29 | repository: OvertureMaps/docs 30 | ref: main 31 | path: docusaurus 32 | 33 | - name: Copy Examples, Schema, & Docs 34 | run: | 35 | mkdir -p docusaurus/docs/_examples 36 | cp -R examples/* docusaurus/docs/_examples/ 37 | mkdir -p docusaurus/docs/_schema 38 | cp -R schema/* docusaurus/docs/_schema/ 39 | cp -R docs/schema docusaurus/docs/ 40 | 41 | - name: Build Docusaurus website 42 | env: 43 | DOCUSAURUS_URL: https://dfhx9f55j8eg5.cloudfront.net/ 44 | DOCUSAURUS_BASE_URL: /pr/${{github.event.number}}/ 45 | run: | 46 | cd docusaurus 47 | npm install --prefer-dedupe 48 | npm run docusaurus build 49 | 50 | - name: Fetch AWS credentials 51 | uses: aws-actions/configure-aws-credentials@v4 52 | with: 53 | role-to-assume: arn:aws:iam::207370808101:role/Overture_GitHub_schema_Publish_Docs_Staging 54 | aws-region: us-east-2 55 | 56 | - name: Copy Docusaurus website to staging bucket /pr/${{github.event.number}}/ 57 | run: | 58 | aws --region us-east-2 s3 sync --delete --storage-class INTELLIGENT_TIERING docusaurus/build s3://overture-schema-docs-static-staging-us-east-2/pr/${{github.event.number}} 59 | 60 | - name: Purge CDN cache 61 | run: | 62 | aws cloudfront create-invalidation --distribution-id E3L106P8HVBE9L --paths "/pr/${{github.event.number}}/*" 63 | 64 | - name: Publish URL 65 | run: echo "View preview page at [https://dfhx9f55j8eg5.cloudfront.net/pr/${{github.event.number}}/](https://dfhx9f55j8eg5.cloudfront.net/pr/${{github.event.number}}/schema)" >> $GITHUB_STEP_SUMMARY 66 | -------------------------------------------------------------------------------- /.github/workflows/github-actions-enforce-change-type-label.yaml: -------------------------------------------------------------------------------- 1 | name: Change Type label verification 2 | 3 | on: 4 | pull_request: 5 | types: [opened, edited, labeled, unlabeled, synchronize] 6 | 7 | jobs: 8 | check-label: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Require exactly one change type label 12 | uses: actions/github-script@v6 13 | with: 14 | script: | 15 | const allChangeTypeLabels = new Set([ 16 | 'change type - cosmetic 🌹', 17 | 'change type - documentation - docs team 📝', 18 | 'change type - documentation - member 📝', 19 | 'change type - major 🚨', 20 | 'change type - minor 🤏', 21 | ]); 22 | const prLabels = context.payload.pull_request.labels.map(label => label.name); 23 | const appliedChangeTypeLabels = prLabels.filter(prLabel => allChangeTypeLabels.has(prLabel)); 24 | if (appliedChangeTypeLabels.length !== 1) { 25 | const baseMessage = `The PR must have EXACTLY one of the following CHANGE TYPE labels: ${Array.from(allChangeTypeLabels).sort().join(', ')}. ` 26 | const n = appliedChangeTypeLabels.length; 27 | let contextualMessage; 28 | if (n === 0) { 29 | contextualMessage = 'It currently has no change type label. Please ➕ add one label. 🙏' 30 | } else { 31 | contextualMessage = `It currently has ${n} change type labels (${JSON.stringify(appliedChangeTypeLabels)}). 🙏 Please ❌ remove ${n-1} label(s).` 32 | } 33 | core.setFailed(baseMessage + contextualMessage); 34 | } 35 | -------------------------------------------------------------------------------- /.github/workflows/github-actions-publish-docs-gh-pages.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Publish the `schema` folder to schema.overturemaps.org 3 | 4 | on: 5 | push: 6 | branches: [main] 7 | 8 | # Allow running from the actions tab 9 | workflow_dispatch: 10 | 11 | permissions: 12 | contents: write 13 | 14 | jobs: 15 | publish: 16 | if: github.repository == 'overturemaps/schema' 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Check out the schema repository 20 | uses: actions/checkout@v3 21 | 22 | - name: Deploy 🚀 23 | uses: JamesIves/github-pages-deploy-action@v4 24 | with: 25 | folder: schema 26 | -------------------------------------------------------------------------------- /.github/workflows/github-actions-test-schema.yaml: -------------------------------------------------------------------------------- 1 | # This is based on the Go starter workflow from: 2 | # https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go 3 | 4 | name: Validate schema, examples, and counterexamples 5 | 6 | on: 7 | push: 8 | paths: 9 | - 'schema/**' 10 | - 'examples/**' 11 | - 'counterexamples/**' 12 | 13 | jobs: 14 | build: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: actions/checkout@v3 18 | - name: Set up Go 19 | uses: actions/setup-go@v5 20 | with: 21 | go-version: 1.22 22 | - name: Install dependencies 23 | run: go install github.com/santhosh-tekuri/jsonschema/cmd/jv@latest 24 | - name: Validate 25 | run: ./test.sh 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | .vscode 3 | .watchman* 4 | .DS_Store 5 | docs/docusaurus 6 | -------------------------------------------------------------------------------- /GLOSSARY.md: -------------------------------------------------------------------------------- 1 | # Entity 2 | An entity is a thing in the physical world. It can relate both to physical objects or more abstract concepts that have a spatial presence (e.g. administrative areas are not physical objects as such, but they have physical properties that define their location and extend). An entity can only exist once. 3 | 4 | # Feature 5 | A Feature is an abstraction of a specific entity in the map. It exists only in its digital form. 6 | 7 | # Feature Class 8 | Feature Class is a synonym for "Feature Type". The preferred term is "Feature Type". 9 | 10 | # Feature Type 11 | A Feature Type is a type of entities with common properties as described in the Overture Schema. 12 | 13 | # Instance 14 | Instance is a synonym for "Feature". The preferred term is "Feature". 15 | 16 | # Object 17 | Object is a synonym for "Instance" or "Feature". The prefered term is "Feature". 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Overture Maps Schema 2 | === 3 | 4 | The Overture Maps schema working group is responsible for designing the Overture Maps Data Schema and the Global Entity Reference System (GERS). 5 | 6 | ## Documentation 7 | The contents of this repository are presented in a more human-friendly format at [docs.overturemaps.org](https://docs.overturemaps.org/) 8 | 9 | ## Feedback 10 | Please use the [Discussions](https://github.com/OvertureMaps/schema/discussions) in this repository to provide feedback. 11 | 12 | --- 13 | 14 | ## Licensing 15 | ### Copyright Licensing 16 | Each Working Group must specify the copyright license under which it will operate prior to initiating any work on any Draft Deliverable or Approved Deliverable other than source code or datasets. Source code and dataset copyright licenses are discussed below. 17 | 18 | ### Patent License 19 | Each Working Group must specify the patent policy under which it will operate prior to initiating any work on any Draft Deliverable or Approved Deliverable. The patent policy for this Working Group is W3C https://www.w3.org/Consortium/Patent-Policy-20200915/ 20 | 21 | ### Source Code 22 | Working Group Participants contributing code to this Working Group must do so in source code form, and agree that those source code contributions are subject to the Developer Certificate of Origin version 1.1, available at http://developercertificate.org/, the license indicated below, and any policies and governance rules included in the source code’s repository. Source code may not be a required element of an Approved Deliverable specification 23 | 24 | - MIT License, available at https://opensource.org/licenses/MIT. 25 | 26 | ### Dataset 27 | Working Group Participants contributing data to a dataset to this Working Group agree that those data contributions are subject to the license indicated below. The dataset may not be a required element of an Approved Deliverable specification. 28 | 29 | - For Overture data layers which are CDLA Permissive 2.0, there are no restrictions on use of external data other than the attribution requirements of that license. 30 | - For Overture data layers which are ODbL, those layers must adhere to ODbL license terms, specifically whether any referenced data is considered a collective database or a derivative database. See [OpenStreetMap Community Guidelines](https://wiki.osmfoundation.org/wiki/Licence/Community_Guidelines) for definitions on the differences. 31 | 32 | You are responsible for understanding the licenses relating to data you work with. 33 | -------------------------------------------------------------------------------- /counterexamples/addresses/bad-address-empty-levels.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:addresses:address:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.2086153, 42.3373725] 7 | properties: 8 | theme: addresses 9 | type: address 10 | version: 0 11 | country: US 12 | postcode: '02459' 13 | street: 'COMMONWEALTH AVE' 14 | number: '1000' 15 | address_levels: [] 16 | ext_expected_errors: 17 | - "minItems: got 0, want 1" 18 | -------------------------------------------------------------------------------- /counterexamples/addresses/bad-address-too-many-levels.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:addresses:address:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.2086153, 42.3373725] 7 | properties: 8 | theme: addresses 9 | type: address 10 | version: 0 11 | country: US 12 | postcode: '02459' 13 | street: 'COMMONWEALTH AVE' 14 | number: '1000' 15 | address_levels: 16 | - value: Level1 17 | - value: Level2 18 | - value: Level3 19 | - value: Level4 20 | - value: Level5 21 | - value: Level6 22 | ext_expected_errors: 23 | - "maxItems: got 6, want 5" 24 | -------------------------------------------------------------------------------- /counterexamples/addresses/bad-address-white-space.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:addresses:address:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.2086153, 42.3373725] 7 | properties: 8 | theme: addresses 9 | type: address 10 | version: 0 11 | country: US 12 | region: MA 13 | city: NEWTON CENTRE 14 | postcode: '02459' 15 | street: ' COMMONWEALTH AVE' 16 | number: '1000' 17 | ext_expected_errors: 18 | - "' COMMONWEALTH AVE' does not match pattern '^(\\\\S.*)?\\\\S$'" 19 | -------------------------------------------------------------------------------- /counterexamples/bad-theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "badTheme", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Point", 6 | "coordinates": [0, 1] 7 | }, 8 | "properties": { 9 | "theme": "foo" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /counterexamples/base/bathymetry/bad-depth.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: "overture:bathymetry:counterexample:bad-depth" 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]] 7 | properties: 8 | theme: base 9 | type: bathymetry 10 | version: 0 11 | depth: -1 12 | sources: 13 | - record_id: x123 14 | property: "" 15 | dataset: some source 16 | ext_expected_errors: 17 | - "depth/minimum]: minimum: got -1, want 0" 18 | -------------------------------------------------------------------------------- /counterexamples/base/bathymetry/missing-depth.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: "overture:bathymetry:counterexample:bad-depth" 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]] 7 | properties: 8 | theme: base 9 | type: bathymetry 10 | version: 0 11 | ext_expected_errors: 12 | - "missing property 'depth'" 13 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-class.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Polygon", 6 | "coordinates": [[[-117.33804,47.77664],[-117.33772,47.77672],[-117.33764,47.77658],[-117.33797,47.77651],[-117.33804,47.77664]]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "/properties/properties/properties/class/enum]: value must be one of" 11 | ], 12 | "theme": "buildings", 13 | "type": "building", 14 | "class": "made-up-class", 15 | "version": 0 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-confidence-in-source.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:footprint:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | ext_expected_errors: 9 | - "/sourcePropertyItem/properties/confidence/maximum]: maximum: got 100, want 1" 10 | - "/sourcePropertyItem/properties/confidence/minimum]: minimum: got -1, want 0" 11 | theme: buildings 12 | type: building 13 | version: 1 14 | height: 21.34 15 | sources: 16 | - property: "" 17 | dataset: microsoftMLBuildings, 18 | confidence: 100 19 | - property: /properties/height 20 | dataset: metaLidarExtractions, 21 | confidence: -1 22 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-floors-underground.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:footprint:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | theme: buildings 9 | type: building 10 | version: 1 11 | num_floors_underground: -1 12 | # Expected errors: 13 | ext_expected_errors: 14 | - "exclusiveMinimum: got -1, want 0" 15 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-geometry-type.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Point", 6 | "coordinates": [0, 1] 7 | }, 8 | "properties": { 9 | "theme": "buildings", 10 | "type": "building", 11 | "version": 0, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-names/bad-common-language.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:footprint:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | ext_expected_errors: ["additional properties 'abc123def456' not allowed"] 9 | theme: buildings 10 | type: building 11 | version: 1 12 | names: 13 | primary: Empire State Building 14 | common: 15 | abc123def456: Empire State Building 16 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-names/bad-name-language.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:footprint:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | ext_expected_errors: ["'ga:genitive' does not match pattern"] 9 | theme: buildings 10 | type: building 11 | version: 1 12 | names: 13 | primary: Empire State Building 14 | common: 15 | en: Empire State Building 16 | rules: 17 | - variant: common 18 | language: ga:genitive 19 | value: Blah 20 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-names/bad-name-no-primary.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:footprint:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | ext_expected_errors: ["missing property 'primary'"] 9 | theme: buildings 10 | type: building 11 | version: 1 12 | names: 13 | common: 14 | en: Empire State Building 15 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-time.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:footprint:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | ext_expected_errors: 9 | - "propertyDefinitions/featureUpdateTime/format]: 'abc2023-02-22T23:55:01-08:00' is not valid date-time" 10 | theme: buildings 11 | type: building 12 | version: 1 13 | sources: 14 | - dataset: OpenStreetMap 15 | property: "/blah" 16 | update_time: abc2023-02-22T23:55:01-08:00 17 | -------------------------------------------------------------------------------- /counterexamples/buildings/bad-type.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Point", 6 | "coordinates": [0, 1] 7 | }, 8 | "properties": { 9 | "theme": "buildings", 10 | "type": "fake", 11 | "version": 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /counterexamples/buildings/building-part-bad-name.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:part:2345 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[ 7 | [-77.036873, 38.897804], 8 | [-77.036873, 38.897559], 9 | [-77.036260, 38.897559], 10 | [-77.036260, 38.897804], 11 | [-77.036873, 38.897804] 12 | ]] 13 | properties: 14 | # Overture properties 15 | theme: buildings 16 | type: building_part 17 | version: 1 18 | level: 1 19 | building_id: abc1234 20 | names: 21 | main: "East Wing" 22 | height: 21.34 23 | num_floors: 4 24 | min_height: 15.0 25 | min_floor: 2 26 | roof_shape: dome 27 | roof_orientation: across 28 | roof_direction: 23.4 29 | roof_height: 3.4 30 | sources: 31 | - property: "" 32 | dataset: OpenStreetMap 33 | -------------------------------------------------------------------------------- /counterexamples/buildings/negative-height.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Polygon", 6 | "coordinates": [[[-117.33804,47.77664],[-117.33772,47.77672],[-117.33764,47.77658],[-117.33797,47.77651],[-117.33804,47.77664]]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "properties/height/exclusiveMinimum]: exclusiveMinimum: got -1.23, want 0" 11 | ], 12 | "theme": "buildings", 13 | "type": "building", 14 | "class": "residential", 15 | "version": 0, 16 | "height": -1.23 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /counterexamples/buildings/negative-num-floors.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Polygon", 6 | "coordinates": [[[-117.33804,47.77664],[-117.33772,47.77672],[-117.33764,47.77658],[-117.33797,47.77651],[-117.33804,47.77664]]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "shapeContainer/properties/num_floors/exclusiveMinimum]: exclusiveMinimum: got -3, want 0" 11 | ], 12 | "theme": "buildings", 13 | "type": "building", 14 | "class": "residential", 15 | "version": 0, 16 | "num_floors": -3 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /counterexamples/common/names/names-invalid-language.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: names-invalid-language 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: primary 13 | names: 14 | primary: Foo 15 | common: 16 | ja_rm: Not allowed to have an underscore 17 | zh_pinyin: Not allowed to have an underscore 18 | en1: Not allowed to have a digit in the language part 19 | rules: 20 | - language: etymology:wikidata 21 | value: Not allowed to have a colon 22 | variant: common 23 | - language: etymology 24 | value: Too long 25 | variant: alternate 26 | - language: pronunciation 27 | value: Too long 28 | variant: official 29 | ext_expected_errors: 30 | - "additionalProperties]: additional properties" 31 | - "'etymology:wikidata' does not match pattern" 32 | - "'etymology' does not match pattern" 33 | - "'pronunciation' does not match pattern" 34 | -------------------------------------------------------------------------------- /counterexamples/common/names/names-invalid-variant.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: names-invalid-variant 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: primary 13 | names: 14 | primary: Bar 15 | rules: 16 | - value: I am missing the variant 17 | - language: en-us 18 | value: I have a fake/unsupported variant 19 | variant: fake-variant 20 | ext_expected_errors: 21 | - "missing property 'variant'" 22 | - "value must be one of 'common', 'official', 'alternate', 'short'" 23 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-capital-division-id.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-capital-division-id 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: A division with an invalid capital_division_id property. 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:bad-capital-division-id 17 | subtype: country 18 | name: A division with an invalid capital_division_id property. 19 | norms: 20 | driving_side: right 21 | capital_division_ids: [' '] 22 | ext_expected_errors: 23 | - "' ' does not match pattern" 24 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-class.yml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-class 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | class: mammalia 13 | division_id: counterexample:division:some-class 14 | names: 15 | primary: A division area with an invalid class property. 16 | country: ZZ 17 | ext_expected_errors: 18 | - "value must be one of 'megacity', 'city', 'town', 'village', 'hamlet'" 19 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-country.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-country 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: A division with an invalid country property. 14 | country: ZZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:bad-country 17 | subtype: country 18 | name: A division with an invalid country property. 19 | norms: 20 | driving_side: left 21 | ext_expected_errors: 22 | - "maxLength: got 3, want 2" 23 | - "'ZZZ' does not match pattern" 24 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-geometry-coordinates.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-geometry-coordinates 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: ['foo', 123] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: A division with invalid geometry coordinates. 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:bad-geometry-coordinates 17 | subtype: country 18 | name: A division with invalid geometry coordinates. 19 | norms: 20 | driving_side: left 21 | ext_expected_errors: 22 | - "properties/coordinates/items/type]: got string, want number" 23 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-geometry-type.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-geometry-type 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 1], [1, 1], [0, 0], [0, 1]]] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: A division with an invalid geometry type. 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:bad-geometry-type 17 | subtype: country 18 | name: A division with an invalid geometry type. 19 | norms: 20 | driving_side: left 21 | ext_expected_errors: 22 | - "value must be 'Point'" 23 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-hierarchies.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-hierarchies 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: county 12 | names: 13 | primary: A division with an invalid hierarchies property 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:bad-hierarchies-country 17 | subtype: country 18 | - name: foo 19 | subtype: region 20 | - division_id: counterexample:division:bad-hierarchies-county 21 | name: bar 22 | - [] 23 | norms: 24 | driving_side: left 25 | ext_expected_errors: 26 | - "/propertyDefinitions/hierarchyItem/required]: missing property 'name'" 27 | - "/propertyDefinitions/hierarchyItem/required]: missing property 'division_id'" 28 | - "/propertyDefinitions/hierarchyItem/required]: missing property 'subtype'" 29 | - "/propertyDefinitions/hierarchy/minItems]: minItems: got 0, want 1" 30 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-names.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-names 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: 14 | common: 15 | a-b-c-d-e-f-g-h-i-j-k-l: foo 16 | country: ZZ 17 | hierarchies: 18 | - - division_id: counterexample:division:bad-names 19 | subtype: country 20 | name: A division with invalid names 21 | norms: 22 | driving_side: left 23 | ext_expected_errors: 24 | - "/propertyDefinitions/allNames/properties/primary/type]: got null, want string" 25 | - additional properties 'a-b-c-d-e-f-g-h-i-j-k-l' not allowed 26 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-norms.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-norms 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: A division with invalid norms 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:bad-names 17 | subtype: country 18 | name: A division with invalid norms 19 | norms: 20 | driving_side: middle 21 | random_property: 10 22 | ext_expected_errors: 23 | - "value must be one of 'left', 'right'" 24 | - "/properties/properties/properties/norms/unevaluatedProperties]: false schema" 25 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-parent-division-id.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-parent-division-id 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: region 12 | names: 13 | primary: A division with an invalid parent division ID 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:some-parent-division 17 | subtype: country 18 | name: Some parent division 19 | - division_id: counterexample:division:bad-parent-division-id 20 | subtype: region 21 | name: A division with an invalid parent division ID 22 | norms: 23 | driving_side: right 24 | parent_division_id: " " 25 | ext_expected_errors: 26 | - "' ' does not match pattern" 27 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-region.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-region 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: region 12 | names: 13 | primary: A division with an invalid region 14 | country: ZZ 15 | region: foo 16 | hierarchies: 17 | - - division_id: counterexample:division:some-parent-division 18 | subtype: country 19 | name: Some parent division 20 | - division_id: counterexample:division:bad-region 21 | subtype: region 22 | name: A division with an invalid ISO 3166-2 primary subdivision code ('region') 23 | parent_division_id: counterexample:division:some-parent-division 24 | ext_expected_errors: 25 | - "minLength: got 3, want 4" 26 | - "'foo' does not match pattern" 27 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/bad-subtype.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:bad-subtype 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: foo 12 | names: 13 | primary: A division with an invalid subtype 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:bad-subtype 17 | subtype: foo 18 | name: A division with an invalid subtype 19 | ext_expected_errors: 20 | - "/propertyDefinitions/placetype/enum]: value must be one of 'country'," 21 | - "/propertyDefinitions/placetype/enum]: value must be one of 'country'," 22 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/missing-properties.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:missing-properties 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | ext_expected_errors: 12 | - "missing properties 'names', 'subtype', 'country', 'hierarchies'" 13 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/parent-not-allowed-on-country.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:parent-not-allowed-on-country 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: A country division that has a parent ID, which is not allowed 14 | country: ZZ 15 | hierarchies: 16 | - - division_id: counterexample:division:parent-not-allowed-on-country 17 | subtype: country 18 | name: A country division that has a parent ID, which is not allowed 19 | parent_division_id: counterexample:division:some-parent-division 20 | ext_expected_errors: 21 | - "[S#/properties/properties/allOf/3/then]: not failed" 22 | -------------------------------------------------------------------------------- /counterexamples/divisions/division/parent-required-on-sub-country.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division:parent-required-on-sub-country 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: region 12 | names: 13 | primary: A sub-country division that lacks a parent ID 14 | country: ZZ 15 | region: ZZ-ABC 16 | hierarchies: 17 | - - division_id: counterexample:division:some-parent-division 18 | subtype: country 19 | name: Some parent division 20 | - division_id: counterexample:division:parent-required-on-sub-country 21 | subtype: region 22 | name: A sub-country division that lacks a parent ID 23 | ext_expected_errors: 24 | - "missing property 'parent_division_id'" 25 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-class.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-class 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | class: mammalia 13 | division_id: counterexample:division:some-division 14 | names: 15 | primary: A division area with an invalid class property. 16 | country: ZZ 17 | ext_expected_errors: 18 | - "value must be one of 'land', 'maritime'" 19 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-country.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-country 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | class: land 13 | division_id: counterexample:division:some-division 14 | names: 15 | primary: A division area with an invalid country property. 16 | country: ZZZ 17 | ext_expected_errors: 18 | - "maxLength: got 3, want 2" 19 | - "'ZZZ' does not match pattern" 20 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-division-id.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-division-id 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | class: maritime 13 | division_id: 'abc ' 14 | names: 15 | primary: A division area with an invalid division ID property. 16 | country: ZZ 17 | ext_expected_errors: 18 | - "'abc ' does not match pattern" 19 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-geometry-coordinates.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-geometry-coordinates 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | class: maritime 13 | division_id: counterexample:division:some-division 14 | names: 15 | primary: A division area with invalid geometry coordinates. 16 | country: ZZ 17 | ext_expected_errors: 18 | - got number, want array 19 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-geometry-type.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-geometry-type 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | class: land 13 | division_id: counterexample:division:some-division 14 | names: 15 | primary: A division area with an invalid geometry type. 16 | country: ZZ 17 | ext_expected_errors: 18 | - "/properties/type/enum]: value must be 'Polygon'" 19 | - "/properties/type/enum]: value must be 'MultiPolygon'" 20 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-is-land.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-is-land 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | division_id: counterexample:division_boundary:some-division 13 | is_land: yes 14 | country: ZZ 15 | ext_expected_errors: 16 | - "is_land/type]: got string, want boolean" 17 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-is-territorial.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-is-territorial 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | division_id: counterexample:division_boundary:some-division 13 | is_territorial: no 14 | is_land: true 15 | country: ZZ 16 | ext_expected_errors: 17 | - "is_territorial/type]: got string, want boolean" 18 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-missing-is-land.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-is-territorial 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: country 12 | division_id: counterexample:division_boundary:some-division 13 | is_territorial: false 14 | country: ZZ -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-region.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-region 3 | type: Feature 4 | geometry: 5 | type: MultiPolygon 6 | coordinates: [[[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: region 12 | class: maritime 13 | division_id: counterexample:division:some-division 14 | names: 15 | primary: A division area with an invalid ISO 3166-2 primary subdivision code ('region') 16 | country: ZZ 17 | region: this just seems wrong 18 | ext_expected_errors: 19 | - "/propertyDefinitions/iso3166_2SubdivisionCode/maxLength]: maxLength: got 21, want 6" 20 | - "'this just seems wrong' does not match pattern" 21 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/bad-subtype.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:bad-region 3 | type: Feature 4 | geometry: 5 | type: MultiPolygon 6 | coordinates: [[[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | subtype: région 12 | class: land 13 | division_id: counterexample:division:some-division 14 | names: 15 | primary: A division area with an invalid subtype property. 16 | country: ZZ 17 | region: ZZ-AB 18 | ext_expected_errors: 19 | - "/propertyDefinitions/placetype/enum]: value must be one of 'country'," 20 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_area/missing-properties.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_area:missing-properties 3 | type: Feature 4 | geometry: 5 | type: MultiPolygon 6 | coordinates: [[[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]]] 7 | properties: 8 | theme: divisions 9 | type: division_area 10 | version: 0 11 | ext_expected_errors: 12 | - " missing properties 'names', 'subtype', 'class', 'country', 'division_id'" 13 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-class.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | subtype: country 12 | class: foo 13 | divisions: ["example:division:country:left", "example:division:country:right"] 14 | is_disputed: false 15 | ext_expected_errors: 16 | - "value must be one of 'land', 'maritime'" 17 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-division_ids-1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: region 12 | class: land 13 | country: "XX" 14 | division_ids: ["example:division:country:left", "example:division:country:right", "example:division:country:right", 123] 15 | is_disputed: "true" 16 | ext_expected_errors: 17 | - "maxItems: got 4, want 2" 18 | - "items at 1 and 2 are equal" 19 | - "propertyDefinitions/id/type]: got number, want string" 20 | - got string, want boolean 21 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-division_ids-2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: county 12 | country: "XX" 13 | class: land 14 | division_ids: ["example:division:country:lonelylhsdivision"] 15 | ext_expected_errors: 16 | - "minItems: got 1, want 2" 17 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-geometry-type.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 1] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | subtype: neighborhood 12 | class: land 13 | country: "XX" 14 | divisions: ["example:division:country:left", "example:division:country:right"] 15 | ext_expected_errors: 16 | - "value must be 'LineString'" 17 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-is-land.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-is-land 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | subtype: country 12 | division_ids: ["example:division:country:left", "example:division:country:right"] 13 | is_land: yes 14 | is_territorial: false 15 | class: land 16 | country: ZZ 17 | ext_expected_errors: 18 | - "is_land/type]: got string, want boolean" 19 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-is-territorial.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-is-territorial 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | subtype: country 12 | division_ids: ["example:division:country:left", "example:division:country:right"] 13 | class: land 14 | is_territorial: no 15 | is_land: true 16 | country: ZZ 17 | ext_expected_errors: 18 | - "is_territorial/type]: got string, want boolean" -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-not-both.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:is_land:country:us 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: country 12 | is_land: true 13 | is_territorial: true 14 | class: land 15 | division_ids: ["example:division:country:left", "example:division:country:right"] 16 | ext_expected_errors: 17 | - "division_boundary.yaml#/properties/properties/oneOf]: oneOf failed, subschemas 0, 1 matched" -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/bad-subtype.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | subtype: foo 12 | class: land 13 | divisions: ["example:division:country:left", "example:division:country:right"] 14 | ext_expected_errors: 15 | - "/propertyDefinitions/placetype/enum]: value must be one of 'country'," 16 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/missing-class.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | subtype: macroregion 12 | is_territorial: true 13 | is_land: false 14 | country: "XX" 15 | division_ids: ["example:division:country:left", "example:division:country:right"] 16 | ext_expected_errors: 17 | - "missing property 'class'" 18 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/missing-country.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | subtype: region 12 | is_territorial: true 13 | is_land: false 14 | class: land 15 | division_ids: ["example:division:country:left", "example:division:country:right"] 16 | ext_expected_errors: 17 | - "missing property 'country'" -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/missing-division_ids.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | class: land 12 | is_territorial: false 13 | is_land: true 14 | subtype: macrocounty 15 | country: "XX" 16 | ext_expected_errors: 17 | - "missing property 'division_ids'" 18 | -------------------------------------------------------------------------------- /counterexamples/divisions/division_boundary/missing-subtype.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:division_boundary:bad-class 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 0 11 | class: land 12 | is_territorial: false 13 | is_land: true 14 | division_ids: ["example:division:country:left", "example:division:country:right"] 15 | ext_expected_errors: 16 | - "missing property 'subtype'" 17 | -------------------------------------------------------------------------------- /counterexamples/empty-object.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /counterexamples/places/bad-address-invalid-property.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:places:place:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | ext_expected_errors: ["/$defs/propertyDefinitions/address/unevaluatedProperties]: false schema"] 9 | theme: places 10 | type: place 11 | version: 0 12 | names: 13 | primary: Fancy POI with invalid address property (region2) 14 | categories: 15 | primary: some_category 16 | addresses: 17 | - freeform: "770 Broadway, Floor 8" 18 | locality: "New York" 19 | - freeform: "770 Broadway, #802" 20 | locality: "New York" 21 | region2: "US-NY" 22 | country: "US" 23 | -------------------------------------------------------------------------------- /counterexamples/places/bad-categories-missing-primary.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:places:place:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | ext_expected_errors: ["missing property 'primary'"] 9 | theme: places 10 | type: place 11 | version: 1 12 | names: 13 | primary: Fancy POI missing primary category property 14 | categories: 15 | alternate: 16 | - some_category 17 | -------------------------------------------------------------------------------- /counterexamples/places/bad-categories-value.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: counterexample:place:bad-categories-values 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | ext_expected_errors: 9 | - "'foo_' does not match pattern" 10 | - "' bar ' does not match pattern" 11 | - "'BAZ' does not match pattern" 12 | theme: places 13 | type: place 14 | version: 1 15 | categories: 16 | primary: foo_ 17 | alternate: 18 | - " bar " 19 | - BAZ 20 | confidence: 0.9 21 | names: 22 | primary: Problematic POI with problematic categories 23 | -------------------------------------------------------------------------------- /counterexamples/places/bad-geometry.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:places:place:1 3 | type: Feature 4 | geometry: 5 | type: MultiPolygon 6 | coordinates: [[[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]]] 7 | properties: 8 | categories: 9 | primary: a_category 10 | -------------------------------------------------------------------------------- /counterexamples/theme-type-mismatch.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "themeTypeMismatch", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Polygon", 6 | "coordinates": [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | }, 8 | "properties": { 9 | "theme": "buildings", 10 | "type": "segment" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /counterexamples/transportation/bad-type.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [1, 0]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "fake" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /counterexamples/transportation/connector/bad-geometry-type.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [2, 3]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "connector", 11 | "version": 2, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /counterexamples/transportation/connector/level-property-not-allowed.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "unrecognizedLevelProperty", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Point", 6 | "coordinates": [0, 0] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "connector", 11 | "version": 0, 12 | "level": 3, 13 | "ext_expected_errors": [ 14 | "/properties/unevaluatedProperties]: false schema" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-class.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | ext_expected_errors: 9 | - "roadClass/enum]: value must be one of 'motorway'," 10 | theme: transportation 11 | type: segment 12 | update_time: "2024-04-23T00:00:00-05:00" 13 | version: 1 14 | subtype: road 15 | class: sidewalk 16 | connectors: 17 | - connector_id: fooConnector 18 | at: 0 19 | - connector_id: barConnector 20 | at: 1 21 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-connector-duplicate.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "segment with an invalid entry in the connectors array", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [1, 1]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "items at 0 and 2 are equal" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 4, 15 | "subtype": "rail", 16 | "connectors": [ 17 | { 18 | "connector_id": "fooConnector", 19 | "at": 0 20 | }, 21 | { 22 | "connector_id": "bazConnector", 23 | "at": 1 24 | }, 25 | { 26 | "connector_id": "fooConnector", 27 | "at": 0 28 | } 29 | ] 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-connector.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "segment with an invalid entry in the connectors array", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [1, 1]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "got string, want object", 11 | "got number, want object", 12 | "got boolean, want object" 13 | ], 14 | "theme": "transportation", 15 | "type": "segment", 16 | "version": 3, 17 | "subtype": "rail", 18 | "connectors": [{"connector_id": "foo", "at": 0.0}, {"connector_id": "bar", "at": 1.0}, "bazConnector", "qux", 1, false] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-geometry-type.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "foo", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Point", 6 | "coordinates": [0, 1] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "at '/geometry/type' [S#/properties/type/enum]: value must be 'LineString'" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "subtype": "water", 15 | "version": 15 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-lr-width-missing-items.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "segment with empty road width rules array", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [1, 1]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "segment", 11 | "version": 26, 12 | "subtype": "road", 13 | "class": "primary", 14 | "width_rules": [], 15 | "ext_expected_errors": [ 16 | "minItems: got 0, want 1" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-lr-width.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "segment with missing value for one of ranges", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [1, 1]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "segment", 11 | "version": 26, 12 | "subtype": "road", 13 | "class": "primary", 14 | "width_rules": [ 15 | { 16 | "between" : [0, 0.5], 17 | "value" : 1.5 18 | }, 19 | { 20 | "between" : [0.5, 1.0] 21 | } 22 | ], 23 | "ext_expected_errors": [ 24 | "propertyContainers/widthRulesContainer/items/required]: missing property 'value'" 25 | ] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-route.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | ext_expected_errors: 9 | - "routes/items/properties/name/minLength]: minLength: got 0, want 1" 10 | - "routes/items/properties/name/pattern]: '' does not match pattern" 11 | theme: transportation 12 | type: segment 13 | version: 1 14 | subtype: road 15 | class: secondary 16 | connectors: 17 | - connector_id: fooConnector 18 | at: 0 19 | - connector_id: barConnector 20 | at: 1 21 | routes: 22 | - name: "" 23 | ref: 1234 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/bad-source-between.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | ext_expected_errors: 9 | - "minItems: got 0, want 2" 10 | theme: transportation 11 | type: segment 12 | version: 1 13 | subtype: road 14 | class: secondary 15 | connectors: 16 | - connector_id: fooConnector 17 | at: 0 18 | - connector_id: barConnector 19 | at: 1 20 | sources: 21 | - record_id: w123 22 | property: "" 23 | dataset: some source 24 | between: [] 25 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/missing-subtype.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "missing property 'subtype'" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 26 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/missing-version.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "missing property 'version'" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "subtype": "water" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/property-subtype-mismatch.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:indoor 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | # Segment of subtype rail has a road flag (should be disallowed) 12 | subtype: rail 13 | road_flags: 14 | - values: [is_indoor] 15 | ext_expected_errors: 16 | - "oneOf failed, none matched" 17 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/rail/bad-rail-class.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "[S#/$defs/propertyDefinitions/railClass/enum]: value must be one of" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 18, 15 | "subtype": "rail", 16 | "class": "foo" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/rail/bad-rail-flags-duplicate-flag.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "railFlagsContainer/items/properties/values/uniqueItems]: items at 0 and 1 are equal" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 19, 15 | "subtype": "rail", 16 | "class": "primary", 17 | "rail_flags": [ 18 | { 19 | "values": ["is_freight", "is_freight"] 20 | } 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/rail/bad-rail-flags-invalid-flag.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "value must be one of" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 20, 15 | "subtype": "rail", 16 | "class": "primary", 17 | "rail_flags": [ 18 | { 19 | "values": ["foo"] 20 | } 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-class.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "[S#/$defs/propertyDefinitions/roadClass/enum]: value must be one of" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 18, 15 | "subtype": "road", 16 | "class": "foo" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-destinations.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:destinations:1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: secondary 12 | version: 0 13 | connectors: 14 | - connector_id: overture:transportation:connector:123 15 | at: 0 16 | - connector_id: overture:transportation:connector:678 17 | at: 1 18 | destinations: 19 | - labels: 20 | - value: Seattle 21 | type: unknown 22 | - value: Seattle 23 | type: unknown 24 | - value: Redmond 25 | - value: 26 | foo: bar 27 | type: unknown 28 | - value: Bellevue 29 | type: other 30 | - value: Main Street 31 | type: street 32 | - value: I90 33 | type: route 34 | symbols: 35 | - airport 36 | from: 37 | - segment_id: overture:transportation:segment:234 38 | - segment_id: overture:transportation:segment:567 39 | connector_id: overture:transportation:connector:567 40 | foo: bar 41 | when: 42 | heading: forward 43 | to_connector_id: overture:transportation:connector:123 44 | final_heading: backward 45 | - labels: 46 | - value: Kirkland 47 | type: unknown 48 | from: 49 | - segment_id: overture:transportation:segment:567 50 | connector_id: overture:transportation:connector:567 51 | ext_expected_errors: 52 | - "destinations/items/properties/labels/uniqueItems]: items at 0 and 1 are equal" 53 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-flags-duplicate-flag.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "roadFlagsContainer/items/properties/values/uniqueItems]: items at 0 and 1 are equal" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 19, 15 | "subtype": "road", 16 | "class": "primary", 17 | "road_flags": [ 18 | { 19 | "values": ["is_tunnel", "is_tunnel"] 20 | } 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-flags-invalid-flag.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "value must be one of" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 20, 15 | "subtype": "road", 16 | "class": "primary", 17 | "road_flags": [ 18 | { 19 | "values": ["foo"] 20 | } 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-flags-invalid-is_private-flag.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "invalidIsPrivateFlag", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "segment", 11 | "version": 20, 12 | "subtype": "road", 13 | "class": "primary", 14 | "road_flags": [ 15 | { 16 | "values": ["is_private"] 17 | } 18 | ], 19 | "ext_expected_errors": [ 20 | "value must be one of" 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-flags-invalid-string-value.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "invalid-road-flag-string-value", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | "got string, want object" 11 | ], 12 | "theme": "transportation", 13 | "type": "segment", 14 | "version": 20, 15 | "subtype": "road", 16 | "class": "primary", 17 | "road_flags": ["is_tunnel"] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-invalid-temporal-scoping.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "invalidTemporalScoping", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "segment", 11 | "version": 20, 12 | "subtype": "road", 13 | "class": "primary", 14 | "road_flags": [ 15 | { 16 | "values": ["is_bridge"] 17 | } 18 | ], 19 | "when": { 20 | "during": "Mo-Sa 09:00-12:00, We 15:00-18:00" 21 | }, 22 | "ext_expected_errors": [ 23 | "schema/transportation/segment.yaml#/properties/properties/unevaluatedProperties]: false schema" 24 | ] 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-level-invalid-value.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: secondary 13 | connectors: 14 | - connector_id: fooConnector 15 | at: 0 16 | - connector_id: barConnector 17 | at: 1 18 | level_rules: 19 | - value: 1.5 20 | ext_expected_errors: 21 | - "schema/defs.yaml#/$defs/propertyDefinitions/level/type]: got number, want integer" 22 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-level-unsupported-properties.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: secondary 13 | connectors: 14 | - connector_id: fooConnector 15 | at: 0 16 | - connector_id: barConnector 17 | at: 1 18 | level_rules: 19 | - value: 1 20 | foo: bar 21 | ext_expected_errors: 22 | - "'/properties/level_rules/0/foo' [S#/$defs/propertyContainers/levelRulesContainer/items/unevaluatedProperties]: false schema" 23 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/bad-road-surface-invalid-rule-value.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "segment", 11 | "version": 23, 12 | "subtype": "road", 13 | "class": "primary", 14 | "road_surface": [ 15 | { 16 | "value": "hot mess" 17 | } 18 | ], 19 | "ext_expected_errors": [ 20 | "[S#/$defs/propertyDefinitions/roadSurface/enum]: value must be one of" 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/destinations/bad-road-destinations-bad-label-type.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:destinations:1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: secondary 12 | version: 0 13 | connectors: 14 | - connector_id: overture:transportation:connector:123 15 | at: 0 16 | - connector_id: overture:transportation:connector:678 17 | at: 1 18 | destinations: 19 | - labels: 20 | - value: Seattle 21 | type: bad_type 22 | symbols: 23 | - airport 24 | when: 25 | heading: forward 26 | from_connector_id: overture:transportation:connector:123 27 | to_connector_id: overture:transportation:connector:123 28 | to_segment_id: overture:transportation:segment:567 29 | final_heading: backward 30 | ext_expected_errors: 31 | - "propertyDefinitions/destinationLabelType/enum]: value must be one of 'street'," 32 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/destinations/bad-road-destinations-duplicate.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:destinations:1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: secondary 12 | version: 0 13 | connectors: 14 | - connector_id: overture:transportation:connector:123 15 | at: 0 16 | - connector_id: overture:transportation:connector:678 17 | at: 1 18 | destinations: 19 | - labels: 20 | - value: Seattle 21 | type: unknown 22 | - value: Seattle 23 | type: unknown 24 | symbols: 25 | - airport 26 | when: 27 | heading: forward 28 | from_connector_id: overture:transportation:connector:123 29 | to_connector_id: overture:transportation:connector:123 30 | to_segment_id: overture:transportation:segment:567 31 | final_heading: backward 32 | ext_expected_errors: 33 | - "items at 0 and 1 are equal" 34 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/destinations/bad-road-destinations-empty-label-value.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:destinations:1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: secondary 12 | version: 0 13 | connectors: 14 | - connector_id: overture:transportation:connector:123 15 | at: 0 16 | - connector_id: overture:transportation:connector:678 17 | at: 1 18 | destinations: 19 | - labels: 20 | - value: 21 | type: unknown 22 | symbols: 23 | - airport 24 | when: 25 | heading: forward 26 | from_connector_id: overture:transportation:connector:123 27 | to_connector_id: overture:transportation:connector:123 28 | to_segment_id: overture:transportation:segment:567 29 | final_heading: backward 30 | ext_expected_errors: 31 | - "got null, want string" 32 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/destinations/bad-road-destinations-invalid-symbol.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:destinations:1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: secondary 12 | version: 0 13 | connectors: 14 | - connector_id: overture:transportation:connector:123 15 | at: 0 16 | - connector_id: overture:transportation:connector:678 17 | at: 1 18 | destinations: 19 | - labels: 20 | - value: Seattle 21 | type: unknown 22 | symbols: 23 | - bad_symbol 24 | when: 25 | heading: forward 26 | from_connector_id: overture:transportation:connector:123 27 | to_connector_id: overture:transportation:connector:123 28 | to_segment_id: overture:transportation:segment:567 29 | final_heading: backward 30 | ext_expected_errors: 31 | - "propertyDefinitions/destinationSignSymbol/enum]: value must be one of 'motorway'," 32 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/destinations/bad-road-destinations-missing-final_heading.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:destinations:1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: secondary 12 | version: 0 13 | connectors: 14 | - connector_id: overture:transportation:connector:123 15 | at: 0 16 | - connector_id: overture:transportation:connector:678 17 | at: 1 18 | destinations: 19 | - labels: 20 | - value: Seattle 21 | type: unknown 22 | symbols: 23 | - airport 24 | when: 25 | heading: forward 26 | from_connector_id: overture:transportation:connector:123 27 | to_connector_id: overture:transportation:connector:123 28 | to_segment_id: overture:transportation:segment:567 29 | ext_expected_errors: 30 | - "missing property 'final_heading'" 31 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/access/bad-access-mode.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | ext_expected_errors: 9 | - "travelMode/enum]: value must be one of" 10 | # Custom user properties. 11 | ext_baz: I am a custom user property... 12 | # Overture properties 13 | theme: transportation 14 | type: segment 15 | version: 1 16 | subtype: road 17 | class: secondary 18 | subclass: link 19 | subclass_rules: 20 | - value: link 21 | connectors: 22 | - connector_id: fooConnector 23 | at: 0 24 | - connector_id: barConnector 25 | at: 1 26 | road_surface: gravel 27 | road_flags: 28 | - [is_link, is_tunnel] # Note: `is_link` is deprecated and will be removed in a future release in favor of the link subclass 29 | access_restrictions: 30 | - access_type: allowed 31 | when: {mode: [foo]} 32 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/access/bad-access-restrictions-vehicle.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | # Overture properties 11 | theme: transportation 12 | type: segment 13 | version: 1 14 | subtype: road 15 | class: secondary 16 | connectors: 17 | - connector_id: fooConnector 18 | at: 0 19 | - connector_id: barConnector 20 | at: 1 21 | access_restrictions: 22 | - access_type: allowed 23 | when: {vehicle: [{dimension: axle_count, comparison: greater_than, value: {is_foo: 5}}]} 24 | ext_expected_errors: 25 | - "propertyContainers/vehicleScopeContainer/properties/vehicle/items/properties/value/type]: got object, want number" 26 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/access/bad-access-unsupported-properties.yaml: -------------------------------------------------------------------------------- 1 | id: overture:transportation:segment:counterexample:access-unsupported-properties 2 | type: Feature 3 | geometry: 4 | type: LineString 5 | coordinates: [[-1, -1], [1, 1]] 6 | properties: 7 | theme: transportation 8 | type: segment 9 | subtype: road 10 | class: tertiary 11 | version: 1 12 | access_restrictions: 13 | - foo: bar 14 | - access_type: denied 15 | when: 16 | baz: qux 17 | ext_expected_errors: 18 | - "'/properties/access_restrictions/0' [S#/$defs/propertyContainers/accessContainer/items/required]: missing property 'access_type'" 19 | - "'/properties/access_restrictions/1/when/baz' [S#/$defs/propertyContainers/accessContainer/items/properties/when/unevaluatedProperties]: false schema" 20 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/prohibited_transitions/bad-sequence-duplicate-entry.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:counterexample:bad-sequence-duplicate-entry 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 2 11 | subtype: road 12 | class: primary 13 | connectors: 14 | - connector_id: fooConnector 15 | at: 0 16 | - connector_id: barConnector 17 | at: 1 18 | prohibited_transitions: 19 | - sequence: 20 | - segment_id: foo 21 | connector_id: bar 22 | - segment_id: foo 23 | connector_id: bar 24 | final_heading: forward 25 | ext_expected_errors: 26 | - items at 0 and 1 are equal 27 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/prohibited_transitions/bad-sequence-empty.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:counterexample:bad-sequence-duplicate-entry 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 2 11 | subtype: road 12 | class: primary 13 | connectors: 14 | - connector_id: fooConnector 15 | at: 0 16 | - connector_id: barConnector 17 | at: 1 18 | prohibited_transitions: 19 | - sequence: [] 20 | final_heading: forward 21 | ext_expected_errors: 22 | - "sequence/minItems]: minItems: got 0, want 1" 23 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/prohibited_transitions/missing-final-heading.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:counterexample:bad-sequence-duplicate-entry 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 2 11 | subtype: road 12 | class: primary 13 | connectors: 14 | - connector_id: fooConnector 15 | at: 0 16 | - connector_id: barConnector 17 | at: 1 18 | prohibited_transitions: 19 | - sequence: 20 | - segment_id: foo 21 | connector_id: bar 22 | ext_expected_errors: 23 | - "missing property 'final_heading'" 24 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/prohibited_transitions/unsupported-properties.yaml: -------------------------------------------------------------------------------- 1 | id: overture:transportation:segment:counterexample:prohibited-transitions-unsupported-properties 2 | type: Feature 3 | geometry: 4 | type: LineString 5 | coordinates: [[-1, -1], [1, 1]] 6 | properties: 7 | theme: transportation 8 | type: segment 9 | subtype: road 10 | class: residential 11 | version: 1 12 | prohibited_transitions: 13 | - sequence: 14 | - connector_id: connector1 15 | segment_id: segment1 16 | final_heading: backward 17 | foo: bar 18 | when: 19 | baz: qux 20 | ext_expected_errors: 21 | - "'/properties/prohibited_transitions/0/foo' [S#/$defs/propertyContainers/prohibitedTransitionsContainer/items/unevaluatedProperties]: false schema" 22 | - "'/properties/prohibited_transitions/0/when/baz' [S#/$defs/propertyContainers/prohibitedTransitionsContainer/items/properties/when/unevaluatedProperties]: false schema" 23 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-empty-rule.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "road segment where road.restrictions.speed_limits contains an empty rule", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [1, 1]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "segment", 11 | "version": 26, 12 | "subtype": "road", 13 | "class": "primary", 14 | "speed_limits": [ 15 | {} 16 | ], 17 | "ext_expected_errors": [ 18 | "anyOf/0/required]: missing property 'min_speed'", 19 | "anyOf/1/required]: missing property 'max_speed'" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-invalid-type.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "road segment where road.restrictions.speed_limits contains an empty rule", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[0, 1], [1, 1]] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "segment", 11 | "version": 0, 12 | "subtype": "road", 13 | "class": "primary", 14 | "speed_limits": {}, 15 | "ext_expected_errors": [ 16 | "'/properties/speed_limits' [S#/$defs/propertyContainers/speedLimitsContainer/type]: got object, want array" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /counterexamples/transportation/segment/road/restrictions/speed_limits/bad-speed-limits-mode.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | ext_expected_errors: 11 | - "'/properties/speed_limits/0/when/mode/0' [S#/$defs/propertyDefinitions/travelMode/enum]: value must be one of" 12 | # Overture properties 13 | theme: transportation 14 | type: segment 15 | version: 2 16 | subtype: road 17 | class: secondary 18 | connectors: 19 | - connector_id: fooConnector 20 | at: 0 21 | - connector_id: barConnector 22 | at: 1 23 | speed_limits: 24 | - max_speed: 25 | value: 110 26 | unit: mph 27 | when: {mode: [foo]} 28 | -------------------------------------------------------------------------------- /counterexamples/unrecognized-property.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "unrecognizedProperty", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Point", 6 | "coordinates": [0, 1] 7 | }, 8 | "properties": { 9 | "theme": "transportation", 10 | "type": "connector", 11 | "version": 0, 12 | "foo": "bar", 13 | "ext_expected_errors": [ 14 | "schema/transportation/connector.yaml#/properties/properties/unevaluatedProperties]: false schema" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # View the Schema Documentation at [docs.overturemaps.org/schema](https://docs.overturemaps.org/schema/) 2 | 3 | # Editing the Overture Schema Documentation 4 | 5 | [docs.overturemaps.org](https://docs.overturemaps.org) is a docusaurus website that builds from the [github.com/overturemaps/docs](github.com/overturemaps/docs) repo 6 | 7 | Everything at `docs.overturemaps.org/schema` comes from here, specifically: 8 | 1. Any examples shown on the documentation are pulled from the `examples` folder. 9 | 2. The interactive schema blocks are built off the YAML files located in the `schema` folder. 10 | 3. The source for the reference pages are the `.mdx` files located here in the `docs/schema` folder. 11 | 12 | 13 | ### Development 14 | Clone this repo, checkout a feature branch, and run the `build_docs.sh` script. This will check out the `OvertureMaps/docs` repo and create symlinks for _examples_, _schema_, and _docs/schema_ into the build. 15 | 16 | You can then edit the `.mdx` files here in `docs/schema` (do not worry about the _docusaurus_ folder) and see your changes live at http://localhost:3000 17 | -------------------------------------------------------------------------------- /docs/build_docs.sh: -------------------------------------------------------------------------------- 1 | echo "Removing and re-fetching Overture documentation into docusaurus directory" 2 | rm -rf docusaurus 3 | git clone --depth=1 https://github.com/OvertureMaps/docs docusaurus 4 | 5 | echo "Sym-linking examples docs into docusaurus" 6 | ln -s $(pwd)/../examples $(pwd)/docusaurus/docs/_examples 7 | 8 | echo "Sym-linking schema yaml into docusaurus" 9 | ln -s $(pwd)/../schema $(pwd)/docusaurus/docs/_schema 10 | 11 | 12 | echo "Sym-linking schema docs into docusaurus" 13 | ln -s $(pwd)/schema $(pwd)/docusaurus/docs/schema 14 | 15 | cd docusaurus 16 | npm install --prefer-dedupe 17 | 18 | npm run docusaurus start 19 | -------------------------------------------------------------------------------- /docs/schema/concepts/by-theme/addresses/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Addresses schema concepts 3 | draft: true 4 | --- 5 | 6 | ## Overview 7 | The Overture Address theme is a compilation of open address datasets usually 8 | published by local authorized sources. In our initial release, we use the datasets 9 | that are collected and distributed by [OpenAddresses](https://openaddresses.io). 10 | 11 | The initial schema for addresses is fairly simple and is expected to expand into 12 | more complex addressing schemes. 13 | 14 | 15 | 16 | ## Feature types 17 | The address theme has a single feature type. 18 | - `address` is a point feature type representing a single address point. 19 | 20 | ## Theme concepts 21 | 22 | ## Schema reference 23 | - [Explore the schema for the address feature type](/schema/reference/Addresses/address) 24 | -------------------------------------------------------------------------------- /docs/schema/concepts/by-theme/divisions/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Divisions schema concepts 3 | draft: true 4 | --- 5 | 6 | ## Overview 7 | The Overture divisions theme includes features that represent human settlements in the real world, such as countries, regions, states, cities and towns. 8 | 9 | ## Feature types 10 | The divisions theme has three feature types. 11 | - `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 12 | - `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 13 | - `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 14 | 15 | ## Theme concepts 16 | 17 | ## Schema reference 18 | - [Explore the schema for the division feature type](/schema/reference/divisions/division) 19 | - [Explore the schema for the division_area feature type](/schema/reference/divisions/division_area) 20 | - [Explore the schema for the division_boundary feature type](/schema/reference/divisions/division_boundary) 21 | -------------------------------------------------------------------------------- /docs/schema/concepts/by-theme/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Theme-based 3 | --- 4 | 5 | import DocCardList from '@theme/DocCardList'; 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/schema/concepts/by-theme/places/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Places schema concepts 3 | description: everything you ever wanted to know about the places schema 4 | --- 5 | 6 | import overture_categories from '!!raw-loader!./overture_categories.csv'; 7 | import CodeBlock from '@theme/CodeBlock'; 8 | 9 | export const PlacesCategories = (args) => { 10 | 11 | var lines = args.places.split('\n'); 12 | lines.shift(); // Remove the first line (the header) 13 | 14 | var categories = {} 15 | 16 | for (const line of lines) { 17 | const parts = line.split(';'); 18 | const category = parts[0].trim(); 19 | if (parts[1] != undefined) { 20 | var hierarchy = parts[1].trim().slice(1, (parts[1].trim().length - 1)).split(','); 21 | if (categories[hierarchy[0]] == undefined){ 22 | categories[hierarchy[0]] = [] 23 | } 24 | if (hierarchy.length>1){ 25 | categories[hierarchy[0]].push(category.padEnd(45, '.') + hierarchy.join(" > ")); 26 | } 27 | } 28 | }; 29 | 30 | var keys = Object.keys(categories).sort() 31 | 32 | return ( 33 |
34 | {keys.map(cat => { 35 | return( 36 |
{cat} 37 | 38 | {categories[cat].join("\n")} 39 | 40 |
41 | ) 42 | })} 43 |
44 | ); 45 | } 46 | 47 | 48 | ## Overview 49 | 50 | The Overture places theme includes more than 50M places and points of interest around the world. The data is sourced from Meta and Microsoft. 51 | 52 | ## Feature types 53 | 54 | The places theme has one feature type: 55 | 56 | - `place` is a feature with a Point geometry. 57 | 58 | ## Theme concepts 59 | 60 | ### Categories 61 | 62 | 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. 63 | 64 | 65 | 66 | ## Schema reference 67 | 68 | - [Explore the schema for the place feature type](/schema/reference/places/place) 69 | -------------------------------------------------------------------------------- /docs/schema/concepts/cartography.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cartography 3 | --- 4 | 5 | 6 | 7 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 8 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 9 | import yamlLoad from "@site/src/components/yamlLoad" 10 | import MainDefs from "!!raw-loader!@site/docs/_schema/defs.yaml"; 11 | 12 | 13 | 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. 14 | 15 | 16 | 19 | -------------------------------------------------------------------------------- /docs/schema/concepts/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Concepts 3 | --- 4 | import DocCardList from '@theme/DocCardList'; 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/schema/reference/addresses/address.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: address 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import AddressSchema from "!!raw-loader!@site/docs/_schema/addresses/address.yaml"; 10 | 11 | import AddressExample from "!!raw-loader!@site/docs/_examples/addresses/address.yaml"; 12 | 13 | import Tabs from '@theme/Tabs'; 14 | import TabItem from '@theme/TabItem'; 15 | 16 | # Address 17 | 18 | The Overture Address type is a compilation of open address datasets usually 19 | published by local authorized sources. In our initial release, we use the datasets 20 | that are collected and distributed by [OpenAddresses](https://openaddresses.io). 21 | 22 | The initial schema for addresses is fairly simple and is expected to expand into 23 | more complex addressing schemes. 24 | 25 | ## Feature types 26 | The address theme has a single feature type. 27 | - `address` is a point feature type representing a single address point. 28 | 29 | ## Theme concepts 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
Geometry Type 37 | Point 38 |
Themeaddresses
Typeaddress
50 | 51 | 52 | ## Schema 53 | 54 | 55 | 56 | 57 | 58 | 59 | {AddressSchema} 60 | 61 | 62 | 63 | ## Examples 64 | 65 | 66 | 67 | { JSON.stringify(yamlLoad(AddressExample), null, 2) } 68 | 69 | 70 | -------------------------------------------------------------------------------- /docs/schema/reference/base/bathymetry.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: bathymetry 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import BathymetrySchema from "!!raw-loader!@site/docs/_schema/base/bathymetry.yaml"; 10 | 11 | import BathymetryExample from "!!raw-loader!@site/docs/_examples/base/bathymetry-example.yaml"; 12 | 13 | import Tabs from '@theme/Tabs'; 14 | import TabItem from '@theme/TabItem'; 15 | 16 | # Bathymetry 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
Geometry Type 23 | Polygon or MultiPolygon 24 |
Themebase
Typebathymetry
36 | 37 | ## Schema 38 | 39 | 40 | 41 | 42 | 43 | 44 | {BathymetrySchema} 45 | 46 | 47 | 48 | ## Examples 49 | 50 | 51 | 52 | { JSON.stringify(yamlLoad(BathymetryExample), null, 2) } 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /docs/schema/reference/base/infrastructure.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: infrastructure 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import InfrastructureSchema from "!!raw-loader!@site/docs/_schema/base/infrastructure.yaml"; 10 | 11 | import InfrastructureExample from "!!raw-loader!@site/docs/_examples/base/infrastructure-example.yaml"; 12 | 13 | import Tabs from '@theme/Tabs'; 14 | import TabItem from '@theme/TabItem'; 15 | 16 | # Infrastructure 17 | 18 | Features in the infrastructure type come from OpenStreetMap features with tags like `aeroway`, `communication`, `bridge`, `man_made`, or `tower`. These features include bridges, aerialways, and airports. 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
Geometry Type 25 | Point, LineString, Polygon, or MultiPolygon 26 |
Themebase
Typeinfrastructure
38 | 39 | 40 | ## Schema 41 | 42 | 43 | 44 | 45 | 46 | 47 | {InfrastructureSchema} 48 | 49 | 50 | 51 | ## Examples 52 | 53 | 54 | 55 | { JSON.stringify(yamlLoad(InfrastructureExample), null, 2) } 56 | 57 | 58 | -------------------------------------------------------------------------------- /docs/schema/reference/base/land.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: land 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import LandSchema from "!!raw-loader!@site/docs/_schema/base/land.yaml"; 10 | 11 | import SandDuneExample from "!!raw-loader!@site/docs/_examples/base/land-sand-example.yaml"; 12 | 13 | import Tabs from '@theme/Tabs'; 14 | import TabItem from '@theme/TabItem'; 15 | 16 | # Land 17 | 18 | Features in the land theme come from OpenStreetMap features with the `natural` tag. 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
Geometry Type 25 | Point, LineString, Polygon, or MultiPolygon 26 |
Themebase
Typeland
38 | 39 | 40 | ## Schema 41 | 42 | 43 | 44 | 45 | 46 | 47 | {LandSchema} 48 | 49 | 50 | 51 | ## Examples 52 | 53 | 54 | 55 | { JSON.stringify(yamlLoad(SandDuneExample), null, 2) } 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /docs/schema/reference/base/land_cover.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: land_cover 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import LandCoverSchema from "!!raw-loader!@site/docs/_schema/base/land_cover.yaml"; 10 | 11 | import LandCoverExample from "!!raw-loader!@site/docs/_examples/base/land-cover-example.yaml"; 12 | 13 | import Tabs from '@theme/Tabs'; 14 | import TabItem from '@theme/TabItem'; 15 | 16 | # Land Cover 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
Geometry Type 23 | Polygon 24 |
Themebase
Typeland_cover
36 | 37 | 38 | ## Schema 39 | 40 | 41 | 42 | 43 | 44 | 45 | {LandCoverSchema} 46 | 47 | 48 | 49 | ## Examples 50 | 51 | 52 | 53 | { JSON.stringify(yamlLoad(LandCoverExample), null, 2) } 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /docs/schema/reference/base/land_use.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: land_use 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import LandUseSchema from "!!raw-loader!@site/docs/_schema/base/land_use.yaml"; 10 | 11 | import LandUseExample from "!!raw-loader!@site/docs/_examples/base/land-use-example.yaml"; 12 | import LandUseExample2 from "!!raw-loader!@site/docs/_examples/base/land-use-example.yaml"; 13 | 14 | import Tabs from '@theme/Tabs'; 15 | import TabItem from '@theme/TabItem'; 16 | 17 | # Land use 18 | 19 | Features in the land use theme come primarily from OpenStreetMap features containing the `landuse` tag. 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
Geometry Type 26 | Point, LineString, Polygon, or MultiPolygon 27 |
Themebase
Typeland_use
39 | 40 | 41 | ## Schema 42 | 43 | 44 | 45 | 46 | 47 | 48 | {LandUseSchema} 49 | 50 | 51 | 52 | ## Example 53 | 54 | 55 | 56 | { JSON.stringify(yamlLoad(LandUseExample), null, 2) } 57 | 58 | 59 | -------------------------------------------------------------------------------- /docs/schema/reference/base/water.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: water 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import WaterSchema from "!!raw-loader!@site/docs/_schema/base/water.yaml"; 10 | 11 | import RiverExample from "!!raw-loader!@site/docs/_examples/base/water-river-example.yaml"; 12 | import RiverExampleWikidata from "!!raw-loader!@site/docs/_examples/base/water-river-with-wikidata.yaml"; 13 | 14 | import Tabs from '@theme/Tabs'; 15 | import TabItem from '@theme/TabItem'; 16 | 17 | # Water 18 | 19 | Features in the water theme are from OpenStreetMap features with the `natural=water` tag. 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
Geometry Type 26 | Point, LineString, Polygon, or MultiPolygon 27 |
Themebase
Typewater
39 | 40 | 41 | 42 | ## Schema 43 | 44 | 45 | 46 | 47 | 48 | 49 | {WaterSchema} 50 | 51 | 52 | 53 | ## Examples 54 | 55 | 56 | 57 | { JSON.stringify(yamlLoad(RiverExample), null, 2) } 58 | 59 | 60 | 61 | { JSON.stringify(yamlLoad(RiverExampleWikidata), null, 2) } 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /docs/schema/reference/buildings/building.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: building 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import FootprintSchema from "!!raw-loader!@site/docs/_schema/buildings/building.yaml"; 10 | 11 | import PolygonExample from "!!raw-loader!@site/docs/_examples/buildings/building-polygon.yaml"; 12 | import MultiPolygonExample from "!!raw-loader!@site/docs/_examples/buildings/building-multipolygon.yaml"; 13 | import MultipleNamesExample from "!!raw-loader!@site/docs/_examples/buildings/names/name-multiple.yaml"; 14 | 15 | import Tabs from '@theme/Tabs'; 16 | import TabItem from '@theme/TabItem'; 17 | 18 | # Building 19 | 20 | Buildings are human-made structures with roofs or interior spaces that are permanently or semi-permanently in one place ([OSM building definition](https://wiki.openstreetmap.org/wiki/Key:building)). 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
Geometry TypePolygon or MultiPolygon
Themebuildings
Typebuilding
38 | 39 | The most basic form of a _building_ feature in the Overture Schema. The geometry is expected to be the most outer footprint (or roofprint if traced from satellite/aerial imagery) of a building. 40 | 41 | 42 | ## Schema 43 | 44 | 45 | 46 | 47 | 48 | 49 | {FootprintSchema} 50 | 51 | 52 | 53 | ## Examples 54 | 55 | 56 | 57 | { JSON.stringify(yamlLoad(PolygonExample), null, 2) } 58 | 59 | 60 | 61 | { JSON.stringify(yamlLoad(MultiPolygonExample), null, 2) } 62 | 63 | 64 | 65 | { JSON.stringify(yamlLoad(MultipleNamesExample), null, 2) } 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /docs/schema/reference/buildings/building_part.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: building_part 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import BuildingPartSchema from "!!raw-loader!@site/docs/_schema/buildings/building_part.yaml"; 10 | 11 | import BuildingPartExample from "!!raw-loader!@site/docs/_examples/buildings/building-part-basic.yaml"; 12 | 13 | import Tabs from '@theme/Tabs'; 14 | import TabItem from '@theme/TabItem'; 15 | 16 | # Building part 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
Geometry TypePolygon or MultiPolygon
Themebuildings
Typebuilding_part
34 | 35 | 36 | ## Schema 37 | 38 | 39 | 40 | 41 | 42 | 43 | {BuildingPartSchema} 44 | 45 | 46 | 47 | ## Examples 48 | 49 | 50 | 51 | { JSON.stringify(yamlLoad(BuildingPartExample), null, 2) } 52 | 53 | 54 | -------------------------------------------------------------------------------- /docs/schema/reference/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Reference 3 | slug: /schema/reference 4 | --- 5 | 6 | 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). 7 | 8 | 9 | 10 | 11 | import DocCardList from '@theme/DocCardList'; 12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/schema/reference/places/place.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: place 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import StringifyObject from "@site/src/components/shared-libs/stringifyObject" 9 | import yamlLoad from "@site/src/components/yamlLoad" 10 | import PlaceSchema from "!!raw-loader!@site/docs/_schema/places/place.yaml"; 11 | import PlaceExample from "!!raw-loader!@site/docs/_examples/places/place.yaml"; 12 | import PlaceExampleAlternateCategories from "!!raw-loader!@site/docs/_examples/places/place-alternate-categories.yaml"; 13 | import Tabs from '@theme/Tabs'; 14 | import TabItem from '@theme/TabItem'; 15 | 16 | # Place 17 | 18 | A place is point of interest in the real world. 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
Geometry TypePoint
Themeplaces
Typeplace
36 | 37 | 38 | ## Schema 39 | 40 | 41 | 42 | 43 | 44 | 45 | {PlaceSchema} 46 | 47 | 48 | 49 | ## Examples 50 | 51 | 52 | 53 | { JSON.stringify(yamlLoad(PlaceExample), null, 2) } 54 | 55 | 56 | { JSON.stringify(yamlLoad(PlaceExampleAlternateCategories), null, 2) } 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /docs/schema/reference/transportation/connector.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: connector 3 | --- 4 | 5 | import CodeBlock from '@theme/CodeBlock'; 6 | import JSONSchemaViewer from "@theme/JSONSchemaViewer"; 7 | import generateResolverOptions from "@site/src/components/shared-libs/generateResolverOptions" 8 | import yamlLoad from "@site/src/components/yamlLoad" 9 | import ConnectorSchema from '!!raw-loader!@site/docs/_schema/transportation/connector.yaml'; 10 | import ConnectorExample from '!!raw-loader!@site/docs/_examples/transportation/docusaurus/connector.yaml'; 11 | import Tabs from '@theme/Tabs'; 12 | import TabItem from '@theme/TabItem'; 13 | 14 | # Connector 15 | 16 | Connectors create physical connections between [segments](/schema/reference/transportation/segment). 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
Geometry TypePoint
Themetransportation
Typeconnector
34 | 35 | Connectors help define the topology of the transportation network by 36 | defining points of physical connection between two or more 37 | [segments](/schema/reference/transportation/segment). 38 | 39 | Apart from their point geometry and the core properties required for all 40 | Overture features, connectors do not have any other 41 | properties. 42 | 43 | ## Schema 44 | 45 | 46 | 47 | 48 | 49 | 50 | {ConnectorSchema} 51 | 52 | 53 | 54 | ## Example 55 | 56 | { JSON.stringify(yamlLoad(ConnectorExample), null, 2) } 57 | -------------------------------------------------------------------------------- /examples/addresses/address.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:addresses:address:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.2086153, 42.3373725] 7 | properties: 8 | theme: addresses 9 | type: address 10 | version: 0 11 | country: US 12 | address_levels: 13 | - value: MA 14 | - value: NEWTON CENTRE 15 | postcode: '02459' 16 | street: COMMONWEALTH AVE 17 | number: '1000' 18 | -------------------------------------------------------------------------------- /examples/addresses/address_all_missing_address_levels.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:addresses:addres:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.2086153, 42.3373725] 7 | properties: 8 | theme: addresses 9 | type: address 10 | version: 0 11 | country: US 12 | address_levels: 13 | - {} 14 | - {} 15 | postcode: '02459' 16 | street: COMMONWEALTH AVE 17 | number: '1000' 18 | -------------------------------------------------------------------------------- /examples/addresses/address_missing_address_level.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:addresses:addres:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.2086153, 42.3373725] 7 | properties: 8 | theme: addresses 9 | type: address 10 | version: 0 11 | country: US 12 | address_levels: 13 | - value: MA 14 | - {} 15 | postcode: '02459' 16 | street: COMMONWEALTH AVE 17 | number: '1000' 18 | -------------------------------------------------------------------------------- /examples/addresses/address_postal_city.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:addresses:address:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.2086153, 42.3373725] 7 | properties: 8 | theme: addresses 9 | type: address 10 | version: 0 11 | country: US 12 | address_levels: 13 | - value: MA 14 | - value: NEWTON CENTRE 15 | postcode: '02459' 16 | street: COMMONWEALTH AVE 17 | number: '1000' 18 | postal_city: Some City 19 | -------------------------------------------------------------------------------- /examples/base/bathymetry-example.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: "overture:bathymetry:example:1" 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]] 7 | properties: 8 | theme: base 9 | type: bathymetry 10 | depth: 2500 11 | cartography: 12 | min_zoom: 0 13 | max_zoom: 23 14 | sort_key: 7 15 | sources: 16 | - record_id: x123 17 | property: "" 18 | dataset: some source 19 | version: 0 20 | -------------------------------------------------------------------------------- /examples/base/infrastructure-example.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: 08b2748cc1383fff0001b38438099b73 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | 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]]] 7 | properties: 8 | theme: base 9 | type: infrastructure 10 | subtype: bridge 11 | class: bridge 12 | names: 13 | primary: Gillett Bridge 14 | rules: 15 | - variant: alternate 16 | value: Interurban Bridge 17 | sources: 18 | - property: "" 19 | record_id: w556368546@3 20 | dataset: OpenStreetMap 21 | version: 0 22 | -------------------------------------------------------------------------------- /examples/base/infrastructure-height-example.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: 08b4035ac1518fff0001a9e45d5e1c9d 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [111.5341723, 25.1110193] 7 | properties: 8 | theme: base 9 | type: infrastructure 10 | subtype: power 11 | class: generator 12 | height: 160.0 13 | names: 14 | primary: DEW-G5000-195 15 | sources: 16 | - property: "" 17 | record_id: n10707323715@5 18 | dataset: OpenStreetMap 19 | version: 0 20 | -------------------------------------------------------------------------------- /examples/base/land-cover-example.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: "overture:land_cover:example:1" 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[-73.1902319,41.6678018],[-73.1896302,41.667817],[-73.1890448,41.6667723],[-73.1899188,41.6666994],[-73.1902319,41.6678018]]] 7 | properties: 8 | theme: base 9 | type: land_cover 10 | subtype: forest 11 | cartography: 12 | min_zoom: 11 13 | max_zoom: 23 14 | sort_key: 2 15 | sources: 16 | - record_id: x123 17 | property: "" 18 | dataset: some source 19 | version: 0 20 | -------------------------------------------------------------------------------- /examples/base/land-sand-example.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: "overture:land:example:1" 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | 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]]] 7 | properties: 8 | theme: base 9 | type: land 10 | subtype: sand 11 | class: dune 12 | names: 13 | primary: Hadeida 14 | source_tags: 15 | natural: dune 16 | surface: sand 17 | sources: 18 | - record_id: w407753930@3 19 | property: "" 20 | dataset: OpenStreetMap 21 | version: 0 22 | -------------------------------------------------------------------------------- /examples/base/land-use-example.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: "overture:land_use:example:1" 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[-83.8710175, 10.3469578], [-83.8700924, 10.3470179], [-83.870043, 10.3462819], [-83.8709681, 10.3462218], [-83.8710175, 10.3469578]]] 7 | properties: 8 | theme: base 9 | type: land_use 10 | subtype: recreation 11 | class: pitch 12 | surface: recreation_grass 13 | source_tags: 14 | leisure: pitch 15 | sport: soccer 16 | names: 17 | primary: Plaza Deportes Finca Tres 18 | sources: 19 | - record_id: w509487233@1 20 | property: "" 21 | dataset: OpenStreetMap 22 | version: 0 23 | -------------------------------------------------------------------------------- /examples/base/water-body-disputed.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: "OXOXOXOXOX" 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[ 7 | [-91.8307764, 43.7899936], 8 | [-91.8309309, 43.7901326], 9 | [-91.8315202, 43.7906232], 10 | [-91.8320790, 43.7911798], 11 | [-91.8325770, 43.7917638], 12 | [-91.8328390, 43.7921615], 13 | [-91.8307764, 43.7899936] 14 | ]] 15 | properties: 16 | theme: base 17 | type: water 18 | subtype: ocean 19 | class: ocean 20 | names: 21 | primary: Gulf of Gerdaus Mercator 22 | rules: 23 | - variant: official 24 | perspectives: 25 | mode: accepted_by 26 | countries: [US] 27 | value: Gulf of Cartographer's Tears 28 | source_tags: 29 | water: ocean 30 | sources: 31 | - record_id: w1234567 32 | property: "" 33 | dataset: OpenStreetMap 34 | is_salt: false 35 | is_intermittent: false 36 | version: 0 37 | -------------------------------------------------------------------------------- /examples/base/water-river-example.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | type: Feature 3 | geometry: 4 | type: LineString 5 | 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] ] 6 | properties: 7 | theme: base 8 | type: water 9 | subtype: river 10 | class: river 11 | names: 12 | primary: Root River 13 | source_tags: 14 | waterway: river 15 | sources: 16 | - record_id: w54320702@1 17 | property: "" 18 | dataset: OpenStreetMap 19 | is_salt: false 20 | is_intermittent: false 21 | version: 0 22 | -------------------------------------------------------------------------------- /examples/buildings/basic-sources.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | # Custom user properties. 9 | ext_foo: I am a customer user property. 10 | ext_bar: Me too! 11 | # Overture properties 12 | theme: buildings 13 | type: building 14 | version: 1 15 | sources: 16 | - dataset: MyGreatDataset 17 | property: "/geometry" 18 | update_time: '2024-04-26T23:55:01-08:00' 19 | confidence: 0.3 20 | -------------------------------------------------------------------------------- /examples/buildings/building-multipolygon.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: MultiPolygon 6 | coordinates: [[[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]]] 7 | properties: 8 | # Custom user properties. 9 | ext_foo: I am a customer user property. 10 | ext_bar: Me too! 11 | # Overture properties 12 | theme: buildings 13 | type: building 14 | version: 0 15 | -------------------------------------------------------------------------------- /examples/buildings/building-part-basic.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:part:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[ 7 | [-77.036873, 38.897804], 8 | [-77.036873, 38.897559], 9 | [-77.036260, 38.897559], 10 | [-77.036260, 38.897804], 11 | [-77.036873, 38.897804] 12 | ]] 13 | properties: 14 | # Custom user properties. 15 | ext_foo: I am a customer user property. 16 | ext_bar: Me too! 17 | # Overture properties 18 | theme: buildings 19 | type: building_part 20 | version: 1 21 | level: 1 22 | building_id: abc123 23 | height: 21.34 24 | num_floors: 4 25 | min_height: 15.0 26 | min_floor: 2 27 | roof_shape: dome 28 | roof_orientation: across 29 | roof_direction: 23.4 30 | roof_height: 3.4 31 | sources: 32 | - property: "" 33 | dataset: microsoftMLBuildings 34 | - property: /properties/height 35 | dataset: metaLidarExtractions 36 | -------------------------------------------------------------------------------- /examples/buildings/building-part-name.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:part:2345 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[ 7 | [-77.036873, 38.897804], 8 | [-77.036873, 38.897559], 9 | [-77.036260, 38.897559], 10 | [-77.036260, 38.897804], 11 | [-77.036873, 38.897804] 12 | ]] 13 | properties: 14 | # Overture properties 15 | theme: buildings 16 | type: building_part 17 | version: 1 18 | level: 1 19 | building_id: abc1234 20 | names: 21 | primary: "East Wing" 22 | height: 21.34 23 | num_floors: 4 24 | min_height: 15.0 25 | min_floor: 2 26 | roof_shape: dome 27 | roof_orientation: across 28 | roof_direction: 23.4 29 | roof_height: 3.4 30 | sources: 31 | - property: "" 32 | dataset: OpenStreetMap 33 | -------------------------------------------------------------------------------- /examples/buildings/building-polygon.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[ 7 | [-77.036873, 38.897804], 8 | [-77.036873, 38.897559], 9 | [-77.036260, 38.897559], 10 | [-77.036260, 38.897804], 11 | [-77.036873, 38.897804] 12 | ]] 13 | properties: 14 | # Custom user properties. 15 | ext_foo: I am a customer user property. 16 | ext_bar: Me too! 17 | # Overture properties 18 | theme: buildings 19 | type: building 20 | version: 1 21 | level: 1 22 | height: 21.34 23 | num_floors: 4 24 | num_floors_underground: 1 25 | subtype: transportation 26 | class: parking 27 | is_underground: false 28 | sources: 29 | - property: "" 30 | dataset: microsoftMLBuildings, 31 | confidence: 1 32 | - property: /properties/height 33 | dataset: metaLidarExtractions, 34 | confidence: 0.95 35 | -------------------------------------------------------------------------------- /examples/buildings/empire-state-building.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "08b2a100d2d4bfff02006354283c153f", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "Polygon", 6 | "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]]] 7 | }, 8 | "properties": { 9 | "theme": "buildings", 10 | "type": "building", 11 | "subtype": "commercial", 12 | "class": "office", 13 | "height": 443.2, 14 | "num_floors": 102, 15 | "has_parts": true, 16 | "names": { 17 | "primary": "Empire State Building" 18 | }, 19 | "sources": [ 20 | { 21 | "property": "dataset", 22 | "dataset": "OpenStreetMap", 23 | "record_id": "w34633854@71" 24 | } 25 | ], 26 | "version": 0 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /examples/buildings/names/name-basic.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | # Custom user properties. 9 | ext_foo: I am a customer user property. 10 | ext_bar: Me too! 11 | # Overture properties 12 | theme: buildings 13 | type: building 14 | version: 1 15 | names: 16 | primary: Empire State Building 17 | -------------------------------------------------------------------------------- /examples/buildings/names/name-multiple.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | properties: 5 | # Custom user properties. 6 | ext_foo: I am a customer user property. 7 | ext_bar: Me too! 8 | # Overture properties 9 | theme: buildings 10 | type: building 11 | version: 1 12 | names: 13 | primary: The White house 14 | common: 15 | es: La Casa Blanca 16 | rules: 17 | - variant: official 18 | value: The White House 19 | - variant: alternate 20 | value: White House 21 | geometry: 22 | type: Polygon 23 | coordinates: [[ 24 | [-77.036873, 38.897804], 25 | [-77.036873, 38.897559], 26 | [-77.036260, 38.897559], 27 | [-77.036260, 38.897804], 28 | [-77.036873, 38.897804] 29 | ]] 30 | -------------------------------------------------------------------------------- /examples/buildings/names/name-variations.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | # Custom user properties. 9 | ext_foo: I am a customer user property. 10 | ext_bar: Me too! 11 | # Overture properties 12 | theme: buildings 13 | type: building 14 | version: 1 15 | names: 16 | primary: Local value 17 | common: 18 | ru-Latn: Language Script 19 | en-US: Language Region 20 | rules: 21 | - variant: official 22 | language: es 23 | value: Official Name 24 | - variant: short 25 | language: es 26 | value: Official Spanish Name 27 | - variant: alternate 28 | language: ru 29 | value: Official Russian Name 30 | -------------------------------------------------------------------------------- /examples/buildings/osm/outline.yaml: -------------------------------------------------------------------------------- 1 | # https://www.openstreetmap.org/way/30407741 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[ 7 | [-117.1710888, 32.7238481], 8 | [-117.1711025, 32.7239038], 9 | [-117.1711923, 32.7238882], 10 | [-117.1712198, 32.724], 11 | [-117.1712713, 32.7242091], 12 | [-117.1706665, 32.7243145], 13 | [-117.1705738, 32.7239379], 14 | [-117.1707783, 32.7239022], 15 | [-117.1710888, 32.7238481] 16 | ]] 17 | properties: 18 | ext_foo: I am a customer user property. 19 | ext_bar: Me too! 20 | theme: buildings 21 | type: building 22 | version: 1 23 | level: 1 24 | names: 25 | primary: Valentina by Alta 26 | num_floors: 8 27 | subtype: commercial 28 | class: commercial 29 | sources: 30 | - property: '' 31 | dataset: OpenStreetMap 32 | -------------------------------------------------------------------------------- /examples/buildings/osm/part1.yaml: -------------------------------------------------------------------------------- 1 | id: overture:buildings:part:100 2 | type: Feature 3 | geometry: 4 | type: Polygon 5 | coordinates: [[ 6 | [-117.1707971, 32.7240658], 7 | [-117.1712198, 32.724], 8 | [-117.1712713, 32.7242091], 9 | [-117.1706665, 32.7243145], 10 | [-117.1705738, 32.7239379], 11 | [-117.1707783, 32.7239022], 12 | [-117.1707949, 32.7240226], 13 | [-117.1707279, 32.7240319], 14 | [-117.1707635, 32.7241786], 15 | [-117.1708208, 32.7241677], 16 | [-117.1707971, 32.7240658] 17 | ]] 18 | properties: 19 | building_id: '1234' 20 | ext_foo: I am a customer user property. 21 | ext_bar: Me too! 22 | theme: buildings 23 | type: building_part 24 | version: 1 25 | level: 1 26 | num_floors: 8 27 | sources: 28 | - property: '' 29 | dataset: OpenStreetMap 30 | -------------------------------------------------------------------------------- /examples/buildings/osm/part2.yaml: -------------------------------------------------------------------------------- 1 | id: overture:buildings:part:101 2 | type: Feature 3 | geometry: 4 | type: Polygon 5 | coordinates: [[ 6 | [-117.1712198, 32.724], 7 | [-117.1711923, 32.7238882], 8 | [-117.1711025, 32.7239038], 9 | [-117.1710888, 32.7238481], 10 | [-117.1707783, 32.7239022], 11 | [-117.1707949, 32.7240226], 12 | [-117.1707279, 32.7240319], 13 | [-117.1707635, 32.7241786], 14 | [-117.1708208, 32.7241677], 15 | [-117.1707971, 32.7240658], 16 | [-117.1712198, 32.724] 17 | ]] 18 | properties: 19 | building_id: '1234' 20 | ext_foo: I am a customer user property. 21 | ext_bar: Me too! 22 | theme: buildings 23 | type: building_part 24 | version: 1 25 | level: 1 26 | num_floors: 3 27 | sources: 28 | - property: '' 29 | dataset: OpenStreetMap 30 | -------------------------------------------------------------------------------- /examples/buildings/time-basic.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | # Custom user properties. 9 | ext_foo: I am a customer user property. 10 | ext_bar: Me too! 11 | # Overture properties 12 | theme: buildings 13 | type: building 14 | version: 1 15 | -------------------------------------------------------------------------------- /examples/buildings/time-precision-seconds.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:buildings:building:1234 3 | type: Feature 4 | geometry: 5 | type: Polygon 6 | coordinates: [[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]] 7 | properties: 8 | # Custom user properties. 9 | ext_foo: I am a customer user property. 10 | ext_bar: Me too! 11 | # Overture properties 12 | theme: buildings 13 | type: building 14 | version: 1 15 | -------------------------------------------------------------------------------- /examples/common/names/names-lexically-valid-language-tag.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: names-lexically-valid-language-tag 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: primary 13 | names: 14 | primary: foo 15 | common: 16 | nan-POJ: Lexically valid, but should be corrected to nan-Latn 17 | nan-Latn: This is fine. 18 | ja-kana: Use this instead of ja_kana. 19 | zh-Latn-pinyin: Use this instead of zh_pinyin. 20 | zh-Bopo: Use this instead of zh_zhuyin. 21 | rules: 22 | - language: be-Latn 23 | value: Use this instead of be-tarask. 24 | variant: common 25 | - language: ja-Latn 26 | value: Use this instead of ja_rm. 27 | variant: alternate 28 | -------------------------------------------------------------------------------- /examples/common/timestamp/timestamp-leap-second.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: timestamp-leap-second 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: primary 12 | version: 1 13 | -------------------------------------------------------------------------------- /examples/common/timestamp/timestamp-utc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: timestamp-utc 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | categories: 9 | primary: some_category 10 | theme: places 11 | type: place 12 | version: 1 13 | -------------------------------------------------------------------------------- /examples/common/timestamp/timestamp-with-tz-offset.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: timestamp-with-tz-offset 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | theme: transportation 9 | type: connector 10 | version: 0 11 | -------------------------------------------------------------------------------- /examples/divisions/division/capital_of.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:locality:lj 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [14.5845, 46.0570] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: locality 12 | local_type: 13 | en: city 14 | names: 15 | primary: Ljubljana 16 | sources: 17 | - property: "" 18 | dataset: OpenStreetMap 19 | record_id: N6968827.V76 20 | country: SI 21 | hierarchies: 22 | - - division_id: example:division:country:si 23 | subtype: country 24 | name: Slovenia 25 | capital_of_divisions: 26 | - division_id: example:division:country:si 27 | subtype: country 28 | parent_division_id: example:division:country:si 29 | population: 335509 30 | -------------------------------------------------------------------------------- /examples/divisions/division/class.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:locality:dk 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [12.0819247, 55.6433478] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: locality 12 | local_type: 13 | en: city 14 | names: 15 | primary: Roskilde 16 | sources: 17 | - property: "" 18 | dataset: OpenStreetMap 19 | record_id: N21040334 20 | country: DK 21 | hierarchies: 22 | - - division_id: example:division:country:dk 23 | subtype: country 24 | name: Denmark 25 | capital_of_divisions: 26 | - division_id: example:division:country:dk 27 | subtype: country 28 | parent_division_id: example:division:country:dk 29 | population: 50781 30 | class: city 31 | -------------------------------------------------------------------------------- /examples/divisions/division/country.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:country:us 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-100.4458820, 39.7837304] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: United States 14 | country: US 15 | hierarchies: 16 | - - division_id: example:division:country:us 17 | subtype: country 18 | name: United States 19 | norms: 20 | driving_side: right 21 | capital_division_ids: [ example:division:locality:washington_dc ] 22 | -------------------------------------------------------------------------------- /examples/divisions/division/dependency.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:dependency:pr 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-66.4858295, 18.2247706] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: dependency 12 | local_type: 13 | en: territory 14 | names: 15 | primary: Puerto Rico 16 | common: 17 | en: Puerto Rico 18 | fr: Porto Rico 19 | es: Puerto Rico 20 | zh: 波多黎各 21 | rules: 22 | - variant: official 23 | language: es 24 | value: Estado Libre Asociado de Puerto Rico 25 | sources: 26 | - property: "" 27 | dataset: OpenStreetMap 28 | record_id: R4422604.V41 29 | country: PR 30 | region: US-PR 31 | hierarchies: 32 | - - division_id: example:division:country:us 33 | subtype: country 34 | name: United States 35 | norms: 36 | driving_side: right 37 | capital_division_ids: [ example:division:locality:san_juan ] 38 | parent_division_id: example:division:country:us 39 | -------------------------------------------------------------------------------- /examples/divisions/division/hierarchies-multiple.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:borough:bronx 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-73.8785937, 40.8466508] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: borough 12 | local_type: 13 | en: borough 14 | names: 15 | primary: The Bronx 16 | country: US 17 | region: US-NY 18 | hierarchies: 19 | - - division_id: example:division:country:us # Default hierarchy is first. 20 | subtype: country 21 | name: United States 22 | - division_id: example:division:region:us-ny 23 | subtype: region 24 | name: New York 25 | - division_id: example:division:locality:nyc 26 | subtype: locality 27 | name: New York City 28 | - division_id: example:division:borough:bronx 29 | subtype: borough 30 | name: The Bronx 31 | - - division_id: example:division:country:us 32 | subtype: country 33 | name: United States 34 | - division_id: example:division:region:us-ny 35 | subtype: region 36 | name: New York 37 | - division_id: example:division:county:bronx 38 | subtype: county 39 | name: Bronx County 40 | - division_id: example:division:borough:bronx 41 | subtype: borough 42 | name: The Bronx 43 | parent_division_id: example:division:locality:nyc # Parent from default hierarchy. 44 | -------------------------------------------------------------------------------- /examples/divisions/division/multiple_capital_division.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:region:pl-04 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [18.3392939, 53.3220016] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: region 12 | local_type: 13 | en: province 14 | names: 15 | primary: Woj Kujawsko-Pomorskie 16 | sources: 17 | - property: "" 18 | dataset: OpenStreetMap 19 | record_id: R223407.V254 20 | country: PL 21 | region: PL-04 22 | hierarchies: 23 | - - division_id: example:division:country:pl 24 | subtype: country 25 | name: Poland 26 | - division_id: example:division:region:pl-04 27 | subtype: region 28 | name: Woj Kujawsko-Pomorskie 29 | capital_division_ids: [ example:division:locality:bydgoszcz, example:division:locality:torun] 30 | parent_division_id: example:division:country:pl 31 | -------------------------------------------------------------------------------- /examples/divisions/division/perspectives.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:perspectives:trnc 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [33.6252379, 35.2245313] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: country 12 | names: 13 | primary: Kuzey Kıbrıs 14 | common: 15 | en: Northern Cyprus 16 | rules: 17 | - variant: short 18 | value: TRNC 19 | - variant: official 20 | language: en 21 | value: Turkish Republic of Northern Cyprus 22 | country: XX 23 | hierarchies: 24 | - - division_id: example:perspectives:trnc 25 | subtype: country 26 | name: Kuzey Kıbrıs 27 | perspectives: 28 | mode: accepted_by 29 | countries: [TR] 30 | -------------------------------------------------------------------------------- /examples/divisions/division/population.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:region:ca-on 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-86.0009770, 50.0006780] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: region 12 | local_type: 13 | en: province 14 | names: 15 | primary: Ontario 16 | sources: 17 | - property: "" 18 | dataset: OpenStreetMap 19 | record_id: R68841.V267 20 | country: CA 21 | region: CA-ON 22 | hierarchies: 23 | - - division_id: example:division:country:ca 24 | subtype: country 25 | name: Canada 26 | - division_id: example:division:region:ca-on 27 | subtype: region 28 | name: Ontario 29 | capital_division_ids: [ example:division:locality:toronto ] 30 | parent_division_id: example:division:country:ca 31 | population: 13550900 32 | -------------------------------------------------------------------------------- /examples/divisions/division/prominence.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:locality:dk 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [12.0819247, 55.6433478] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: locality 12 | local_type: 13 | en: city 14 | names: 15 | primary: Roskilde 16 | sources: 17 | - property: "" 18 | dataset: OpenStreetMap 19 | record_id: N21040334 20 | country: DK 21 | hierarchies: 22 | - - division_id: example:division:country:dk 23 | subtype: country 24 | name: Denmark 25 | capital_of_divisions: 26 | - division_id: example:division:country:dk 27 | subtype: country 28 | parent_division_id: example:division:country:dk 29 | population: 50781 30 | cartography: 31 | prominence: 5 32 | -------------------------------------------------------------------------------- /examples/divisions/division/region.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division:region:us-ny 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-75.8449946, 43.1561681] 7 | properties: 8 | theme: divisions 9 | type: division 10 | version: 0 11 | subtype: region 12 | local_type: 13 | en: state 14 | names: 15 | primary: New York 16 | sources: 17 | - property: "" 18 | dataset: OpenStreetMap 19 | record_id: R61320.V468 20 | country: US 21 | region: US-NY 22 | hierarchies: 23 | - - division_id: example:division:country:us 24 | subtype: country 25 | name: United States 26 | - division_id: example:division:region:us-ny 27 | subtype: region 28 | name: New York 29 | capital_division_ids: [ example:division:locality:albany ] 30 | parent_division_id: example:division:country:us 31 | -------------------------------------------------------------------------------- /examples/divisions/division_boundary/disputed.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:disputed_both 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: country 12 | class: land 13 | is_land: true 14 | is_territorial: false 15 | division_ids: ["example:division:country:left", "example:division:country:right"] 16 | is_disputed: true 17 | perspectives: 18 | mode: disputed_by 19 | countries: [XX] # Random country disputing the actual boundary 20 | -------------------------------------------------------------------------------- /examples/divisions/division_boundary/disputed_both.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:disputed_both 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: country 12 | class: land 13 | is_land: true 14 | is_territorial: false 15 | division_ids: ["example:division:country:left", "example:division:country:right"] 16 | is_disputed: true 17 | perspectives: 18 | mode: disputed_by 19 | countries: [XX, XY] # Random iso codes representing two countries disputing the actual boundary 20 | -------------------------------------------------------------------------------- /examples/divisions/division_boundary/is_land.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:is_land:country:us 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: country 12 | is_land: true 13 | is_territorial: false 14 | class: land 15 | division_ids: ["example:division:country:left", "example:division:country:right"] -------------------------------------------------------------------------------- /examples/divisions/division_boundary/is_territorial.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:is_territorial:country:fi 3 | 4 | type: Feature 5 | geometry: 6 | type: LineString 7 | coordinates: [[0, 1], [1, 2]] 8 | properties: 9 | theme: divisions 10 | type: division_boundary 11 | version: 1 12 | subtype: country 13 | is_territorial: true 14 | is_land: false 15 | class: maritime 16 | division_ids: ["example:division:country:left", "example:division:country:right"] -------------------------------------------------------------------------------- /examples/divisions/division_boundary/land_county.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:land 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: region 12 | class: land 13 | country: "XX" 14 | region: "XX-01" 15 | is_land: true 16 | is_territorial: false 17 | division_ids: ["example:division:region:left", "example:division:region:right"] 18 | -------------------------------------------------------------------------------- /examples/divisions/division_boundary/land_region.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:land 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: region 12 | class: land 13 | country: "XX" 14 | is_land: true 15 | is_territorial: false 16 | division_ids: ["example:division:region:left", "example:division:region:right"] 17 | -------------------------------------------------------------------------------- /examples/divisions/division_boundary/maritime_country.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: example:division_boundary:maritime 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 1], [1, 2]] 7 | properties: 8 | theme: divisions 9 | type: division_boundary 10 | version: 1 11 | subtype: country 12 | class: maritime 13 | is_territorial: true 14 | is_land: false 15 | division_ids: ["example:division:region:left", "example:division:region:right"] 16 | -------------------------------------------------------------------------------- /examples/places/place-alternate-categories.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:places:place:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | categories: 9 | primary: the1_category_you_want_first 10 | alternate: 11 | - another_category 12 | confidence: 0.9 13 | websites: 14 | - https://www.example.com 15 | emails: 16 | - info@example.com 17 | socials: 18 | - https://www.twitter.com/example 19 | phones: 20 | - +32 1207 21 | brand: 22 | names: 23 | primary: My Sweet POI Brand 24 | wikidata: Q1000 25 | addresses: 26 | - freeform: "770 Broadway, Floor 8" 27 | locality: "New York" 28 | - freeform: "770 Broadway, #802" 29 | locality: "New York" 30 | region: "US-NY" 31 | country: "US" 32 | # Overture properties 33 | theme: places 34 | type: place 35 | version: 1 36 | names: 37 | primary: My Sweet POI 38 | common: 39 | es: Something in Spanish 40 | rules: 41 | - variant: short 42 | value: MSPOI 43 | -------------------------------------------------------------------------------- /examples/places/place-null-categories.yaml: -------------------------------------------------------------------------------- 1 | geometry: 2 | coordinates: 3 | - 0 4 | - 0 5 | type: Point 6 | id: overture:places:place:1 7 | properties: 8 | addresses: 9 | - freeform: 770 Broadway, Floor 8 10 | locality: New York 11 | - country: US 12 | freeform: '770 Broadway #802' 13 | locality: New York 14 | region: US-NY 15 | brand: 16 | name: Example 17 | wikidata: Q1000 18 | emails: 19 | - info@example.com 20 | phones: 21 | - +32 1207 22 | socials: 23 | - https://www.twitter.com/example 24 | theme: places 25 | type: place 26 | version: 1 27 | websites: 28 | - https://www.example.com 29 | type: Feature 30 | -------------------------------------------------------------------------------- /examples/places/place.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:places:place:1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | categories: 9 | primary: some_category 10 | confidence: 0.9 11 | websites: 12 | - https://www.example.com 13 | emails: 14 | - info@example.com 15 | socials: 16 | - https://www.twitter.com/example 17 | phones: 18 | - +32 1207 19 | brand: 20 | names: 21 | primary: My Sweet POI Brand 22 | wikidata: Q1000 23 | addresses: 24 | - freeform: "770 Broadway, Floor 8" 25 | locality: "New York" 26 | - freeform: "770 Brodway, #802" 27 | locality: "New York" 28 | region: "US-NY" 29 | country: "US" 30 | # Overture properties 31 | theme: places 32 | type: place 33 | version: 1 34 | sources: 35 | - property: "" 36 | dataset: metaPlaces 37 | record_id: "10101" 38 | - property: "/properties/brand" 39 | dataset: msftPlaces 40 | record_id: "10df72b8" 41 | names: 42 | primary: My Sweet POI 43 | common: 44 | es: Something in Spanish 45 | rules: 46 | - variant: short 47 | value: MSPOI 48 | -------------------------------------------------------------------------------- /examples/places/place2.yaml: -------------------------------------------------------------------------------- 1 | geometry: 2 | coordinates: 3 | - 0 4 | - 0 5 | type: Point 6 | id: overture:places:place:1 7 | properties: 8 | addresses: 9 | - freeform: 770 Broadway, Floor 8 10 | locality: New York 11 | - country: US 12 | freeform: '770 Broadway #802' 13 | locality: New York 14 | region: US-NY 15 | brand: 16 | name: Example 17 | wikidata: Q1000 18 | categories: 19 | primary: some_category 20 | emails: 21 | - info@example.com 22 | phones: 23 | - +32 1207 24 | socials: 25 | - https://www.twitter.com/example 26 | theme: places 27 | type: place 28 | version: 1 29 | websites: 30 | - https://www.example.com 31 | type: Feature 32 | -------------------------------------------------------------------------------- /examples/transportation/connector/connector.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:connector:789 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | # Overture properties 11 | theme: transportation 12 | type: connector 13 | version: 0 14 | # 15 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/access-restriction-01-blanket.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: access-restrictions-segment-blanket 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [0, 0] 8 | - [0, 1] 9 | properties: 10 | theme: transportation 11 | type: segment 12 | version: 1 13 | subtype: road 14 | class: residential 15 | access_restrictions: 16 | - access_type: denied 17 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/access-restriction-02-private-with-deliveries.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: access-restrictions-segment-private-with-deliveries 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [0, 0] 8 | - [0, 1] 9 | properties: 10 | theme: transportation 11 | type: segment 12 | version: 1 13 | subtype: road 14 | class: residential 15 | access_restrictions: 16 | - access_type: denied 17 | - access_type: allowed 18 | when: { recognized: [as_private] } 19 | - access_type: allowed 20 | when: 21 | using: [to_deliver] 22 | during: Mo-Fr 08:30-16:30 23 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/access-restriction-03-motor-vehicles-destination-only.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: access-restrictions-segment-motor-vehicles-destination-only 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [0, 0] 8 | - [0, 1] 9 | properties: 10 | theme: transportation 11 | type: segment 12 | version: 1 13 | subtype: road 14 | class: residential 15 | access_restrictions: 16 | - access_type: denied 17 | when: { mode: [motor_vehicle] } 18 | - access_type: allowed 19 | when: { using: [at_destination] } 20 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/access-restriction-04-axle-limit.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: access-restrictions-segment-axle-limit 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [0, 0] 8 | - [0, 1] 9 | properties: 10 | theme: transportation 11 | type: segment 12 | version: 1 13 | subtype: road 14 | class: motorway 15 | access_restrictions: 16 | - access_type: denied 17 | when: 18 | mode: [hgv] 19 | vehicle: 20 | - dimension: axle_count 21 | comparison: greater_than_equal 22 | value: 5 23 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/access-restriction.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-road1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-122.152944, 47.629681] 8 | - [-122.152916, 47.629686] 9 | - [-122.152501, 47.62977] 10 | - [-122.152188, 47.62984] 11 | - [-122.151813, 47.629934] 12 | - [-122.151747, 47.629952] 13 | properties: 14 | theme: transportation 15 | type: segment 16 | version: 4 17 | subtype: road 18 | class: motorway 19 | connectors: 20 | - connector_id: fooConnector 21 | at: 0 22 | - connector_id: barConnector 23 | at: 1 24 | names: 25 | primary: SR 520 26 | access_restrictions: 27 | - access_type: denied 28 | when: {mode: [foot]} 29 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/connector.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:connector:example 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [0, 0] 7 | properties: 8 | theme: transportation 9 | type: connector 10 | version: 0 11 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/geometric-scoping.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:geometric-scoping 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: primary 13 | speed_limits: 14 | - between: [0, 0.15] 15 | max_speed: 16 | value: 100 17 | unit: km/h 18 | - between: [0.15, 1] 19 | max_speed: 20 | value: 60 21 | unit: km/h 22 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/simple-road.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-road 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-123.13538016118466, 49.28584368472093] 8 | - [-123.13430200328841, 49.28656927229528] 9 | - [-123.13325122717998, 49.28727252390803] 10 | properties: 11 | theme: transportation 12 | type: segment 13 | version: 5 14 | subtype: road 15 | class: residential 16 | connectors: 17 | - connector_id: overture:transportation:example:via-turn-restriction-connector1 18 | at: 0 19 | - connector_id: overture:transportation:example:via-turn-restriction-connector2 20 | at: 1 21 | names: 22 | primary: Nicola Street 23 | road_surface: 24 | - value: paved 25 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/speed-limits-01-simple.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: speed-limits-simple 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-123.09348187774302, 49.280278741717865] 8 | - [-123.0895720621171, 49.280195795155265] 9 | properties: 10 | theme: transportation 11 | type: segment 12 | version: 1 13 | subtype: road 14 | class: residential 15 | speed_limits: 16 | - max_speed: 17 | value: 30 18 | unit: km/h 19 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/speed-limits-02-directional.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: speed-limits-variable-max 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [0, 0] 8 | - [0, 1] 9 | properties: 10 | theme: transportation 11 | type: segment 12 | version: 2 13 | subtype: road 14 | class: secondary 15 | speed_limits: 16 | - max_speed: {value: 70, unit: "mph"} 17 | - when: 18 | mode: [hgv] 19 | heading: forward 20 | max_speed: {value: 65, unit: "mph"} 21 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/speed-limits-03-variable-max.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: speed-limits-variable-max 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-123.12895930023527, 50.007761789070344] 8 | - [-123.12637500433082, 50.00945836227345] 9 | - [-123.12506896231434, 50.011762034223324] 10 | - [-123.12415195409014, 50.01351203677902] 11 | properties: 12 | theme: transportation 13 | type: segment 14 | version: 1 15 | subtype: road 16 | class: motorway 17 | speed_limits: 18 | - max_speed: 19 | value: 100 20 | unit: km/h 21 | is_max_speed_variable: true 22 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/subjective-heading-scoping.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:subjective-heading-scoping 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-1.3023158, 54.5579329] 8 | - [-1.3020090, 54.5577898] 9 | - [-1.3014511, 54.5575155] 10 | - [-1.3009618, 54.5572737] 11 | - [-1.3004518, 54.5570288] 12 | - [-1.3003009, 54.5569580] 13 | properties: 14 | theme: transportation 15 | type: segment 16 | version: 2 17 | subtype: road 18 | class: primary 19 | access_restrictions: 20 | - access_type: denied 21 | when: { heading: backward } 22 | - access_type: allowed 23 | when: 24 | heading: backward 25 | mode: [bus] 26 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/subjective-status-scoping.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:subjective-status-scoping 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-123.12791513926058, 49.287502049554945] 8 | - [-123.12795068403449, 49.287522915661725] 9 | - [-123.12797769806272, 49.28756882106529] 10 | properties: 11 | theme: transportation 12 | type: segment 13 | version: 1 14 | subtype: road 15 | class: tertiary 16 | access_restrictions: 17 | - access_type: denied 18 | - access_type: allowed 19 | when: { recognized: [as_private] } 20 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/subjective-usage-purpose-scoping.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:subjective-usage-purpose-scoping 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-123.12700676422021, 49.279826628301635] 8 | - [-123.12680748254229, 49.27995121574301] 9 | properties: 10 | theme: transportation 11 | type: segment 12 | version: 1 13 | subtype: road 14 | class: tertiary 15 | access_restrictions: 16 | - access_type: denied 17 | - access_type: allowed 18 | when: { using: [as_customer, at_destination] } 19 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/subjective-vehicle-attributes-scoping.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:subjective-vehicle-attributes-scoping 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-123.12791513926058, 49.287502049554945] 8 | - [-123.12795068403449, 49.287522915661725] 9 | - [-123.12797769806272, 49.28756882106529] 10 | properties: 11 | theme: transportation 12 | type: segment 13 | version: 1 14 | subtype: road 15 | class: residential 16 | access_restrictions: 17 | - access_type: denied 18 | when: 19 | vehicle: 20 | - dimension: weight 21 | comparison: greater_than 22 | value: 23 23 | unit: 't' 24 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/temporal-scoping.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:temporal-scoping 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-122.90019762265949, 49.20784664905824] 8 | - [-122.9003738558948, 49.207833436710956] 9 | - [-122.90052986564378, 49.207871186265805] 10 | properties: 11 | theme: transportation 12 | type: segment 13 | version: 2 14 | subtype: road 15 | class: unknown 16 | access_restrictions: 17 | - access_type: denied 18 | when: 19 | mode: [bus] 20 | during: "Mo-Fr 15:00-18:00" 21 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-01-connector1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-turn-restriction-connector1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-113.57831482025354, 50.018860947117304] 7 | properties: 8 | theme: transportation 9 | type: connector 10 | version: 0 11 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-01-connector2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-turn-restriction-connector2 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-113.57851814418316, 50.01923724443006] 7 | properties: 8 | theme: transportation 9 | type: connector 10 | version: 1 11 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-01-connector3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-turn-restriction-connector3 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-113.57816369068271, 50.01919400284882] 7 | properties: 8 | theme: transportation 9 | type: connector 10 | version: 1 11 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-01-exit.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-turn-restriction-exit 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-113.57831482025354, 50.018860947117304] 8 | - [-113.5783121688577, 50.019016827708754] 9 | - [-113.57829228338763, 50.019079861246865] 10 | - [-113.57826444373009, 50.019121599625294] 11 | - [-113.57816369068271, 50.01919400284882] 12 | properties: 13 | theme: transportation 14 | type: segment 15 | version: 1 16 | subtype: road 17 | class: secondary 18 | connectors: 19 | - connector_id: overture:transportation:example:via-turn-restriction-connector1 20 | at: 0 21 | - connector_id: overture:transportation:example:via-turn-restriction-connector2 22 | at: 1 23 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-01-source.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-turn-restriction-source 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-113.57822030759499, 50.01868388494378] 8 | - [-113.57831482025354, 50.018860947117304] 9 | - [-113.57851814418316, 50.01923724443006] 10 | properties: 11 | theme: transportation 12 | type: segment 13 | version: 5 14 | subtype: road 15 | class: secondary 16 | connectors: 17 | - connector_id: overture:transportation:example:via-turn-restriction-connector1 18 | at: 0 19 | - connector_id: overture:transportation:example:via-turn-restriction-connector2 20 | at: 1 21 | prohibited_transitions: 22 | - sequence: 23 | - segment_id: overture:transportation:example:simple-turn-restriction-target 24 | connector_id: overture:transportation:example:simple-turn-restriction-connector2 25 | final_heading: forward 26 | when: {heading: forward} 27 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-01-target.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-turn-restriction-target 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-113.57851814418316, 50.01923724443006] 8 | - [-113.57837460847787, 50.01919574268962] 9 | - [-113.57812342099429, 50.01919343703648] 10 | - [-113.57803729957116, 50.01923263312719] 11 | - [-113.57766410673773, 50.01923263312719] 12 | properties: 13 | theme: transportation 14 | type: segment 15 | version: 1 16 | subtype: road 17 | class: secondary 18 | connectors: 19 | - connector_id: overture:transportation:example:via-turn-restriction-connector1 20 | at: 0 21 | - connector_id: overture:transportation:example:via-turn-restriction-connector2 22 | at: 1 23 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-02-connector1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:via-turn-restriction-connector1 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.11234408150312, 42.30149091145671] 7 | properties: 8 | theme: transportation 9 | type: connector 10 | version: 1 11 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-02-connector2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:via-turn-restriction-connector2 3 | type: Feature 4 | geometry: 5 | type: Point 6 | coordinates: [-71.11248901211202, 42.3013264259736] 7 | properties: 8 | theme: transportation 9 | type: connector 10 | version: 1 11 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-02-source.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:via-turn-restriction-source 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-71.1100226929593, 42.30156668552357] 8 | - [-71.11055493812631, 42.30157222996385] 9 | - [-71.11102971081017, 42.30157407811038] 10 | - [-71.11143701579662, 42.30156114108277] 11 | - [-71.11197425857047, 42.30152602627953] 12 | - [-71.11234408150312, 42.30149091145671] 13 | - [-71.1126589307566, 42.30147612626226] 14 | - [-71.11301376086777, 42.301494607754876] 15 | - [-71.11320616874515, 42.301516785538524] 16 | properties: 17 | theme: transportation 18 | type: segment 19 | version: 5 20 | subtype: road 21 | class: primary 22 | connectors: 23 | - connector_id: overture:transportation:example:via-turn-restriction-connector1 24 | at: 0 25 | - connector_id: overture:transportation:example:via-turn-restriction-connector2 26 | at: 1 27 | names: 28 | primary: Arborway 29 | prohibited_transitions: 30 | - sequence: 31 | - segment_id: overture:transportation:example:via-turn-restriction-target 32 | connector_id: overture:transportation:example:via-turn-restriction-connector2 33 | - segment_id: overture:transportation:example:via-turn-restriction-via 34 | connector_id: overture:transportation:example:via-turn-restriction-connector1 35 | final_heading: forward 36 | when: 37 | heading: forward 38 | during: Mo-Fr 06:00-09:00, 15:00-19:00 39 | road_surface: 40 | - value: paved 41 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-02-target.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:turn-restriction-target 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-71.11325364601365, 42.301374477956756] 8 | - [-71.11278137213321, 42.3013264259736] 9 | - [-71.11248901211202, 42.3013264259736] 10 | - [-71.11157195119078, 42.30139295947919] 11 | - [-71.1109997251666, 42.301428074356636] 12 | - [-71.11058492376937, 42.30143177065813] 13 | - [-71.11002519176327, 42.301415137298676] 14 | properties: 15 | theme: transportation 16 | type: segment 17 | version: 5 18 | subtype: road 19 | class: primary 20 | connectors: 21 | - connector_id: overture:transportation:example:via-turn-restriction-connector1 22 | at: 0 23 | - connector_id: overture:transportation:example:via-turn-restriction-connector2 24 | at: 1 25 | names: 26 | primary: Arborway 27 | road_surface: 28 | - value: paved 29 | -------------------------------------------------------------------------------- /examples/transportation/docusaurus/turn-restriction-02-via.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:example:simple-road2 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: 7 | - [-71.11213418200086, 42.3017182333833] 8 | - [-71.11234408150312, 42.30149091145671] 9 | - [-71.11248901211202, 42.3013264259736] 10 | - [-71.11283634581244, 42.30093831245662] 11 | properties: 12 | theme: transportation 13 | type: segment 14 | version: 5 15 | subtype: road 16 | class: secondary 17 | connectors: 18 | - connector_id: overture:transportation:example:via-turn-restriction-connector1 19 | at: 0 20 | - connector_id: overture:transportation:example:via-turn-restriction-connector2 21 | at: 1 22 | names: 23 | primary: Washington Street 24 | road_surface: 25 | - value: paved 26 | -------------------------------------------------------------------------------- /examples/transportation/segment/missing-update-time.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bad-class", 3 | "type": "Feature", 4 | "geometry": { 5 | "type": "LineString", 6 | "coordinates": [[2, 2], [3, 3]] 7 | }, 8 | "properties": { 9 | "ext_expected_errors": [ 10 | ], 11 | "theme": "transportation", 12 | "type": "segment", 13 | "version": 27, 14 | "subtype": "water" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /examples/transportation/segment/rail/rail-freight.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | theme: transportation 11 | type: segment 12 | version: 3 13 | subtype: rail 14 | class: standard_gauge 15 | names: 16 | primary: Generic Rail Name 17 | rail_flags: 18 | - values: [is_freight] 19 | between: [0, 0.5] 20 | -------------------------------------------------------------------------------- /examples/transportation/segment/rail/rail-tunnel.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | theme: transportation 11 | type: segment 12 | version: 3 13 | subtype: rail 14 | class: subway 15 | names: 16 | primary: Generic Rail Name 17 | rail_flags: 18 | - values: [is_tunnel] 19 | between: [0, 0.5] 20 | -------------------------------------------------------------------------------- /examples/transportation/segment/rail/rail.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | theme: transportation 11 | type: segment 12 | version: 3 13 | subtype: rail 14 | class: funicular 15 | connectors: 16 | - connector_id: fooConnector 17 | at: 0 18 | - connector_id: barConnector 19 | at: 1 20 | names: 21 | primary: Generic Rail Name 22 | rail_flags: 23 | - values: [is_tunnel, is_freight] 24 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/destinations/road-destinations.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:destinations:1 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: secondary 12 | version: 0 13 | connectors: 14 | - connector_id: overture:transportation:connector:123 15 | at: 0 16 | - connector_id: overture:transportation:connector:678 17 | at: 1 18 | destinations: 19 | - when: 20 | heading: forward 21 | from_connector_id: overture:transportation:connector:123 22 | to_connector_id: overture:transportation:connector:123 23 | to_segment_id: overture:transportation:segment:567 24 | final_heading: backward 25 | labels: 26 | - value: Seattle 27 | type: unknown 28 | - value: Main Street 29 | type: street 30 | - value: I90 31 | type: route_ref 32 | symbols: 33 | - motorway 34 | - airport 35 | - when: 36 | heading: backward 37 | from_connector_id: overture:transportation:connector:123 38 | to_connector_id: overture:transportation:connector:123 39 | to_segment_id: overture:transportation:segment:567 40 | final_heading: backward 41 | labels: 42 | - value: Redmond 43 | type: unknown 44 | - value: I5 45 | type: toward_route_ref 46 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/restrictions/road-restrictions-access.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:access 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 0]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: primary 12 | version: 2 13 | access_restrictions: 14 | - access_type: denied 15 | between: [ 0, 0.5 ] 16 | - access_type: denied 17 | when: 18 | during: PH 19 | - access_type: denied 20 | when: {heading: forward} 21 | - access_type: allowed 22 | when: 23 | heading: forward 24 | mode: [vehicle] 25 | - access_type: allowed 26 | when: 27 | heading: forward 28 | using: [at_destination] 29 | - access_type: allowed 30 | when: 31 | heading: forward 32 | recognized: [as_employee] 33 | - access_type: allowed 34 | when: 35 | heading: forward 36 | vehicle: 37 | - dimension: axle_count 38 | comparison: less_than 39 | value: 3 40 | - dimension: weight 41 | comparison: less_than_equal 42 | value: 600 43 | unit: 'kg' 44 | - dimension: height 45 | comparison: less_than 46 | value: 12 47 | unit: 'ft' 48 | - access_type: denied 49 | between: [0.25, 0.5] 50 | when: 51 | heading: forward 52 | during: PH 53 | mode: [car, hgv] 54 | using: [at_destination] 55 | recognized: [as_employee] 56 | vehicle: 57 | - dimension: axle_count 58 | comparison: less_than 59 | value: 3 60 | - dimension: weight 61 | comparison: less_than_equal 62 | value: 600 63 | unit: 'kg' 64 | - dimension: height 65 | comparison: less_than 66 | value: 12 67 | unit: 'ft' 68 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/restrictions/road-restrictions-speed-limits.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:speed-limits 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 0]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | class: tertiary 12 | version: 3 13 | speed_limits: 14 | - max_speed: {value: 20, unit: 'km/h'} 15 | between: [ 0, 0.5 ] 16 | - min_speed: {value: 25, unit: 'mph'} 17 | when: 18 | during: PH 19 | - max_speed: {value: 100, unit: 'km/h'} 20 | min_speed: {value: 75, unit: 'km/h'} 21 | when: {heading: forward} 22 | - min_speed: {value: 25, unit: 'mph'} 23 | when: 24 | heading: forward 25 | mode: [car, hgv] 26 | - max_speed: {value: 60, unit: 'mph'} 27 | is_max_speed_variable: true 28 | when: 29 | heading: forward 30 | using: [at_destination] 31 | - min_speed: {value: 25, unit: 'mph'} 32 | when: 33 | heading: forward 34 | recognized: [as_employee] 35 | - min_speed: {value: 40, unit: 'mph'} 36 | when: 37 | heading: forward 38 | vehicle: 39 | - dimension: axle_count 40 | comparison: less_than 41 | value: 3 42 | - dimension: weight 43 | comparison: less_than_equal 44 | value: 600 45 | unit: 'kg' 46 | - dimension: height 47 | comparison: less_than 48 | value: 12 49 | unit: 'ft' 50 | - max_speed: {value: 30, unit: 'km/h'} 51 | min_speed: {value: 20, unit: 'mph'} 52 | is_max_speed_variable: true 53 | between: [0.25, 0.5] 54 | when: 55 | heading: forward 56 | during: PH 57 | mode: [car, hgv] 58 | using: [at_destination] 59 | recognized: [as_employee] 60 | vehicle: 61 | - dimension: axle_count 62 | comparison: less_than 63 | value: 3 64 | - dimension: weight 65 | comparison: less_than_equal 66 | value: 600 67 | unit: 'kg' 68 | - dimension: height 69 | comparison: less_than 70 | value: 12 71 | unit: 'ft' 72 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-abandoned.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:789 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Overture properties 9 | theme: transportation 10 | type: segment 11 | version: 3 12 | subtype: road 13 | class: tertiary 14 | road_surface: 15 | - value: gravel 16 | road_flags: 17 | - values: [is_abandoned] 18 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-acesss-restriction.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:1415 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | ext_description: >- 11 | This is an example road segment in which as many properties as 12 | possible are specified using rules instead of flat values. For 13 | example, the road flags are specified using rules. 14 | # Overture properties 15 | theme: transportation 16 | type: segment 17 | version: 5 18 | subtype: road 19 | class: primary 20 | access_restrictions: 21 | - access_type: denied 22 | - access_type: designated 23 | when: {mode: [truck]} 24 | between: [0.1, 0.25] 25 | - access_type: allowed 26 | when: 27 | using: [as_customer, to_farm] 28 | recognized: [as_permitted, as_employee] 29 | between: [0.25, 0.50] 30 | - access_type: allowed 31 | when: 32 | vehicle: 33 | - dimension: axle_count 34 | comparison: greater_than 35 | value: 5 36 | between: [0.50, 0.70] 37 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-alley.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:1555 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 5 11 | subtype: road 12 | class: service 13 | subclass_rules: 14 | - value: alley 15 | between: [0, 0.5] 16 | access_restrictions: 17 | - access_type: allowed 18 | when: 19 | using: [at_destination] 20 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-covered.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:covered 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Overture properties 9 | theme: transportation 10 | type: segment 11 | version: 3 12 | subtype: road 13 | class: tertiary 14 | road_surface: 15 | - value: paved 16 | road_flags: 17 | - values: [is_covered] 18 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-indoors.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:indoor 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Overture properties 9 | theme: transportation 10 | type: segment 11 | version: 1 12 | subtype: road 13 | class: tertiary 14 | road_surface: 15 | - value: unknown 16 | road_flags: 17 | - values: [is_indoor] 18 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-level.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:example:level 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 0]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | subtype: road 11 | version: 2 12 | class: residential 13 | level_rules: 14 | - value: -1 15 | between: [0, 0.5] 16 | - value: 1 17 | between: [0.75, 1] 18 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-multiple-connectors.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [0.03, 0], [0.10, 0]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: secondary 13 | connectors: 14 | - connector_id: fooConnector 15 | at: 0 16 | - connector_id: barConnector 17 | at: 0.3 18 | - connector_id: bazConnector 19 | at: 1 20 | road_surface: 21 | - value: paved 22 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-oneway-no-lanes.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:1213 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 6 11 | subtype: road 12 | class: secondary 13 | connectors: 14 | - connector_id: fooConnector 15 | at: 0 16 | - connector_id: barConnector 17 | at: 1 18 | # one way road in backward direction (forward access is denied) 19 | access_restrictions: 20 | - access_type: denied 21 | when: {heading: forward} 22 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-path.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:1516 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 5 11 | subtype: road 12 | class: path 13 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-with-lr-name.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | # Overture properties 11 | theme: transportation 12 | type: segment 13 | version: 1 14 | subtype: road 15 | class: secondary 16 | connectors: 17 | - connector_id: fooConnector 18 | at: 0 19 | - connector_id: barConnector 20 | at: 1 21 | names: 22 | primary: Common Road Name 1 23 | rules: 24 | - variant: common 25 | value: Common Road Name 1 26 | between: 27 | - 0 28 | - 0.5 29 | - variant: short 30 | value: SRN1 31 | between: 32 | - 0 33 | - 0.5 34 | - variant: common 35 | value: Common Road Name 2 36 | between: 37 | - 0.5 38 | - 1 39 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-with-lr-sources.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:456 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1], [2, 2]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: secondary 13 | connectors: 14 | - connector_id: startConnector 15 | at: 0 16 | - connector_id: endConnector 17 | at: 1 18 | names: 19 | primary: Main Street 20 | sources: 21 | - property: "" 22 | dataset: OpenStreetMap 23 | record_id: w12345@1 24 | between: 25 | - 0 26 | - 0.5 27 | - property: "" 28 | dataset: OpenStreetMap 29 | record_id: w67890@1 30 | between: 31 | - 0.5 32 | - 1 33 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-with-lr-width.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | # Overture properties 11 | theme: transportation 12 | type: segment 13 | version: 1 14 | subtype: road 15 | class: secondary 16 | connectors: 17 | - connector_id: fooConnector 18 | at: 0 19 | - connector_id: barConnector 20 | at: 1 21 | width_rules: 22 | - between: [0, 0.5] 23 | value: 1.5 24 | - between: [0.5, 1] 25 | value: 2.0 26 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road-with-route.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Overture properties 9 | theme: transportation 10 | type: segment 11 | version: 1 12 | subtype: road 13 | class: motorway 14 | connectors: 15 | - connector_id: fooConnector 16 | at: 0 17 | - connector_id: barConnector 18 | at: 1 19 | routes: 20 | - name: I 95 21 | network: US:I 22 | ref: "95" 23 | symbol: https://upload.wikimedia.org/wikipedia/commons/6/61/I-95.svg 24 | wikidata: Q94967 25 | between: [0, 0.5] 26 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/road.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:123 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | # Custom user properties. 9 | ext_baz: I am a custom user property... 10 | # Overture properties 11 | theme: transportation 12 | type: segment 13 | version: 3 14 | subtype: road 15 | class: secondary 16 | subclass: link 17 | subclass_rules: 18 | - value: link 19 | connectors: 20 | - connector_id: fooConnector 21 | at: 0 22 | - connector_id: barConnector 23 | at: 1 24 | names: 25 | primary: Common Road Name 26 | # no access information -> means by default road is accessible in both directions 27 | road_surface: 28 | - value: gravel 29 | road_flags: 30 | - values: [is_link, is_tunnel] # Note: `is_link` is deprecated and will be removed in a future release in favor of the link subclass 31 | level: -1 32 | level_rules: 33 | - value: -1 34 | width_rules: 35 | - value: 10 36 | speed_limits: 37 | - min_speed: 38 | value: 90 39 | unit: km/h 40 | max_speed: 41 | value: 110 42 | unit: mph 43 | is_max_speed_variable: true 44 | - max_speed: 45 | value: 55 46 | unit: mph 47 | when: {mode: [ "truck" ]} 48 | - max_speed: 49 | value: 30 50 | unit: km/h 51 | between: [0.25, 0.50] 52 | when: 53 | during: Mo-Sa 09:00-12:00, We 15:00-18:00 54 | prohibited_transitions: 55 | - sequence: 56 | - segment_id: overture:transportation:segment:234 57 | connector_id: overture:transportation:connector:123 58 | final_heading: forward 59 | when: {heading: forward} 60 | - sequence: 61 | - segment_id: overture:transportation:segment:456 62 | connector_id: overture:transportation:connector:345 63 | - segment_id: overture:transportation:segment:567 64 | connector_id: overture:transportation:connector:456 65 | final_heading: backward 66 | when: {heading: backward} 67 | destinations: 68 | - labels: 69 | - value: Seattle 70 | type: unknown 71 | - value: I 90 72 | type: route_ref 73 | symbols: 74 | - airport 75 | when: 76 | heading: forward 77 | from_connector_id: overture:transportation:connector:123 78 | to_connector_id: overture:transportation:connector:123 79 | to_segment_id: overture:transportation:segment:567 80 | final_heading: backward 81 | -------------------------------------------------------------------------------- /examples/transportation/segment/road/sidewalk.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | id: overture:transportation:segment:999 3 | type: Feature 4 | geometry: 5 | type: LineString 6 | coordinates: [[0, 0], [1, 1]] 7 | properties: 8 | theme: transportation 9 | type: segment 10 | version: 1 11 | subtype: road 12 | class: footway 13 | subclass: sidewalk 14 | subclass_rules: 15 | - value: sidewalk 16 | connectors: 17 | - connector_id: fooConnector 18 | at: 0 19 | - connector_id: barConnector 20 | at: 1 21 | road_surface: 22 | - value: paved 23 | -------------------------------------------------------------------------------- /gers/examples/python/README.md: -------------------------------------------------------------------------------- 1 | # GERS Sidecar Match Example 2 | 3 | ## Context 4 | 5 | Consumers of geospatial data sets usually need to solve a complex and costly process of matching them. 6 | A data set that also has GERS IDs can be easily used to augment the Overture data set itself, or other data sets that also have GERS IDs via simple join by id. 7 | 8 | Because Overture data sets are modeled and produced with prioritizing for stability of its identifiers (GERS IDs) over time, and the cost of matching being offset to the owner of the data sets, the consumers of data sets with GERS IDs can conflate, evaluate and onboard such feeds much cheaper and faster. 9 | 10 | ## Purpose 11 | 12 | Matching a geospatial data set with overture (or any other) data set is a common problem and many solutions exist for this, from generic to highly specialized for particular data types. 13 | 14 | Depending on the match requirements, this can be achieved with a open source or commercial tools or services, with a few click or couple of lines of code or with large scale distributed system with complex match logic. 15 | 16 | Main purpose is to provide an example of how to start exploring a data set's compatibility with overture data set and to find GERS IDs that correspond to its features. 17 | 18 | ## Example 19 | [Snap GPS traces to overture roads](MATCH_TRACES.md) 20 | 21 | -------------------------------------------------------------------------------- /gers/examples/python/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /gers/examples/python/constants.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | import os 3 | 4 | DEFAULT_H3_RESOLUTION = 12 5 | 6 | # default params for nearest match 7 | DEFAULT_NEAREST_MAX_DISTANCE = 100 # meters 8 | 9 | # default params for trace snapping 10 | DEFAULT_SIGMA = 4.1 # 4.10351310622546; 11 | DEFAULT_BETA = 0.9 # 0.905918746744877 -> this default beta was found to apply to a 5 second sample rate. 12 | # also was found to have good noise rejection characteristics and performed just as well or better than 1 second data, so it 13 | # is now our default sampling period - even if the raw data was sampled at a higher rate 14 | DEFAULT_MAX_POINT_TO_ROAD_DISTANCE = 10 # 200m in original paper 15 | DEFAULT_MAX_ROUTE_TO_TRACE_DISTANCE_DIFFERENCE = 300 # what's a good value for this? 2km in original paper but too slow 16 | DEFAULT_ALLOW_LOOPS = False 17 | DEFAULT_SEGMENT_REVISIT_PENALTY = 100 # set to 0 if no penalty is desired 18 | DEFAULT_VIA_POINT_PENALTY_WEIGHT = 100 # set to 0 if no penalty is desired 19 | DEFAULT_BROKEN_TIME_GAP_RESET_SEQUENCE = 60 # seconds 20 | DEFAULT_BROKEN_DISTANCE_GAP_RESET_SEQUENCE = 300 # meters 21 | 22 | """default column separator of text files""" 23 | COLUMN_SEPARATOR = "\t" 24 | 25 | DATA_DIR = "gers/examples/python/data" 26 | 27 | 28 | -------------------------------------------------------------------------------- /gers/examples/python/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OvertureMaps/schema/7d20936cd1cc4af1a12c867fccd83b0c6f57cfef/gers/examples/python/requirements.txt -------------------------------------------------------------------------------- /gers/examples/python/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OvertureMaps/schema/7d20936cd1cc4af1a12c867fccd83b0c6f57cfef/gers/examples/python/tests/__init__.py -------------------------------------------------------------------------------- /gers/examples/python/tests/match_traces_test.py: -------------------------------------------------------------------------------- 1 | import test_setup 2 | import os 3 | import json 4 | import unittest 5 | import constants 6 | from match_classes import TraceSnapOptions 7 | from match_traces import get_trace_matches 8 | from utils import load_matchable_set, get_features_with_cells 9 | 10 | class TestTraces(unittest.TestCase): 11 | 12 | def test_match_traces(self): 13 | features_to_match_file = os.path.join(constants.DATA_DIR, "macon-manual-traces.geojson") 14 | overture_file = os.path.join(constants.DATA_DIR, "overture-transportation-macon.geojson") 15 | res = 12 16 | 17 | to_match = load_matchable_set(features_to_match_file, is_multiline=False, res=res) 18 | self.assertIsNotNone(to_match) 19 | self.assertEqual(len(to_match.features_by_id), 4) 20 | 21 | id_to_match = "manual_trace#1" 22 | self.assertIn(id_to_match, to_match.features_by_id) 23 | source_feature = to_match.features_by_id[id_to_match] 24 | 25 | overture = load_matchable_set(overture_file, is_multiline=True, properties_filter = {"type": "segment"}, res=res) 26 | self.assertIsNotNone(overture.features_by_id) 27 | self.assertGreater(len(overture.features_by_id), 20000) 28 | 29 | options = TraceSnapOptions(max_point_to_road_distance=30) 30 | target_candidates = get_features_with_cells(overture.features_by_cell, to_match.cells_by_id[source_feature.id]) 31 | match_res = get_trace_matches(source_feature, target_candidates, options) 32 | self.assertIsNotNone(match_res) 33 | self.assertIsNotNone(match_res.points) 34 | self.assertEqual(len(match_res.points), len(source_feature.geometry.coords)) 35 | 36 | self.assertGreater(match_res.source_length, 5000) 37 | self.assertGreater(match_res.route_length, 5000) 38 | 39 | json_res = match_res.to_json() 40 | self.assertIsNotNone(json_res) 41 | j = json.dumps(json_res, indent=4) 42 | 43 | for idx, p in enumerate(match_res.points): 44 | bp = p.best_prediction 45 | self.assertIsNotNone(bp, f"best prediction for point {idx} is None") 46 | self.assertIsNotNone(bp.id, f"best prediction for point {idx} has no id") 47 | self.assertGreater(bp.distance_to_snapped_road, 0.0) 48 | if idx > 0: 49 | self.assertGreater(bp.route_distance_to_prev_point, 0.0) 50 | 51 | if __name__ == '__main__': 52 | unittest.main() -------------------------------------------------------------------------------- /gers/examples/python/tests/test_setup.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | 4 | parent_dir = os.path.dirname(os.path.abspath(__file__)) 5 | sys.path.insert(0, os.path.dirname(parent_dir)) -------------------------------------------------------------------------------- /schema/base/bathymetry.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | "$schema": https://json-schema.org/draft/2020-12/schema 3 | title: bathymetry 4 | description: Topographic representation of an underwater area, such as a part of the ocean floor. 5 | type: object 6 | properties: 7 | id: 8 | "$ref": ../defs.yaml#/$defs/propertyDefinitions/id 9 | geometry: 10 | unevaluatedProperties: false 11 | oneOf: 12 | - "$ref": https://geojson.org/schema/Polygon.json 13 | - "$ref": https://geojson.org/schema/MultiPolygon.json 14 | properties: 15 | unevaluatedProperties: false 16 | allOf: 17 | - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer 18 | - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer 19 | - "$ref": ../defs.yaml#/$defs/propertyContainers/cartographyContainer 20 | required: [depth] 21 | properties: 22 | depth: { "$ref": "./defs.yaml#/$defs/propertyDefinitions/depth" } 23 | -------------------------------------------------------------------------------- /schema/base/defs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | "$schema": https://json-schema.org/draft/2020-12/schema 3 | title: Base layer properties 4 | description: Common schema definitions the base theme (primarily from OSM) 5 | "$defs": 6 | propertyDefinitions: 7 | elevation: 8 | description: Elevation above sea level (in meters) of the feature. 9 | type: integer 10 | maximum: 9000 11 | depth: 12 | description: Depth below surface level (in meters) of the feature. 13 | type: integer 14 | minimum: 0 15 | height: 16 | description: >- 17 | Height of the feature in meters. 18 | type: number 19 | exclusiveMinimum: 0 20 | sourceTags: 21 | description: Any attributes/tags from the original source data that should be passed through. 22 | type: object 23 | surface: 24 | description: Surface material, mostly from the OSM tag, with some normalization. 25 | type: string 26 | enum: 27 | - asphalt 28 | - cobblestone 29 | - compacted 30 | - concrete 31 | - concrete_plates 32 | - dirt 33 | - earth 34 | - fine_gravel 35 | - grass 36 | - gravel 37 | - ground 38 | - paved 39 | - paving_stones 40 | - pebblestone 41 | - recreation_grass 42 | - recreation_paved 43 | - recreation_sand 44 | - rubber 45 | - sand 46 | - sett 47 | - tartan 48 | - unpaved 49 | - wood 50 | - woodchips 51 | propertyContainers: 52 | osmPropertiesContainer: 53 | title: "OSM Properties" 54 | description: OSM Properties 55 | type: object 56 | properties: 57 | source_tags: { "$ref": "#/$defs/propertyDefinitions/sourceTags" } 58 | wikidata: { "$ref": "../defs.yaml#/$defs/propertyDefinitions/wikidata" } 59 | -------------------------------------------------------------------------------- /schema/base/land_cover.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | "$schema": https://json-schema.org/draft/2020-12/schema 3 | title: land_cover 4 | description: Representation of the Earth's natural surfaces 5 | type: object 6 | properties: 7 | id: 8 | "$ref": ../defs.yaml#/$defs/propertyDefinitions/id 9 | geometry: 10 | unevaluatedProperties: false 11 | oneOf: 12 | - "$ref": https://geojson.org/schema/Polygon.json 13 | - "$ref": https://geojson.org/schema/MultiPolygon.json 14 | properties: 15 | unevaluatedProperties: false 16 | allOf: 17 | - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer 18 | - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer 19 | - "$ref": ../defs.yaml#/$defs/propertyContainers/cartographyContainer 20 | required: 21 | - subtype 22 | properties: 23 | subtype: 24 | description: type of surface represented 25 | type: string 26 | enum: 27 | - barren 28 | - crop 29 | - forest 30 | - grass 31 | - mangrove 32 | - moss 33 | - shrub 34 | - snow 35 | - urban 36 | - wetland 37 | -------------------------------------------------------------------------------- /schema/base/water.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | "$schema": https://json-schema.org/draft/2020-12/schema 3 | title: water 4 | description: Physical representations of inland and ocean marine surfaces. Translates `natural` and `waterway` tags from OpenStreetMap. 5 | type: object 6 | properties: 7 | id: 8 | "$ref": ../defs.yaml#/$defs/propertyDefinitions/id 9 | geometry: 10 | unevaluatedProperties: false 11 | oneOf: 12 | - "$ref": https://geojson.org/schema/Point.json 13 | - "$ref": https://geojson.org/schema/LineString.json 14 | - "$ref": https://geojson.org/schema/Polygon.json 15 | - "$ref": https://geojson.org/schema/MultiPolygon.json 16 | properties: 17 | unevaluatedProperties: false 18 | allOf: 19 | - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer 20 | - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer 21 | - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer 22 | - "$ref": ./defs.yaml#/$defs/propertyContainers/osmPropertiesContainer 23 | required: 24 | - subtype 25 | - class 26 | properties: 27 | subtype: 28 | description: The type of water body such as an river, ocean or lake. 29 | default: [water] 30 | type: string 31 | enum: 32 | - canal 33 | - human_made 34 | - lake 35 | - ocean 36 | - physical 37 | - pond 38 | - reservoir 39 | - river 40 | - spring 41 | - stream 42 | - wastewater 43 | - water 44 | class: 45 | description: Further description of the type of water 46 | default: [water] 47 | type: string 48 | enum: 49 | - basin 50 | - bay 51 | - blowhole 52 | - canal 53 | - cape 54 | - ditch 55 | - dock 56 | - drain 57 | - fairway 58 | - fish_pass 59 | - fishpond 60 | - geyser 61 | - hot_spring 62 | - lagoon 63 | - lake 64 | - moat 65 | - ocean 66 | - oxbow 67 | - pond 68 | - reflecting_pool 69 | - reservoir 70 | - river 71 | - salt_pond 72 | - sea 73 | - sewage 74 | - shoal 75 | - spring 76 | - strait 77 | - stream 78 | - swimming_pool 79 | - tidal_channel 80 | - wastewater 81 | - water 82 | - water_storage 83 | - waterfall 84 | is_salt: 85 | description: Is it salt water or not 86 | type: boolean 87 | is_intermittent: 88 | description: Is it intermittent water or not 89 | type: boolean 90 | -------------------------------------------------------------------------------- /schema/buildings/building_part.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | "$schema": https://json-schema.org/draft/2020-12/schema 3 | title: part 4 | description: >- 5 | A single building part. Parts describe their shape and color and other properties. Each 6 | building part must contain the building with which it is associated. 7 | type: object 8 | properties: 9 | geometry: 10 | description: >- 11 | The part's geometry. It must be a polygon or multipolygon. 12 | unevaluatedProperties: false 13 | oneOf: 14 | - "$ref": https://geojson.org/schema/Polygon.json 15 | - "$ref": https://geojson.org/schema/MultiPolygon.json 16 | properties: 17 | unevaluatedProperties: false 18 | allOf: 19 | - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer 20 | - "$ref": ../defs.yaml#/$defs/propertyContainers/namesContainer 21 | - "$ref": ../defs.yaml#/$defs/propertyContainers/levelContainer 22 | - "$ref": ./defs.yaml#/$defs/propertyContainers/shapeContainer 23 | required: [building_id] 24 | properties: 25 | building_id: 26 | description: The building ID to which this part belongs 27 | type: string 28 | -------------------------------------------------------------------------------- /schema/places/defs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | "$schema": https://json-schema.org/draft/2020-12/schema 3 | description: Common schema definitions for places theme 4 | "$defs": 5 | typeDefinitions: 6 | category: 7 | description: Category of a place. 8 | type: string 9 | minLength: 1 10 | pattern: ^[a-z0-9]+(_[a-z0-9]+)*$ 11 | -------------------------------------------------------------------------------- /schema/transportation/connector.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | "$schema": https://json-schema.org/draft/2020-12/schema 3 | title: connector 4 | description: >- 5 | Connectors create physical connections between segments. Connectors 6 | are compatible with GeoJSON Point features. 7 | type: object 8 | properties: 9 | id: 10 | "$ref": ../defs.yaml#/$defs/propertyDefinitions/id 11 | geometry: 12 | description: >- 13 | Connector's geometry which MUST be a Point as defined by GeoJSON 14 | schema. 15 | unevaluatedProperties: false 16 | allOf: 17 | - "$ref": https://geojson.org/schema/Point.json 18 | properties: 19 | unevaluatedProperties: false 20 | allOf: 21 | - "$ref": ../defs.yaml#/$defs/propertyContainers/overtureFeaturePropertiesContainer 22 | --------------------------------------------------------------------------------