diff --git a/CHANGELOG.md b/CHANGELOG.md index ab9585b..46c936e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change log +### 0.3.0 +- Default to OSW 0.3 dataset-specific schemas (edges, lines, nodes, points, polygons, zones) with filename-driven selection; removed legacy monolithic/geometry schema files. +- Enforce the six canonical OSW 0.3 filenames inside datasets; reject non-standard names and detect duplicates/missing required files (with new unit tests). +- Validation now ignores `$schema` hints and does not fall back to geometry typing; line schema is the final fallback when filenames give no hint. +- Expanded test coverage for extension read failures, invalid extension ID extraction, `_w_id` missing in zones, cleanup edge cases, and required-file detection. + ### 0.2.15 - Update the base schema to make the $schema key is required - Added unit test cases for that diff --git a/README.md b/README.md index e2e50e7..d758a6b 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This package validates the OSW geojson file. Package requires a OSW zip file pat - It unzip the provided zip files - Check for the required nodes and edges geojson files inside the unzipped folder -- Validate each file (nodes, edges and points) against schema, schema can be found here +- Validate each file (edges, lines, nodes, points, polygons and zones) against the matching schema (0.3 defaults live in `src/python_osw_validation/schema`) - Return true or false according to validation - you can check the error if it returned false. @@ -127,4 +127,4 @@ To use the library locally, use the [example.py](./src/example.py) code - Choose `main` branch for release - Publish the release. - This release triggers a workflow to generate the new version of the Package. -- The new package will be available at https://pypi.org/project/python-osw-validation/ \ No newline at end of file +- The new package will be available at https://pypi.org/project/python-osw-validation/ diff --git a/src/example.py b/src/example.py index 9f18b99..1714e08 100644 --- a/src/example.py +++ b/src/example.py @@ -7,7 +7,7 @@ INVALID_ZIP_FILE = os.path.join(ASSETS_DIR, '4151.zip') INVALID_VANCOUVER_ZIP_FILE = os.path.join(ASSETS_DIR, 'vancouver-dataset.zip') SCHEMA_DIR = os.path.join(PARENT_DIR, 'src/python_osw_validation/schema') -SCHEMA_FILE_PATH = os.path.join(SCHEMA_DIR, 'opensidewalks.schema.json') +SCHEMA_FILE_PATH = os.path.join(SCHEMA_DIR, 'opensidewalks.schema-0.3.json') def valid_test_with_provided_schema(): diff --git a/src/python_osw_validation/__init__.py b/src/python_osw_validation/__init__.py index ea6af2a..fd64670 100644 --- a/src/python_osw_validation/__init__.py +++ b/src/python_osw_validation/__init__.py @@ -12,6 +12,14 @@ from .helpers import _feature_index_from_error, _pretty_message, _rank_for SCHEMA_PATH = os.path.join(os.path.dirname(__file__), 'schema') +DEFAULT_DATASET_SCHEMAS = { + "edges": os.path.join(SCHEMA_PATH, 'opensidewalks.edges.schema-0.3.json'), + "lines": os.path.join(SCHEMA_PATH, 'opensidewalks.lines.schema-0.3.json'), + "nodes": os.path.join(SCHEMA_PATH, 'opensidewalks.nodes.schema-0.3.json'), + "points": os.path.join(SCHEMA_PATH, 'opensidewalks.points.schema-0.3.json'), + "polygons": os.path.join(SCHEMA_PATH, 'opensidewalks.polygons.schema-0.3.json'), + "zones": os.path.join(SCHEMA_PATH, 'opensidewalks.zones.schema-0.3.json'), +} class ValidationResult: @@ -33,17 +41,18 @@ def __init__(self, is_valid: bool, errors: Optional[List[str]] = None, class OSWValidation: - default_schema_file_path = os.path.join(SCHEMA_PATH, 'opensidewalks.schema.json') + default_schema_file_path_03 = os.path.join(SCHEMA_PATH, 'opensidewalks.schema-0.3.json') # per-geometry defaults - default_point_schema = os.path.join(SCHEMA_PATH, 'Point_schema.json') - default_line_schema = os.path.join(SCHEMA_PATH, 'Linestring_schema.json') - default_polygon_schema = os.path.join(SCHEMA_PATH, 'Polygon_schema.json') + default_point_schema = DEFAULT_DATASET_SCHEMAS['points'] + default_line_schema = DEFAULT_DATASET_SCHEMAS['edges'] + default_polygon_schema = DEFAULT_DATASET_SCHEMAS['zones'] def __init__( self, zipfile_path: str, schema_file_path=None, + schema_paths: Optional[Dict[str, str]] = None, point_schema_path: Optional[str] = None, line_schema_path: Optional[str] = None, polygon_schema_path: Optional[str] = None, @@ -57,10 +66,15 @@ def __init__( # Legacy single schema (if set, used for all) self.schema_file_path = schema_file_path # may be None + # Dataset-specific schemas (override via schema_paths) + self.dataset_schema_paths = {**DEFAULT_DATASET_SCHEMAS} + if schema_paths: + self.dataset_schema_paths.update({k: v for k, v in schema_paths.items() if v}) + # Per-geometry schemas (with defaults) - self.point_schema_path = point_schema_path or self.default_point_schema - self.line_schema_path = line_schema_path or self.default_line_schema - self.polygon_schema_path = polygon_schema_path or self.default_polygon_schema + self.point_schema_path = point_schema_path or self.dataset_schema_paths['points'] + self.line_schema_path = line_schema_path or self.dataset_schema_paths['edges'] + self.polygon_schema_path = polygon_schema_path or self.dataset_schema_paths['zones'] # ---------------------------- # Utilities & helpers @@ -92,6 +106,45 @@ def _get_colset(self, gdf: Optional[gpd.GeoDataFrame], col: str, filekey: str) - self.log_errors(f"Could not create set for column '{col}' in {filekey}.", filekey, None) return set() + def _schema_key_from_text(self, text: Optional[str]) -> Optional[str]: + """Return dataset key (edges/nodes/points/lines/polygons/zones) if mentioned in text.""" + if not text: + return None + lower = text.lower() + aliases = { + "edges": ("edge", "edges"), + "lines": ("line", "lines", "linestring"), + "nodes": ("node", "nodes"), + "points": ("point", "points"), + "polygons": ("polygon", "polygons", "area"), + "zones": ("zone", "zones"), + } + for key, variants in aliases.items(): + if any(alias in lower for alias in variants): + return key + return None + + def _contains_disallowed_features_for_02(self, geojson_data: Dict[str, Any]) -> bool: + """Detect Tree coverage or Custom Point/Line/Polygon in legacy 0.2 datasets.""" + for feat in geojson_data.get("features", []): + props = feat.get("properties") or {} + val = props.get("natural") + if isinstance(val, str) and val.strip().lower() in {"tree", "wood"}: + return True + if any(k in props for k in ("leaf_cycle", "leaf_type")): + return True + for k, v in props.items(): + target = "" + if isinstance(v, str): + target = v.lower() + elif isinstance(k, str): + target = k.lower() + if any(tok in target for tok in ["custom point", "custom_point", "custompoint", + "custom line", "custom_line", "customline", + "custom polygon", "custom_polygon", "custompolygon"]): + return True + return False + # ---------------------------- # Schema selection # ---------------------------- @@ -118,25 +171,12 @@ def are_ids_unique(self, gdf): def pick_schema_for_file(self, file_path: str, geojson_data: Dict[str, Any]) -> str: if self.schema_file_path: return self.schema_file_path - try: - features = geojson_data.get('features', []) - if features: - gtype = (features[0].get('geometry') or {}).get('type') - if gtype == 'Point': - return self.point_schema_path - if gtype == 'LineString': - return self.line_schema_path - if gtype == 'Polygon': - return self.polygon_schema_path - except Exception: - pass - lower = os.path.basename(file_path).lower() - if 'node' in lower or 'point' in lower: - return self.point_schema_path - if 'edge' in lower or 'line' in lower: - return self.line_schema_path - if 'zone' in lower or 'polygon' in lower or 'area' in lower: - return self.polygon_schema_path + + basename = os.path.basename(file_path) + schema_key = self._schema_key_from_text(basename) + if schema_key and schema_key in self.dataset_schema_paths: + return self.dataset_schema_paths[schema_key] + return self.line_schema_path # ---------------------------- @@ -432,6 +472,17 @@ def validate_osw_errors(self, file_path: str, max_errors: int) -> bool: return False except OSError: return False + + schema_url = geojson_data.get('$schema') + if isinstance(schema_url, str) and '0.2/schema.json' in schema_url: + if self._contains_disallowed_features_for_02(geojson_data): + self.log_errors( + message="0.2 schema does not support Tree coverage, Custom Point, Custom Line, and Custom Polygon", + filename=os.path.basename(file_path), + feature_index=None, + ) + return False + schema_path = self.pick_schema_for_file(file_path, geojson_data) schema = self.load_osw_schema(schema_path) validator = jsonschema_rs.Draft7Validator(schema) diff --git a/src/python_osw_validation/extracted_data_validator.py b/src/python_osw_validation/extracted_data_validator.py index dc9e6de..901205f 100644 --- a/src/python_osw_validation/extracted_data_validator.py +++ b/src/python_osw_validation/extracted_data_validator.py @@ -29,6 +29,24 @@ } } +ALLOWED_OSW_03_FILENAMES = ( + "opensidewalks.edges.geojson", + "opensidewalks.lines.geojson", + "opensidewalks.nodes.geojson", + "opensidewalks.points.geojson", + "opensidewalks.polygons.geojson", + "opensidewalks.zones.geojson", +) + +_FILENAME_TO_KEY = { + "opensidewalks.edges.geojson": "edges", + "opensidewalks.lines.geojson": "lines", + "opensidewalks.nodes.geojson": "nodes", + "opensidewalks.points.geojson": "points", + "opensidewalks.polygons.geojson": "polygons", + "opensidewalks.zones.geojson": "zones", +} + class ExtractedDataValidator: def __init__(self, extracted_dir: str): @@ -45,15 +63,41 @@ def is_valid(self) -> bool: # Look for required files at the root level geojson_files = glob.glob(os.path.join(self.extracted_dir, '*.geojson')) - - # If not found at the root, check inside folders - if not geojson_files: - geojson_files = glob.glob(os.path.join(self.extracted_dir, '*', '*.geojson')) + nested_files = glob.glob(os.path.join(self.extracted_dir, '*', '*.geojson')) + for f in nested_files: + if f not in geojson_files: + geojson_files.append(f) if not geojson_files: self.error = 'No .geojson files found in the specified directory or its subdirectories.' return False + basenames = [os.path.basename(f) for f in geojson_files] + is_osw_03 = any(name.startswith("opensidewalks.") for name in basenames) + + if is_osw_03: + invalid_basenames = [bn for bn in basenames if bn not in ALLOWED_OSW_03_FILENAMES] + if invalid_basenames: + allowed_fmt = ", ".join(ALLOWED_OSW_03_FILENAMES) + self.error = f'Dataset contains non-standard file names. The only allowed file names are {{{allowed_fmt}}}' + return False + + duplicate_keys = [] + for filename in ALLOWED_OSW_03_FILENAMES: + occurrences = [f for f in geojson_files if os.path.basename(f) == filename] + if len(occurrences) > 1: + duplicate_keys.append(_FILENAME_TO_KEY.get(filename, filename)) + elif len(occurrences) == 1: + self.files.append(occurrences[0]) + + if duplicate_keys: + self.error = f'Multiple .geojson files of the same type found: {", ".join(duplicate_keys)}.' + return False + + self.externalExtensions.extend([item for item in geojson_files if item not in self.files]) + gc.collect() + return True + required_files = [key for key, value in OSW_DATASET_FILES.items() if value['required']] optional_files = [key for key, value in OSW_DATASET_FILES.items() if not value['required']] missing_files = [] @@ -106,7 +150,7 @@ def is_valid(self) -> bool: finally: # Cleanup large lists and call garbage collector - del geojson_files, required_files, optional_files, missing_files, duplicate_files + del geojson_files, basenames, required_files, optional_files, missing_files, duplicate_files gc.collect() return True diff --git a/src/python_osw_validation/schema/Linestring_schema.json b/src/python_osw_validation/schema/Linestring_schema.json deleted file mode 100644 index 991cfc5..0000000 --- a/src/python_osw_validation/schema/Linestring_schema.json +++ /dev/null @@ -1,2334 +0,0 @@ -{ - "title": "root", - "type": "object", - "required": [ - "$schema", - "type", - "features" - ], - "additionalProperties": false, - "properties": { - "$schema": { - "description": "A field for the schema id.", - "enum": [ - "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json" - ], - "type": "string" - }, - "dataSource": { - "additionalProperties": true, - "properties": {}, - "type": "object" - }, - "dataTimestamp": { - "format": "date-time", - "type": "string" - }, - "pipelineVersion": { - "additionalProperties": true, - "properties": {}, - "type": "object" - }, - "region": { - "title": "geometryObject", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "additionalProperties": false, - "properties": { - "type": { - "title": "GeometryType", - "type": "string", - "default": "MultiPolygon", - "enum": [ - "MultiPolygon" - ] - }, - "coordinates": { - "type": "array", - "minItems": 1, - "items": { - "type": "array", - "minItems": 1, - "items": { - "type": "array", - "minItems": 4, - "items": { - "type": "array", - "additionalItems": false, - "items": [ - { - "type": "number", - "minimum": -180, - "maximum": 180 - }, - { - "type": "number", - "minimum": -90, - "maximum": 90 - } - ] - } - } - } - } - }, - "description": "MultiPolygon geometry object." - }, - "type": { - "title": "Feature Collection", - "type": "string", - "default": "FeatureCollection", - "enum": [ - "FeatureCollection" - ] - }, - "features": { - "title": "features array", - "type": "array", - "minItems": 1, - "additionalItems": false, - "items": { - "title": "FeatureObject", - "type": "object", - "required": [ - "type", - "geometry", - "properties" - ], - "additionalProperties": false, - "properties": { - "type": { - "title": "FeatureType", - "type": "string", - "default": "Feature", - "enum": [ - "Feature" - ] - }, - "geometry": { - "title": "geometryObject", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "additionalProperties": false, - "properties": { - "type": { - "title": "GeometryType", - "type": "string", - "default": "LineString", - "enum": [ - "LineString" - ] - }, - "coordinates": { - "title": "coordinates", - "type": "array", - "minItems": 2, - "items": { - "type": "array", - "additionalItems": false, - "items": [ - { - "type": "number", - "minimum": -180, - "maximum": 180 - }, - { - "type": "number", - "minimum": -90, - "maximum": 90 - } - ] - } - } - } - }, - "properties": { - "title": "propertiesObject", - "type": "object", - "additionalProperties": false, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "service", - "footway", - "living_street", - "pedestrian", - "primary", - "residential", - "secondary", - "steps", - "tertiary", - "trunk", - "unclassified" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "service": { - "enum": [ - "alley", - "driveway", - "parking_aisle" - ], - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - }, - "crossing:markings": { - "description": "A field for markings on the ground which are meant to draw attention to the area where pedestrians are to cross the road.", - "enum": [ - "dashes", - "dots", - "ladder", - "ladder:paired", - "ladder:skewed", - "lines", - "lines:paired", - "lines:rainbow", - "no", - "pictograms", - "rainbow", - "skewed", - "surface", - "yes", - "zebra", - "zebra:bicolour", - "zebra:double", - "zebra:paired", - "zebra:rainbow" - ], - "type": "string" - }, - "footway": { - "enum": [ - "crossing", - "sidewalk", - "traffic_island" - ], - "type": "string" - }, - "barrier": { - "enum": [ - "fence" - ], - "type": "string" - }, - "climb": { - "description": "A field for the climb direction of steps. You can use \"up\" or \"down\" to indicate the direction of the climb relative to the direction of the edge.", - "enum": [ - "down", - "up" - ], - "type": "string" - }, - "step_count": { - "description": "A field for number of steps in stairs.", - "maximum": 500, - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "_id" - ], - "patternProperties": { - "^ext:": {} - }, - "dependencies": { - "description": { - "anyOf": [ - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "alley" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "crossing" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "driveway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "living_street" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "parking_aisle" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "primary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "residential" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "secondary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "sidewalk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "tertiary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "traffic_island" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "trunk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "unclassified" - } - } - } - ] - } - ] - }, - "foot": { - "anyOf": [ - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "alley" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "crossing" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "driveway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "living_street" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "parking_aisle" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "primary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "residential" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "secondary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "sidewalk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "tertiary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "traffic_island" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "trunk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "unclassified" - } - } - } - ] - } - ] - }, - "incline": { - "anyOf": [ - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "alley" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "crossing" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "driveway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "living_street" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "parking_aisle" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "primary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "residential" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "secondary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "sidewalk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "tertiary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "traffic_island" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "trunk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "unclassified" - } - } - } - ] - } - ] - }, - "length": { - "anyOf": [ - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "alley" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "crossing" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "driveway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "barrier" - ], - "properties": { - "barrier": { - "type": "string", - "const": "fence" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "living_street" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "parking_aisle" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "primary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "residential" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "secondary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "sidewalk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "tertiary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "traffic_island" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "trunk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "unclassified" - } - } - } - ] - } - ] - }, - "surface": { - "anyOf": [ - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "alley" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "crossing" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "driveway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "living_street" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "parking_aisle" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "primary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "residential" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "secondary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "sidewalk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "tertiary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "traffic_island" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "trunk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "unclassified" - } - } - } - ] - } - ] - }, - "width": { - "anyOf": [ - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "alley" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "crossing" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "driveway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "living_street" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - }, - { - "required": [ - "service" - ], - "properties": { - "service": { - "type": "string", - "const": "parking_aisle" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "primary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "residential" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "secondary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "service" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "sidewalk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "tertiary" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "traffic_island" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "trunk" - } - } - } - ] - }, - { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "unclassified" - } - } - } - ] - } - ] - }, - "crossing:markings": { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "footway" - } - } - }, - { - "required": [ - "footway" - ], - "properties": { - "footway": { - "type": "string", - "const": "crossing" - } - } - } - ] - }, - "climb": { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - }, - "step_count": { - "allOf": [ - { - "required": [ - "highway" - ], - "properties": { - "highway": { - "type": "string", - "const": "steps" - } - } - } - ] - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/src/python_osw_validation/schema/Point_schema.json b/src/python_osw_validation/schema/Point_schema.json deleted file mode 100644 index 462317e..0000000 --- a/src/python_osw_validation/schema/Point_schema.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "title": "root", - "type": "object", - "required": [ - "$schema", - "type", - "features" - ], - "additionalProperties": false, - "properties": { - "$schema": { - "description": "A field for the schema id.", - "enum": [ - "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json" - ], - "type": "string" - }, - "dataSource": { - "additionalProperties": true, - "properties": {}, - "type": "object" - }, - "dataTimestamp": { - "format": "date-time", - "type": "string" - }, - "pipelineVersion": { - "additionalProperties": true, - "properties": {}, - "type": "object" - }, - "region": { - "title": "geometryObject", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "additionalProperties": false, - "properties": { - "type": { - "title": "GeometryType", - "type": "string", - "default": "MultiPolygon", - "enum": [ - "MultiPolygon" - ] - }, - "coordinates": { - "type": "array", - "minItems": 1, - "items": { - "type": "array", - "minItems": 1, - "items": { - "type": "array", - "minItems": 4, - "items": { - "type": "array", - "additionalItems": false, - "items": [ - { - "type": "number", - "minimum": -180, - "maximum": 180 - }, - { - "type": "number", - "minimum": -90, - "maximum": 90 - } - ] - } - } - } - } - }, - "description": "MultiPolygon geometry object." - }, - "type": { - "title": "Feature Collection", - "type": "string", - "default": "FeatureCollection", - "enum": [ - "FeatureCollection" - ] - }, - "features": { - "title": "features array", - "type": "array", - "minItems": 1, - "additionalItems": false, - "items": { - "title": "FeatureObject", - "type": "object", - "required": [ - "type", - "geometry", - "properties" - ], - "additionalProperties": false, - "properties": { - "type": { - "title": "FeatureType", - "type": "string", - "default": "Feature", - "enum": [ - "Feature" - ] - }, - "geometry": { - "title": "geometryObject", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "additionalProperties": false, - "properties": { - "type": { - "title": "GeometryType", - "type": "string", - "default": "Point", - "enum": [ - "Point" - ] - }, - "coordinates": { - "type": "array", - "additionalItems": false, - "items": [ - { - "type": "number", - "minimum": -180, - "maximum": 180 - }, - { - "type": "number", - "minimum": -90, - "maximum": 90 - } - ] - } - } - }, - "properties": { - "title": "propertiesObject", - "type": "object", - "additionalProperties": false, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "amenity": { - "enum": [ - "bench", - "waste_basket" - ], - "type": "string" - }, - "barrier": { - "enum": [ - "bollard", - "kerb" - ], - "type": "string" - }, - "kerb": { - "enum": [ - "lowered", - "flush", - "raised", - "rolled" - ], - "type": "string" - }, - "tactile_paving": { - "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", - "enum": [ - "contrasted", - "no", - "primitive", - "yes" - ], - "type": "string" - }, - "emergency": { - "enum": [ - "fire_hydrant" - ], - "type": "string" - }, - "man_made": { - "enum": [ - "manhole" - ], - "type": "string" - }, - "power": { - "enum": [ - "pole" - ], - "type": "string" - }, - "highway": { - "enum": [ - "street_lamp" - ], - "type": "string" - } - }, - "required": [ - "_id" - ], - "patternProperties": { - "^ext:": {} - }, - "dependencies": { - "kerb": { - "allOf": [ - { - "required": [ - "barrier" - ], - "properties": { - "barrier": { - "type": "string", - "const": "kerb" - } - } - } - ] - }, - "tactile_paving": { - "allOf": [ - { - "required": [ - "barrier" - ], - "properties": { - "barrier": { - "type": "string", - "const": "kerb" - } - } - } - ] - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/src/python_osw_validation/schema/opensidewalks.edges.schema-0.3.json b/src/python_osw_validation/schema/opensidewalks.edges.schema-0.3.json new file mode 100644 index 0000000..e7afe75 --- /dev/null +++ b/src/python_osw_validation/schema/opensidewalks.edges.schema-0.3.json @@ -0,0 +1,1898 @@ +{ + "title": "root", + "type": "object", + "$id": "https://sidewalks.washington.edu/opensidewalks/0.3/edges.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [ + "type", + "features", + "$schema" + ], + "additionalProperties": false, + "properties": { + "$schema": { + "description": "A field for the schema id.", + "enum": [ + "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", + "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json" + ], + "type": "string" + }, + "dataSource": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "dataTimestamp": { + "format": "date-time", + "type": "string" + }, + "pipelineVersion": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "region": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "MultiPolygon", + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + } + }, + "description": "MultiPolygon geometry object." + }, + "type": { + "title": "Feature Collection", + "type": "string", + "default": "FeatureCollection", + "enum": [ + "FeatureCollection" + ] + }, + "features": { + "title": "features array", + "type": "array", + "minItems": 1, + "additionalItems": false, + "items": { + "title": "FeatureObject", + "type": "object", + "required": [ + "type", + "geometry", + "properties" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "FeatureType", + "type": "string", + "default": "Feature", + "enum": [ + "Feature" + ] + }, + "geometry": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "LineString", + "enum": [ + "LineString" + ] + }, + "coordinates": { + "title": "coordinates", + "type": "array", + "minItems": 2, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + }, + "properties": { + "title": "propertiesObject", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service", + "footway", + "living_street", + "pedestrian", + "primary", + "residential", + "secondary", + "steps", + "tertiary", + "trunk", + "unclassified" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "service": { + "enum": [ + "alley", + "driveway", + "parking_aisle" + ], + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + }, + "crossing:markings": { + "description": "A field for markings on the ground which are meant to draw attention to the area where pedestrians are to cross the road.", + "enum": [ + "dashes", + "dots", + "ladder", + "ladder:paired", + "ladder:skewed", + "lines", + "lines:paired", + "lines:rainbow", + "no", + "pictograms", + "rainbow", + "skewed", + "surface", + "yes", + "zebra", + "zebra:bicolour", + "zebra:double", + "zebra:paired", + "zebra:rainbow" + ], + "type": "string" + }, + "footway": { + "enum": [ + "crossing", + "sidewalk", + "traffic_island" + ], + "type": "string" + }, + "climb": { + "description": "A field for the climb direction of steps. You can use \"up\" or \"down\" to indicate the direction of the climb relative to the direction of the edge.", + "enum": [ + "down", + "up" + ], + "type": "string" + }, + "step_count": { + "description": "A field for number of steps in stairs.", + "maximum": 500, + "minimum": 0, + "type": "integer" + } + }, + "patternProperties": { + "^ext:.*$": {} + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "anyOf": [ + { + "title": "AlleyFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "service": { + "enum": [ + "alley" + ], + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway", + "service" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "CrossingFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "crossing:markings": { + "description": "A field for markings on the ground which are meant to draw attention to the area where pedestrians are to cross the road.", + "enum": [ + "dashes", + "dots", + "ladder", + "ladder:paired", + "ladder:skewed", + "lines", + "lines:paired", + "lines:rainbow", + "no", + "pictograms", + "rainbow", + "skewed", + "surface", + "yes", + "zebra", + "zebra:bicolour", + "zebra:double", + "zebra:paired", + "zebra:rainbow" + ], + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "footway": { + "enum": [ + "crossing" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "footway", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "DrivewayFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "service": { + "enum": [ + "driveway" + ], + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway", + "service" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "FootwayFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "LivingStreetFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "living_street" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "ParkingAisleFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "service": { + "enum": [ + "parking_aisle" + ], + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway", + "service" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "PedestrianFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "pedestrian" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "PrimaryStreetFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "primary" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "ResidentialStreetFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "residential" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "SecondaryStreetFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "ServiceRoadFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "SidewalkFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "footway": { + "enum": [ + "sidewalk" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "footway", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "StepsFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "climb": { + "description": "A field for the climb direction of steps. You can use \"up\" or \"down\" to indicate the direction of the climb relative to the direction of the edge.", + "enum": [ + "down", + "up" + ], + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "steps" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "step_count": { + "description": "A field for number of steps in stairs.", + "maximum": 500, + "minimum": 0, + "type": "integer" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "TertiaryStreetFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "tertiary" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "TrafficIslandFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "footway": { + "enum": [ + "traffic_island" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "footway", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "TrunkRoadFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "trunk" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "UnclassifiedRoadFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "unclassified" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/src/python_osw_validation/schema/opensidewalks.lines.schema-0.3.json b/src/python_osw_validation/schema/opensidewalks.lines.schema-0.3.json new file mode 100644 index 0000000..c399de5 --- /dev/null +++ b/src/python_osw_validation/schema/opensidewalks.lines.schema-0.3.json @@ -0,0 +1,328 @@ +{ + "title": "root", + "type": "object", + "$id": "https://sidewalks.washington.edu/opensidewalks/0.3/lines.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [ + "type", + "features", + "$schema" + ], + "additionalProperties": false, + "properties": { + "$schema": { + "description": "A field for the schema id.", + "enum": [ + "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", + "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json" + ], + "type": "string" + }, + "dataSource": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "dataTimestamp": { + "format": "date-time", + "type": "string" + }, + "pipelineVersion": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "region": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "MultiPolygon", + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + } + }, + "description": "MultiPolygon geometry object." + }, + "type": { + "title": "Feature Collection", + "type": "string", + "default": "FeatureCollection", + "enum": [ + "FeatureCollection" + ] + }, + "features": { + "title": "features array", + "type": "array", + "minItems": 1, + "additionalItems": false, + "items": { + "title": "FeatureObject", + "type": "object", + "required": [ + "type", + "geometry", + "properties" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "FeatureType", + "type": "string", + "default": "Feature", + "enum": [ + "Feature" + ] + }, + "geometry": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "LineString", + "enum": [ + "LineString" + ] + }, + "coordinates": { + "title": "coordinates", + "type": "array", + "minItems": 2, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + }, + "properties": { + "title": "propertiesObject", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "barrier": { + "enum": [ + "fence" + ], + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "natural": { + "enum": [ + "tree_row" + ], + "type": "string" + } + }, + "patternProperties": { + "^ext:.*$": {} + }, + "required": [ + "_id" + ], + "anyOf": [ + { + "title": "CustomLineFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "FenceFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "fence" + ], + "type": "string" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "barrier" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "TreeRowFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "natural": { + "enum": [ + "tree_row" + ], + "type": "string" + } + }, + "required": [ + "_id", + "natural" + ], + "patternProperties": { + "^ext:.*$": {} + } + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/src/python_osw_validation/schema/opensidewalks.nodes.schema-0.3.json b/src/python_osw_validation/schema/opensidewalks.nodes.schema-0.3.json new file mode 100644 index 0000000..298c64a --- /dev/null +++ b/src/python_osw_validation/schema/opensidewalks.nodes.schema-0.3.json @@ -0,0 +1,420 @@ +{ + "title": "root", + "type": "object", + "$id": "https://sidewalks.washington.edu/opensidewalks/0.3/nodes.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [ + "type", + "features", + "$schema" + ], + "additionalProperties": false, + "properties": { + "$schema": { + "description": "A field for the schema id.", + "enum": [ + "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", + "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json" + ], + "type": "string" + }, + "dataSource": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "dataTimestamp": { + "format": "date-time", + "type": "string" + }, + "pipelineVersion": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "region": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "MultiPolygon", + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + } + }, + "description": "MultiPolygon geometry object." + }, + "type": { + "title": "Feature Collection", + "type": "string", + "default": "FeatureCollection", + "enum": [ + "FeatureCollection" + ] + }, + "features": { + "title": "features array", + "type": "array", + "minItems": 1, + "additionalItems": false, + "items": { + "title": "FeatureObject", + "type": "object", + "required": [ + "type", + "geometry", + "properties" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "FeatureType", + "type": "string", + "default": "Feature", + "enum": [ + "Feature" + ] + }, + "geometry": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "Point", + "enum": [ + "Point" + ] + }, + "coordinates": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + }, + "properties": { + "title": "propertiesObject", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "lowered", + "flush", + "raised", + "rolled" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "patternProperties": { + "^ext:.*$": {} + }, + "required": [ + "_id" + ], + "anyOf": [ + { + "title": "BareNodeFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "_id" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "CurbRampFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "lowered" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "FlushCurbFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "flush" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "GenericCurbFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "RaisedCurbFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "raised" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "RolledCurbFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "rolled" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "patternProperties": { + "^ext:.*$": {} + } + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/src/python_osw_validation/schema/opensidewalks.points.schema-0.3.json b/src/python_osw_validation/schema/opensidewalks.points.schema-0.3.json new file mode 100644 index 0000000..9aa9ddb --- /dev/null +++ b/src/python_osw_validation/schema/opensidewalks.points.schema-0.3.json @@ -0,0 +1,474 @@ +{ + "title": "root", + "type": "object", + "$id": "https://sidewalks.washington.edu/opensidewalks/0.3/points.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [ + "type", + "features", + "$schema" + ], + "additionalProperties": false, + "properties": { + "$schema": { + "description": "A field for the schema id.", + "enum": [ + "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", + "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json" + ], + "type": "string" + }, + "dataSource": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "dataTimestamp": { + "format": "date-time", + "type": "string" + }, + "pipelineVersion": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "region": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "MultiPolygon", + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + } + }, + "description": "MultiPolygon geometry object." + }, + "type": { + "title": "Feature Collection", + "type": "string", + "default": "FeatureCollection", + "enum": [ + "FeatureCollection" + ] + }, + "features": { + "title": "features array", + "type": "array", + "minItems": 1, + "additionalItems": false, + "items": { + "title": "FeatureObject", + "type": "object", + "required": [ + "type", + "geometry", + "properties" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "FeatureType", + "type": "string", + "default": "Feature", + "enum": [ + "Feature" + ] + }, + "geometry": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "Point", + "enum": [ + "Point" + ] + }, + "coordinates": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + }, + "properties": { + "title": "propertiesObject", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "amenity": { + "enum": [ + "bench", + "waste_basket" + ], + "type": "string" + }, + "barrier": { + "enum": [ + "bollard" + ], + "type": "string" + }, + "emergency": { + "enum": [ + "fire_hydrant" + ], + "type": "string" + }, + "man_made": { + "enum": [ + "manhole" + ], + "type": "string" + }, + "power": { + "enum": [ + "pole" + ], + "type": "string" + }, + "highway": { + "enum": [ + "street_lamp" + ], + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "natural": { + "enum": [ + "tree" + ], + "type": "string" + } + }, + "patternProperties": { + "^ext:.*$": {} + }, + "required": [ + "_id" + ], + "anyOf": [ + { + "title": "BenchFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "amenity": { + "enum": [ + "bench" + ], + "type": "string" + } + }, + "required": [ + "_id", + "amenity" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "BollardFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "bollard" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "CustomPointFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "_id" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "FireHydrantFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "emergency": { + "enum": [ + "fire_hydrant" + ], + "type": "string" + } + }, + "required": [ + "_id", + "emergency" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "ManholeFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "man_made": { + "enum": [ + "manhole" + ], + "type": "string" + } + }, + "required": [ + "_id", + "man_made" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "PowerPoleFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "power": { + "enum": [ + "pole" + ], + "type": "string" + } + }, + "required": [ + "_id", + "power" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "StreetLampFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "highway": { + "enum": [ + "street_lamp" + ], + "type": "string" + } + }, + "required": [ + "_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "TreeFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "natural": { + "enum": [ + "tree" + ], + "type": "string" + } + }, + "required": [ + "_id", + "natural" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "WasteBasketFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "amenity": { + "enum": [ + "waste_basket" + ], + "type": "string" + } + }, + "required": [ + "_id", + "amenity" + ], + "patternProperties": { + "^ext:.*$": {} + } + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/src/python_osw_validation/schema/opensidewalks.polygons.schema-0.3.json b/src/python_osw_validation/schema/opensidewalks.polygons.schema-0.3.json new file mode 100644 index 0000000..3f48af4 --- /dev/null +++ b/src/python_osw_validation/schema/opensidewalks.polygons.schema-0.3.json @@ -0,0 +1,525 @@ +{ + "title": "root", + "type": "object", + "$id": "https://sidewalks.washington.edu/opensidewalks/0.3/polygons.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [ + "type", + "features", + "$schema" + ], + "additionalProperties": false, + "properties": { + "$schema": { + "description": "A field for the schema id.", + "enum": [ + "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", + "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json" + ], + "type": "string" + }, + "dataSource": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "dataTimestamp": { + "format": "date-time", + "type": "string" + }, + "pipelineVersion": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "region": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "MultiPolygon", + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + } + }, + "description": "MultiPolygon geometry object." + }, + "type": { + "title": "Feature Collection", + "type": "string", + "default": "FeatureCollection", + "enum": [ + "FeatureCollection" + ] + }, + "features": { + "title": "features array", + "type": "array", + "minItems": 1, + "additionalItems": false, + "items": { + "title": "FeatureObject", + "type": "object", + "required": [ + "type", + "geometry", + "properties" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "FeatureType", + "type": "string", + "default": "Feature", + "enum": [ + "Feature" + ] + }, + "geometry": { + "title": "geometryObject", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "additionalProperties": false, + "properties": { + "type": { + "title": "GeometryType", + "type": "string", + "default": "Polygon", + "enum": [ + "Polygon" + ] + }, + "coordinates": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "additionalItems": false, + "items": [ + { + "type": "number", + "minimum": -180, + "maximum": 180 + }, + { + "type": "number", + "minimum": -90, + "maximum": 90 + }, + { + "type": "number" + } + ] + } + } + } + } + }, + "properties": { + "title": "propertiesObject", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "building": { + "description": "A field for markings a given object as a building.", + "enum": [ + "allotment_house", + "apartments", + "bakehouse", + "barn", + "barracks", + "beach_hut", + "boathouse", + "bridge", + "bungalow", + "bunker", + "cabin", + "carport", + "castle", + "cathedral", + "chapel", + "church", + "civic", + "college", + "commercial", + "conservatory", + "construction", + "container", + "cowshed", + "detached", + "digester", + "dormitory", + "farm", + "farm_auxiliary", + "fire_station", + "garage", + "garages", + "gatehouse", + "ger", + "government", + "grandstand", + "greenhouse", + "guardhouse", + "hangar", + "hospital", + "hotel", + "house", + "houseboat", + "hut", + "industrial", + "kindergarten", + "kingdom_hall", + "kiosk", + "livestock", + "military", + "monastery", + "mosque", + "museum", + "office", + "outbuilding", + "pagoda", + "parking", + "pavilion", + "presbytery", + "public", + "quonset_hut", + "religious", + "residential", + "retail", + "riding_hall", + "roof", + "ruins", + "school", + "semidetached_house", + "service", + "shed", + "shrine", + "silo", + "slurry_tank", + "sports_centre", + "sports_hall", + "stable", + "stadium", + "static_caravan", + "stilt_house", + "storage_tank", + "sty", + "supermarket", + "synagogue", + "tech_cab", + "temple", + "tent", + "terrace", + "toilets", + "tower", + "train_station", + "transformer_tower", + "transportation", + "tree_house", + "trullo", + "university", + "warehouse", + "water_tower", + "windmill", + "yes" + ], + "type": "string" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "opening_hours": { + "description": "A field for the opening hours of an entity. The value is in OpenStreetMap syntax for the opening_hours tag. See [OpenStreetMap specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification) on the formatting for this field.", + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "natural": { + "enum": [ + "wood" + ], + "type": "string" + } + }, + "patternProperties": { + "^ext:.*$": {} + }, + "required": [ + "_id" + ], + "anyOf": [ + { + "title": "BuildingFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "building": { + "description": "A field for markings a given object as a building.", + "enum": [ + "allotment_house", + "apartments", + "bakehouse", + "barn", + "barracks", + "beach_hut", + "boathouse", + "bridge", + "bungalow", + "bunker", + "cabin", + "carport", + "castle", + "cathedral", + "chapel", + "church", + "civic", + "college", + "commercial", + "conservatory", + "construction", + "container", + "cowshed", + "detached", + "digester", + "dormitory", + "farm", + "farm_auxiliary", + "fire_station", + "garage", + "garages", + "gatehouse", + "ger", + "government", + "grandstand", + "greenhouse", + "guardhouse", + "hangar", + "hospital", + "hotel", + "house", + "houseboat", + "hut", + "industrial", + "kindergarten", + "kingdom_hall", + "kiosk", + "livestock", + "military", + "monastery", + "mosque", + "museum", + "office", + "outbuilding", + "pagoda", + "parking", + "pavilion", + "presbytery", + "public", + "quonset_hut", + "religious", + "residential", + "retail", + "riding_hall", + "roof", + "ruins", + "school", + "semidetached_house", + "service", + "shed", + "shrine", + "silo", + "slurry_tank", + "sports_centre", + "sports_hall", + "stable", + "stadium", + "static_caravan", + "stilt_house", + "storage_tank", + "sty", + "supermarket", + "synagogue", + "tech_cab", + "temple", + "tent", + "terrace", + "toilets", + "tower", + "train_station", + "transformer_tower", + "transportation", + "tree_house", + "trullo", + "university", + "warehouse", + "water_tower", + "windmill", + "yes" + ], + "type": "string" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "opening_hours": { + "description": "A field for the opening hours of an entity. The value is in OpenStreetMap syntax for the opening_hours tag. See [OpenStreetMap specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification) on the formatting for this field.", + "type": "string" + } + }, + "required": [ + "_id", + "building" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "CustomPolygonFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "_id" + ], + "patternProperties": { + "^ext:.*$": {} + } + }, + { + "title": "WoodFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "natural": { + "enum": [ + "wood" + ], + "type": "string" + } + }, + "required": [ + "_id", + "natural" + ], + "patternProperties": { + "^ext:.*$": {} + } + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/src/python_osw_validation/schema/opensidewalks.schema-0.3.json b/src/python_osw_validation/schema/opensidewalks.schema-0.3.json new file mode 100644 index 0000000..59b8994 --- /dev/null +++ b/src/python_osw_validation/schema/opensidewalks.schema-0.3.json @@ -0,0 +1,6153 @@ +{ + "$id": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "definitions": { + "Alley": { + "additionalProperties": false, + "description": "The centerline of an alley. An alley is usually located between properties and provides access to utilities and private entrances.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/AlleyFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "AlleyFields": { + "additionalProperties": false, + "description": "Fields that apply to an alley.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "service": { + "enum": [ + "alley" + ], + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway", + "service" + ], + "type": "object" + }, + "BareNode": { + "additionalProperties": false, + "description": "A node that is merely part of the graph structure but has no metadata or meaning of its own. For example, a sidewalk may be split into two edges because they have differing widths, so they must be joined by a node - but there is no data to place on the node itself beyond basic spatial and graph primitives.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/BareNodeFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "BareNodeFields": { + "additionalProperties": false, + "description": "Fields that apply to a bare node.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "_id" + ], + "type": "object" + }, + "Bench": { + "additionalProperties": false, + "description": "A bench - a place for people to sit; allows room for several people.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/BenchFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "BenchFields": { + "additionalProperties": false, + "description": "Fields that apply to a bench.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "amenity": { + "enum": [ + "bench" + ], + "type": "string" + } + }, + "required": [ + "_id", + "amenity" + ], + "type": "object" + }, + "Bollard": { + "additionalProperties": false, + "description": "A Bollard - a solid pillar or pillars made of concrete, metal, plastic, etc., and used to control traffic.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/BollardFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "BollardFields": { + "additionalProperties": false, + "description": "Fields that apply to a bollard.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "bollard" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier" + ], + "type": "object" + }, + "Building": { + "additionalProperties": false, + "description": "A building is a man-made structure with a roof, standing more or less permanently in one place.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Polygon", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/BuildingFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "BuildingField": { + "description": "A field for markings a given object as a building.", + "enum": [ + "allotment_house", + "apartments", + "bakehouse", + "barn", + "barracks", + "beach_hut", + "boathouse", + "bridge", + "bungalow", + "bunker", + "cabin", + "carport", + "castle", + "cathedral", + "chapel", + "church", + "civic", + "college", + "commercial", + "conservatory", + "construction", + "container", + "cowshed", + "detached", + "digester", + "dormitory", + "farm", + "farm_auxiliary", + "fire_station", + "garage", + "garages", + "gatehouse", + "ger", + "government", + "grandstand", + "greenhouse", + "guardhouse", + "hangar", + "hospital", + "hotel", + "house", + "houseboat", + "hut", + "industrial", + "kindergarten", + "kingdom_hall", + "kiosk", + "livestock", + "military", + "monastery", + "mosque", + "museum", + "office", + "outbuilding", + "pagoda", + "parking", + "pavilion", + "presbytery", + "public", + "quonset_hut", + "religious", + "residential", + "retail", + "riding_hall", + "roof", + "ruins", + "school", + "semidetached_house", + "service", + "shed", + "shrine", + "silo", + "slurry_tank", + "sports_centre", + "sports_hall", + "stable", + "stadium", + "static_caravan", + "stilt_house", + "storage_tank", + "sty", + "supermarket", + "synagogue", + "tech_cab", + "temple", + "tent", + "terrace", + "toilets", + "tower", + "train_station", + "transformer_tower", + "transportation", + "tree_house", + "trullo", + "university", + "warehouse", + "water_tower", + "windmill", + "yes" + ], + "type": "string" + }, + "BuildingFields": { + "additionalProperties": false, + "description": "Fields that apply to a building.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "building": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/BuildingField" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "opening_hours": { + "description": "A field for the opening hours of an entity. The value is in OpenStreetMap syntax for the opening_hours tag. See [OpenStreetMap specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification) on the formatting for this field.", + "type": "string" + } + }, + "required": [ + "_id", + "building" + ], + "type": "object" + }, + "Crossing": { + "additionalProperties": false, + "description": "The centerline of a pedestrian street crossing. This path exists only on the road surface itself, i.e. \"from curb to curb\". Crossings should not be connected directly to sidewalk centerlines - instead, a short footpath (this schema calls them \"links\") should connect the two together.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CrossingFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "CrossingFields": { + "additionalProperties": false, + "description": "Fields that apply to a crossing.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "crossing:markings": { + "description": "A field for markings on the ground which are meant to draw attention to the area where pedestrians are to cross the road.", + "enum": [ + "dashes", + "dots", + "ladder", + "ladder:paired", + "ladder:skewed", + "lines", + "lines:paired", + "lines:rainbow", + "no", + "pictograms", + "rainbow", + "skewed", + "surface", + "yes", + "zebra", + "zebra:bicolour", + "zebra:double", + "zebra:paired", + "zebra:rainbow" + ], + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "footway": { + "enum": [ + "crossing" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "footway", + "highway" + ], + "type": "object" + }, + "CurbRamp": { + "additionalProperties": false, + "description": "A curb ramp (curb cut) mapped as a curb interface. Mapped at the location where the two edges that it connects meet one another.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CurbRampFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "CurbRampFields": { + "additionalProperties": false, + "description": "Fields that apply to a curb ramp.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "lowered" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "type": "object" + }, + "CustomLine": { + "additionalProperties": false, + "description": "A custom line is a user-defined LineString feature. It can represent any custom path or linear infrastructure (e.g., temporary detour route).", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CustomLineFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "CustomLineFields": { + "additionalProperties": false, + "description": "Fields that apply to a custom line.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id" + ], + "type": "object" + }, + "CustomPoint": { + "additionalProperties": false, + "description": "A custom point is a user-defined Point feature. It can represent any custom-location marker (e.g., a survey marker).", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CustomPointFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "CustomPointFields": { + "additionalProperties": false, + "description": "Fields that apply to a custom point.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "_id" + ], + "type": "object" + }, + "CustomPolygon": { + "additionalProperties": false, + "description": "A custom polygon is a user-defined Polygon feature. It can represent any custom area or zone (e.g., event footprint).", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Polygon", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CustomPolygonFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "CustomPolygonFields": { + "additionalProperties": false, + "description": "Fields that apply to a custom polygon.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "_id" + ], + "type": "object" + }, + "Driveway": { + "additionalProperties": false, + "description": "The centerline of a driveway. Typically connects a residence or business to another road.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/DrivewayFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "DrivewayFields": { + "additionalProperties": false, + "description": "Fields that apply to a driveway.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "service": { + "enum": [ + "driveway" + ], + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway", + "service" + ], + "type": "object" + }, + "Fence": { + "additionalProperties": false, + "description": "A fence is a freestanding structure designed to restrict or prevent movement across a boundary. It is generally distinguished from a wall by the lightness of its construction.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/FenceFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "FenceFields": { + "additionalProperties": false, + "description": "Fields that apply to a fence.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "fence" + ], + "type": "string" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "barrier" + ], + "type": "object" + }, + "FireHydrant": { + "additionalProperties": false, + "description": "A fire hydrant - where fire response teams connect high-pressure hoses.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/FireHydrantFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "FireHydrantFields": { + "additionalProperties": false, + "description": "Fields that apply to a fire hydrant.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "emergency": { + "enum": [ + "fire_hydrant" + ], + "type": "string" + } + }, + "required": [ + "_id", + "emergency" + ], + "type": "object" + }, + "FlushCurb": { + "additionalProperties": false, + "description": "An indicator that there is no raised curb interface where two paths meet - i.e. where someone might expect a curb interface, such as where a crossing and footpath meet.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/FlushCurbFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "FlushCurbFields": { + "additionalProperties": false, + "description": "Fields that apply to a flush curb.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "flush" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "type": "object" + }, + "Footway": { + "additionalProperties": false, + "description": "The centerline of a dedicated pedestrian pathway that does not fall into any other subcategories.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/FootwayFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "FootwayFields": { + "additionalProperties": false, + "description": "Fields that apply to a footway.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "GenericCurb": { + "additionalProperties": false, + "description": "A curb for which a type has not been determined yet or a type could not be determined despite some effort.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GenericCurbFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "GenericCurbFields": { + "additionalProperties": false, + "description": "Fields that apply to a generic curb.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier" + ], + "type": "object" + }, + "GeoJSON.LineString": { + "additionalProperties": false, + "description": "LineString geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.4", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "coordinates": { + "items": { + "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "LineString" + ], + "type": "string" + } + }, + "required": [ + "coordinates", + "type" + ], + "type": "object" + }, + "GeoJSON.MultiPolygon": { + "additionalProperties": false, + "description": "MultiPolygon geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.7", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "coordinates": { + "items": { + "items": { + "items": { + "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + }, + "type": "array" + }, + "type": "array" + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "MultiPolygon" + ], + "type": "string" + } + }, + "required": [ + "coordinates", + "type" + ], + "type": "object" + }, + "GeoJSON.Point": { + "additionalProperties": false, + "description": "Point geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.2", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "coordinates": { + "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", + "items": { + "type": "number" + }, + "type": "array" + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Point" + ], + "type": "string" + } + }, + "required": [ + "coordinates", + "type" + ], + "type": "object" + }, + "GeoJSON.Polygon": { + "additionalProperties": false, + "description": "Polygon geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.6", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "coordinates": { + "items": { + "items": { + "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + }, + "type": "array" + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Polygon" + ], + "type": "string" + } + }, + "required": [ + "coordinates", + "type" + ], + "type": "object" + }, + "LivingStreet": { + "additionalProperties": false, + "description": "A street designed with the interests of pedestrians and cyclists in mind by providing enriching and experiential spaces.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/LivingStreetFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "LivingStreetFields": { + "additionalProperties": false, + "description": "Fields that apply to a living street.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "living_street" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "Manhole": { + "additionalProperties": false, + "description": "A manhole - a hole with a cover that allows access to an underground service location, just large enough for a human to climb through.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/ManholeFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "ManholeFields": { + "additionalProperties": false, + "description": "Fields that apply to a manhole.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "man_made": { + "enum": [ + "manhole" + ], + "type": "string" + } + }, + "required": [ + "_id", + "man_made" + ], + "type": "object" + }, + "ParkingAisle": { + "additionalProperties": false, + "description": "The centerline of a subordinated way in a parking lot: vehicles drive on parking aisles to reach parking spaces in a parking lot.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/ParkingAisleFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "ParkingAisleFields": { + "additionalProperties": false, + "description": "Fields that apply to a parking aisle.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "service": { + "enum": [ + "parking_aisle" + ], + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway", + "service" + ], + "type": "object" + }, + "Pedestrian": { + "additionalProperties": false, + "description": "For a road or an area mainly or exclusively for pedestrians in which some vehicle traffic may be authorized.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/PedestrianFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "PedestrianFields": { + "additionalProperties": false, + "description": "Fields that apply to a pedestrian road.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "pedestrian" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "PedestrianZone": { + "additionalProperties": false, + "description": "An area where pedestrians can travel freely in all directions.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Polygon", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/PedestrianZoneFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "PedestrianZoneFields": { + "additionalProperties": false, + "description": "Fields that apply to a pedestrian zone.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_w_id": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "pedestrian" + ], + "type": "string" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + } + }, + "required": [ + "_id", + "_w_id", + "highway" + ], + "type": "object" + }, + "PowerPole": { + "additionalProperties": false, + "description": "A power pole. Often made of wood or metal, they hold power lines.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/PowerPoleFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "PowerPoleFields": { + "additionalProperties": false, + "description": "Fields that apply to a power pole.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "power": { + "enum": [ + "pole" + ], + "type": "string" + } + }, + "required": [ + "_id", + "power" + ], + "type": "object" + }, + "PrimaryStreet": { + "additionalProperties": false, + "description": "The centerline of a major highway.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/PrimaryStreetFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "PrimaryStreetFields": { + "additionalProperties": false, + "description": "Fields that apply to a primary street.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "primary" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "RaisedCurb": { + "additionalProperties": false, + "description": "A single, designed vertical displacement that separates two edges. A common example is the curb that separates a street crossing from a sidewalk. This is mapped at the point where the two edges meet - on top of the curb is physically located.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/RaisedCurbFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "RaisedCurbFields": { + "additionalProperties": false, + "description": "Fields that apply to a raised curb.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "raised" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "type": "object" + }, + "ResidentialStreet": { + "additionalProperties": false, + "description": "A residential street.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/ResidentialStreetFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "ResidentialStreetFields": { + "additionalProperties": false, + "description": "Fields that apply to a residential street.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "residential" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "RolledCurb": { + "additionalProperties": false, + "description": "A curb interface with a quarter-circle profile: traversing this curb is like going over half of a bump. Located where two edges meet, physically at the location of the curb itself.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/RolledCurbFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "RolledCurbFields": { + "additionalProperties": false, + "description": "Fields that apply to a rolled curb.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "barrier": { + "enum": [ + "kerb" + ], + "type": "string" + }, + "kerb": { + "enum": [ + "rolled" + ], + "type": "string" + }, + "tactile_paving": { + "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", + "enum": [ + "contrasted", + "no", + "primitive", + "yes" + ], + "type": "string" + } + }, + "required": [ + "_id", + "barrier", + "kerb" + ], + "type": "object" + }, + "SecondaryStreet": { + "additionalProperties": false, + "description": "The centerline of a secondary highway: not a major highway, but forms a major link in the national route network.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/SecondaryStreetFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "SecondaryStreetFields": { + "additionalProperties": false, + "description": "Fields that apply to a secondary street.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "secondary" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "ServiceRoad": { + "additionalProperties": false, + "description": "A road intended for service use.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/ServiceRoadFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "ServiceRoadFields": { + "additionalProperties": false, + "description": "Fields that apply to a service road.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "service" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "Sidewalk": { + "additionalProperties": false, + "description": "The centerline of a sidewalk, a designated pedestrian pathway to the side of a street.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/SidewalkFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "SidewalkFields": { + "additionalProperties": false, + "description": "Fields that apply to a sidewalk.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "footway": { + "enum": [ + "sidewalk" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "footway", + "highway" + ], + "type": "object" + }, + "Steps": { + "additionalProperties": false, + "description": "For flights of steps on footways and paths.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/StepsFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "StepsFields": { + "additionalProperties": false, + "description": "Fields that apply to steps.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "climb": { + "description": "A field for the climb direction of steps. You can use \"up\" or \"down\" to indicate the direction of the climb relative to the direction of the edge.", + "enum": [ + "down", + "up" + ], + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "steps" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "step_count": { + "description": "A field for number of steps in stairs.", + "maximum": 500, + "minimum": 0, + "type": "integer" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "StreetLamp": { + "additionalProperties": false, + "description": "A street lamp - a street light, lamppost, street lamp, light standard, or lamp standard: a raised source of light above a road, which is turned on or lit at night.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/StreetLampFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "StreetLampFields": { + "additionalProperties": false, + "description": "Fields that apply to a street lamp.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "highway": { + "enum": [ + "street_lamp" + ], + "type": "string" + } + }, + "required": [ + "_id", + "highway" + ], + "type": "object" + }, + "TertiaryStreet": { + "additionalProperties": false, + "description": "A road linking small settlements, or the local centers of a large town or city.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TertiaryStreetFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "TertiaryStreetFields": { + "additionalProperties": false, + "description": "Fields that apply to a tertiary street.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "tertiary" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "TrafficIsland": { + "additionalProperties": false, + "description": "The centerline of a footpath traversing a traffic island. Some complex, long, or busy pedestrian crossings have a built-up \"island\" to protect pedestrians, splitting up the crossing of the street into two or more crossings. As a pedestrian uses this crossing, they will transition across these path elements: sidewalk \u2192 footway \u2192 crossing \u2192 traffic island \u2192 crossing \u2192 footway \u2192 sidewalk.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TrafficIslandFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "TrafficIslandFields": { + "additionalProperties": false, + "description": "Fields that apply to a traffic island.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "footway": { + "enum": [ + "traffic_island" + ], + "type": "string" + }, + "highway": { + "enum": [ + "footway" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "footway", + "highway" + ], + "type": "object" + }, + "Tree": { + "additionalProperties": false, + "description": "A tree - a tall, woody plant with branches emanating from a central trunk.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TreeFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "TreeFields": { + "additionalProperties": false, + "description": "Fields that apply to a tree.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "natural": { + "enum": [ + "tree" + ], + "type": "string" + } + }, + "required": [ + "_id", + "natural" + ], + "type": "object" + }, + "TreeRow": { + "additionalProperties": false, + "description": "A tree row is a line of trees often found along roadways, property lines, or at the edges of farms.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TreeRowFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "TreeRowFields": { + "additionalProperties": false, + "description": "Fields that apply to a tree row.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "natural": { + "enum": [ + "tree_row" + ], + "type": "string" + } + }, + "required": [ + "_id", + "natural" + ], + "type": "object" + }, + "TrunkRoad": { + "additionalProperties": false, + "description": "A high-performance or high-importance roads that don't meet the requirements for motorway, but are not classified as highway=primary either.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TrunkRoadFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "TrunkRoadFields": { + "additionalProperties": false, + "description": "Fields that apply to a trunk road.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "trunk" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "UnclassifiedRoad": { + "additionalProperties": false, + "description": "A minor public roads, typically at the lowest level of whatever administrative hierarchy is used in that jurisdiction.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.LineString", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/UnclassifiedRoadFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "UnclassifiedRoadFields": { + "additionalProperties": false, + "description": "Fields that apply to an unclassified road.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_u_id": { + "minLength": 1, + "type": "string" + }, + "_v_id": { + "minLength": 1, + "type": "string" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" + ], + "type": "string" + }, + "highway": { + "enum": [ + "unclassified" + ], + "type": "string" + }, + "incline": { + "description": "A field for the estimated incline over a particular path, i.e.\u00a0slope, i.e.\u00a0grade, i.e.\u00a0rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", + "maximum": 1, + "minimum": -1, + "type": "number" + }, + "length": { + "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", + "maximum": 5000, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" + ], + "type": "string" + }, + "width": { + "description": "A field for width of an entity in meters.", + "maximum": 500, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "_id", + "_u_id", + "_v_id", + "highway" + ], + "type": "object" + }, + "WasteBasket": { + "additionalProperties": false, + "description": "A waste basket - a single small container for depositing garbage that is easily accessible for pedestrians.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Point", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/WasteBasketFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "WasteBasketFields": { + "additionalProperties": false, + "description": "Fields that apply to a waste basket.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "amenity": { + "enum": [ + "waste_basket" + ], + "type": "string" + } + }, + "required": [ + "_id", + "amenity" + ], + "type": "object" + }, + "Wood": { + "additionalProperties": false, + "description": "Wood - tree-covered area.", + "properties": { + "bbox": { + "anyOf": [ + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 4, + "minItems": 4, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ], + "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" + }, + "geometry": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.Polygon", + "description": "The feature's geometry" + }, + "id": { + "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", + "type": [ + "string", + "number" + ] + }, + "properties": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/WoodFields", + "description": "Properties associated with this feature." + }, + "type": { + "description": "Specifies the type of GeoJSON object.", + "enum": [ + "Feature" + ], + "type": "string" + } + }, + "required": [ + "geometry", + "properties", + "type" + ], + "type": "object" + }, + "WoodFields": { + "additionalProperties": false, + "description": "Fields that apply to woods.", + "patternProperties": { + "^ext:.*$": {} + }, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "leaf_cycle": { + "description": "A field that describes the phenology of leaves, for instance evergreen or deciduous.", + "enum": [ + "deciduous", + "evergreen", + "mixed", + "semi_deciduous", + "semi_evergreen" + ], + "type": "string" + }, + "leaf_type": { + "description": "A field that describes the type of leaves, for instance broadleaved, or needleleaved.", + "enum": [ + "broadleaved", + "leafless", + "mixed", + "needleleaved" + ], + "type": "string" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "natural": { + "enum": [ + "wood" + ], + "type": "string" + } + }, + "required": [ + "_id", + "natural" + ], + "type": "object" + } + }, + "properties": { + "$schema": { + "description": "A field for the schema id.", + "enum": [ + "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json" + ], + "type": "string" + }, + "dataSource": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "dataTimestamp": { + "format": "date-time", + "type": "string" + }, + "features": { + "items": { + "anyOf": [ + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/BareNode", + "description": "A node that is merely part of the graph structure but has no metadata or meaning of its own. For example, a sidewalk may be split into two edges because they have differing widths, so they must be joined by a node - but there is no data to place on the node itself beyond basic spatial and graph primitives." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CurbRamp", + "description": "A curb ramp (curb cut) mapped as a curb interface. Mapped at the location where the two edges that it connects meet one another." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/FlushCurb", + "description": "An indicator that there is no raised curb interface where two paths meet - i.e. where someone might expect a curb interface, such as where a crossing and footpath meet." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GenericCurb", + "description": "A curb for which a type has not been determined yet or a type could not be determined despite some effort." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/RaisedCurb", + "description": "A single, designed vertical displacement that separates two edges. A common example is the curb that separates a street crossing from a sidewalk. This is mapped at the point where the two edges meet - on top of the curb is physically located." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/RolledCurb", + "description": "A curb interface with a quarter-circle profile: traversing this curb is like going over half of a bump. Located where two edges meet, physically at the location of the curb itself." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Footway", + "description": "The centerline of a dedicated pedestrian pathway that does not fall into any other subcategories." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Crossing", + "description": "The centerline of a pedestrian street crossing. This path exists only on the road surface itself, i.e. \"from curb to curb\". Crossings should not be connected directly to sidewalk centerlines - instead, a short footpath (this schema calls them \"links\") should connect the two together." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Sidewalk", + "description": "The centerline of a sidewalk, a designated pedestrian pathway to the side of a street." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TrafficIsland", + "description": "The centerline of a footpath traversing a traffic island. Some complex, long, or busy pedestrian crossings have a built-up \"island\" to protect pedestrians, splitting up the crossing of the street into two or more crossings. As a pedestrian uses this crossing, they will transition across these path elements: sidewalk \u2192 footway \u2192 crossing \u2192 traffic island \u2192 crossing \u2192 footway \u2192 sidewalk." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Steps", + "description": "For flights of steps on footways and paths." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Pedestrian", + "description": "For a road or an area mainly or exclusively for pedestrians in which some vehicle traffic may be authorized." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/PrimaryStreet", + "description": "The centerline of a major highway." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/SecondaryStreet", + "description": "The centerline of a secondary highway: not a major highway, but forms a major link in the national route network." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TertiaryStreet", + "description": "A road linking small settlements, or the local centers of a large town or city." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/ResidentialStreet", + "description": "A residential street." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/ServiceRoad", + "description": "A road intended for service use." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Alley", + "description": "The centerline of an alley. An alley is usually located between properties and provides access to utilities and private entrances." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Driveway", + "description": "The centerline of a driveway. Typically connects a residence or business to another road." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/ParkingAisle", + "description": "The centerline of a subordinated way in a parking lot: vehicles drive on parking aisles to reach parking spaces in a parking lot." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TrunkRoad", + "description": "A high-performance or high-importance roads that don't meet the requirements for motorway, but are not classified as highway=primary either." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/UnclassifiedRoad", + "description": "A minor public roads, typically at the lowest level of whatever administrative hierarchy is used in that jurisdiction." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/LivingStreet", + "description": "A street designed with the interests of pedestrians and cyclists in mind by providing enriching and experiential spaces." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/FireHydrant", + "description": "A fire hydrant - where fire response teams connect high-pressure hoses." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/PowerPole", + "description": "A power pole. Often made of wood or metal, they hold power lines." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Bench", + "description": "A bench - a place for people to sit; allows room for several people." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/WasteBasket", + "description": "A waste basket - a single small container for depositing garbage that is easily accessible for pedestrians." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Manhole", + "description": "A manhole - a hole with a cover that allows access to an underground service location, just large enough for a human to climb through." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Bollard", + "description": "A Bollard - a solid pillar or pillars made of concrete, metal, plastic, etc., and used to control traffic." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/StreetLamp", + "description": "A street lamp - a street light, lamppost, street lamp, light standard, or lamp standard: a raised source of light above a road, which is turned on or lit at night." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Tree", + "description": "A tree - a tall, woody plant with branches emanating from a central trunk." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/PedestrianZone", + "description": "An area where pedestrians can travel freely in all directions." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Fence", + "description": "A fence is a freestanding structure designed to restrict or prevent movement across a boundary. It is generally distinguished from a wall by the lightness of its construction." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/TreeRow", + "description": "A tree row is a line of trees often found along roadways, property lines, or at the edges of farms." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Building", + "description": "A building is a man-made structure with a roof, standing more or less permanently in one place." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/Wood", + "description": "Wood - tree-covered area." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CustomLine", + "description": "A custom line is a user-defined LineString feature. It can represent any custom path or linear infrastructure (e.g., temporary detour route)." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CustomPoint", + "description": "A custom point is a user-defined Point feature. It can represent any custom-location marker (e.g., a survey marker)." + }, + { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/CustomPolygon", + "description": "A custom polygon is a user-defined Polygon feature. It can represent any custom area or zone (e.g., event footprint)." + } + ] + }, + "type": "array" + }, + "pipelineVersion": { + "additionalProperties": true, + "properties": {}, + "type": "object" + }, + "region": { + "$ref": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json#/definitions/GeoJSON.MultiPolygon", + "description": "MultiPolygon geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.7" + }, + "type": { + "enum": [ + "FeatureCollection" + ], + "type": "string" + } + }, + "required": [ + "$schema", + "features", + "type" + ], + "type": "object" +} diff --git a/src/python_osw_validation/schema/opensidewalks.schema.json b/src/python_osw_validation/schema/opensidewalks.schema.json deleted file mode 100644 index d99aa2d..0000000 --- a/src/python_osw_validation/schema/opensidewalks.schema.json +++ /dev/null @@ -1,5464 +0,0 @@ -{ - "$id": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": false, - "definitions": { - "Alley": { - "additionalProperties": false, - "description": "The centerline of an alley. An alley is usually located between properties and provides access to utilities and private entrances.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/AlleyFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "AlleyFields": { - "additionalProperties": false, - "description": "Fields that apply to an alley.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "service" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "service": { - "enum": [ - "alley" - ], - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway", - "service" - ], - "type": "object" - }, - "BareNode": { - "additionalProperties": false, - "description": "A node that is merely part of the graph structure but has no metadata or meaning of its own. For example, a sidewalk may be split into two edges because they have differing widths, so they must be joined by a node - but there is no data to place on the node itself beyond basic spatial and graph primitives.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/BareNodeFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "BareNodeFields": { - "additionalProperties": false, - "description": "Fields that apply to a bare node.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "_id" - ], - "type": "object" - }, - "Bench": { - "additionalProperties": false, - "description": "A bench - a place for people to sit; allows room for several people.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/BenchFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "BenchFields": { - "additionalProperties": false, - "description": "Fields that apply to a bench.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "amenity": { - "enum": [ - "bench" - ], - "type": "string" - } - }, - "required": [ - "_id", - "amenity" - ], - "type": "object" - }, - "Bollard": { - "additionalProperties": false, - "description": "A Bollard - a solid pillar or pillars made of concrete, metal, plastic, etc., and used to control traffic.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/BollardFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "BollardFields": { - "additionalProperties": false, - "description": "Fields that apply to a bollard.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "barrier": { - "enum": [ - "bollard" - ], - "type": "string" - } - }, - "required": [ - "_id", - "barrier" - ], - "type": "object" - }, - "Building": { - "additionalProperties": false, - "description": "A building is a man-made structure with a roof, standing more or less permanently in one place.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Polygon", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/BuildingFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "BuildingField": { - "description": "A field for markings a given object as a building.", - "enum": [ - "allotment_house", - "apartments", - "bakehouse", - "barn", - "barracks", - "beach_hut", - "boathouse", - "bridge", - "bungalow", - "bunker", - "cabin", - "carport", - "castle", - "cathedral", - "chapel", - "church", - "civic", - "college", - "commercial", - "conservatory", - "construction", - "container", - "cowshed", - "detached", - "digester", - "dormitory", - "farm", - "farm_auxiliary", - "fire_station", - "garage", - "garages", - "gatehouse", - "ger", - "government", - "grandstand", - "greenhouse", - "guardhouse", - "hangar", - "hospital", - "hotel", - "house", - "houseboat", - "hut", - "industrial", - "kindergarten", - "kingdom_hall", - "kiosk", - "livestock", - "military", - "monastery", - "mosque", - "museum", - "office", - "outbuilding", - "pagoda", - "parking", - "pavilion", - "presbytery", - "public", - "quonset_hut", - "religious", - "residential", - "retail", - "riding_hall", - "roof", - "ruins", - "school", - "semidetached_house", - "service", - "shed", - "shrine", - "silo", - "slurry_tank", - "sports_centre", - "sports_hall", - "stable", - "stadium", - "static_caravan", - "stilt_house", - "storage_tank", - "sty", - "supermarket", - "synagogue", - "tech_cab", - "temple", - "tent", - "terrace", - "toilets", - "tower", - "train_station", - "transformer_tower", - "transportation", - "tree_house", - "trullo", - "university", - "warehouse", - "water_tower", - "windmill", - "yes" - ], - "type": "string" - }, - "BuildingFields": { - "additionalProperties": false, - "description": "Fields that apply to a building.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "building": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/BuildingField" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "opening_hours": { - "description": "A field for the opening hours of an entity. The value is in OpenStreetMap syntax for the opening_hours tag. See [OpenStreetMap specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification) on the formatting for this field.", - "type": "string" - } - }, - "required": [ - "_id", - "building" - ], - "type": "object" - }, - "Crossing": { - "additionalProperties": false, - "description": "The centerline of a pedestrian street crossing. This path exists only on the road surface itself, i.e. \"from curb to curb\". Crossings should not be connected directly to sidewalk centerlines - instead, a short footpath (this schema calls them \"links\") should connect the two together.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/CrossingFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "CrossingFields": { - "additionalProperties": false, - "description": "Fields that apply to a crossing.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "crossing:markings": { - "description": "A field for markings on the ground which are meant to draw attention to the area where pedestrians are to cross the road.", - "enum": [ - "dashes", - "dots", - "ladder", - "ladder:paired", - "ladder:skewed", - "lines", - "lines:paired", - "lines:rainbow", - "no", - "pictograms", - "rainbow", - "skewed", - "surface", - "yes", - "zebra", - "zebra:bicolour", - "zebra:double", - "zebra:paired", - "zebra:rainbow" - ], - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "footway": { - "enum": [ - "crossing" - ], - "type": "string" - }, - "highway": { - "enum": [ - "footway" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "footway", - "highway" - ], - "type": "object" - }, - "CurbRamp": { - "additionalProperties": false, - "description": "A curb ramp (curb cut) mapped as a curb interface. Mapped at the location where the two edges that it connects meet one another.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/CurbRampFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "CurbRampFields": { - "additionalProperties": false, - "description": "Fields that apply to a curb ramp.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "barrier": { - "enum": [ - "kerb" - ], - "type": "string" - }, - "kerb": { - "enum": [ - "lowered" - ], - "type": "string" - }, - "tactile_paving": { - "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", - "enum": [ - "contrasted", - "no", - "primitive", - "yes" - ], - "type": "string" - } - }, - "required": [ - "_id", - "barrier", - "kerb" - ], - "type": "object" - }, - "Driveway": { - "additionalProperties": false, - "description": "The centerline of a driveway. Typically connects a residence or business to another road.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/DrivewayFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "DrivewayFields": { - "additionalProperties": false, - "description": "Fields that apply to a driveway.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "service" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "service": { - "enum": [ - "driveway" - ], - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway", - "service" - ], - "type": "object" - }, - "Fence": { - "additionalProperties": false, - "description": "A fence is a freestanding structure designed to restrict or prevent movement across a boundary. It is generally distinguished from a wall by the lightness of its construction.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/FenceFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "FenceFields": { - "additionalProperties": false, - "description": "Fields that apply to a fence.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "barrier": { - "enum": [ - "fence" - ], - "type": "string" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "barrier" - ], - "type": "object" - }, - "FireHydrant": { - "additionalProperties": false, - "description": "A fire hydrant - where fire response teams connect high-pressure hoses.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/FireHydrantFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "FireHydrantFields": { - "additionalProperties": false, - "description": "Fields that apply to a fire hydrant.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "emergency": { - "enum": [ - "fire_hydrant" - ], - "type": "string" - } - }, - "required": [ - "_id", - "emergency" - ], - "type": "object" - }, - "FlushCurb": { - "additionalProperties": false, - "description": "An indicator that there is no raised curb interface where two paths meet - i.e. where someone might expect a curb interface, such as where a crossing and footpath meet.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/FlushCurbFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "FlushCurbFields": { - "additionalProperties": false, - "description": "Fields that apply to a flush curb.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "barrier": { - "enum": [ - "kerb" - ], - "type": "string" - }, - "kerb": { - "enum": [ - "flush" - ], - "type": "string" - }, - "tactile_paving": { - "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", - "enum": [ - "contrasted", - "no", - "primitive", - "yes" - ], - "type": "string" - } - }, - "required": [ - "_id", - "barrier", - "kerb" - ], - "type": "object" - }, - "Footway": { - "additionalProperties": false, - "description": "The centerline of a dedicated pedestrian pathway that does not fall into any other subcategories.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/FootwayFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "FootwayFields": { - "additionalProperties": false, - "description": "Fields that apply to a footway.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "footway" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "GenericCurb": { - "additionalProperties": false, - "description": "A curb for which a type has not been determined yet or a type could not be determined despite some effort.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GenericCurbFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "GenericCurbFields": { - "additionalProperties": false, - "description": "Fields that apply to a generic curb.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "barrier": { - "enum": [ - "kerb" - ], - "type": "string" - }, - "tactile_paving": { - "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", - "enum": [ - "contrasted", - "no", - "primitive", - "yes" - ], - "type": "string" - } - }, - "required": [ - "_id", - "barrier" - ], - "type": "object" - }, - "GeoJSON.LineString": { - "additionalProperties": false, - "description": "LineString geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.4", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "coordinates": { - "items": { - "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", - "items": { - "type": "number" - }, - "type": "array" - }, - "type": "array" - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "LineString" - ], - "type": "string" - } - }, - "required": [ - "coordinates", - "type" - ], - "type": "object" - }, - "GeoJSON.MultiPolygon": { - "additionalProperties": false, - "description": "MultiPolygon geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.7", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "coordinates": { - "items": { - "items": { - "items": { - "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", - "items": { - "type": "number" - }, - "type": "array" - }, - "type": "array" - }, - "type": "array" - }, - "type": "array" - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "MultiPolygon" - ], - "type": "string" - } - }, - "required": [ - "coordinates", - "type" - ], - "type": "object" - }, - "GeoJSON.Point": { - "additionalProperties": false, - "description": "Point geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.2", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "coordinates": { - "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", - "items": { - "type": "number" - }, - "type": "array" - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Point" - ], - "type": "string" - } - }, - "required": [ - "coordinates", - "type" - ], - "type": "object" - }, - "GeoJSON.Polygon": { - "additionalProperties": false, - "description": "Polygon geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.6", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "coordinates": { - "items": { - "items": { - "description": "A Position is an array of coordinates.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.1\nArray should contain between two and three elements.\nThe previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),\nbut the current specification only allows X, Y, and (optionally) Z to be defined.", - "items": { - "type": "number" - }, - "type": "array" - }, - "type": "array" - }, - "type": "array" - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Polygon" - ], - "type": "string" - } - }, - "required": [ - "coordinates", - "type" - ], - "type": "object" - }, - "LivingStreet": { - "additionalProperties": false, - "description": "A street designed with the interests of pedestrians and cyclists in mind by providing enriching and experiential spaces.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/LivingStreetFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "LivingStreetFields": { - "additionalProperties": false, - "description": "Fields that apply to a living street.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "living_street" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "Manhole": { - "additionalProperties": false, - "description": "A manhole - a hole with a cover that allows access to an underground service location, just large enough for a human to climb through.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/ManholeFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "ManholeFields": { - "additionalProperties": false, - "description": "Fields that apply to a manhole.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "man_made": { - "enum": [ - "manhole" - ], - "type": "string" - } - }, - "required": [ - "_id", - "man_made" - ], - "type": "object" - }, - "ParkingAisle": { - "additionalProperties": false, - "description": "The centerline of a subordinated way in a parking lot: vehicles drive on parking aisles to reach parking spaces in a parking lot.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/ParkingAisleFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "ParkingAisleFields": { - "additionalProperties": false, - "description": "Fields that apply to a parking aisle.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "service" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "service": { - "enum": [ - "parking_aisle" - ], - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway", - "service" - ], - "type": "object" - }, - "Pedestrian": { - "additionalProperties": false, - "description": "For a road or an area mainly or exclusively for pedestrians in which some vehicle traffic may be authorized.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/PedestrianFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "PedestrianFields": { - "additionalProperties": false, - "description": "Fields that apply to a pedestrian road.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "pedestrian" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "PedestrianZone": { - "additionalProperties": false, - "description": "An areas where pedestrians can travel freely in all directions.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Polygon", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/PedestrianZoneFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "PedestrianZoneFields": { - "additionalProperties": false, - "description": "Fields that apply to a pedestrian zone.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_w_id": { - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "pedestrian" - ], - "type": "string" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - } - }, - "required": [ - "_id", - "_w_id", - "highway" - ], - "type": "object" - }, - "PowerPole": { - "additionalProperties": false, - "description": "A power pole. Often made of wood or metal, they hold power lines.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/PowerPoleFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "PowerPoleFields": { - "additionalProperties": false, - "description": "Fields that apply to a power pole.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "power": { - "enum": [ - "pole" - ], - "type": "string" - } - }, - "required": [ - "_id", - "power" - ], - "type": "object" - }, - "PrimaryStreet": { - "additionalProperties": false, - "description": "The centerline of a major highway.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/PrimaryStreetFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "PrimaryStreetFields": { - "additionalProperties": false, - "description": "Fields that apply to a primary street.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "primary" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "RaisedCurb": { - "additionalProperties": false, - "description": "A single, designed vertical displacement that separates two edges. A common example is the curb that separates a street crossing from a sidewalk. This is mapped at the point where the two edges meet - on top of the curb is physically located.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/RaisedCurbFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "RaisedCurbFields": { - "additionalProperties": false, - "description": "Fields that apply to a raised curb.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "barrier": { - "enum": [ - "kerb" - ], - "type": "string" - }, - "kerb": { - "enum": [ - "raised" - ], - "type": "string" - }, - "tactile_paving": { - "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", - "enum": [ - "contrasted", - "no", - "primitive", - "yes" - ], - "type": "string" - } - }, - "required": [ - "_id", - "barrier", - "kerb" - ], - "type": "object" - }, - "ResidentialStreet": { - "additionalProperties": false, - "description": "A residential street.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/ResidentialStreetFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "ResidentialStreetFields": { - "additionalProperties": false, - "description": "Fields that apply to a residential street.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "residential" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "RolledCurb": { - "additionalProperties": false, - "description": "A curb interface with a quarter-circle profile: traversing this curb is like going over half of a bump. Located where two edges meet, physically at the location of the curb itself.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/RolledCurbFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "RolledCurbFields": { - "additionalProperties": false, - "description": "Fields that apply to a rolled curb.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "barrier": { - "enum": [ - "kerb" - ], - "type": "string" - }, - "kerb": { - "enum": [ - "rolled" - ], - "type": "string" - }, - "tactile_paving": { - "description": "A field for whether a curb has a tactile (textured) surface. Tactile paving is a system of textured ground surface indicators found on footpaths, stairs and public transportation platforms to assist pedestrians who are blind or visually impaired. A tactile paving area has a surface that is easy to detect using a long cane, typically because it is rougher than the surrounding surface area or has an embossed pattern.", - "enum": [ - "contrasted", - "no", - "primitive", - "yes" - ], - "type": "string" - } - }, - "required": [ - "_id", - "barrier", - "kerb" - ], - "type": "object" - }, - "SecondaryStreet": { - "additionalProperties": false, - "description": "The centerline of a secondary highway: not a major highway, but forms a major link in the national route network.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/SecondaryStreetFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "SecondaryStreetFields": { - "additionalProperties": false, - "description": "Fields that apply to a secondary street.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "secondary" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "ServiceRoad": { - "additionalProperties": false, - "description": "A road intended for service use.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/ServiceRoadFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "ServiceRoadFields": { - "additionalProperties": false, - "description": "Fields that apply to a service road.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "service" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "Sidewalk": { - "additionalProperties": false, - "description": "The centerline of a sidewalk, a designated pedestrian pathway to the side of a street.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/SidewalkFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "SidewalkFields": { - "additionalProperties": false, - "description": "Fields that apply to a sidewalk.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "footway": { - "enum": [ - "sidewalk" - ], - "type": "string" - }, - "highway": { - "enum": [ - "footway" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "footway", - "highway" - ], - "type": "object" - }, - "Steps": { - "additionalProperties": false, - "description": "For flights of steps on footways and paths.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/StepsFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "StepsFields": { - "additionalProperties": false, - "description": "Fields that apply to steps.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "climb": { - "description": "A field for the climb direction of steps. You can use \"up\" or \"down\" to indicate the direction of the climb relative to the direction of the edge.", - "enum": [ - "down", - "up" - ], - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "steps" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "step_count": { - "description": "A field for number of steps in stairs.", - "maximum": 500, - "minimum": 0, - "type": "integer" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "StreetLamp": { - "additionalProperties": false, - "description": "A street lamp - a street light, lamppost, street lamp, light standard, or lamp standard: a raised source of light above a road, which is turned on or lit at night.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/StreetLampFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "StreetLampFields": { - "additionalProperties": false, - "description": "Fields that apply to a street lamp.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "highway": { - "enum": [ - "street_lamp" - ], - "type": "string" - } - }, - "required": [ - "_id", - "highway" - ], - "type": "object" - }, - "TertiaryStreet": { - "additionalProperties": false, - "description": "A road linking small settlements, or the local centers of a large town or city.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/TertiaryStreetFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "TertiaryStreetFields": { - "additionalProperties": false, - "description": "Fields that apply to a tertiary street.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "tertiary" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "TrafficIsland": { - "additionalProperties": false, - "description": "The centerline of a footpath traversing a traffic island. Some complex, long, or busy pedestrian crossings have a built-up \"island\" to protect pedestrians, splitting up the crossing of the street into two or more crossings. As a pedestrian uses this crossing, they will transition across these path elements: sidewalk → footway → crossing → traffic island → crossing → footway → sidewalk.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/TrafficIslandFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "TrafficIslandFields": { - "additionalProperties": false, - "description": "Fields that apply to a traffic island.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "footway": { - "enum": [ - "traffic_island" - ], - "type": "string" - }, - "highway": { - "enum": [ - "footway" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "footway", - "highway" - ], - "type": "object" - }, - "TrunkRoad": { - "additionalProperties": false, - "description": "A high-performance or high-importance roads that don't meet the requirements for motorway, but are not classified as highway=primary either.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/TrunkRoadFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "TrunkRoadFields": { - "additionalProperties": false, - "description": "Fields that apply to a trunk road.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "trunk" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "UnclassifiedRoad": { - "additionalProperties": false, - "description": "A minor public roads, typically at the lowest level of whatever administrative hierarchy is used in that jurisdiction.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.LineString", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/UnclassifiedRoadFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "UnclassifiedRoadFields": { - "additionalProperties": false, - "description": "Fields that apply to an unclassified road.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "_u_id": { - "minLength": 1, - "type": "string" - }, - "_v_id": { - "minLength": 1, - "type": "string" - }, - "description": { - "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", - "type": "string" - }, - "foot": { - "description": "A field that indicates whether an edge can be used by pedestrians.", - "enum": [ - "designated", - "destination", - "no", - "permissive", - "private", - "use_sidepath", - "yes" - ], - "type": "string" - }, - "highway": { - "enum": [ - "unclassified" - ], - "type": "string" - }, - "incline": { - "description": "A field for the estimated incline over a particular path, i.e. slope, i.e. grade, i.e. rise over run. If derived from OpenStreetMap data, this is the maximum incline over the path. If derived from DEM data, it is more likely to be an underestimation. Positive values indicate an uphill climb while negative are downhill. For example, a 45 degree downhill value for incline would be -1.0.", - "maximum": 1, - "minimum": -1, - "type": "number" - }, - "length": { - "description": "A field for the length of an entity in meters. This field is always inferred from the geometry.", - "maximum": 5000, - "minimum": 0, - "type": "number" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "surface": { - "description": "A field for the surface material of the path.", - "enum": [ - "asphalt", - "concrete", - "dirt", - "grass", - "grass_paver", - "gravel", - "paved", - "paving_stones", - "unpaved" - ], - "type": "string" - }, - "width": { - "description": "A field for width of an entity in meters.", - "maximum": 500, - "minimum": 0, - "type": "number" - } - }, - "required": [ - "_id", - "_u_id", - "_v_id", - "highway" - ], - "type": "object" - }, - "WasteBasket": { - "additionalProperties": false, - "description": "A waste basket - a single small container for depositing garbage that is easily accessible for pedestrians.", - "properties": { - "bbox": { - "anyOf": [ - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 4, - "minItems": 4, - "type": "array" - }, - { - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ], - "maxItems": 6, - "minItems": 6, - "type": "array" - } - ], - "description": "Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.\nThe value of the bbox member is an array of length 2*n where n is the number of dimensions\nrepresented in the contained geometries, with all axes of the most southwesterly point\nfollowed by all axes of the more northeasterly point.\nThe axes order of a bbox follows the axes order of geometries.\nhttps://tools.ietf.org/html/rfc7946#section-5" - }, - "geometry": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.Point", - "description": "The feature's geometry" - }, - "id": { - "description": "A value that uniquely identifies this feature in a\nhttps://tools.ietf.org/html/rfc7946#section-3.2.", - "type": [ - "string", - "number" - ] - }, - "properties": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/WasteBasketFields", - "description": "Properties associated with this feature." - }, - "type": { - "description": "Specifies the type of GeoJSON object.", - "enum": [ - "Feature" - ], - "type": "string" - } - }, - "required": [ - "geometry", - "properties", - "type" - ], - "type": "object" - }, - "WasteBasketFields": { - "additionalProperties": false, - "description": "Fields that apply to a waste basket.", - "patternProperties": { - "^ext:.*$": { - } - }, - "properties": { - "_id": { - "minLength": 1, - "type": "string" - }, - "amenity": { - "enum": [ - "waste_basket" - ], - "type": "string" - } - }, - "required": [ - "_id", - "amenity" - ], - "type": "object" - } - }, - "properties": { - "$schema": { - "description": "A field for the schema id.", - "enum": [ - "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json" - ], - "type": "string" - }, - "dataSource": { - "additionalProperties": true, - "properties": { - }, - "type": "object" - }, - "dataTimestamp": { - "format": "date-time", - "type": "string" - }, - "features": { - "items": { - "anyOf": [ - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/BareNode", - "description": "A node that is merely part of the graph structure but has no metadata or meaning of its own. For example, a sidewalk may be split into two edges because they have differing widths, so they must be joined by a node - but there is no data to place on the node itself beyond basic spatial and graph primitives." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/CurbRamp", - "description": "A curb ramp (curb cut) mapped as a curb interface. Mapped at the location where the two edges that it connects meet one another." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/FlushCurb", - "description": "An indicator that there is no raised curb interface where two paths meet - i.e. where someone might expect a curb interface, such as where a crossing and footpath meet." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GenericCurb", - "description": "A curb for which a type has not been determined yet or a type could not be determined despite some effort." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/RaisedCurb", - "description": "A single, designed vertical displacement that separates two edges. A common example is the curb that separates a street crossing from a sidewalk. This is mapped at the point where the two edges meet - on top of the curb is physically located." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/RolledCurb", - "description": "A curb interface with a quarter-circle profile: traversing this curb is like going over half of a bump. Located where two edges meet, physically at the location of the curb itself." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Footway", - "description": "The centerline of a dedicated pedestrian pathway that does not fall into any other subcategories." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Crossing", - "description": "The centerline of a pedestrian street crossing. This path exists only on the road surface itself, i.e. \"from curb to curb\". Crossings should not be connected directly to sidewalk centerlines - instead, a short footpath (this schema calls them \"links\") should connect the two together." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Sidewalk", - "description": "The centerline of a sidewalk, a designated pedestrian pathway to the side of a street." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/TrafficIsland", - "description": "The centerline of a footpath traversing a traffic island. Some complex, long, or busy pedestrian crossings have a built-up \"island\" to protect pedestrians, splitting up the crossing of the street into two or more crossings. As a pedestrian uses this crossing, they will transition across these path elements: sidewalk → footway → crossing → traffic island → crossing → footway → sidewalk." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Steps", - "description": "For flights of steps on footways and paths." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Pedestrian", - "description": "For a road or an area mainly or exclusively for pedestrians in which some vehicle traffic may be authorized." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/PrimaryStreet", - "description": "The centerline of a major highway." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/SecondaryStreet", - "description": "The centerline of a secondary highway: not a major highway, but forms a major link in the national route network." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/TertiaryStreet", - "description": "A road linking small settlements, or the local centers of a large town or city." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/ResidentialStreet", - "description": "A residential street." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/ServiceRoad", - "description": "A road intended for service use." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Alley", - "description": "The centerline of an alley. An alley is usually located between properties and provides access to utilities and private entrances." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Driveway", - "description": "The centerline of a driveway. Typically connects a residence or business to another road." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/ParkingAisle", - "description": "The centerline of a subordinated way in a parking lot: vehicles drive on parking aisles to reach parking spaces in a parking lot." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/TrunkRoad", - "description": "A high-performance or high-importance roads that don't meet the requirements for motorway, but are not classified as highway=primary either." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/UnclassifiedRoad", - "description": "A minor public roads, typically at the lowest level of whatever administrative hierarchy is used in that jurisdiction." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/LivingStreet", - "description": "A street designed with the interests of pedestrians and cyclists in mind by providing enriching and experiential spaces." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/FireHydrant", - "description": "A fire hydrant - where fire response teams connect high-pressure hoses." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/PowerPole", - "description": "A power pole. Often made of wood or metal, they hold power lines." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Bench", - "description": "A bench - a place for people to sit; allows room for several people." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/WasteBasket", - "description": "A waste basket - a single small container for depositing garbage that is easily accessible for pedestrians." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Manhole", - "description": "A manhole - a hole with a cover that allows access to an underground service location, just large enough for a human to climb through." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Bollard", - "description": "A Bollard - a solid pillar or pillars made of concrete, metal, plastic, etc., and used to control traffic." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/StreetLamp", - "description": "A street lamp - a street light, lamppost, street lamp, light standard, or lamp standard: a raised source of light above a road, which is turned on or lit at night." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/PedestrianZone", - "description": "An areas where pedestrians can travel freely in all directions." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Fence", - "description": "A fence is a freestanding structure designed to restrict or prevent movement across a boundary. It is generally distinguished from a wall by the lightness of its construction." - }, - { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/Building", - "description": "A building is a man-made structure with a roof, standing more or less permanently in one place." - } - ] - }, - "type": "array" - }, - "pipelineVersion": { - "additionalProperties": true, - "properties": { - }, - "type": "object" - }, - "region": { - "$ref": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json#/definitions/GeoJSON.MultiPolygon", - "description": "MultiPolygon geometry object.\nhttps://tools.ietf.org/html/rfc7946#section-3.1.7" - }, - "type": { - "enum": [ - "FeatureCollection" - ], - "type": "string" - } - }, - "required": [ - "$schema", - "features", - "type" - ], - "type": "object" -} \ No newline at end of file diff --git a/src/python_osw_validation/schema/Polygon_schema.json b/src/python_osw_validation/schema/opensidewalks.zones.schema-0.3.json similarity index 56% rename from src/python_osw_validation/schema/Polygon_schema.json rename to src/python_osw_validation/schema/opensidewalks.zones.schema-0.3.json index 17f37df..3e650de 100644 --- a/src/python_osw_validation/schema/Polygon_schema.json +++ b/src/python_osw_validation/schema/opensidewalks.zones.schema-0.3.json @@ -1,17 +1,20 @@ { "title": "root", "type": "object", + "$id": "https://sidewalks.washington.edu/opensidewalks/0.3/zones.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", "required": [ - "$schema", "type", - "features" + "features", + "$schema" ], "additionalProperties": false, "properties": { "$schema": { "description": "A field for the schema id.", "enum": [ - "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json" + "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", + "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json" ], "type": "string" }, @@ -57,6 +60,7 @@ "minItems": 4, "items": { "type": "array", + "minItems": 2, "additionalItems": false, "items": [ { @@ -68,6 +72,9 @@ "type": "number", "minimum": -90, "maximum": 90 + }, + { + "type": "number" } ] } @@ -133,6 +140,7 @@ "minItems": 4, "items": { "type": "array", + "minItems": 2, "additionalItems": false, "items": [ { @@ -144,6 +152,9 @@ "type": "number", "minimum": -90, "maximum": 90 + }, + { + "type": "number" } ] } @@ -160,119 +171,6 @@ "minLength": 1, "type": "string" }, - "building": { - "description": "A field for markings a given object as a building.", - "enum": [ - "allotment_house", - "apartments", - "bakehouse", - "barn", - "barracks", - "beach_hut", - "boathouse", - "bridge", - "bungalow", - "bunker", - "cabin", - "carport", - "castle", - "cathedral", - "chapel", - "church", - "civic", - "college", - "commercial", - "conservatory", - "construction", - "container", - "cowshed", - "detached", - "digester", - "dormitory", - "farm", - "farm_auxiliary", - "fire_station", - "garage", - "garages", - "gatehouse", - "ger", - "government", - "grandstand", - "greenhouse", - "guardhouse", - "hangar", - "hospital", - "hotel", - "house", - "houseboat", - "hut", - "industrial", - "kindergarten", - "kingdom_hall", - "kiosk", - "livestock", - "military", - "monastery", - "mosque", - "museum", - "office", - "outbuilding", - "pagoda", - "parking", - "pavilion", - "presbytery", - "public", - "quonset_hut", - "religious", - "residential", - "retail", - "riding_hall", - "roof", - "ruins", - "school", - "semidetached_house", - "service", - "shed", - "shrine", - "silo", - "slurry_tank", - "sports_centre", - "sports_hall", - "stable", - "stadium", - "static_caravan", - "stilt_house", - "storage_tank", - "sty", - "supermarket", - "synagogue", - "tech_cab", - "temple", - "tent", - "terrace", - "toilets", - "tower", - "train_station", - "transformer_tower", - "transportation", - "tree_house", - "trullo", - "university", - "warehouse", - "water_tower", - "windmill", - "yes" - ], - "type": "string" - }, - "name": { - "description": "A field for a designated name for an entity. Example: an official name for a trail.", - "type": "string" - }, - "opening_hours": { - "description": "A field for the opening hours of an entity. The value is in OpenStreetMap syntax for the opening_hours tag. See [OpenStreetMap specification](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification) on the formatting for this field.", - "type": "string" - }, "_w_id": { "items": { "type": "string" @@ -302,6 +200,10 @@ ], "type": "string" }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, "surface": { "description": "A field for the surface material of the path.", "enum": [ @@ -318,59 +220,83 @@ "type": "string" } }, - "required": [ - "_id" - ], "patternProperties": { - "^ext:": {} + "^ext:.*$": {} }, - "dependencies": { - "description": { - "allOf": [ - { - "required": [ - "highway" + "required": [ + "_id", + "_w_id", + "highway" + ], + "anyOf": [ + { + "title": "PedestrianZoneFields", + "type": "object", + "additionalProperties": false, + "properties": { + "_id": { + "minLength": 1, + "type": "string" + }, + "_w_id": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "A free form text field for describing an entity. May be pre-encoded in relevant pedestrian paths to assist with routing instructing or investigation of map features. For example, a description of the sidewalk in relation to a nearby street may be a useful textual description, such as \"NE of Main St.\" Can also be considered a flexible location to embed arbitrary information for specific use cases.", + "type": "string" + }, + "foot": { + "description": "A field that indicates whether an edge can be used by pedestrians.", + "enum": [ + "designated", + "destination", + "no", + "permissive", + "private", + "use_sidepath", + "yes" ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - "foot": { - "allOf": [ - { - "required": [ - "highway" + "type": "string" + }, + "highway": { + "enum": [ + "pedestrian" ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } - } - ] - }, - "surface": { - "allOf": [ - { - "required": [ - "highway" + "type": "string" + }, + "name": { + "description": "A field for a designated name for an entity. Example: an official name for a trail.", + "type": "string" + }, + "surface": { + "description": "A field for the surface material of the path.", + "enum": [ + "asphalt", + "concrete", + "dirt", + "grass", + "grass_paver", + "gravel", + "paved", + "paving_stones", + "unpaved" ], - "properties": { - "highway": { - "type": "string", - "const": "pedestrian" - } - } + "type": "string" } - ] + }, + "required": [ + "_id", + "_w_id", + "highway" + ], + "patternProperties": { + "^ext:.*$": {} + } } - } + ] } } } diff --git a/src/python_osw_validation/version.py b/src/python_osw_validation/version.py index aace94f..0404d81 100644 --- a/src/python_osw_validation/version.py +++ b/src/python_osw_validation/version.py @@ -1 +1 @@ -__version__ = '0.2.15' \ No newline at end of file +__version__ = '0.3.0' diff --git a/tests/unit_tests/test_extracted_data_validator.py b/tests/unit_tests/test_extracted_data_validator.py index 3528126..24badcc 100644 --- a/tests/unit_tests/test_extracted_data_validator.py +++ b/tests/unit_tests/test_extracted_data_validator.py @@ -2,7 +2,9 @@ import os import tempfile import shutil +from unittest.mock import patch from src.python_osw_validation.extracted_data_validator import ExtractedDataValidator +from src.python_osw_validation.extracted_data_validator import ALLOWED_OSW_03_FILENAMES class TestExtractedDataValidator(unittest.TestCase): @@ -16,35 +18,31 @@ def tearDown(self): def create_files(self, files): for file in files: - with open(os.path.join(self.test_dir, file), 'w') as f: + full_path = os.path.join(self.test_dir, file) + os.makedirs(os.path.dirname(full_path), exist_ok=True) + with open(full_path, 'w') as f: f.write('Test content') def test_valid_data_at_root(self): # Test when required files are at the root level validator = ExtractedDataValidator(self.test_dir) - self.create_files(['a.nodes.geojson', 'a.edges.geojson', 'a.points.geojson']) + self.create_files(['opensidewalks.nodes.geojson', 'opensidewalks.edges.geojson', 'opensidewalks.points.geojson']) self.assertTrue(validator.is_valid()) def test_valid_data_inside_folder(self): # Test when required files are inside a folder validator = ExtractedDataValidator(self.test_dir) os.makedirs(os.path.join(self.test_dir, 'abc')) - self.create_files(['abc/a.nodes.geojson', 'abc/a.edges.geojson', 'abc/a.points.geojson']) + self.create_files(['abc/opensidewalks.nodes.geojson', 'abc/opensidewalks.edges.geojson']) self.assertTrue(validator.is_valid()) def test_duplicate_files(self): # Test when there are duplicate files validator = ExtractedDataValidator(self.test_dir) - self.create_files(['a.1.nodes.geojson', 'a.2.nodes.geojson']) + self.create_files(['abc/opensidewalks.nodes.geojson', 'opensidewalks.nodes.geojson']) self.assertFalse(validator.is_valid()) self.assertEqual(validator.error, 'Multiple .geojson files of the same type found: nodes.') - def test_missing_optional_file(self): - # Test when optional file is missing - validator = ExtractedDataValidator(self.test_dir) - self.create_files(['a.nodes.geojson', 'a.edges.geojson']) - self.assertTrue(validator.is_valid()) - def test_no_geojson_files(self): # Test when no .geojson files are present validator = ExtractedDataValidator(self.test_dir) @@ -64,6 +62,43 @@ def test_empty_directory(self): self.assertFalse(validator.is_valid()) self.assertEqual(validator.error, 'No .geojson files found in the specified directory or its subdirectories.') + def test_valid_subset_of_allowed_files(self): + # Dataset may contain any subset of the 6 allowed files + validator = ExtractedDataValidator(self.test_dir) + self.create_files(['opensidewalks.nodes.geojson']) + self.assertTrue(validator.is_valid()) + self.assertEqual(len(validator.files), 1) + + def test_non_standard_filenames_raise_error(self): + validator = ExtractedDataValidator(self.test_dir) + self.create_files(['custom.nodes.geojson', 'opensidewalks.nodes.geojson']) + self.assertFalse(validator.is_valid()) + allowed_fmt = ", ".join(ALLOWED_OSW_03_FILENAMES) + self.assertEqual(validator.error, f'Dataset contains non-standard file names. The only allowed file names are {{{allowed_fmt}}}') + + def test_missing_required_files_detected(self): + required = { + "nodes": {"required": True, "geometry": "Point"}, + "edges": {"required": True, "geometry": "LineString"}, + } + with patch('src.python_osw_validation.extracted_data_validator.OSW_DATASET_FILES', required): + validator = ExtractedDataValidator(self.test_dir) + # only edges present → nodes missing + self.create_files(['city.edges.geojson']) + self.assertFalse(validator.is_valid()) + self.assertEqual(validator.error, 'Missing required .geojson files: nodes.') + + def test_duplicate_required_files_detected(self): + required = { + "nodes": {"required": True, "geometry": "Point"}, + "edges": {"required": True, "geometry": "LineString"}, + } + with patch('src.python_osw_validation.extracted_data_validator.OSW_DATASET_FILES', required): + validator = ExtractedDataValidator(self.test_dir) + self.create_files(['a.nodes.geojson', 'b.nodes.geojson', 'city.edges.geojson']) + self.assertFalse(validator.is_valid()) + self.assertEqual(validator.error, 'Multiple .geojson files of the same type found: nodes.') + if __name__ == '__main__': unittest.main() diff --git a/tests/unit_tests/test_osw_validation.py b/tests/unit_tests/test_osw_validation.py index 53be383..13d3dde 100644 --- a/tests/unit_tests/test_osw_validation.py +++ b/tests/unit_tests/test_osw_validation.py @@ -6,7 +6,15 @@ SRC_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ASSETS_PATH = os.path.join(PARENT_DIR, 'assets') SCHEMA_DIR = os.path.join(SRC_DIR, 'src/python_osw_validation/schema') -SCHEMA_FILE_PATH = os.path.join(SCHEMA_DIR, 'opensidewalks.schema.json') +SCHEMA_FILE_PATH = os.path.join(SCHEMA_DIR, 'opensidewalks.schema-0.3.json') +SCHEMA_PATHS = { + "nodes": os.path.join(SCHEMA_DIR, "opensidewalks.nodes.schema-0.3.json"), + "edges": os.path.join(SCHEMA_DIR, "opensidewalks.edges.schema-0.3.json"), + "points": os.path.join(SCHEMA_DIR, "opensidewalks.points.schema-0.3.json"), + "lines": os.path.join(SCHEMA_DIR, "opensidewalks.lines.schema-0.3.json"), + "zones": os.path.join(SCHEMA_DIR, "opensidewalks.zones.schema-0.3.json"), + "polygons": os.path.join(SCHEMA_DIR, "opensidewalks.polygons.schema-0.3.json"), +} INVALID_SCHEMA_FILE_PATH = os.path.join(SCHEMA_DIR, 'opensidewalk.schema.json') @@ -32,6 +40,7 @@ def setUp(self): self.invalid_v_id_file = os.path.join(ASSETS_PATH, '4151.zip') self.serialization_file = os.path.join(ASSETS_PATH, 'test_serialization_error.zip') self.schema_file_path = SCHEMA_FILE_PATH + self.schema_paths = SCHEMA_PATHS self.invalid_schema_file_path = INVALID_SCHEMA_FILE_PATH def test_valid_zipfile(self): @@ -41,7 +50,7 @@ def test_valid_zipfile(self): self.assertIsNone(result.errors) def test_valid_zipfile_with_schema(self): - validation = OSWValidation(zipfile_path=self.valid_zipfile, schema_file_path=self.schema_file_path) + validation = OSWValidation(zipfile_path=self.valid_zipfile, schema_paths=self.schema_paths) result = validation.validate() self.assertTrue(result.is_valid) self.assertIsNone(result.errors) @@ -58,7 +67,7 @@ def test_minimal_zipfile(self): self.assertIsNone(result.errors) def test_minimal_zipfile_with_schema(self): - validation = OSWValidation(zipfile_path=self.minimal_zipfile, schema_file_path=self.schema_file_path) + validation = OSWValidation(zipfile_path=self.minimal_zipfile, schema_paths=self.schema_paths) result = validation.validate() self.assertTrue(result.is_valid) self.assertIsNone(result.errors) @@ -75,7 +84,7 @@ def test_invalid_zipfile(self): self.assertIsNotNone(result.errors) def test_invalid_zipfile_with_schema(self): - validation = OSWValidation(zipfile_path=self.invalid_zipfile, schema_file_path=self.schema_file_path) + validation = OSWValidation(zipfile_path=self.invalid_zipfile, schema_paths=self.schema_paths) result = validation.validate() self.assertFalse(result.is_valid) self.assertIsNotNone(result.errors) @@ -107,7 +116,7 @@ def test_nodes_invalid_zipfile(self): self.assertIsNotNone(result.errors) def test_nodes_invalid_zipfile_with_schema(self): - validation = OSWValidation(zipfile_path=self.nodes_invalid_zipfile, schema_file_path=self.schema_file_path) + validation = OSWValidation(zipfile_path=self.nodes_invalid_zipfile, schema_paths=self.schema_paths) result = validation.validate() self.assertFalse(result.is_valid) self.assertIsNotNone(result.errors) @@ -125,7 +134,7 @@ def test_edges_invalid_zipfile(self): self.assertIsNotNone(result.errors) def test_edges_invalid_zipfile_with_schema(self): - validation = OSWValidation(zipfile_path=self.edges_invalid_zipfile, schema_file_path=self.schema_file_path) + validation = OSWValidation(zipfile_path=self.edges_invalid_zipfile, schema_paths=self.schema_paths) result = validation.validate() self.assertFalse(result.is_valid) self.assertIsNotNone(result.errors) @@ -143,7 +152,7 @@ def test_points_invalid_zipfile(self): self.assertIsNotNone(result.errors) def test_points_invalid_zipfile_with_schema(self): - validation = OSWValidation(zipfile_path=self.points_invalid_zipfile, schema_file_path=self.schema_file_path) + validation = OSWValidation(zipfile_path=self.points_invalid_zipfile, schema_paths=self.schema_paths) result = validation.validate() self.assertFalse(result.is_valid) self.assertIsNotNone(result.errors) @@ -162,7 +171,7 @@ def test_external_extension_file_inside_zipfile(self): def test_external_extension_file_inside_zipfile_with_schema(self): validation = OSWValidation(zipfile_path=self.external_extension_file_zipfile, - schema_file_path=self.schema_file_path) + schema_paths=self.schema_paths) result = validation.validate() self.assertTrue(result.is_valid) self.assertIsNone(result.errors) diff --git a/tests/unit_tests/test_osw_validation_extras.py b/tests/unit_tests/test_osw_validation_extras.py index 6e1e1c1..320a5c9 100644 --- a/tests/unit_tests/test_osw_validation_extras.py +++ b/tests/unit_tests/test_osw_validation_extras.py @@ -3,6 +3,7 @@ import tempfile import unittest from unittest.mock import patch, MagicMock +import pandas as pd import geopandas as gpd from shapely.geometry import Point, LineString, Polygon @@ -251,6 +252,146 @@ def test_validate_reports_json_decode_error(self): finally: os.unlink(bad_path) + def test_validate_logs_read_file_exception(self): + """GeoDataFrame read failures are logged and do not crash.""" + fake_files = ["/tmp/edges.geojson"] + + with patch(_PATCH_ZIP) as PZip, \ + patch(_PATCH_EV) as PVal, \ + patch(_PATCH_VALIDATE, return_value=True), \ + patch(_PATCH_READ_FILE, side_effect=Exception("boom")), \ + patch(_PATCH_DATASET_FILES, _CANON_DATASET_FILES): + + z = MagicMock() + z.extract_zip.return_value = "/tmp/extracted" + z.remove_extracted_files.return_value = None + PZip.return_value = z + PVal.return_value = self._fake_validator(fake_files) + + res = OSWValidation(zipfile_path="dummy.zip").validate() + + self.assertFalse(res.is_valid) + self.assertTrue(any("Failed to read 'edges.geojson' as GeoJSON: boom" in e for e in (res.errors or [])), + f"Errors were: {res.errors}") + + def test_missing_w_id_logs_error(self): + """Zones missing _w_id should log a clear message.""" + fake_files = ["/tmp/nodes.geojson", "/tmp/zones.geojson"] + nodes = self._gdf_nodes([1, 2]) + # zones without _w_id column + polygons = [Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])] + zones = gpd.GeoDataFrame({"_id": [10]}, geometry=polygons, crs="EPSG:4326") + + with patch(_PATCH_ZIP) as PZip, \ + patch(_PATCH_EV) as PVal, \ + patch(_PATCH_VALIDATE, return_value=True), \ + patch(_PATCH_READ_FILE) as PRead, \ + patch(_PATCH_DATASET_FILES, _CANON_DATASET_FILES): + + z = MagicMock() + z.extract_zip.return_value = "/tmp/extracted" + z.remove_extracted_files.return_value = None + PZip.return_value = z + PVal.return_value = self._fake_validator(fake_files) + + def _rf(path): + b = os.path.basename(path) + if "nodes" in b: + return nodes + if "zones" in b: + return zones + return gpd.GeoDataFrame() + + PRead.side_effect = _rf + + res = OSWValidation(zipfile_path="dummy.zip").validate() + + self.assertFalse(res.is_valid) + self.assertTrue(any("Missing required column '_w_id' in zones." in e for e in (res.errors or [])), + f"Errors were: {res.errors}") + + def test_extension_read_failure_is_logged(self): + """Failure reading an extension file should be logged and skipped.""" + fake_files = ["/tmp/nodes.geojson"] + nodes = self._gdf_nodes([1]) + ext_path = "/tmp/custom.geojson" + + with patch(_PATCH_ZIP) as PZip, \ + patch(_PATCH_EV) as PVal, \ + patch(_PATCH_VALIDATE, return_value=True), \ + patch(_PATCH_READ_FILE) as PRead, \ + patch(_PATCH_DATASET_FILES, _CANON_DATASET_FILES): + + z = MagicMock() + z.extract_zip.return_value = "/tmp/extracted" + z.remove_extracted_files.return_value = None + PZip.return_value = z + + val = self._fake_validator(fake_files, external_exts=[ext_path]) + PVal.return_value = val + + def _rf(path): + b = os.path.basename(path) + if "nodes" in b: + return nodes + if os.path.basename(path) == os.path.basename(ext_path): + raise Exception("boom") + return gpd.GeoDataFrame() + + PRead.side_effect = _rf + + res = OSWValidation(zipfile_path="dummy.zip").validate() + + self.assertFalse(res.is_valid) + self.assertTrue(any("Failed to read extension 'custom.geojson' as GeoJSON: boom" in e for e in (res.errors or [])), + f"Errors were: {res.errors}") + + def test_extension_invalid_ids_logging_failure(self): + """If invalid extension features exist but id extraction fails, we log gracefully.""" + ext_path = "/tmp/custom.geojson" + fake_files = ["/tmp/nodes.geojson"] + nodes = self._gdf_nodes([1]) + + invalid_geojson = MagicMock() + invalid_geojson.__len__.return_value = 1 + invalid_geojson.get.side_effect = Exception("explode") + + extension_file = MagicMock() + extension_file.__getitem__.return_value = invalid_geojson # handles extensionFile[extensionFile.is_valid == False] + extension_file.is_valid = [False] + extension_file.drop.return_value = pd.DataFrame() + + with patch(_PATCH_ZIP) as PZip, \ + patch(_PATCH_EV) as PVal, \ + patch(_PATCH_VALIDATE, return_value=True), \ + patch(_PATCH_READ_FILE) as PRead, \ + patch(_PATCH_DATASET_FILES, _CANON_DATASET_FILES): + + z = MagicMock() + z.extract_zip.return_value = "/tmp/extracted" + z.remove_extracted_files.return_value = None + PZip.return_value = z + + val = self._fake_validator(fake_files, external_exts=[ext_path]) + PVal.return_value = val + + def _rf(path): + b = os.path.basename(path) + if "nodes" in b: + return nodes + if os.path.basename(path) == os.path.basename(ext_path): + return extension_file + return gpd.GeoDataFrame() + + PRead.side_effect = _rf + + res = OSWValidation(zipfile_path="dummy.zip").validate() + + self.assertFalse(res.is_valid) + self.assertTrue(any("Invalid features found in `custom.geojson`, but failed to extract IDs: explode" in e + for e in (res.errors or [])), + f"Errors were: {res.errors}") + def test_duplicate_ids_detection(self): """Duplicates inside a single file are reported.""" fake_files = ["/tmp/nodes.geojson"] @@ -299,34 +440,21 @@ def test_duplicate_ids_detection_is_limited_to_20(self): expected_ids = [f"id{i}" for i in range(20)] self.assertEqual(shown_ids, expected_ids) - def test_pick_schema_by_geometry_and_by_filename(self): - """Point/LineString/Polygon ⇒ proper schema; filename fallback when features empty.""" + def test_pick_schema_by_filename_only(self): + """Filename drives selection; geometry-only inputs fall back to line schema.""" v = OSWValidation(zipfile_path="dummy.zip") - - self.assertEqual( - v.pick_schema_for_file("/any/path.json", {"features": [{"geometry": {"type": "Point"}}]}), - v.point_schema_path, - ) - self.assertEqual( - v.pick_schema_for_file("/any/path.json", {"features": [{"geometry": {"type": "LineString"}}]}), - v.line_schema_path, - ) - self.assertEqual( - v.pick_schema_for_file("/any/path.json", {"features": [{"geometry": {"type": "Polygon"}}]}), - v.polygon_schema_path, - ) - self.assertEqual( - v.pick_schema_for_file("/tmp/my.nodes.geojson", {"features": []}), - v.point_schema_path, - ) + # filename mapping + self.assertEqual(v.pick_schema_for_file("/tmp/my.nodes.geojson", {"features": []}), v.dataset_schema_paths["nodes"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.edges.geojson", {"features": []}), v.dataset_schema_paths["edges"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.points.geojson", {"features": []}), v.dataset_schema_paths["points"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.lines.geojson", {"features": []}), v.dataset_schema_paths["lines"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.polygons.geojson", {"features": []}), v.dataset_schema_paths["polygons"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.zones.geojson", {"features": []}), v.dataset_schema_paths["zones"]) + # geometry-only (no filename hint) falls back to line schema self.assertEqual( - v.pick_schema_for_file("/tmp/my.edges.geojson", {"features": []}), + v.pick_schema_for_file("/tmp/unknown.geojson", {"features": [{"geometry": {"type": "Point"}}]}), v.line_schema_path, ) - self.assertEqual( - v.pick_schema_for_file("/tmp/my.zones.geojson", {"features": []}), - v.polygon_schema_path, - ) def test_zip_extract_failure_bubbles_as_error(self): """If zip extraction fails, we get a clean error and False result.""" @@ -413,6 +541,12 @@ def _gdf(self, data, geom="Point"): data = {**data, "geometry": g} return gpd.GeoDataFrame(data, geometry="geometry", crs="EPSG:4326") + def _write_geojson(self, data): + tmp = tempfile.NamedTemporaryFile("w", suffix=".geojson", delete=False) + json.dump(data, tmp) + tmp.close() + return tmp.name + # ---------- _get_colset ---------- def test_get_colset_returns_set_when_column_present(self): v = OSWValidation(zipfile_path="dummy.zip") @@ -441,12 +575,144 @@ def test_get_colset_with_none_gdf(self): s = v._get_colset(None, "_id", "nodes") self.assertEqual(s, set()) + def test_get_colset_logs_when_stringify_fails(self): + class BadObj: + def __hash__(self): + raise TypeError("no hash") + + def __str__(self): + raise ValueError("no str") + + v = OSWValidation(zipfile_path="dummy.zip") + gdf = self._gdf({"meta": [BadObj()]}, geom="Point") + s = v._get_colset(gdf, "meta", "nodes") + self.assertEqual(s, set()) + self.assertTrue(any("Could not create set for column 'meta' in nodes." in e for e in (v.errors or [])), + f"Errors were: {v.errors}") + + def test_schema_02_rejects_tree_and_custom(self): + base = { + "$schema": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json", + "type": "FeatureCollection", + } + + def _feature(props): + return { + "type": "Feature", + "geometry": {"type": "Point", "coordinates": [0, 0]}, + "properties": props, + } + + path_tree = self._write_geojson({**base, "features": [_feature({"natural": "tree"})]}) + v = OSWValidation(zipfile_path="dummy.zip") + try: + res = v.validate_osw_errors(path_tree, max_errors=5) + finally: + os.unlink(path_tree) + self.assertFalse(res) + self.assertTrue(any("0.2 schema does not support Tree coverage" in e for e in (v.errors or [])), + f"Errors were: {v.errors}") + + path_custom = self._write_geojson({**base, "features": [_feature({"type": "Custom Point"})]}) + v2 = OSWValidation(zipfile_path="dummy.zip") + try: + res2 = v2.validate_osw_errors(path_custom, max_errors=5) + finally: + os.unlink(path_custom) + self.assertFalse(res2) + self.assertTrue(any("0.2 schema does not support Tree coverage" in e for e in (v2.errors or [])), + f"Errors were: {v2.errors}") + + path_wood = self._write_geojson({**base, "features": [_feature({"natural": "wood", "leaf_cycle": "mixed"})]}) + v3 = OSWValidation(zipfile_path="dummy.zip") + try: + res3 = v3.validate_osw_errors(path_wood, max_errors=5) + finally: + os.unlink(path_wood) + self.assertFalse(res3) + self.assertTrue(any("0.2 schema does not support Tree coverage" in e for e in (v3.errors or [])), + f"Errors were: {v3.errors}") + + def test_schema_03_with_tree_tags_is_allowed(self): + base = { + "$schema": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json", + "type": "FeatureCollection", + } + + feat = { + "type": "Feature", + "geometry": {"type": "Polygon", "coordinates": [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]]}, + "properties": {"natural": "wood", "leaf_cycle": "mixed", "_id": "p1"}, + } + path = self._write_geojson({**base, "features": [feat]}) + + class DummyValidator: + def __init__(self, *_): + pass + + def iter_errors(self, *_): + return [] + + v = OSWValidation(zipfile_path="dummy.zip") + try: + with patch("src.python_osw_validation.jsonschema_rs.Draft7Validator", DummyValidator), \ + patch.object(OSWValidation, "_contains_disallowed_features_for_02", side_effect=Exception("should_not_call")): + res = v.validate_osw_errors(path, max_errors=5) + finally: + os.unlink(path) + + self.assertTrue(res) + self.assertFalse(v.errors) + + def test_cleanup_handles_locals_membership_error(self): + """Finalizer should swallow errors when checking locals membership.""" + + class BadPath: + def __str__(self): + return "/tmp/nodes.geojson" + + def __fspath__(self): + return "/tmp/nodes.geojson" + + def __hash__(self): + raise TypeError("boom") + + fake_files = [BadPath()] + nodes = self._gdf({"_id": [1]}, geom="Point") + + class DummyValidator: + def __init__(self, files): + self.files = files + self.externalExtensions = [] + self.error = "ok" + + def is_valid(self): + return True + + with patch(_PATCH_ZIP) as PZip, \ + patch(_PATCH_EV) as PVal, \ + patch(_PATCH_VALIDATE, return_value=True), \ + patch(_PATCH_READ_FILE, return_value=nodes), \ + patch(_PATCH_DATASET_FILES, _CANON_DATASET_FILES): + + z = MagicMock() + z.extract_zip.return_value = "/tmp/extracted" + z.remove_extracted_files.return_value = None + PZip.return_value = z + + PVal.return_value = DummyValidator(fake_files) + + res = OSWValidation(zipfile_path="dummy.zip").validate() + + self.assertTrue(res.is_valid) + self.assertIsNone(res.errors) + # ---------- pick_schema_for_file ---------- def test_pick_schema_by_geometry(self): v = OSWValidation(zipfile_path="dummy.zip") self.assertEqual( v.pick_schema_for_file("/x/y.json", {"features": [{"geometry": {"type": "Point"}}]}), - v.point_schema_path, + v.line_schema_path, ) self.assertEqual( v.pick_schema_for_file("/x/y.json", {"features": [{"geometry": {"type": "LineString"}}]}), @@ -454,17 +720,39 @@ def test_pick_schema_by_geometry(self): ) self.assertEqual( v.pick_schema_for_file("/x/y.json", {"features": [{"geometry": {"type": "Polygon"}}]}), - v.polygon_schema_path, + v.line_schema_path, + ) + + def test_pick_schema_by_schema_url(self): + v = OSWValidation(zipfile_path="dummy.zip") + self.assertEqual( + v.pick_schema_for_file("/x/nodes.json", {"$schema": "https://sidewalks.washington.edu/opensidewalks/0.3/nodes.schema.json"}), + v.dataset_schema_paths["nodes"], + ) + self.assertEqual( + v.pick_schema_for_file("/x/general.json", {"$schema": "https://sidewalks.washington.edu/opensidewalks/0.3/schema.json"}), + v.line_schema_path, + ) + self.assertEqual( + v.pick_schema_for_file("/x/general.json", {"$schema": "https://sidewalks.washington.edu/opensidewalks/0.2/schema.json"}), + v.line_schema_path, ) def test_pick_schema_filename_fallback(self): v = OSWValidation(zipfile_path="dummy.zip") - self.assertEqual(v.pick_schema_for_file("/tmp/my.nodes.geojson", {"features": []}), v.point_schema_path) - self.assertEqual(v.pick_schema_for_file("/tmp/my.edges.geojson", {"features": []}), v.line_schema_path) - self.assertEqual(v.pick_schema_for_file("/tmp/my.zones.geojson", {"features": []}), v.polygon_schema_path) + self.assertEqual(v.pick_schema_for_file("/tmp/my.nodes.geojson", {"features": []}), v.dataset_schema_paths["nodes"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.points.geojson", {"features": []}), v.dataset_schema_paths["points"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.edges.geojson", {"features": []}), v.dataset_schema_paths["edges"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.lines.geojson", {"features": []}), v.dataset_schema_paths["lines"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.zones.geojson", {"features": []}), v.dataset_schema_paths["zones"]) + self.assertEqual(v.pick_schema_for_file("/tmp/my.polygons.geojson", {"features": []}), v.dataset_schema_paths["polygons"]) + self.assertEqual( + v.pick_schema_for_file("/tmp/geometry_only.geojson", {"features": [{"geometry": {"type": "Point"}}]}), + v.line_schema_path, + ) def test_pick_schema_force_single_schema_override(self): - force = "/forced/opensidewalks.schema.json" + force = "/forced/opensidewalks.schema-0.3.json" v = OSWValidation(zipfile_path="dummy.zip", schema_file_path=force) # should always return forced schema when provided self.assertEqual(v.pick_schema_for_file("/tmp/my.edges.geojson", {"features": []}), force) diff --git a/tests/unit_tests/test_schema_definitions.py b/tests/unit_tests/test_schema_definitions.py new file mode 100644 index 0000000..d701369 --- /dev/null +++ b/tests/unit_tests/test_schema_definitions.py @@ -0,0 +1,47 @@ +import json +import os +import unittest + + +SCHEMA_PATH = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "src", + "python_osw_validation", + "schema", + "opensidewalks.schema-0.3.json", +) + + +class TestSchemaDefinitionsExist(unittest.TestCase): + @classmethod + def setUpClass(cls): + with open(SCHEMA_PATH, encoding="utf-8") as f: + cls.schema = json.load(f) + + def test_definitions_present_with_required_fields(self): + feature_requirements = { + "Tree": ["geometry", "properties", "type"], + "TreeFields": ["_id", "natural"], + "TreeRow": ["geometry", "properties", "type"], + "TreeRowFields": ["_id", "natural"], + "CustomPoint": ["geometry", "properties", "type"], + "CustomPointFields": ["_id"], + "CustomLine": ["geometry", "properties", "type"], + "CustomLineFields": ["_id"], + "CustomPolygon": ["geometry", "properties", "type"], + "CustomPolygonFields": ["_id"], + "Wood": ["geometry", "properties", "type"], + "WoodFields": ["_id", "natural"], + } + + definitions = self.schema.get("definitions", {}) + for name, required_fields in feature_requirements.items(): + with self.subTest(definition=name): + self.assertIn(name, definitions, f"{name} definition missing from schema") + required = definitions[name].get("required", []) + for field in required_fields: + self.assertIn(field, required, f"{name} should require '{field}'") + + +if __name__ == "__main__": + unittest.main()