From bd606b1f28a83a47f69085689cc72e4bf34cd8b6 Mon Sep 17 00:00:00 2001 From: Will Date: Sun, 11 Aug 2024 10:47:55 -0400 Subject: [PATCH] Adding support for the segment type --- README.md | 4 +- pyproject.toml | 2 +- scripts/test_segment.geojson | 6506 ++++++++++++++++++++++++++ src/overturetoosm/__init__.py | 3 +- src/overturetoosm/objects.py | 91 +- src/overturetoosm/segment_objects.py | 274 -- src/overturetoosm/segments.py | 409 ++ tests/test_other.py | 47 +- tests/test_segments.py | 82 + 9 files changed, 7117 insertions(+), 301 deletions(-) create mode 100644 scripts/test_segment.geojson delete mode 100644 src/overturetoosm/segment_objects.py create mode 100644 src/overturetoosm/segments.py create mode 100644 tests/test_segments.py diff --git a/README.md b/README.md index ae24f94..8fc5ab7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ ![PyPI - Version](https://img.shields.io/pypi/v/overturetoosm) ![Pepy Total Downlods](https://img.shields.io/pepy/dt/overturetoosm) -This Python project translates objects from the Overture maps schema to the OpenStreetMap (OSM) tagging scheme. The goal is to provide a seamless way to convert map data from Overture's format to a format that can be utilized within the OSM ecosystem. The package currently only supports Overture's `places`, `buildings`, and `addresses` layers. You can improve the Overture categorization that this package uses by editing [the Overture categories page](https://wiki.openstreetmap.org/wiki/Overture_categories) on the OSM Wiki or submitting a pull request to the [tags.json](https://github.com/whubsch/overturetoosm/blob/main/scripts/tags.json) file. +This Python project translates objects from the Overture maps schema to the OpenStreetMap (OSM) tagging scheme. The goal is to provide a seamless way to convert map data from Overture's format to a format that can be utilized within the OSM ecosystem. The package currently only supports Overture's `places`, `buildings`, and `addresses` layers. You can improve the Overture categorization that this package uses for the `places` layer by editing [the Overture categories page](https://wiki.openstreetmap.org/wiki/Overture_categories) on the OSM Wiki or submitting a pull request to the [tags.json](https://github.com/whubsch/overturetoosm/blob/main/scripts/tags.json) file. + +There is also a Pydantic model for the `transportation` layer's `segment` object via `overturetoosm.segments.SegmentProperties`, but the conversion to OSM tags is not yet supported because of the Overture schema's complexity. > [!NOTE] > Use of this package does not absolve you from following OSM's [import guidelines](https://wiki.openstreetmap.org/wiki/Import/Guidelines). diff --git a/pyproject.toml b/pyproject.toml index 8996c69..a5c56d5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,7 @@ exclude_lines = ["no cov", "if __name__ == .__main__.:", "if TYPE_CHECKING:"] fix = true [tool.ruff.lint] -select = ["D", "E", "F", "I"] +select = ["D", "E", "F", "I", "N", "SIM", "TCH"] pydocstyle.convention = "google" exclude = ["tests/*", "scripts/*"] isort.split-on-trailing-comma = false diff --git a/scripts/test_segment.geojson b/scripts/test_segment.geojson new file mode 100644 index 0000000..4b059b0 --- /dev/null +++ b/scripts/test_segment.geojson @@ -0,0 +1,6506 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0810261, 38.8447832], + [-77.0801694, 38.8457713], + [-77.079875, 38.8461109], + [-77.0795378, 38.8464998], + [-77.0794296, 38.8466282], + [-77.0791721, 38.8469357], + [-77.0785983, 38.8476306], + [-77.0784964, 38.8477581], + [-77.077713, 38.8487072], + [-77.0773096, 38.8492018], + [-77.076477, 38.8502646], + [-77.076108, 38.8507326], + [-77.0752582, 38.8518421], + [-77.0742884, 38.8531456], + [-77.0736446, 38.8540412], + [-77.0733013, 38.8545158], + [-77.0725117, 38.8556387], + [-77.071413, 38.8572562], + [-77.0707966, 38.8581969], + [-77.0703452, 38.8588579], + [-77.070016, 38.8594307], + [-77.0699214, 38.8596035], + [-77.0696719, 38.8601883], + [-77.0694869, 38.8607021], + [-77.0693742, 38.8612535], + [-77.0692401, 38.8622476], + [-77.0691469, 38.8628646], + [-77.0690923, 38.863146], + [-77.0690463, 38.8633266], + [-77.0689925, 38.8634778], + [-77.0688957, 38.863716], + [-77.0688217, 38.8638808], + [-77.0687005, 38.8640992], + [-77.0685508, 38.8643441], + [-77.0682906, 38.8647162], + [-77.0681252, 38.8649127], + [-77.068005, 38.8650476], + [-77.0679012, 38.8651501], + [-77.0676787, 38.8653495], + [-77.0675179, 38.8654702], + [-77.0673547, 38.8655903], + [-77.0672568, 38.865661], + [-77.0671568, 38.8657272], + [-77.0669757, 38.8658334], + [-77.0667579, 38.8659507] + ] + }, + "properties": { + "id": "0862aa87b7ffffff043fd959ff730578", + "version": 0, + "sources": [ + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r8838159", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w40253455", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w40253457", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50661834", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50661836", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663636", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663646", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664265", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664266", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w591112163", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w746827542", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "names": { + "primary": "395 Express Lanes", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b35152b0043d58306bb3a4df", + "08f2aa87b0c91a0a047f7b5dc588f541" + ], + "routes": [ + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.701019, 0.708769] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.0, 0.06612] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.960562, 1.0] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.927794, 0.960562] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.708769, 0.927794] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.06612, 0.085492] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.141078, 0.147275] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.085492, 0.10698] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.10698, 0.141078] + }, + { + "name": "395 HOV Lanes", + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.147275, 0.701019] + } + ], + "access_restrictions": [ + { + "access_type": "allowed", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["hov"], + "vehicle": null + }, + "between": null + } + ], + "level_rules": [ + { "value": 1, "between": [0.08555136, 0.107054388] }, + { "value": 1, "between": [0.141176093, 0.147377675] }, + { "value": 1, "between": [0.70150703, 0.709261795] }, + { "value": 2, "between": [0.928438849, 0.961230317] } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_bridge"], "between": [0.08555136, 0.107054388] }, + { "values": ["is_bridge"], "between": [0.141176093, 0.147377675] }, + { "values": ["is_bridge"], "between": [0.70150703, 0.709261795] }, + { "values": ["is_bridge"], "between": [0.928438849, 0.961230317] } + ], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 65, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0663112, 38.8611718], + [-77.0663493, 38.8612026], + [-77.0664182, 38.8613135], + [-77.0664201, 38.8613245], + [-77.0664357, 38.8614145], + [-77.066473, 38.8614481], + [-77.0665407, 38.8614335], + [-77.0666513, 38.8613736], + [-77.0666809, 38.8613508], + [-77.0667461, 38.8613007], + [-77.0668499, 38.8611885], + [-77.0669148, 38.8610955], + [-77.0669538, 38.8610096], + [-77.0670618, 38.8606936], + [-77.06709, 38.8606478], + [-77.0673523, 38.8599338], + [-77.0673721, 38.8598627], + [-77.0675341, 38.8594197], + [-77.0675761, 38.8593309], + [-77.0676115, 38.8592346], + [-77.0676277, 38.8591594], + [-77.067737, 38.8588537], + [-77.0678367, 38.8585781], + [-77.0678765, 38.8584682], + [-77.0678858, 38.8584425], + [-77.068007, 38.8581107], + [-77.0680947, 38.8578761], + [-77.0681445, 38.857719], + [-77.068159, 38.8576515], + [-77.0681793, 38.8575298], + [-77.0681859, 38.8573723], + [-77.0681931, 38.8571166], + [-77.0682112, 38.8563945], + [-77.0682261, 38.8557791], + [-77.0682344, 38.8555235], + [-77.0680915, 38.855514], + [-77.0678623, 38.8555147], + [-77.0676893, 38.855514], + [-77.0676285, 38.8555322], + [-77.0673592, 38.8555344], + [-77.0672423, 38.8555256], + [-77.0667297, 38.8555344] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043fff3cd38ef8f7", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w584980216", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b055570a043dde6f3815223b", + "08f2aa87b0555436043f7f6af79ea8c3", + "08f2aa87b05508a6043fde60c78047b1", + "08f2aa87b0455b93043f7f33a1fc1845", + "08f2aa87b0458d01043f5b270a045748", + "08f2aa87b078505b043ffb24185d75d1", + "08f2aa87b07136d6043d5a5edf4e399a" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0724498, 38.8593895], + [-77.072518, 38.8594438], + [-77.0726038, 38.8594814], + [-77.0727862, 38.8595002], + [-77.0729015, 38.8595232], + [-77.0729686, 38.8595566], + [-77.0731456, 38.8597237], + [-77.0732288, 38.8597801], + [-77.0734058, 38.8598386], + [-77.0736552, 38.8599012], + [-77.074012, 38.8599671], + [-77.0741863, 38.8600078], + [-77.0743305, 38.8600687], + [-77.0743826, 38.8601083], + [-77.074412, 38.8601543], + [-77.0744366, 38.8602109], + [-77.0744867, 38.86025], + [-77.0746289, 38.8604526], + [-77.0746611, 38.8605905], + [-77.0747094, 38.8607367], + [-77.0748059, 38.8608641], + [-77.0749561, 38.8608703], + [-77.0751171, 38.8608745], + [-77.0751841, 38.860862], + [-77.0752297, 38.8608348], + [-77.0752994, 38.8607784], + [-77.0753719, 38.860745], + [-77.0754291, 38.8607543], + [-77.0754496, 38.8607576], + [-77.0757313, 38.8608494], + [-77.0758681, 38.8608787], + [-77.0759754, 38.8609058], + [-77.0761041, 38.8609476], + [-77.0761899, 38.8609581], + [-77.0763294, 38.860956], + [-77.0765225, 38.8609413], + [-77.0767156, 38.8609455], + [-77.0768363, 38.8609664], + [-77.0769758, 38.8610124], + [-77.077067, 38.8610207], + [-77.077177, 38.8610103], + [-77.0773272, 38.8609956], + [-77.0774559, 38.8609998], + [-77.0775713, 38.8610186], + [-77.0777107, 38.8610625], + [-77.0779441, 38.8611335], + [-77.0782821, 38.8612212], + [-77.0787595, 38.8613298], + [-77.0788936, 38.8613653], + [-77.0790277, 38.8614196], + [-77.0791135, 38.861476], + [-77.0791726, 38.861522], + [-77.0792074, 38.8615888], + [-77.0792557, 38.8616473], + [-77.0793228, 38.8616765], + [-77.079422, 38.8616744], + [-77.0795132, 38.8616431], + [-77.0795776, 38.8616118], + [-77.0796339, 38.8616097], + [-77.0797975, 38.8616347], + [-77.0799021, 38.8616389], + [-77.0800174, 38.8616097], + [-77.0801489, 38.8615658], + [-77.0802723, 38.8615345], + [-77.0803849, 38.8615178], + [-77.0804493, 38.8615032], + [-77.0805029, 38.861453], + [-77.0805029, 38.8614008], + [-77.0804815, 38.8613591], + [-77.0804225, 38.8613173], + [-77.0803098, 38.8612609], + [-77.0802186, 38.8612337], + [-77.0800067, 38.8612254], + [-77.0797787, 38.8612337], + [-77.0795293, 38.8612421], + [-77.0792691, 38.8612588], + [-77.0789687, 38.8612964], + [-77.0788292, 38.861288], + [-77.0785181, 38.8612191], + [-77.0784162, 38.8611753], + [-77.0783008, 38.8611398], + [-77.0780702, 38.861098], + [-77.0779521, 38.8610646], + [-77.0778314, 38.8610061], + [-77.0777107, 38.8609685], + [-77.0775793, 38.8609518], + [-77.0774828, 38.8609163], + [-77.077185, 38.8608662], + [-77.0769302, 38.8608119], + [-77.0767908, 38.8607951], + [-77.0765735, 38.8608119], + [-77.0764555, 38.8608202], + [-77.0763723, 38.8608035], + [-77.0762489, 38.8607492], + [-77.076147, 38.8607283], + [-77.0759593, 38.8607158], + [-77.0757554, 38.8607053], + [-77.0756159, 38.860697], + [-77.0755247, 38.8606698], + [-77.075514, 38.8606322], + [-77.0755274, 38.8605758], + [-77.0755623, 38.8605195], + [-77.0756213, 38.860461], + [-77.0756937, 38.8604338], + [-77.075852, 38.8604422], + [-77.0759727, 38.8604568], + [-77.0760719, 38.8604526], + [-77.0762033, 38.8604317], + [-77.0762999, 38.8604255], + [-77.0764233, 38.8604422], + [-77.0764716, 38.8604317], + [-77.0765815, 38.8603962], + [-77.0768149, 38.8603628], + [-77.0769195, 38.8603628], + [-77.077008, 38.8603879], + [-77.0772494, 38.8604735], + [-77.0774318, 38.8605174], + [-77.0775203, 38.860509], + [-77.0776115, 38.8604756], + [-77.0776866, 38.8604798], + [-77.0777939, 38.8605132], + [-77.0779092, 38.8605299], + [-77.0780728, 38.8605612], + [-77.0782231, 38.8605466], + [-77.0783196, 38.8605487], + [-77.0784135, 38.8605842], + [-77.0785342, 38.860651], + [-77.0786281, 38.8606698], + [-77.0787729, 38.8607471], + [-77.0788721, 38.8607784], + [-77.078958, 38.8608077], + [-77.0790653, 38.8608432], + [-77.0792798, 38.8608327], + [-77.0794756, 38.8608035], + [-77.0797305, 38.8607868], + [-77.0798485, 38.860745], + [-77.079996, 38.8607346], + [-77.0801703, 38.8607283], + [-77.0802615, 38.8607095], + [-77.0805029, 38.8605988], + [-77.080688, 38.8605278], + [-77.0807542, 38.8605052], + [-77.0808167, 38.8604839], + [-77.0809321, 38.8604839], + [-77.0810903, 38.8605007], + [-77.0812191, 38.8604819], + [-77.081372, 38.8604693], + [-77.08149, 38.8604944], + [-77.0815624, 38.8604839], + [-77.0816697, 38.860461], + [-77.0817126, 38.8604359], + [-77.081726, 38.86039], + [-77.081718, 38.8602709], + [-77.0816965, 38.8602312], + [-77.0816563, 38.8602166], + [-77.0815544, 38.8602145], + [-77.0815034, 38.8601999], + [-77.0814524, 38.860154], + [-77.0814095, 38.8600809], + [-77.0813612, 38.8600349], + [-77.0812835, 38.8599931], + [-77.0812325, 38.8599555], + [-77.0812298, 38.8599096], + [-77.0812244, 38.8598093], + [-77.0811949, 38.8597258], + [-77.081144, 38.859636], + [-77.0811386, 38.8595796], + [-77.0811735, 38.8594355], + [-77.0811735, 38.8593686], + [-77.0811574, 38.859283], + [-77.0811574, 38.8592266], + [-77.0811815, 38.8591619], + [-77.0812244, 38.8590741], + [-77.0812593, 38.8589447], + [-77.0812647, 38.8588005], + [-77.0812638, 38.858776], + [-77.0812566, 38.8585771], + [-77.0812539, 38.8582846], + [-77.0812298, 38.8581405], + [-77.0811735, 38.8578314], + [-77.0810984, 38.8575557], + [-77.0810233, 38.8573698], + [-77.080962, 38.8572744], + [-77.080917, 38.8572504], + [-77.0808432, 38.8572535], + [-77.0807661, 38.8572582], + [-77.0807158, 38.857252], + [-77.0806622, 38.8572306], + [-77.0806374, 38.8572018], + [-77.0806112, 38.857183], + [-77.0805421, 38.857159], + [-77.0804697, 38.8571449], + [-77.0804442, 38.8571387], + [-77.0804161, 38.8568859], + [-77.0804013, 38.8566024], + [-77.080394, 38.8565314], + [-77.0803765, 38.8564938], + [-77.0802986, 38.8564253], + [-77.0802427, 38.8564105], + [-77.0801539, 38.8564253], + [-77.0800192, 38.8564535] + ] + }, + "properties": { + "id": "0862aa87b7ffffff047ddf9f43dbe4f7", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w249842187", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w765614311", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b048d055047fff7f6e777694", + "08f2aa87b049ca69047d7f42685e49c9", + "08f2aa87b049c19c047ffb33ee4a793b", + "08f2aa87b0492b90043d7f0b0d71878d", + "08f2aa87b049204a047dfb075189c74b", + "08f2aa87b28c82a9043ff8272206d61a", + "08f2aa87b2b9c4c1047ffb4726b59c17", + "08f2aa87b2b99446047f5d4cd6df6c29", + "08f2aa87b2b99164047d7f57c0a25f67" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0739326, 38.860292], + [-77.073945, 38.8603185], + [-77.074058, 38.8607477], + [-77.0740492, 38.8607633], + [-77.0740348, 38.8607887], + [-77.073609, 38.860843], + [-77.0735375, 38.8608516], + [-77.0731677, 38.860896], + [-77.0726181, 38.8609491], + [-77.0725841, 38.8609346], + [-77.0725639, 38.8609057], + [-77.0724989, 38.8604741] + ] + }, + "properties": { + "id": "0892aa87b04bffff043dfd5df428e08a", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906589584", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b048235c047f794582b858e3", + "08f2aa87b0495b6d043dd940f4689d6e", + "08f2aa87b0486b05043d5d54f120e347", + "08f2aa87b04ae781047d5d7d8389d7fd" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0725227, 38.8609959], + [-77.0735432, 38.8608819], + [-77.0735948, 38.8608761], + [-77.0740656, 38.8608235], + [-77.0741516, 38.8608139] + ] + }, + "properties": { + "id": "0892aa87b04bffff043f595cc4b68a09", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8797038", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "14th Road South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b04a38a9043dff7c956cd640", + "08f2aa87b048449b043d7b54b8caceb4", + "08f2aa87b0486848043df952b42a9a8e", + "08f2aa87b04864c2043ffb405012dc4d", + "08f2aa87b0495b02043fdb3cf4f5059f" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0741157, 38.8609403], + [-77.0740886, 38.8609083], + [-77.0740323, 38.8608967], + [-77.0736563, 38.8609467], + [-77.0736073, 38.8609514], + [-77.0734362, 38.860968], + [-77.0732639, 38.8609691], + [-77.0726472, 38.8610287] + ] + }, + "properties": { + "id": "0892aa87b04bffff043d7f5ab9c946d9", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906589588", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b0495965043f7b3e5b28db77", + "08f2aa87b0486598043f7b3f6a55e0bf", + "08f2aa87b048682c043ffb52371efb1b", + "08f2aa87b04a3c70043fff77b873b959" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0726251, 38.8616112], + [-77.0725587, 38.8612171], + [-77.0725227, 38.8609959] + ] + }, + "properties": { + "id": "08a2aa87b04a7fff043dfd7a99ca4526", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1063937371", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1096799054", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "South Queen Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b04a614b043df97895faee93", + "08f2aa87b04a07aa043f5b7b2d8ae6b2", + "08f2aa87b04a38a9043dff7c956cd640" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0725227, 38.8609959], + [-77.0724348, 38.8604695] + ] + }, + "properties": { + "id": "0892aa87b04bffff047f5f7e4d2140d0", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1063937372", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "South Queen Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b04a38a9043dff7c956cd640", + "08f2aa87b04ae719047d5f8004d009b1" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0695031, 38.8562305], + [-77.0684153, 38.8562185], + [-77.0683709, 38.8562123], + [-77.0683635, 38.8561868], + [-77.0683715, 38.8559052], + [-77.068377, 38.8558673], + [-77.0683828, 38.8555531], + [-77.0683884, 38.8555319], + [-77.0719182, 38.8555586], + [-77.0719664, 38.8555637], + [-77.0720126, 38.8555929], + [-77.0720107, 38.8556229], + [-77.0719905, 38.8556603], + [-77.0718616, 38.8558505], + [-77.0715703, 38.8562758], + [-77.0714674, 38.8564375], + [-77.0714237, 38.8565055], + [-77.0713559, 38.8566112], + [-77.0713222, 38.8566536], + [-77.0712886, 38.8566959], + [-77.0710713, 38.8570253], + [-77.0710116, 38.8571084], + [-77.0706616, 38.8576356], + [-77.0705559, 38.8577913], + [-77.0704568, 38.8579208], + [-77.0703559, 38.8580399], + [-77.0702797, 38.8581207], + [-77.0702472, 38.8581552], + [-77.0701289, 38.858257], + [-77.0699982, 38.8583521], + [-77.0698962, 38.858439], + [-77.0698001, 38.8585266], + [-77.0696972, 38.8586187], + [-77.0695246, 38.8588012], + [-77.0695068, 38.8588201], + [-77.0693914, 38.8589691], + [-77.069277, 38.85916], + [-77.0691924, 38.859291], + [-77.0691597, 38.8593771], + [-77.0690097, 38.8596175], + [-77.0689068, 38.8597553], + [-77.0688818, 38.8597777], + [-77.0686914, 38.8600937], + [-77.0684722, 38.8604523], + [-77.0684222, 38.8605736], + [-77.0683982, 38.8606215], + [-77.068328, 38.8607339], + [-77.0682901, 38.8608008], + [-77.068236, 38.8608961], + [-77.0681174, 38.8611052], + [-77.0680124, 38.8612932], + [-77.0678494, 38.8615668], + [-77.067782, 38.8616826], + [-77.0676981, 38.8618268], + [-77.0675347, 38.8620867], + [-77.0674754, 38.8621463], + [-77.0674318, 38.8622143], + [-77.0673292, 38.8623708], + [-77.0672103, 38.8625423], + [-77.0671245, 38.8626966], + [-77.0670747, 38.8627559], + [-77.0670104, 38.8628339], + [-77.0668857, 38.862995], + [-77.0668311, 38.8630729] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043f7df2727850fb", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w584973653", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w584973660", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w584973661", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b07b30e5047fd9f289128481", + "08f2aa87b07a2768047fdb1ec3b2eddd", + "08f2aa87b0785702043d7f1e14868d7b", + "08f2aa87b2b63228043fd99082b34b90", + "08f2aa87b2b64961047d59ab7acdb109", + "08f2aa87b04ee481043d5fd4332edad3", + "08f2aa87b04e50c2043ffdf1b229e00a", + "08f2aa87b0425c1a043d7a35c4cab0aa", + "08f2aa87b052a444047fdb5ae951a1d7" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0694976, 38.8619343], + [-77.069621, 38.8611992], + [-77.0697283, 38.8606687], + [-77.0698356, 38.8603261], + [-77.069912, 38.8601079], + [-77.0700078, 38.8598788], + [-77.0701145, 38.8596536], + [-77.0701977, 38.8594761], + [-77.0707877, 38.8585195], + [-77.0713564, 38.857682] + ] + }, + "properties": { + "id": "0882aa87b05fffff047d5fd64e3064e0", + "version": 0, + "sources": [ + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r1670156", + "update_time": null, + "confidence": null + }, + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r8780622", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w122189453", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663637", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663638", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "names": { + "primary": "Henry G. Shirley Memorial Highway", + "common": null, + "rules": [ + { + "variant": "short", + "language": null, + "value": "Shirley Highway", + "between": null, + "side": null + } + ] + }, + "connector_ids": [ + "08f2aa87b0435596043f5ff2c0c31c9e", + "08f2aa87b04c310c043d7daa24e3b43e" + ], + "routes": [ + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.0, 0.514763] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.556381, 1.0] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.514763, 0.556381] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.556381, 1.0] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.514763, 0.556381] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.0, 0.514763] + } + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["foot", "bicycle"], + "vehicle": null + }, + "between": null + }, + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["hgv"], + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 1, "between": [0.515356526, 0.557022551] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_bridge"], "between": [0.515356526, 0.557022551] } + ], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 55, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0698626, 38.8628031], + [-77.0699214, 38.862398], + [-77.0699482, 38.861926], + [-77.0699628, 38.8617424], + [-77.0700287, 38.8609109], + [-77.0700743, 38.8605413], + [-77.0701166, 38.8603255], + [-77.0701422, 38.860216], + [-77.0701872, 38.860054], + [-77.0702242, 38.8599418], + [-77.0703103, 38.8597079], + [-77.0703854, 38.8595241], + [-77.0706027, 38.859073], + [-77.0709138, 38.8585007], + [-77.0713564, 38.857682] + ] + }, + "properties": { + "id": "0882aa87b05fffff047d5bd10daf05a0", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w32858535", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663640", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663641", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w874075052", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b05ad695047d7fe47e01f353", + "08f2aa87b04c310c043d7daa24e3b43e" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["foot", "bicycle"], + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 1, "between": [0.588306164, 0.624651106] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_link"], "between": [0.0, 0.588306164] }, + { + "values": ["is_bridge", "is_link"], + "between": [0.588306164, 0.624651106] + }, + { "values": ["is_link"], "between": [0.624651106, 1.0] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0698758, 38.859237], + [-77.0698114, 38.8593654], + [-77.0697122, 38.8595513], + [-77.0695351, 38.8599439], + [-77.0693635, 38.8604139], + [-77.069224, 38.8608608], + [-77.0690581, 38.8620286] + ] + }, + "properties": { + "id": "0892aa87b043ffff047f5ff7d1f38a05", + "version": 0, + "sources": [ + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r1670156", + "update_time": null, + "confidence": null + }, + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r8780622", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663642", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663643", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w598236269", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "names": { + "primary": "Henry G. Shirley Memorial Highway", + "common": null, + "rules": [ + { + "variant": "short", + "language": null, + "value": "Shirley Highway", + "between": null, + "side": null + } + ] + }, + "connector_ids": [ + "08f2aa87b04e4198047dfbe3fa9051db", + "08f2aa87b051b65d043dfe03eb330adc" + ], + "routes": [ + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.047829, 0.117682] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.0, 0.047829] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.117682, 1.0] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.0, 0.047829] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.047829, 0.117682] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.117682, 1.0] + } + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["foot", "bicycle"], + "vehicle": null + }, + "between": null + }, + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["hgv"], + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 1, "between": [0.047895627, 0.117846392] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_bridge"], "between": [0.047895627, 0.117846392] } + ], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 55, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0698758, 38.859237], + [-77.0697015, 38.8593508], + [-77.0695946, 38.859518], + [-77.0694949, 38.8597037], + [-77.0693635, 38.8599502], + [-77.0691999, 38.8603345], + [-77.0690577, 38.8607522], + [-77.068988, 38.8611073], + [-77.0688753, 38.8619218], + [-77.0688056, 38.8622142], + [-77.068709, 38.8624523], + [-77.0685676, 38.8627718], + [-77.0684585, 38.8629285] + ] + }, + "properties": { + "id": "0882aa87b05fffff043f5e030d785b2b", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w32858532", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663644", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50663645", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b04e4198047dfbe3fa9051db", + "08f2aa87b051c0c4047d7f1b57c0bbcc" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["foot", "bicycle"], + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 1, "between": [0.045380267, 0.093155028] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_link"], "between": [0.0, 0.045380267] }, + { + "values": ["is_bridge", "is_link"], + "between": [0.045380267, 0.093155028] + }, + { "values": ["is_link"], "between": [0.093155028, 1.0] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0726251, 38.8616112], + [-77.0727075, 38.8616032], + [-77.0739022, 38.8614907], + [-77.0740069, 38.861453] + ] + }, + "properties": { + "id": "0892aa87b04bffff043f5d5d7cb207ff", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796805", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "14th Street South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b04a614b043df97895faee93", + "08f2aa87b04b0628043fdb429b5624b6" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0738915, 38.8614514], + [-77.0739161, 38.8614258], + [-77.0739489, 38.8613875], + [-77.0740145, 38.8613726], + [-77.0740665, 38.8613949], + [-77.0740938, 38.8614365], + [-77.074087, 38.8614844], + [-77.074061, 38.8615121], + [-77.0739694, 38.8615259], + [-77.0727416, 38.8616398], + [-77.0727074, 38.8616569], + [-77.072691, 38.8616909], + [-77.0727306, 38.8619379], + [-77.072799, 38.8621743], + [-77.0728208, 38.8621969], + [-77.0728523, 38.8621945], + [-77.0743673, 38.8620146], + [-77.0743828, 38.8620685], + [-77.0744043, 38.8621432] + ] + }, + "properties": { + "id": "0882aa87b05fffff043fdd57da5c63a7", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906589590", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906589602", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "footway", + "connector_ids": [ + "08f2aa87b04b0398043f7b471d96b3ab", + "08f2aa87b059829d043dd970f0849a67", + "08f2aa87b04b6c9e043fdd33ec4502f1", + "08f2aa87b296b371043f793315eba53b" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0727489, 38.8622668], + [-77.0728373, 38.8622506], + [-77.0728729, 38.8622441], + [-77.0736542, 38.8621535], + [-77.0740456, 38.8621087], + [-77.0743828, 38.8620685], + [-77.07447, 38.8620581] + ] + }, + "properties": { + "id": "0882aa87b05fffff043f5f5227c06ee1", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1096799053", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "13th Road South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b05983ae043f5d73bf8acd25", + "08f2aa87b059876a043ffb704be968e7", + "08f2aa87b04b4d03043fdf5062248df5", + "08f2aa87b04b6914043d5f411837055c", + "08f2aa87b04b6c9e043fdd33ec4502f1", + "08f2aa87b296b25e043f7d3084b40e3e" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0727489, 38.8622668], + [-77.0727416, 38.8622051], + [-77.0727386, 38.8621791], + [-77.0726715, 38.8618513], + [-77.0726455, 38.8617247], + [-77.0726251, 38.8616112] + ] + }, + "properties": { + "id": "0882aa87b05fffff043f7b7615e0f887", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1096799054", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "South Queen Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b05983ae043f5d73bf8acd25", + "08f2aa87b059821c043dfb7408af9c8f", + "08f2aa87b05996d1043f5976c5985e9e", + "08f2aa87b04a688a043f5f77c94c2ea3", + "08f2aa87b04a614b043df97895faee93" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0725587, 38.8612171], + [-77.0724944, 38.8612315], + [-77.0723971, 38.8612533], + [-77.0723909, 38.8612917], + [-77.0724609, 38.8616941], + [-77.0724938, 38.8617149], + [-77.0725711, 38.8617199], + [-77.0726455, 38.8617247] + ] + }, + "properties": { + "id": "08a2aa87b04a7fff043dff7ed942ef0f", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760178", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563097820", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563097821", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b04a07aa043f5b7b2d8ae6b2", + "08f2aa87b04a0704043fdb7db0c45b45", + "08f2aa87b04a68e6043dff7ab1168f1f", + "08f2aa87b04a688a043f5f77c94c2ea3" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0725803, 38.8617781], + [-77.0724568, 38.8617513], + [-77.0724157, 38.8617165], + [-77.0723964, 38.8616676], + [-77.0723409, 38.861268], + [-77.0723542, 38.8612313], + [-77.072394, 38.8612031], + [-77.0724862, 38.8611793] + ] + }, + "properties": { + "id": "08a2aa87b04a7fff043df98122ef14bc", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667667", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "footway", + "connector_ids": [ + "08f2aa87b04a698d043d7d7a55b7876c", + "08f2aa87b04a0750043dd97e02979fab" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0728509, 38.8622947], + [-77.072853, 38.8623361], + [-77.0728135, 38.8623361] + ] + }, + "properties": { + "id": "08d2aa87b05980ff043ddf70149aa967", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906589603", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b05980db043d7b6fc3aef192", + "08f2aa87b0598089043f596faef845ec", + "08f2aa87b05980f5043f5971397c7915" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0728509, 38.8622947], + [-77.0728373, 38.8622506], + [-77.0728208, 38.8621969], + [-77.0727416, 38.8622051], + [-77.0726565, 38.8622138], + [-77.0726696, 38.8622813], + [-77.0726831, 38.8623511], + [-77.0727579, 38.8623425], + [-77.0728135, 38.8623361] + ] + }, + "properties": { + "id": "08b2aa87b0598fff043f5d740811eac0", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906589592", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "crosswalk", + "connector_ids": [ + "08f2aa87b05980db043d7b6fc3aef192", + "08f2aa87b059876a043ffb704be968e7", + "08f2aa87b059829d043dd970f0849a67", + "08f2aa87b059821c043dfb7408af9c8f", + "08f2aa87b059835c043d7b775b14122e", + "08f2aa87b0598323043fdd76d8726af3", + "08f2aa87b059814d043fdf7651e1ec8e", + "08f2aa87b0598072043f5973657e849b", + "08f2aa87b05980f5043f5971397c7915" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0726715, 38.8618513], + [-77.072593, 38.8618594], + [-77.0725773, 38.861861], + [-77.0718413, 38.8619137], + [-77.0718145, 38.8619457], + [-77.0718208, 38.8620264], + [-77.0718022, 38.8621509], + [-77.071798, 38.8622503], + [-77.0717969, 38.8623143], + [-77.0717958, 38.8623764] + ] + }, + "properties": { + "id": "0882aa87b05fffff043ff98d57f3add2", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760176", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563097822", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563097823", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b05996d1043f5976c5985e9e", + "08f2aa87b0599650043f7b79d6d8273e", + "08f2aa87b058e61e043d7f98ef4257e5", + "08f2aa87b058e7a3043fdd98fa80f88f" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0719307, 38.8623651], + [-77.0726445, 38.8622859], + [-77.0726696, 38.8622813], + [-77.0727489, 38.8622668] + ] + }, + "properties": { + "id": "0892aa87b05bffff043d5983b5562973", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796161", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "13th Road South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b059db53043f7b93b59c3e8b", + "08f2aa87b0598323043fdd76d8726af3", + "08f2aa87b05983ae043f5d73bf8acd25" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0720141, 38.8624245], + [-77.0719422, 38.8624332], + [-77.0718836, 38.8624431] + ] + }, + "properties": { + "id": "0892aa87b05bffff047ddb93015d922f", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667679", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "crosswalk", + "connector_ids": [ + "08f2aa87b059dba3047d7d9073501049", + "08f2aa87b059db22047ddd934236a175", + "08f2aa87b058e4f2047f7f958c375b13" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0718836, 38.8624431], + [-77.0718363, 38.8624213] + ] + }, + "properties": { + "id": "08d2aa87b058e4ff047ddb967943333d", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667675", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b058e4f2047f7f958c375b13", + "08f2aa87b058e4ee047d5d9765645d8c" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0744043, 38.8621432], + [-77.0740649, 38.8621854], + [-77.0737471, 38.8622249], + [-77.0736724, 38.8622342], + [-77.073598, 38.8622435], + [-77.072853, 38.8623361], + [-77.0729288, 38.8627074], + [-77.0729251, 38.8627143], + [-77.0729133, 38.8627364], + [-77.073, 38.8631704], + [-77.0730356, 38.8631993], + [-77.0730898, 38.8632017], + [-77.073127, 38.8631643], + [-77.0731703, 38.8631197], + [-77.0732261, 38.8631016], + [-77.0733112, 38.8631041], + [-77.0733654, 38.863139], + [-77.0733902, 38.8631788], + [-77.0733902, 38.8632391], + [-77.073353, 38.8632849], + [-77.0733097, 38.863309], + [-77.0732524, 38.8633235], + [-77.0731827, 38.8633042], + [-77.073127, 38.8632994], + [-77.0730976, 38.8633247], + [-77.0730883, 38.8633657], + [-77.0732106, 38.8635212], + [-77.0732787, 38.8636453], + [-77.073353, 38.8638382], + [-77.0733933, 38.8638587], + [-77.0734428, 38.8638575], + [-77.0738562, 38.8637382], + [-77.0742758, 38.8636333], + [-77.0747604, 38.8635031], + [-77.0747852, 38.8634838], + [-77.0747929, 38.8634778], + [-77.0747898, 38.8634464], + [-77.0747201, 38.8632716], + [-77.0746938, 38.8631933], + [-77.0746795, 38.8631687], + [-77.0746564, 38.8631291], + [-77.0746396, 38.8631004], + [-77.0746041, 38.8629548], + [-77.0745994, 38.8629358], + [-77.0745855, 38.8628788], + [-77.0745704, 38.8628171], + [-77.074556, 38.8627581] + ] + }, + "properties": { + "id": "0862aa87b7ffffff047d7d4f98a555d4", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906589596", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b296b371043f793315eba53b", + "08f2aa87b296975e043d5f4057cec57f", + "08f2aa87b2969ae5043df94cc12df269", + "08f2aa87b2969a60043f5f4faca701a6", + "08f2aa87b059a6a6043f7b5294d6ca5d", + "08f2aa87b0598089043f596faef845ec", + "08f2aa87b059ebab047ddf6cdd97ee0f", + "08f2aa87b05968c1047d7b5a93fe227c", + "08f2aa87b2963804047fdf2434ed1f2a", + "08f2aa87b296ec00047fdf2855414812", + "08f2aa87b296ec54047dfb293c955f0d", + "08f2aa87b296e053047f7d2b4797b90e", + "08f2aa87b296e05b047d7f2b7632013d", + "08f2aa87b296e232047f7d2c018b2d5e", + "08f2aa87b296e2e0047ddb2c98cc9d92", + "08f2aa87b2968586047f7d2d28e30405" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0729622, 38.8632712], + [-77.0727613, 38.8623706], + [-77.0727579, 38.8623425], + [-77.0727489, 38.8622668] + ] + }, + "properties": { + "id": "0892aa87b05bffff047ffb6fc3b28e75", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1096799049", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "South Queen Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0591c12047fd96b6ae3cee8", + "08f2aa87b0598072043f5973657e849b", + "08f2aa87b05983ae043f5d73bf8acd25" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0728599, 38.8631871], + [-77.0727007, 38.8623819] + ] + }, + "properties": { + "id": "0892aa87b05bffff047fdd7285eb47cb", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667672", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b0591c48047f7f6f69c1f64b", + "08f2aa87b0598144043fdb75a1793935" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0729141, 38.8633523], + [-77.0728833, 38.8632815], + [-77.0728524, 38.8632194] + ] + }, + "properties": { + "id": "08a2aa87b0597fff047f5f6e771fe014", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667674", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "crosswalk", + "connector_ids": [ + "08f2aa87b0590a4c047dfb6d4bfd5aef", + "08f2aa87b0591c25047fff6e7f26df1d", + "08f2aa87b0591c63047ddb6fb4a8e737" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0721033, 38.8632863], + [-77.0728075, 38.8632868], + [-77.0728833, 38.8632815], + [-77.0729622, 38.8632712] + ] + }, + "properties": { + "id": "0892aa87b05bffff047f5f7c2d851a33", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8795992", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "13th Street South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0582918047f5f8cf7ae825e", + "08f2aa87b0591c25047fff6e7f26df1d", + "08f2aa87b0591c12047fd96b6ae3cee8" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0727007, 38.8623819], + [-77.0726831, 38.8623511], + [-77.0726301, 38.8623416], + [-77.0720414, 38.8624003], + [-77.0720141, 38.8624245], + [-77.0720085, 38.8624677], + [-77.0721582, 38.8632033], + [-77.072178, 38.8632289], + [-77.0722308, 38.863237], + [-77.0728147, 38.863237], + [-77.0728524, 38.8632194], + [-77.0728599, 38.8631871] + ] + }, + "properties": { + "id": "0892aa87b05bffff047ddd84c103f339", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667672", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b0598144043fdb75a1793935", + "08f2aa87b059814d043fdf7651e1ec8e", + "08f2aa87b059dba3047d7d9073501049", + "08f2aa87b058288d047df98a0c67f401", + "08f2aa87b0591c63047ddb6fb4a8e737", + "08f2aa87b0591c48047f7f6f69c1f64b" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0721033, 38.8632863], + [-77.0720993, 38.8632213], + [-77.0719903, 38.8626762], + [-77.0719422, 38.8624332], + [-77.0719307, 38.8623651] + ] + }, + "properties": { + "id": "0892aa87b05bffff047d5f9038831f44", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8795484", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "South Poe Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0582918047f5f8cf7ae825e", + "08f2aa87b0582809047ddd8d1f8b85de", + "08f2aa87b058376e047f5b91615257dd", + "08f2aa87b059db22047ddd934236a175", + "08f2aa87b059db53043f7b93b59c3e8b" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.072178, 38.8632289], + [-77.0720993, 38.8632213], + [-77.0720274, 38.8632144] + ] + }, + "properties": { + "id": "08c2aa87b05829ff047dd98cfdaa5a58", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667680", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "crosswalk", + "connector_ids": [ + "08f2aa87b058288d047df98a0c67f401", + "08f2aa87b0582809047ddd8d1f8b85de", + "08f2aa87b0580492047d598fee2cfd5f" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0723768, 38.8604821], + [-77.0724862, 38.8611793], + [-77.0724944, 38.8612315], + [-77.0725711, 38.8617199], + [-77.0725803, 38.8617781], + [-77.072593, 38.8618594], + [-77.0726581, 38.8621906], + [-77.0726565, 38.8622138], + [-77.0726183, 38.8622319], + [-77.0717969, 38.8623143], + [-77.0713467, 38.8623592], + [-77.0709115, 38.8624011], + [-77.0708615, 38.8624015], + [-77.0708155, 38.8624019], + [-77.0707443, 38.8624088], + [-77.070117, 38.8624692] + ] + }, + "properties": { + "id": "0882aa87b05fffff043fff96f98eb6d5", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667665", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b04ae72d047ddd824804b3ed", + "08f2aa87b04a0750043dd97e02979fab", + "08f2aa87b04a0704043fdb7db0c45b45", + "08f2aa87b04a68e6043dff7ab1168f1f", + "08f2aa87b04a698d043d7d7a55b7876c", + "08f2aa87b0599650043f7b79d6d8273e", + "08f2aa87b059835c043d7b775b14122e", + "08f2aa87b058e61e043d7f98ef4257e5", + "08f2aa87b058ca99047ddbbb8540aec1", + "08f2aa87b058caf6047ddfbd79ec644b", + "08f2aa87b058cb59047dd9c20d2f8ae8", + "08f2aa87b05abb61047f7dda8ebc5f26" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0707443, 38.8624088], + [-77.0706634, 38.861893], + [-77.0709109, 38.8618707], + [-77.0709013, 38.8617919], + [-77.0710435, 38.861777], + [-77.0710353, 38.8616897], + [-77.0708685, 38.8615534], + [-77.0708316, 38.8613554] + ] + }, + "properties": { + "id": "0882aa87b05fffff043f79bebefabb89", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667671", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "footway", + "connector_ids": [ + "08f2aa87b058cb59047dd9c20d2f8ae8", + "08f2aa87b04144e9043ffbbea4db7522" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0708116, 38.8624713], + [-77.0708705, 38.8624658], + [-77.0709293, 38.8624601], + [-77.0714211, 38.8624126], + [-77.0717958, 38.8623764], + [-77.0719307, 38.8623651] + ] + }, + "properties": { + "id": "08a2aa87b058ffff047d7fa991152214", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796161", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "13th Road South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b058cbad047f59bf6c9c6edf", + "08f2aa87b058cb9c047f5bbd1f65917f", + "08f2aa87b058c14c047fd9bad37494ae", + "08f2aa87b058e7a3043fdd98fa80f88f", + "08f2aa87b059db53043f7b93b59c3e8b" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0719903, 38.8626762], + [-77.0719359, 38.8626997], + [-77.0718439, 38.8627395], + [-77.0716157, 38.8627735] + ] + }, + "properties": { + "id": "08a2aa87b0587fff047dff9890e5fe5f", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667678", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b058376e047f5b91615257dd", + "08f2aa87b05833b1047d7d9381220632", + "08f2aa87b0583b64047f5fa003f2cfcc" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0710698, 38.8619054], + [-77.0707935, 38.8619361], + [-77.0708168, 38.8620967], + [-77.0708567, 38.8623675], + [-77.0708615, 38.8624015], + [-77.0708705, 38.8624658] + ] + }, + "properties": { + "id": "08a2aa87b058ffff043dfdbd4a2c7370", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760171", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563078763", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b0589ca4043d7fb556c07cee", + "08f2aa87b058caf6047ddfbd79ec644b", + "08f2aa87b058cb9c047f5bbd1f65917f" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0709492, 38.8625264], + [-77.0709293, 38.8624601], + [-77.0709115, 38.8624011] + ] + }, + "properties": { + "id": "08b2aa87b058cfff047ffdbac8538f35", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667683", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "crosswalk", + "connector_ids": [ + "08f2aa87b058c12c047d79ba0cc734ef", + "08f2aa87b058c14c047fd9bad37494ae", + "08f2aa87b058ca99047ddbbb8540aec1" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0707123, 38.8625405], + [-77.070839, 38.8625401], + [-77.0709476, 38.8625396] + ] + }, + "properties": { + "id": "0892aa87b05bffff047df9beb4b7bbf3", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667682", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "crosswalk", + "connector_ids": [ + "08f2aa87b05ab4ae047dfdc34d69eece", + "08f2aa87b058c855047df9be5ae35e67", + "08f2aa87b058c8d6047dfdba1cd144ac" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0701072, 38.8625367], + [-77.0705989, 38.8624902], + [-77.0708116, 38.8624713] + ] + }, + "properties": { + "id": "0892aa87b05bffff047dddcd2e221db2", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796161", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "13th Road South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b05a94f1047ddfdaf044de5f", + "08f2aa87b058cbad047f59bf6c9c6edf" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0718363, 38.8624213], + [-77.0709913, 38.8625032], + [-77.0709492, 38.8625264], + [-77.0709476, 38.8625396], + [-77.0709439, 38.8625701], + [-77.0709737, 38.8626096], + [-77.0710684, 38.8626806], + [-77.071128, 38.8627694], + [-77.0711701, 38.86291], + [-77.0711701, 38.8629823], + [-77.0711701, 38.8630219], + [-77.0711736, 38.8632253], + [-77.0712069, 38.8632389], + [-77.071987, 38.8632335], + [-77.0720274, 38.8632144], + [-77.0720344, 38.863183], + [-77.0719659, 38.8628472], + [-77.0719359, 38.8626997], + [-77.0718836, 38.8624431] + ] + }, + "properties": { + "id": "0892aa87b05bffff047ddba3fdd4476a", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667675", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b058e4ee047d5d9765645d8c", + "08f2aa87b058c12c047d79ba0cc734ef", + "08f2aa87b058c8d6047dfdba1cd144ac", + "08f2aa87b0580492047d598fee2cfd5f", + "08f2aa87b05833b1047d7d9381220632", + "08f2aa87b058e4f2047f7f958c375b13" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0711198, 38.8632918], + [-77.0721033, 38.8632863] + ] + }, + "properties": { + "id": "08a2aa87b0587fff047f7ba02dda382b", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8795992", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "13th Street South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0585c5d047f5fb3625bde9f", + "08f2aa87b0582918047f5f8cf7ae825e" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0708116, 38.8624713], + [-77.070839, 38.8625401], + [-77.0708819, 38.8625894], + [-77.0709586, 38.8626406], + [-77.0710066, 38.8626802], + [-77.0710652, 38.862751], + [-77.0710887, 38.8628029], + [-77.0711033, 38.8628736], + [-77.0711194, 38.8630416], + [-77.0711198, 38.8632918] + ] + }, + "properties": { + "id": "0892aa87b05bffff047f7fb6b0ad568f", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8795656", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "South Pierce Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b058cbad047f59bf6c9c6edf", + "08f2aa87b058c855047df9be5ae35e67", + "08f2aa87b0585c5d047f5fb3625bde9f" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0701519, 38.8632438], + [-77.071025, 38.8632391], + [-77.0710576, 38.863225], + [-77.0710721, 38.8632024], + [-77.07106, 38.8628715], + [-77.0710359, 38.8628066], + [-77.0709803, 38.8627333], + [-77.0709151, 38.8626721], + [-77.0707123, 38.8625405], + [-77.0706603, 38.8625424], + [-77.0701163, 38.8625953] + ] + }, + "properties": { + "id": "0892aa87b05bffff047d5bc42b2c1392", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667681", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b05ac4e8047d7fd931c1b8ab", + "08f2aa87b05ab4ae047dfdc34d69eece", + "08f2aa87b05a958b047d79da95fda215" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0699983, 38.8632945], + [-77.0711198, 38.8632918] + ] + }, + "properties": { + "id": "0892aa87b05bffff047f7dc94a71fe74", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8795992", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "13th Street South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b05ac199047f79df31e71142", + "08f2aa87b0585c5d047f5fb3625bde9f" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.069807, 38.8641236], + [-77.0698062, 38.8640506], + [-77.0698738, 38.8639679], + [-77.0699839, 38.8639491], + [-77.0711615, 38.8639348], + [-77.0731807, 38.8639225], + [-77.0732175, 38.8639223], + [-77.073322, 38.8639216] + ] + }, + "properties": { + "id": "0892aa87b05bffff047df9a42a31ae58", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1096799050", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "12th Street South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b05a5952043fdde6aa9bc458", + "08f2aa87b05a202a047d7db1c10edae7", + "08f2aa87b059459c047fff617109de93", + "08f2aa87b059682d047ff95d5c196396" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0711198, 38.8632918], + [-77.0711189, 38.863352], + [-77.0711147, 38.8636334], + [-77.0711286, 38.8637703], + [-77.0711545, 38.8638998], + [-77.0711615, 38.8639348] + ] + }, + "properties": { + "id": "0892aa87b05bffff047ffbb32a08d583", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w185449438", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "alley", + "names": { + "primary": "South Pierce Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0585c5d047f5fb3625bde9f", + "08f2aa87b0585c2d047df9b36b757b4b", + "08f2aa87b05a2054047f5fb2079fd872", + "08f2aa87b05a202a047d7db1c10edae7" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0697605, 38.8632334], + [-77.0698626, 38.8628031] + ] + }, + "properties": { + "id": "08a2aa87b05affff047dffe67cc8c11c", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w512273618", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b05aca12047d5fe87befac33", + "08f2aa87b05ad695047d7fe47e01f353" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.069807, 38.8641236], + [-77.0698457, 38.8642339], + [-77.069934, 38.8642609], + [-77.0725953, 38.8642348], + [-77.0731128, 38.8642245], + [-77.0733123, 38.8641982], + [-77.0733335, 38.8641954], + [-77.0734111, 38.8641851] + ] + }, + "properties": { + "id": "0862aa87b7ffffff043d5da1c6115149", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796087", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "11th Street South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b05a5952043fdde6aa9bc458", + "08f2aa87b62c90a3043ffb5ce9aa4003", + "08f2aa87b62c946e043f7b59e1e505e6" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0700645, 38.8633561], + [-77.0711189, 38.863352], + [-77.0728653, 38.8633452], + [-77.0729141, 38.8633523], + [-77.0729892, 38.8634561], + [-77.0731007, 38.8635924], + [-77.0732044, 38.8638274], + [-77.0731843, 38.863866], + [-77.0731363, 38.8638841], + [-77.0711545, 38.8638998], + [-77.0699329, 38.8639094], + [-77.0698493, 38.8639287], + [-77.0697905, 38.8639721], + [-77.069758, 38.8640312], + [-77.0697595, 38.8642], + [-77.0697905, 38.8642554], + [-77.0698633, 38.8643], + [-77.0699964, 38.8643121], + [-77.0730434, 38.8642831], + [-77.073161, 38.8642771], + [-77.0733112, 38.8642554], + [-77.073367, 38.8642602], + [-77.0734088, 38.8642988], + [-77.0734924, 38.8645411], + [-77.0734831, 38.8645821], + [-77.0735373, 38.8647714], + [-77.0735171, 38.8648003], + [-77.0734676, 38.8648184], + [-77.0733375, 38.8647894], + [-77.0733233, 38.8647832], + [-77.0731967, 38.864728], + [-77.073113, 38.8647219], + [-77.072133, 38.864728], + [-77.072133, 38.8648991], + [-77.0727244, 38.8648931], + [-77.0727229, 38.8648509], + [-77.0729025, 38.8648485], + [-77.0729114, 38.8651723] + ] + }, + "properties": { + "id": "0862aa87b7ffffff043f5b968c687c49", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667685", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w906667686", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "footway", + "connector_ids": [ + "08f2aa87b05ac52d047dd9dc9be64d48", + "08f2aa87b0585c2d047df9b36b757b4b", + "08f2aa87b0590a4c047dfb6d4bfd5aef", + "08f2aa87b059441a047ddd62bdc54fc5", + "08f2aa87b05a2054047f5fb2079fd872", + "08f2aa87b62c9564043d7b5b9a6321a3", + "08f2aa87b62ebd92043ddb6d66dbea36" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0709105, 38.8652817], + [-77.0704232, 38.8651267], + [-77.0702407, 38.8650639], + [-77.0700455, 38.8649649], + [-77.0698995, 38.864862], + [-77.0697635, 38.8647336], + [-77.0696552, 38.8645758], + [-77.0695835, 38.8643964], + [-77.0695646, 38.8642611], + [-77.0695633, 38.8640787], + [-77.0696104, 38.8638139], + [-77.0697605, 38.8632334] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043ddfe167fde11a", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50694826", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b625c6e1043d59bb8f65f6f9", + "08f2aa87b05aca12047d5fe87befac33" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0686735, 38.8652216], + [-77.0688433, 38.8650753], + [-77.0690901, 38.8647997], + [-77.0692886, 38.8644571], + [-77.0694334, 38.8641063], + [-77.0697605, 38.8632334] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043f5bfa468904ac", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50695219", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50695220", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b626b1ab043ffa12f157e51e", + "08f2aa87b05aca12047d5fe87befac33" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 2, "between": [0.0, 0.244021902] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_bridge", "is_link"], "between": [0.0, 0.244021902] }, + { "values": ["is_link"], "between": [0.244021902, 1.0] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0681712, 38.8634704], + [-77.0680009, 38.8638856], + [-77.0679279, 38.8641209], + [-77.0678952, 38.8643307], + [-77.0678977, 38.8645385], + [-77.0679455, 38.8647561], + [-77.068074, 38.8649796], + [-77.0682313, 38.8651718], + [-77.0684026, 38.8652963], + [-77.0686317, 38.8653835], + [-77.0687991, 38.8654158], + [-77.0690207, 38.8654403], + [-77.0692491, 38.8654465], + [-77.0696691, 38.865458], + [-77.0702601, 38.8654876], + [-77.0703954, 38.8654961], + [-77.070543, 38.8655002], + [-77.0706878, 38.8655107], + [-77.0715459, 38.8655943] + ] + }, + "properties": { + "id": "0862aa87b7ffffff043df9fe0fb9053c", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w469088902", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50667657", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b0502c45047f5a269059a6c1", + "08f2aa87b6253358043d5fa2bd402ed5" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0682476, 38.8575973], + [-77.0682316, 38.8576629], + [-77.0682067, 38.8577655], + [-77.068145, 38.8579561], + [-77.0680739, 38.8581465], + [-77.0680592, 38.8581858], + [-77.0679178, 38.8585712], + [-77.067909, 38.8585973], + [-77.0672846, 38.860307] + ] + }, + "properties": { + "id": "0882aa87b05fffff043dfb35f6a1c77f", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w90962620", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "secondary", + "names": { + "primary": "South Arlington Ridge Road", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0458cad043dff2394114bbd", + "08f2aa87b0458da1043f7f2434225655", + "08f2aa87b0451aa3043f5b2a5d92010b", + "08f2aa87b0455153043ffa3076ebe907", + "08f2aa87b0455172043fff30ce4c9c82", + "08f2aa87b042d2a0047ffe493243c201" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0681477, 38.8612517], + [-77.0682149, 38.8611449], + [-77.0683352, 38.8609459], + [-77.0685085, 38.8606526], + [-77.069311, 38.8593386] + ] + }, + "properties": { + "id": "0892aa87b043ffff047f5b10cb36b332", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w598236266", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w598236267", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "Army Navy Drive", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0421511043fff277b325510", + "08f2aa87b040bcc0047dfbfa0a5cf77e" + ], + "access_restrictions": [ + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0676754, 38.8606368], + [-77.0674037, 38.8604331], + [-77.0672846, 38.860307] + ] + }, + "properties": { + "id": "08a2aa87b042ffff047d7a41d1451aa1", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w578212151", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b042c66d047ffa39eed4c0a3", + "08f2aa87b042d2a0047ffe493243c201" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "prohibited_transitions": [ + { + "sequence": [ + { + "connector_id": "08f2aa87b042d2a0047ffe493243c201", + "segment_id": "08b2aa87b042dfff047d5a4a0a71c0f1" + } + ], + "final_heading": "forward", + "when": { + "heading": "forward", + "during": null, + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0676754, 38.8606368], + [-77.067381, 38.8604696], + [-77.0672414, 38.8604262] + ] + }, + "properties": { + "id": "08a2aa87b042ffff047f5e423cd7981a", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w578212152", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b042c66d047ffa39eed4c0a3", + "08f2aa87b042d070047f7e4ae29f3ddf" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "prohibited_transitions": [ + { + "sequence": [ + { + "connector_id": "08f2aa87b042d070047f7e4ae29f3ddf", + "segment_id": "0882aa87b05fffff043f5a22ac356d9e" + } + ], + "final_heading": "forward", + "when": { + "heading": "forward", + "during": null, + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "sequence": [ + { + "connector_id": "08f2aa87b042d070047f7e4ae29f3ddf", + "segment_id": "08b2aa87b042dfff047d5a4a0a71c0f1" + } + ], + "final_heading": "backward", + "when": { + "heading": "forward", + "during": null, + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0672846, 38.860307], + [-77.0672414, 38.8604262] + ] + }, + "properties": { + "id": "08b2aa87b042dfff047d5a4a0a71c0f1", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w578212150", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "secondary", + "names": { + "primary": "South Arlington Ridge Road", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b042d2a0047ffe493243c201", + "08f2aa87b042d070047f7e4ae29f3ddf" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0672414, 38.8604262], + [-77.0672061, 38.8605255], + [-77.0671156, 38.86078], + [-77.0670959, 38.8608353], + [-77.0669898, 38.861134], + [-77.0669442, 38.8612623] + ] + }, + "properties": { + "id": "0892aa87b057ffff043ffa50b0c799df", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w590831817", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "secondary", + "names": { + "primary": "South Arlington Ridge Road", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b042d070047f7e4ae29f3ddf", + "08f2aa87b0553085043f7b50915fc2f9", + "08f2aa87b0550799043f5e54b6721dab", + "08f2aa87b055042c043d5f567e660ef3" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0671408, 38.8611676], + [-77.0672433, 38.8608685], + [-77.0670959, 38.8608353] + ] + }, + "properties": { + "id": "08a2aa87b0557fff043d7b4d180fd8b9", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w765920254", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b0552a35043d5e4ed0b3e76b", + "08f2aa87b0553085043f7b50915fc2f9" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0669898, 38.861134], + [-77.0671408, 38.8611676], + [-77.0674131, 38.8612272], + [-77.0674601, 38.8612307] + ] + }, + "properties": { + "id": "08a2aa87b0557fff043d5f4b8b51ab23", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w765920253", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b0550799043f5e54b6721dab", + "08f2aa87b0552a35043d5e4ed0b3e76b", + "08f2aa87b0552568043fdb42577fa0c9" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0665767, 38.8614746], + [-77.0666457, 38.8614364], + [-77.0667, 38.8614047], + [-77.0669442, 38.8612623] + ] + }, + "properties": { + "id": "08a2aa87b0557fff043d7b5da89cb24d", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796900", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "secondary", + "names": { + "primary": "South Lynn Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0554748043d5a64d99e83e1", + "08f2aa87b05546c9043ddf6008b89a67", + "08f2aa87b055042c043d5f567e660ef3" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0663444, 38.8613456], + [-77.0664201, 38.8613245], + [-77.0665151, 38.861282], + [-77.0665528, 38.8612473], + [-77.0664634, 38.8611561], + [-77.0663112, 38.8611718], + [-77.066263, 38.8612051] + ] + }, + "properties": { + "id": "08a2aa87b0557fff043ffe6a8a4d5e82", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1103306249", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1103306250", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1103306251", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b055552a043f5a6dec079a1f", + "08f2aa87b0555436043f7f6af79ea8c3", + "08f2aa87b055570a043dde6f3815223b", + "08f2aa87b05550d2043ddb711aea35e4" + ], + "road_flags": [ + { "values": ["is_covered"], "between": [0.404751183, 0.644631587] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0653407, 38.8589328], + [-77.0654073, 38.8589273], + [-77.0656291, 38.8589063], + [-77.0658309, 38.8588872], + [-77.0658757, 38.8589459], + [-77.0659551, 38.8596387], + [-77.0660977, 38.8596244], + [-77.0662219, 38.8596403], + [-77.0662422, 38.8597195], + [-77.0660814, 38.8605598], + [-77.0660203, 38.8605788], + [-77.0658333, 38.860558], + [-77.065603, 38.8605324], + [-77.0654075, 38.8605106], + [-77.065381, 38.860471], + [-77.0655174, 38.8596767], + [-77.0655102, 38.8596276] + ] + }, + "properties": { + "id": "0882aa87b05fffff047d7a82b997af88", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w257032516", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b0465210043d5a9521f39fc8", + "08f2aa87b0465286043ddb92874fa3ef", + "08f2aa87b0461d2e043d5f89dd5e614b", + "08f2aa87b0559223047dfb7d21ce0dab", + "08f2aa87b055cb24047dde81e34a3b5a", + "08f2aa87b054308e047fde8ae2d017f5", + "08f2aa87b0464934047d7e8e82b93be8" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0656291, 38.8589063], + [-77.0657475, 38.8596624], + [-77.065603, 38.8605324], + [-77.065552, 38.8608087], + [-77.0656917, 38.8610522], + [-77.0658533, 38.8613837], + [-77.0658848, 38.8614484] + ] + }, + "properties": { + "id": "0882aa87b05fffff047ffa87ce5f50cc", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w257032545", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b0461d2e043d5f89dd5e614b", + "08f2aa87b054308e047fde8ae2d017f5", + "08f2aa87b054291a043fda876b7b1d7f", + "08f2aa87b0546584043ddf811bb7ef21", + "08f2aa87b05732e4043f5e7fe097f2d3" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0657927, 38.8607969], + [-77.0658333, 38.860558], + [-77.0659694, 38.8597084], + [-77.0659551, 38.8596387] + ] + }, + "properties": { + "id": "0892aa87b057ffff047f5b7fccc6ba6f", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w257032536", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b0542313043dfb83792e5b8b", + "08f2aa87b055cb24047dde81e34a3b5a", + "08f2aa87b0559223047dfb7d21ce0dab" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0664232, 38.8615594], + [-77.0663579, 38.8613738], + [-77.0663444, 38.8613456], + [-77.0662864, 38.8612245], + [-77.066263, 38.8612051], + [-77.0661736, 38.8611311], + [-77.0660268, 38.8610857] + ] + }, + "properties": { + "id": "08a2aa87b0557fff043dfa70cea675bd", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8795593", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "residential", + "names": { + "primary": "15th Street South", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0554a93043ffa6ad8e3fc12", + "08f2aa87b055552a043f5a6dec079a1f", + "08f2aa87b05550d2043ddb711aea35e4", + "08f2aa87b055534c043d7b7a54c84ab2" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0698626, 38.8628031], + [-77.0698677, 38.8624815], + [-77.0698516, 38.8622142], + [-77.069798, 38.8620805], + [-77.0697068, 38.8619427], + [-77.0695834, 38.8618467], + [-77.0692272, 38.861616], + [-77.068767, 38.8613228], + [-77.0685195, 38.8611765], + [-77.0679694, 38.8608255], + [-77.0678275, 38.860733], + [-77.0676754, 38.8606368] + ] + }, + "properties": { + "id": "0882aa87b05fffff043d5f0600f575ed", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w469088901", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664590", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664592", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664593", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664594", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b05ad695047d7fe47e01f353", + "08f2aa87b042c66d047ffa39eed4c0a3" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": [0.0, 0.3006934] + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "level_rules": [ + { "value": 1, "between": [0.3006934, 0.627692496] }, + { "value": 1, "between": [0.710161925, 0.898895343] } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_link"], "between": [0.0, 0.3006934] }, + { + "values": ["is_bridge", "is_link"], + "between": [0.3006934, 0.627692496] + }, + { "values": ["is_link"], "between": [0.627692496, 0.710161925] }, + { + "values": ["is_bridge", "is_link"], + "between": [0.710161925, 0.898895343] + }, + { "values": ["is_link"], "between": [0.898895343, 1.0] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0680671, 38.8617728], + [-77.0680571, 38.8616608], + [-77.0680566, 38.8615701], + [-77.0680621, 38.8615046], + [-77.068091, 38.8613871], + [-77.0681477, 38.8612517] + ] + }, + "properties": { + "id": "08a2aa87b0427fff043dff2a22f6bd42", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w598236266", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "Army Navy Drive", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b042476b043d5a2aa1e1db19", + "08f2aa87b0421511043fff277b325510" + ], + "access_restrictions": [ + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0681477, 38.8612517], + [-77.0679598, 38.8614648], + [-77.0678318, 38.8616868], + [-77.0678257, 38.8616982], + [-77.0676843, 38.86195] + ] + }, + "properties": { + "id": "0882aa87b05fffff043ddf312a7c3978", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w624395954", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "connector_ids": [ + "08f2aa87b0421511043fff277b325510", + "08f2aa87b0425c84043d5e340fc56f28", + "08f2aa87b050b41a043ffe3995e5b757" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0672414, 38.8604262], + [-77.0673229, 38.8605162], + [-77.0674752, 38.8606102], + [-77.0679547, 38.8609079], + [-77.0682164, 38.8610791], + [-77.0682916, 38.8611287], + [-77.0684748, 38.8612876], + [-77.0686178, 38.8614832], + [-77.068709, 38.8617088], + [-77.0687305, 38.861926], + [-77.0686983, 38.8621515], + [-77.0686232, 38.8624565], + [-77.0685419, 38.8627288], + [-77.0684585, 38.8629285] + ] + }, + "properties": { + "id": "0882aa87b05fffff043f5a22ac356d9e", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664596", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664598", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664599", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w598236268", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b042d070047f7e4ae29f3ddf", + "08f2aa87b051c0c4047d7f1b57c0bbcc" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 1, "between": [0.246473959, 0.432011331] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_link"], "between": [0.0, 0.246473959] }, + { + "values": ["is_bridge", "is_link"], + "between": [0.246473959, 0.432011331] + }, + { "values": ["is_link"], "between": [0.432011331, 1.0] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0681445, 38.8619944], + [-77.068092, 38.861868], + [-77.0680671, 38.8617728] + ] + }, + "properties": { + "id": "08b2aa87b0424fff043d7b2943edb3c7", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w91209519", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "Army Navy Drive", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0424cd0043dfa279bd138a0", + "08f2aa87b042476b043d5a2aa1e1db19" + ], + "access_restrictions": [ + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0678038, 38.8618629], + [-77.0678693, 38.8618278], + [-77.067976, 38.861794], + [-77.0680671, 38.8617728] + ] + }, + "properties": { + "id": "08b2aa87b0424fff043d7f2fe0fbabc7", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796954", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "South Nash Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0424a31043fdf34ea339c71", + "08f2aa87b04243a1043dde2e303675ec", + "08f2aa87b042476b043d5a2aa1e1db19" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0678038, 38.8618629], + [-77.0679207, 38.8618846], + [-77.0679949, 38.8618999], + [-77.0680439, 38.8619276], + [-77.0681445, 38.8619944] + ] + }, + "properties": { + "id": "08b2aa87b0424fff043d7f2dfff1cc36", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w624395955", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "connector_ids": [ + "08f2aa87b0424a31043fdf34ea339c71", + "08f2aa87b0424021043dff2d73cd474e", + "08f2aa87b0424cd0043dfa279bd138a0" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0676843, 38.86195], + [-77.0677384, 38.8619029], + [-77.0678038, 38.8618629] + ] + }, + "properties": { + "id": "0892aa87b053ffff043d7a3752d20b30", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796954", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "South Nash Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b050b41a043ffe3995e5b757", + "08f2aa87b0424a31043fdf34ea339c71" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0678221, 38.8612721], + [-77.0677095, 38.8614788], + [-77.0676912, 38.8615158], + [-77.067629, 38.8616417], + [-77.0675767, 38.8617702], + [-77.0672979, 38.8617158] + ] + }, + "properties": { + "id": "0882aa87b05fffff043d5f3c9ba94637", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760175", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b0421813043d7b3433bd6073", + "08f2aa87b042500a043dfe395073c5e2", + "08f2aa87b042589c043ffb3bbe130414", + "08f2aa87b050b268043dde48ad30a908" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0676912, 38.8615158], + [-77.0673956, 38.8614412], + [-77.0673474, 38.8615791] + ] + }, + "properties": { + "id": "0882aa87b05fffff043dfa4143a823f7", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760174", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b042500a043dfe395073c5e2", + "08f2aa87b05564f5043d7f46bee736ba" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0672458, 38.86186], + [-77.0674278, 38.8618986], + [-77.0673272, 38.8621931] + ] + }, + "properties": { + "id": "08a2aa87b050ffff043d7b46291bba31", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760172", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b050ba1b043f7a4ab69033d7", + "08f2aa87b0508605043d7b47884fa8db" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0669442, 38.8612623], + [-77.0668122, 38.8616053] + ] + }, + "properties": { + "id": "08a2aa87b0557fff043fda5912e5bf08", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w45837051", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "South Arlington Ridge Road", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b055042c043d5f567e660ef3", + "08f2aa87b0556b25043d7f5ba60c1391" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0665767, 38.8614746], + [-77.0666791, 38.8614671], + [-77.0667047, 38.861469], + [-77.0667138, 38.8614693], + [-77.0667486, 38.8614784], + [-77.0667729, 38.8614917], + [-77.0667985, 38.8615155], + [-77.0668071, 38.8615345], + [-77.0668083, 38.8615515], + [-77.0668122, 38.8616053] + ] + }, + "properties": { + "id": "08a2aa87b0557fff043d5f5f0e99ba0c", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1092735621", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "secondary", + "connector_ids": [ + "08f2aa87b0554748043d5a64d99e83e1", + "08f2aa87b05546f4043d7f5f7e0f0956", + "08f2aa87b0556b25043d7f5ba60c1391" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0664232, 38.8615594], + [-77.0665767, 38.8614746] + ] + }, + "properties": { + "id": "08b2aa87b0554fff043f5a67d8800388", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796900", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "secondary", + "names": { + "primary": "South Lynn Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0554a93043ffa6ad8e3fc12", + "08f2aa87b0554748043d5a64d99e83e1" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0666649, 38.8619881], + [-77.0665987, 38.861973], + [-77.0665517, 38.8619623] + ] + }, + "properties": { + "id": "08c2aa87b0509bff043ffa639d021ecb", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641297", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b0509ba6043d7b6167ccad59", + "08f2aa87b0509b00043fda63fdbcd50a", + "08f2aa87b0509b2d043f7f65d38ffac7" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0665517, 38.8619623], + [-77.0663358, 38.8619163] + ] + }, + "properties": { + "id": "08b2aa87b0572fff043fdb6a0bf96cf9", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641296", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b0509b2d043f7f65d38ffac7", + "08f2aa87b05720da043ddb6e428cd1cf" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0668906, 38.8631053], + [-77.0668311, 38.8630729], + [-77.0667962, 38.8630547], + [-77.067114, 38.8622245], + [-77.0672458, 38.86186], + [-77.0672979, 38.8617158], + [-77.0673474, 38.8615791], + [-77.067629, 38.8616417] + ] + }, + "properties": { + "id": "0882aa87b05fffff043ffa4f8285e22b", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760177", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563078761", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b052a403047d5f589628133f", + "08f2aa87b052a444047fdb5ae951a1d7", + "08f2aa87b050ba1b043f7a4ab69033d7", + "08f2aa87b050b268043dde48ad30a908", + "08f2aa87b05564f5043d7f46bee736ba", + "08f2aa87b042589c043ffb3bbe130414" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0665517, 38.8619623], + [-77.0663688, 38.8624288], + [-77.0664262, 38.8624381], + [-77.066486, 38.8624531] + ] + }, + "properties": { + "id": "08a2aa87b050ffff043f5b69a4696450", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641295", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b0509b2d043f7f65d38ffac7", + "08f2aa87b050d80c047dff6abaada148", + "08f2aa87b050d8ac047fdb6864a3a2bb" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0684585, 38.8629285], + [-77.0681712, 38.8634704] + ] + }, + "properties": { + "id": "0892aa87b053ffff047ffb20f35c6afd", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w574932111", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b051c0c4047d7f1b57c0bbcc", + "08f2aa87b0502c45047f5a269059a6c1" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0686735, 38.8652216], + [-77.068761, 38.8650567], + [-77.0687996, 38.8650198], + [-77.0688675, 38.8649328], + [-77.0689355, 38.8648271], + [-77.0689768, 38.8647446], + [-77.0691276, 38.8644739], + [-77.0692296, 38.8642191], + [-77.06931, 38.863935], + [-77.0693744, 38.86358], + [-77.0694334, 38.8629493], + [-77.0694976, 38.8619343] + ] + }, + "properties": { + "id": "0872aa87b0ffffff047dfbfc0b908b6e", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50695217", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50695224", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b626b1ab043ffa12f157e51e", + "08f2aa87b0435596043f5ff2c0c31c9e" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 2, "between": [0.0, 0.157560299] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_bridge", "is_link"], "between": [0.0, 0.157560299] }, + { "values": ["is_link"], "between": [0.157560299, 1.0] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0678423, 38.8637344], + [-77.0677835, 38.8637127], + [-77.0677402, 38.8636944], + [-77.067637, 38.8636508] + ] + }, + "properties": { + "id": "08b2aa87b0506fff047f5a376f8ad7d8", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w900742534", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b050615d047dfa33690ea3c0", + "08f2aa87b0506aad047f5a3766fd0e27", + "08f2aa87b0506a6a047d5e3b6e03fd8b" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0673873, 38.8628175], + [-77.0669889, 38.8633741] + ] + }, + "properties": { + "id": "0892aa87b053ffff047ffe4cf77b624c", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641302", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b050e9aa047ddf452f3d4018", + "08f2aa87b0505053047fdf54bf2bec81" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0668122, 38.8616053], + [-77.0666649, 38.8619881], + [-77.066486, 38.8624531], + [-77.0664278, 38.8626043], + [-77.0663146, 38.8628986], + [-77.0662801, 38.8629882], + [-77.0659964, 38.863811], + [-77.065848, 38.8642412], + [-77.0658024, 38.8646279], + [-77.0657861, 38.864766], + [-77.0657799, 38.8648119], + [-77.0658207, 38.8648692], + [-77.0658781, 38.8649077], + [-77.0659146, 38.8649068], + [-77.0659708, 38.8649054], + [-77.0660253, 38.8648702], + [-77.0660423, 38.8648073], + [-77.066023, 38.8647361], + [-77.0659808, 38.8646419], + [-77.0659943, 38.8645711], + [-77.0660275, 38.8644903], + [-77.0660969, 38.8643771], + [-77.0663569, 38.863909], + [-77.0665507, 38.8635931], + [-77.0667613, 38.8632867], + [-77.0668906, 38.8631053], + [-77.0673113, 38.8625125], + [-77.0675068, 38.8622142], + [-77.0676055, 38.8620633], + [-77.0676843, 38.86195] + ] + }, + "properties": { + "id": "0872aa87b0ffffff047dfe694767c131", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w45837051", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796954", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "South Arlington Ridge Road", + "common": null, + "rules": [ + { + "variant": "common", + "language": null, + "value": "South Arlington Ridge Road", + "between": [0.0, 0.504799454], + "side": null + }, + { + "variant": "common", + "language": null, + "value": "South Nash Street", + "between": [0.504799454, 1.0], + "side": null + } + ] + }, + "connector_ids": [ + "08f2aa87b0556b25043d7f5ba60c1391", + "08f2aa87b0509ba6043d7b6167ccad59", + "08f2aa87b050d8ac047fdb6864a3a2bb", + "08f2aa87b052b75c047d7b6aaad14a63", + "08f2aa87b052bd71047ffa6f166fe015", + "08f2aa87b0521aa5047fde7b841e66d5", + "08f2aa87b0c8b55b043fdf831884757c", + "08f2aa87b052ada3047f7b5da3f660c0", + "08f2aa87b052a403047d5f589628133f", + "08f2aa87b050b41a043ffe3995e5b757" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0667613, 38.8632867], + [-77.0668272, 38.863312], + [-77.0669889, 38.8633741] + ] + }, + "properties": { + "id": "08b2aa87b0505fff047dda593142a6cc", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641301", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b052ada3047f7b5da3f660c0", + "08f2aa87b0505add047d7a5b106280bb", + "08f2aa87b0505053047fdf54bf2bec81" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.067782, 38.8616826], + [-77.0678257, 38.8616982], + [-77.0678636, 38.8617116], + [-77.0679637, 38.8617016], + [-77.067976, 38.861794], + [-77.0679836, 38.861857], + [-77.0679949, 38.8618999], + [-77.0680097, 38.8619669], + [-77.0680531, 38.8620231], + [-77.0677256, 38.8621486], + [-77.0676298, 38.8621497], + [-77.0671856, 38.8627981], + [-77.0668272, 38.863312], + [-77.066534, 38.8637325], + [-77.066343, 38.8640684], + [-77.066319, 38.8641117], + [-77.0661712, 38.8643778], + [-77.0660641, 38.8645728], + [-77.0660512, 38.8646259], + [-77.0660472, 38.8646423], + [-77.0660749, 38.8647191], + [-77.0661165, 38.8648319], + [-77.066105, 38.864881], + [-77.0660772, 38.8649266], + [-77.0660695, 38.8649392], + [-77.0660256, 38.8649704], + [-77.0660016, 38.8649789], + [-77.0659632, 38.8649926], + [-77.0659016, 38.8649956], + [-77.0658598, 38.8649894], + [-77.0658408, 38.8649866], + [-77.0657978, 38.8649649], + [-77.0657838, 38.8649578], + [-77.0657637, 38.8649406], + [-77.0657521, 38.8649307], + [-77.0657381, 38.8649039], + [-77.0656871, 38.8648999] + ] + }, + "properties": { + "id": "0872aa87b0ffffff047d7e5853b6c3d8", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w207760173", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "footway", + "connector_ids": [ + "08f2aa87b0425c1a043d7a35c4cab0aa", + "08f2aa87b0425c84043d5e340fc56f28", + "08f2aa87b04243a1043dde2e303675ec", + "08f2aa87b0424021043dff2d73cd474e", + "08f2aa87b0424c0d043ddf2b2d02c68f", + "08f2aa87b0505add047d7a5b106280bb", + "08f2aa87b0c8ab4a043f7f879992d220" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0674041, 38.8635525], + [-77.067637, 38.8636508] + ] + }, + "properties": { + "id": "08a2aa87b0507fff047f7b3ffaf11919", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641299", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b050091c047ddf4487026436", + "08f2aa87b0506a6a047d5e3b6e03fd8b" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.067637, 38.8636508], + [-77.0674824, 38.8638802] + ] + }, + "properties": { + "id": "08a2aa87b0507fff047ddf3e73be7526", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641298", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b0506a6a047d5e3b6e03fd8b", + "08f2aa87b0504521047f5a4178d93208" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0669889, 38.8633741], + [-77.0664807, 38.8641333], + [-77.0668817, 38.864293], + [-77.0672447, 38.8637785], + [-77.0674041, 38.8635525], + [-77.067799, 38.862993], + [-77.0673873, 38.8628175] + ] + }, + "properties": { + "id": "0892aa87b053ffff047d5a4f625dd38a", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641302", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "parking_aisle", + "connector_ids": [ + "08f2aa87b0505053047fdf54bf2bec81", + "08f2aa87b0504140047f5b4ac1890f0a", + "08f2aa87b050091c047ddf4487026436", + "08f2aa87b050e9aa047ddf452f3d4018" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0674824, 38.8638802], + [-77.0676017, 38.8639312], + [-77.0676346, 38.8639453], + [-77.0677028, 38.8639742] + ] + }, + "properties": { + "id": "0892aa87b053ffff047d7b3d2a0cb34a", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w900742533", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b0504521047f5a4178d93208", + "08f2aa87b0531252047d5a3ccfec76ee", + "08f2aa87b0531295047dfe38dc24bd98" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0690581, 38.8620286], + [-77.0690094, 38.8625066], + [-77.0689236, 38.8630245], + [-77.0688163, 38.8634046], + [-77.0686339, 38.8638265], + [-77.0683711, 38.8642693], + [-77.0680975, 38.8646452], + [-77.0678187, 38.8649291], + [-77.0675666, 38.8651589], + [-77.0671963, 38.8654472], + [-77.0666759, 38.8657604], + [-77.0661341, 38.8660027] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043f7f2cec37dde2", + "version": 0, + "sources": [ + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r1670156", + "update_time": null, + "confidence": null + }, + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r8780622", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w122189454", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664437", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w695842791", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "names": { + "primary": "Henry G. Shirley Memorial Highway", + "common": null, + "rules": [ + { + "variant": "short", + "language": null, + "value": "Shirley Highway", + "between": null, + "side": null + } + ] + }, + "connector_ids": [ + "08f2aa87b051b65d043dfe03eb330adc", + "08f2aa87b0c82a2d047d7b76238d49f1" + ], + "routes": [ + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.0, 0.57083] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.792217, 1.0] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.57083, 0.792217] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.57083, 0.792217] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.792217, 1.0] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.0, 0.57083] + } + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["foot", "bicycle"], + "vehicle": null + }, + "between": null + }, + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["hgv"], + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 2, "between": [0.571081456, 0.792565377] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_bridge"], "between": [0.571081456, 0.792565377] } + ], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 55, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0672447, 38.8637785], + [-77.0674824, 38.8638802] + ] + }, + "properties": { + "id": "08b2aa87b0504fff047d5e461c9552f4", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641300", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b0504140047f5b4ac1890f0a", + "08f2aa87b0504521047f5a4178d93208" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.065043, 38.8653956], + [-77.0651105, 38.8654006], + [-77.0651887, 38.8653797], + [-77.0657719, 38.8651578], + [-77.0662261, 38.8649651], + [-77.0666849, 38.8647738], + [-77.0668425, 38.8646883], + [-77.0670077, 38.8645806], + [-77.067125, 38.8644902], + [-77.067261, 38.8643706], + [-77.0673953, 38.8642324], + [-77.0675471, 38.8640247], + [-77.0676017, 38.8639312], + [-77.0677402, 38.8636944], + [-77.0677993, 38.8635934], + [-77.0681518, 38.8629247], + [-77.0681834, 38.8628402], + [-77.0682178, 38.8627075], + [-77.0682225, 38.8625638], + [-77.0682184, 38.8624525], + [-77.0681758, 38.8623257], + [-77.0681232, 38.8621888], + [-77.0680531, 38.8620231] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043ddb5193483875", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1111169463", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b0c8c162043ddea0c28f81cb", + "08f2aa87b0531252047d5a3ccfec76ee", + "08f2aa87b0506aad047f5a3766fd0e27", + "08f2aa87b0424c0d043ddf2b2d02c68f" + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0649762, 38.8655673], + [-77.0652684, 38.8654566], + [-77.0656878, 38.8652946], + [-77.0662745, 38.8650501], + [-77.0666605, 38.8648845], + [-77.0667953, 38.8648206], + [-77.0669222, 38.8647498], + [-77.0670811, 38.8646472], + [-77.0671976, 38.8645586], + [-77.0673075, 38.8644641], + [-77.067406, 38.8643703], + [-77.0675034, 38.8642588], + [-77.0676049, 38.8641247], + [-77.0677028, 38.8639742], + [-77.0677345, 38.8639193], + [-77.0678423, 38.8637344], + [-77.0679493, 38.8635358], + [-77.0681358, 38.8631817], + [-77.0682568, 38.8629534], + [-77.068297, 38.8628452], + [-77.0683233, 38.862731], + [-77.0683362, 38.8625909], + [-77.0683221, 38.8624477], + [-77.0682956, 38.8623212], + [-77.0682212, 38.8621515], + [-77.0681445, 38.8619944] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043dda4fe2340668", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w91209519", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "tertiary", + "names": { + "primary": "Army Navy Drive", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0caa649043d7ba35e8b0875", + "08f2aa87b0531295047dfe38dc24bd98", + "08f2aa87b050615d047dfa33690ea3c0", + "08f2aa87b0424cd0043dfa279bd138a0" + ], + "access_restrictions": [ + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.065734, 38.8624229], + [-77.0656169, 38.8623601], + [-77.0656082, 38.8623424], + [-77.0656089, 38.8623257], + [-77.065615, 38.8623002], + [-77.0656345, 38.8622736], + [-77.0657586, 38.8621339], + [-77.0658412, 38.8619398], + [-77.0658778, 38.8617353], + [-77.0658848, 38.8614484] + ] + }, + "properties": { + "id": "08a2aa87b0577fff043d5e83cffcabf9", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w257032547", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "driveway", + "connector_ids": [ + "08f2aa87b057449d047d7f85c4291170", + "08f2aa87b05732e4043f5e7fe097f2d3" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0664278, 38.8626043], + [-77.0663688, 38.8625927], + [-77.0663117, 38.8625815], + [-77.0662138, 38.8628708], + [-77.0662594, 38.8628834], + [-77.0663146, 38.8628986] + ] + }, + "properties": { + "id": "08b2aa87b052bfff047d5f702a3025e0", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641290", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641291", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641292", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b052b75c047d7b6aaad14a63", + "08f2aa87b052b2b4047d5f6cf88ace2f", + "08f2aa87b052b993047f7a713ea18778", + "08f2aa87b052bd71047ffa6f166fe015" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0659726, 38.8621008], + [-77.0660465, 38.8621238], + [-77.0661145, 38.862145], + [-77.0659737, 38.862404], + [-77.0658128, 38.8627946] + ] + }, + "properties": { + "id": "0882aa87b05fffff047ddf7c88243544", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641293", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w563641294", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b057296d043dda7c7203182e", + "08f2aa87b0572954043dfe798f28c20c", + "08f2aa87b052919c047ffa82b0eb4117" + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0666809, 38.8613508], + [-77.0667, 38.8614047], + [-77.0667138, 38.8614693], + [-77.0667135, 38.8614982], + [-77.0667402, 38.861518], + [-77.0667532, 38.8615551], + [-77.0666383, 38.8618661], + [-77.0665987, 38.861973], + [-77.0664262, 38.8624381], + [-77.0663688, 38.8625927], + [-77.0662714, 38.8628553], + [-77.0662594, 38.8628834], + [-77.0661962, 38.8630302], + [-77.0659365, 38.8638056], + [-77.0658809, 38.8639718], + [-77.0657787, 38.8642963], + [-77.0657787, 38.8644063], + [-77.0657484, 38.8644627], + [-77.0657333, 38.8645404], + [-77.0656998, 38.8647123], + [-77.0656964, 38.86473], + [-77.0656661, 38.8647877], + [-77.0656625, 38.8648149], + [-77.0656871, 38.8648999], + [-77.0656809, 38.8649207], + [-77.0656549, 38.8649305], + [-77.0655739, 38.8649325], + [-77.0655432, 38.8649265], + [-77.065529, 38.8649125], + [-77.0655194, 38.8648928], + [-77.065504, 38.8648807], + [-77.0654814, 38.8649019], + [-77.0654707, 38.8649414], + [-77.0654655, 38.8649829], + [-77.0654481, 38.8650072], + [-77.0654264, 38.8650185], + [-77.0654005, 38.8650066], + [-77.0653903, 38.8649792], + [-77.0653933, 38.8649687] + ] + }, + "properties": { + "id": "0872aa87b0ffffff047d7b76bd99b9be", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w635463788", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b05508a6043fde60c78047b1", + "08f2aa87b05546c9043ddf6008b89a67", + "08f2aa87b05546f4043d7f5f7e0f0956", + "08f2aa87b0554612043d5e5f8159905f", + "08f2aa87b0509b00043fda63fdbcd50a", + "08f2aa87b050d80c047dff6abaada148", + "08f2aa87b052b2b4047d5f6cf88ace2f", + "08f2aa87b052b993047f7a713ea18778", + "08f2aa87b0521a04047f7a7ddbc1c5cc", + "08f2aa87b0c8b728043d5e85cba8e3b4", + "08f2aa87b0c8ab4a043f7f879992d220", + "08f2aa87b0c8800a043ddf9313dcacec" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0650788, 38.8649572], + [-77.0649807, 38.8647671], + [-77.0649923, 38.8645863], + [-77.0650446, 38.8642665], + [-77.065141, 38.8639779], + [-77.0653803, 38.8633561], + [-77.0654594, 38.8631547], + [-77.0655548, 38.8629115], + [-77.0656617, 38.8626856], + [-77.0658345, 38.8624043], + [-77.0660465, 38.8621238], + [-77.0661246, 38.8620206], + [-77.0664223, 38.8616525], + [-77.0665163, 38.8615734], + [-77.0666457, 38.861503], + [-77.0666823, 38.8614931], + [-77.0667135, 38.8614982] + ] + }, + "properties": { + "id": "0872aa87b0ffffff047ffe8adf16a89c", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w635463795", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "sidewalk", + "connector_ids": [ + "08f2aa87b0c88b45043d7e9f5c70b5e3", + "08f2aa87b0c898a2043dffa3317579cc", + "08f2aa87b052d025047dfb907e09d39e", + "08f2aa87b0572954043dfe798f28c20c", + "08f2aa87b0554612043d5e5f8159905f" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["bicycle"], + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0649762, 38.8655673], + [-77.0649254, 38.8654218], + [-77.0649251, 38.8654051], + [-77.064921, 38.8651438], + [-77.0649183, 38.8649757], + [-77.0649212, 38.8646929], + [-77.0649407, 38.8644954], + [-77.0649814, 38.8643051], + [-77.0650219, 38.8641378], + [-77.0650741, 38.8639705], + [-77.0653852, 38.8631397], + [-77.0655711, 38.8626773], + [-77.065734, 38.8624229], + [-77.0659726, 38.8621008], + [-77.0661878, 38.8618275], + [-77.0664232, 38.8615594] + ] + }, + "properties": { + "id": "0872aa87b0ffffff047f7b9301ac9e7e", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w8796900", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "secondary", + "names": { + "primary": "South Lynn Street", + "common": null, + "rules": null + }, + "connector_ids": [ + "08f2aa87b0caa649043d7ba35e8b0875", + "08f2aa87b0c8c848043fdaa55aece016", + "08f2aa87b052d168047d7f93642781e9", + "08f2aa87b057449d047d7f85c4291170", + "08f2aa87b057296d043dda7c7203182e", + "08f2aa87b0554a93043ffa6ad8e3fc12" + ], + "road_surface": [{ "value": "paved", "between": null }], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 25, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0681712, 38.8634704], + [-77.0678312, 38.8640359], + [-77.067563, 38.8643972], + [-77.0673082, 38.8646185], + [-77.0670319, 38.8648128], + [-77.066769, 38.8649569], + [-77.066254, 38.8652297] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043d5e47a8047516", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50667668", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b0502c45047f5a269059a6c1", + "08f2aa87b0c9d04b043f5b7174a8644e" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [{ "values": ["is_link"], "between": null }] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0690581, 38.8620286], + [-77.068981, 38.8621659], + [-77.0688968, 38.8625734], + [-77.0687305, 38.8632292], + [-77.0686484, 38.8634233], + [-77.0685856, 38.8635717], + [-77.0684837, 38.8637889], + [-77.0683013, 38.8640688], + [-77.0681567, 38.8642734], + [-77.067781, 38.8646535], + [-77.0674269, 38.8649292], + [-77.0670461, 38.8651339], + [-77.0665257, 38.8653803], + [-77.0657801, 38.865656], + [-77.0643292, 38.8662135], + [-77.0638638, 38.8664387] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043ffe5607da0bf8", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50668454", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50668455", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50668456", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w874679361", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "connector_ids": [ + "08f2aa87b051b65d043dfe03eb330adc", + "08f2aa87b0c12743047f5bced2876ca3" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ], + "level_rules": [{ "value": 2, "between": [0.369588587, 0.561669633] }], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_link"], "between": [0.0, 0.369588587] }, + { + "values": ["is_bridge", "is_link"], + "between": [0.369588587, 0.561669633] + }, + { "values": ["is_link"], "between": [0.561669633, 1.0] } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0659964, 38.863811], + [-77.0659365, 38.8638056], + [-77.0658566, 38.8637985], + [-77.0658176, 38.8638155], + [-77.0657195, 38.8639385], + [-77.0655152, 38.864198], + [-77.0655154, 38.8642371], + [-77.0656161, 38.8643922], + [-77.0657333, 38.8645404], + [-77.0658024, 38.8646279] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043d7b875c4b3557", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w1271668306", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "unknown", + "connector_ids": [ + "08f2aa87b0521aa5047fde7b841e66d5", + "08f2aa87b0521a04047f7a7ddbc1c5cc", + "08f2aa87b0c8b728043d5e85cba8e3b4", + "08f2aa87b0c8b55b043fdf831884757c" + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + } + ] + } + }, + { + "type": "Feature", + "geometry": { + "type": "LineString", + "coordinates": [ + [-77.0631555, 38.8675094], + [-77.0635283, 38.867427], + [-77.0639367, 38.8673038], + [-77.0643023, 38.8671718], + [-77.0651779, 38.8668328], + [-77.0667604, 38.8661969], + [-77.0672539, 38.8659463], + [-77.0676175, 38.8657249], + [-77.067867, 38.865539], + [-77.0680333, 38.8654053], + [-77.0681916, 38.8652508], + [-77.0683872, 38.8650378], + [-77.0685563, 38.8648498], + [-77.0688592, 38.8644029], + [-77.0690899, 38.8639476], + [-77.0692026, 38.8636553], + [-77.0692723, 38.8633754], + [-77.0693474, 38.8629619], + [-77.0694976, 38.8619343] + ] + }, + "properties": { + "id": "0872aa87b0ffffff043f5b51f3a3fc3c", + "version": 0, + "sources": [ + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r1670156", + "update_time": null, + "confidence": null + }, + { + "property": "routes", + "dataset": "OpenStreetMap", + "record_id": "r8780622", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664424", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664427", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w50664429", + "update_time": null, + "confidence": null + }, + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w695842779", + "update_time": null, + "confidence": null + } + ], + "subtype": "road", + "class": "motorway", + "names": { + "primary": "Henry G. Shirley Memorial Highway", + "common": null, + "rules": [ + { + "variant": "short", + "language": null, + "value": "Shirley Highway", + "between": null, + "side": null + } + ] + }, + "connector_ids": [ + "08f2aa87b0d899a2043d5eea7d6a553c", + "08f2aa87b0435596043f5ff2c0c31c9e" + ], + "routes": [ + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.625998, 1.0] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.565381, 0.625998] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.037311, 0.565381] + }, + { + "name": null, + "network": "US:I", + "ref": "395", + "symbol": null, + "wikidata": null, + "between": [0.0, 0.037311] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.565381, 0.625998] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.625998, 1.0] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.0, 0.037311] + }, + { + "name": "Henry G. Shirley Memorial Highway", + "network": null, + "ref": "None", + "symbol": null, + "wikidata": "Q2508285", + "between": [0.037311, 0.565381] + } + ], + "access_restrictions": [ + { + "access_type": "denied", + "when": { + "during": null, + "heading": "backward", + "using": null, + "recognized": null, + "mode": null, + "vehicle": null + }, + "between": null + }, + { + "access_type": "denied", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["foot", "bicycle"], + "vehicle": null + }, + "between": null + }, + { + "access_type": "designated", + "when": { + "during": null, + "heading": null, + "using": null, + "recognized": null, + "mode": ["hgv"], + "vehicle": null + }, + "between": null + } + ], + "level_rules": [ + { "value": 2, "between": [0.0, 0.037300978] }, + { "value": 2, "between": [0.56522853, 0.625828751] } + ], + "road_surface": [{ "value": "paved", "between": null }], + "road_flags": [ + { "values": ["is_bridge"], "between": [0.0, 0.037300978] }, + { "values": ["is_bridge"], "between": [0.56522853, 0.625828751] } + ], + "speed_limits": [ + { + "min_speed": null, + "max_speed": { "value": 55, "unit": "mph" }, + "is_max_speed_variable": null, + "when": null, + "between": null + } + ] + } + } + ] +} diff --git a/src/overturetoosm/__init__.py b/src/overturetoosm/__init__.py index 84ec54c..d962958 100644 --- a/src/overturetoosm/__init__.py +++ b/src/overturetoosm/__init__.py @@ -10,7 +10,7 @@ * [PyPI](https://pypi.org/project/overturetoosm/) """ -from . import addresses, buildings, objects, places, resources, utils +from . import addresses, buildings, objects, places, resources, segments, utils from .addresses import process_address from .buildings import process_building from .places import process_place @@ -25,6 +25,7 @@ "buildings", "addresses", "objects", + "segments", "utils", "resources", ] diff --git a/src/overturetoosm/objects.py b/src/overturetoosm/objects.py index c9b8c44..db82bc2 100644 --- a/src/overturetoosm/objects.py +++ b/src/overturetoosm/objects.py @@ -3,9 +3,14 @@ # ruff: noqa: D415 from enum import Enum -from typing import Dict, List, Optional +from typing import Dict, List, Optional, Union -from pydantic import BaseModel, ConfigDict, Field, field_validator +try: + from typing import Annotated +except ImportError: + from typing_extensions import Annotated + +from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator from .resources import places_tags @@ -15,10 +20,16 @@ class OvertureBaseModel(BaseModel): model_config = ConfigDict(extra="forbid") + version: int = Field(ge=0) theme: Optional[str] = None type: Optional[str] = None - version: int = Field(ge=0) - id: Optional[str] = None + id: Optional[str] = Field(None, pattern=r"^(\S.*)?\S$") + + +class Wikidata(RootModel): + """Model for transportation segment wikidata.""" + + root: str = Field(description="Wikidata ID.", pattern=r"^Q\d+") class Sources(BaseModel): @@ -36,6 +47,16 @@ def set_default_if_none(cls, v: float) -> float: """@private""" return v if v is not None else 0.0 + def get_osm_link(self) -> Union[str, None]: + """Return the OSM link for the source.""" + if ( + self.record_id + and self.record_id.startswith(("n", "w", "r")) + and self.dataset == "OpenStreetMap" + ): + type_dict = {"n": "node", "w": "way", "r": "relation"} + return f"https://www.openstreetmap.org/{type_dict[self.record_id[0]]}/{self.record_id[1:]}" + class RulesVariant(str, Enum): """Overture name rules variant model.""" @@ -46,13 +67,19 @@ class RulesVariant(str, Enum): short = "short" +class Between(RootModel): + """Model for transportation segment between.""" + + root: Annotated[list, Field(float, min_length=2, max_length=2)] + + class Rules(BaseModel): """Overture name rules model.""" variant: RulesVariant language: Optional[str] = None value: str - between: Optional[str] = None + between: Optional[Between] = None side: Optional[str] = None @@ -84,9 +111,32 @@ class Categories(BaseModel): class Brand(BaseModel): """Overture brand model.""" - wikidata: Optional[str] = Field(pattern=r"Q[0-9]+") + wikidata: Optional[Wikidata] = None names: Names + def to_osm(self) -> Dict[str, str]: + """Convert brand properties to OSM tags.""" + osm = {"brand": self.names.primary} + if self.wikidata: + osm.update({"brand:wikidata": str(self.wikidata.root)}) + return osm + + +class Socials(RootModel): + """Overture socials model.""" + + root: List[str] + + def to_osm(self) -> Dict[str, str]: + """Convert socials properties to OSM tags.""" + new_props = {} + for social in self.root: + if "facebook" in social: + new_props["contact:facebook"] = social + elif "twitter" in str(social): + new_props["contact:twitter"] = social + return new_props + class PlaceProps(OvertureBaseModel): """Overture properties model. @@ -101,7 +151,7 @@ class PlaceProps(OvertureBaseModel): categories: Optional[Categories] = None confidence: float = Field(ge=0.0, le=1.0) websites: Optional[List[str]] = None - socials: Optional[List[str]] = None + socials: Optional[Socials] = None emails: Optional[List[str]] = None phones: Optional[List[str]] = None addresses: List[PlaceAddress] @@ -111,7 +161,7 @@ def to_osm( ) -> Dict[str, str]: """Convert Overture's place properties to OSM tags. - Used internallyby the `overturetoosm.process_place` function. + Used internally by the `overturetoosm.process_place` function. """ new_props = {} if self.confidence < confidence: @@ -150,17 +200,11 @@ def to_osm( if self.sources: new_props["source"] = source_statement(self.sources) - if self.socials is not None: - for social in self.socials: - social_str = str(social) - if "facebook" in social_str: - new_props["contact:facebook"] = social_str - elif "twitter" in str(social): - new_props["contact:twitter"] = social_str + if self.socials: + new_props.update(self.socials.to_osm()) if self.brand: - new_props["brand"] = self.brand.names.primary - new_props["brand:wikidata"] = self.brand.wikidata + new_props.update(self.brand.to_osm()) return new_props @@ -229,12 +273,12 @@ class BuildingProps(OvertureBaseModel): Use this model if you want to manipulate the `building` properties yourself. """ + has_parts: bool + sources: List[Sources] class_: Optional[str] = Field(alias="class", default=None) subtype: Optional[str] = None names: Optional[Names] = None - has_parts: bool level: Optional[int] = None - sources: List[Sources] height: Optional[float] = None is_underground: Optional[bool] = None num_floors: Optional[int] = Field( @@ -311,7 +355,9 @@ class AddressProps(OvertureBaseModel): street: Optional[str] = Field(serialization_alias="addr:street") postcode: Optional[str] = Field(serialization_alias="addr:postcode") country: Optional[str] = Field(serialization_alias="addr:country") - address_levels: Optional[List[AddressLevel]] = Field(default_factory=list) + address_levels: Optional[ + Annotated[List[AddressLevel], Field(min_length=1, max_length=5)] + ] = Field(default_factory=list) sources: List[Sources] def to_osm(self, style: str) -> Dict[str, str]: @@ -326,9 +372,8 @@ def to_osm(self, style: str) -> Dict[str, str]: } obj_dict["source"] = source_statement(self.sources) - if self.address_levels and len(self.address_levels) > 0: - if style == "US": - obj_dict["addr:state"] = str(self.address_levels[0].value) + if self.address_levels and len(self.address_levels) > 0 and style == "US": + obj_dict["addr:state"] = str(self.address_levels[0].value) return obj_dict diff --git a/src/overturetoosm/segment_objects.py b/src/overturetoosm/segment_objects.py deleted file mode 100644 index af65e05..0000000 --- a/src/overturetoosm/segment_objects.py +++ /dev/null @@ -1,274 +0,0 @@ -"""Pydantic models for Overture segment objects.""" -# pylint: disable=C0103, C0115 - -from enum import Enum -from typing import List, Optional - -from pydantic import BaseModel, Field, confloat, conint, conlist - - -class RoadClass(str, Enum): - """Overture road class options.""" - - motorway = "motorway" - primary = "primary" - secondary = "secondary" - tertiary = "tertiary" - residential = "residential" - living_street = "living_street" - trunk = "trunk" - unclassified = "unclassified" - parking_aisle = "parking_aisle" - driveway = "driveway" - alley = "alley" - pedestrian = "pedestrian" - footway = "footway" - sidewalk = "sidewalk" - crosswalk = "crosswalk" - steps = "steps" - path = "path" - track = "track" - cycleway = "cycleway" - bridleway = "bridleway" - unknown = "unknown" - - -class LaneDirection(str, Enum): - """Overture lane direction options.""" - - forward = "forward" - backward = "backward" - both_ways = "both_ways" - alternating = "alternating" - reversible = "reversible" - - -class Heading(str, Enum): - """Overture heading options.""" - - forward = "forward" - backward = "backward" - - -class TravelMode(str, Enum): - """Overture travel mode options.""" - - vehicle = "vehicle" - motor_vehicle = "motor_vehicle" - car = "car" - truck = "truck" - motorcycle = "motorcycle" - foot = "foot" - bicycle = "bicycle" - bus = "bus" - hgv = "hgv" - hov = "hov" - emergency = "emergency" - - -class RoadFlag(str, Enum): - """Overture road flag options.""" - - is_bridge = "is_bridge" - is_link = "is_link" - is_tunnel = "is_tunnel" - is_under_construction = "is_under_construction" - is_abandoned = "is_abandoned" - is_covered = "is_covered" - - -class RoadSurface(str, Enum): - """Overture road surface options.""" - - unknown = "unknown" - paved = "paved" - unpaved = "unpaved" - gravel = "gravel" - dirt = "dirt" - paving_stones = "paving_stones" - metal = "metal" - - -class SpeedUnit(str, Enum): - """Overture speed unit options.""" - - kmh = "km/h" - mph = "mph" - - -class VehicleScope(str, Enum): - """Overture vehicle scope options.""" - - axle_count = "axle_count" - height = "height" - length = "length" - weight = "weight" - width = "width" - - -class VehicleScopeComparison(str, Enum): - """Overture vehicle scope comparison options.""" - - greater_than = "greater_than" - greater_than_equal = "greater_than_equal" - equal = "equal" - less_than = "less_than" - less_than_equal = "less_than_equal" - - -class LinearlyReferencedPosition(BaseModel): - """Overture linearly referenced position.""" - - position: confloat(ge=0, le=100) - - -class LinearlyReferencedRange(BaseModel): - """Overture linearly referenced range.""" - - range: conlist( - LinearlyReferencedPosition, min_length=2, max_length=2, unique_items=True - ) - - -class Speed(BaseModel): - """Overture speed.""" - - value: conint(ge=1, le=350) - unit: SpeedUnit - - -class PurposeOfUse(str, Enum): - """Overture purpose of use options.""" - - as_customer = "as_customer" - at_destination = "at_destination" - to_deliver = "to_deliver" - to_farm = "to_farm" - for_forestry = "for_forestry" - - -class RecognizedStatus(str, Enum): - """Overture recognized status options.""" - - as_permitted = "as_permitted" - as_private = "as_private" - as_disabled = "as_disabled" - as_employee = "as_employee" - as_student = "as_student" - - -class IntegerRelation(BaseModel): - """Overture integer relation.""" - - is_more_than: Optional[int] = None - is_at_least: Optional[int] = None - is_equal_to: Optional[int] = None - is_at_most: Optional[int] = None - is_less_than: Optional[int] = None - - -class LengthUnit(str, Enum): - """Overture length unit options.""" - - in_ = "in" - ft = "ft" - yd = "yd" - mi = "mi" - cm = "cm" - m = "m" - km = "km" - - -class LengthValueWithUnit(BaseModel): - """Overture length value with unit.""" - - value: float = Field(ge=0) - unit: LengthUnit - - -class LengthRelation(BaseModel): - """Overture length relation.""" - - is_more_than: Optional[LengthValueWithUnit] = None - is_at_least: Optional[LengthValueWithUnit] = None - is_equal_to: Optional[LengthValueWithUnit] = None - is_at_most: Optional[LengthValueWithUnit] = None - is_less_than: Optional[LengthValueWithUnit] = None - - -class WeightUnit(str, Enum): - """Overture weight unit options.""" - - oz_ = "oz" - lb = "lb" - st = "st" - lt = "lt" - g = "g" - kg = "kg" - t = "t" - - -class WeightValueWithUnit(BaseModel): - """Overture weight value with unit.""" - - value: float = Field(ge=0) - unit: WeightUnit - - -class WeightRelation(BaseModel): - """Overture segment weight relation.""" - - is_more_than: Optional[WeightValueWithUnit] = None - is_at_least: Optional[WeightValueWithUnit] = None - is_equal_to: Optional[WeightValueWithUnit] = None - is_at_most: Optional[WeightValueWithUnit] = None - is_less_than: Optional[WeightValueWithUnit] = None - - -class Width(BaseModel): - """Overture segment width.""" - - value: float = Field(gt=0) - - -class SequenceEntry(BaseModel): - """Overture segment sequence entry.""" - - connector_id: str - segment_id: str - - -class SegmentProperties(BaseModel): - """Overture segment properties.""" - - class_: Optional[RoadClass] = Field(None, alias="class") - access_restrictions: Optional[dict] = None - level: Optional[int] = None - level_rules: Optional[dict] = None - - -class SegmentConditionalProperties(BaseModel): - """Overture segment conditional properties.""" - - lanes: Optional[dict] = None - prohibited_transitions: Optional[dict] = None - road_surface: Optional[dict] = None - road_flags: Optional[dict] = None - speed_limits: Optional[dict] = None - width_rules: Optional[dict] = None - - -class SegmentSubtype(str, Enum): - """Overture segment subtype options.""" - - road = "road" - rail = "rail" - water = "water" - - -class SegmentProps(BaseModel): - """Overture segment properties.""" - - subtype: SegmentSubtype - connector_ids: List[str] = Field(default_factory=list) - routes: Optional[List[dict]] = None diff --git a/src/overturetoosm/segments.py b/src/overturetoosm/segments.py new file mode 100644 index 0000000..7499b91 --- /dev/null +++ b/src/overturetoosm/segments.py @@ -0,0 +1,409 @@ +"""Pydantic models needed for transportation segments. + +Partly autogenerated by datamodel-codegen. +""" + +from enum import Enum +from typing import Any, List, Optional, Union + +try: + from typing import Annotated +except ImportError: + from typing_extensions import Annotated + +from pydantic import BaseModel, ConfigDict, Field, RootModel + +from .objects import Names, Sources, Wikidata + + +class Subtype(str, Enum): + """Model for transportation segment subtype.""" + + road = "road" + rail = "rail" + water = "water" + + +class AccessType(str, Enum): + """Model for transportation segment access type.""" + + allowed = "allowed" + denied = "denied" + designated = "designated" + + +class Id(RootModel): + """Model for transportation segment id. + + A feature ID. This may be an ID associated with the Global Entity Reference System + (GERS) if—and-only-if the feature represents an entity that is part of GERS. + """ + + root: str + + +class Level(RootModel): + """Model for transportation segment level.""" + + root: int = Field(default=0) + + +class LinearlyReferencedPosition(RootModel): + """Model for transportation segment linearly referenced position.""" + + root: Annotated[float, Field(strict=True, ge=0.0, le=1.0)] + + +class LinearlyReferencedRange(RootModel): + """Model for transportation segment linearly referenced range.""" + + root: Annotated[list, Field(float, min_length=2, max_length=2)] + + +class RoadClass(str, Enum): + """Model for transportation segment road class.""" + + motorway = "motorway" + primary = "primary" + secondary = "secondary" + tertiary = "tertiary" + residential = "residential" + living_street = "living_street" + trunk = "trunk" + unclassified = "unclassified" + service = "service" + pedestrian = "pedestrian" + footway = "footway" + steps = "steps" + path = "path" + track = "track" + cycleway = "cycleway" + bridleway = "bridleway" + sidewalk = "sidewalk" + crosswalk = "crosswalk" + parking_aisle = "parking_aisle" + driveway = "driveway" + alley = "alley" + cycle_crossing = "cycle_crossing" + unknown = "unknown" + + +class Subclass(str, Enum): + """Model for transportation segment subclass.""" + + link = "link" + sidewalk = "sidewalk" + crosswalk = "crosswalk" + parking_aisle = "parking_aisle" + driveway = "driveway" + alley = "alley" + cycle_crossing = "cycle_crossing" + + +class TemporalScopeContainer(BaseModel): + """Model for transportation segment temporal scope container.""" + + during: Optional[Any] = None + + +class Heading(str, Enum): + """Model for transportation segment heading.""" + + forward = "forward" + backward = "backward" + + +class PurposeOfUse(str, Enum): + """Model for transportation segment purpose of use.""" + + as_customer = "as_customer" + at_destination = "at_destination" + to_deliver = "to_deliver" + to_farm = "to_farm" + for_forestry = "for_forestry" + + +class RecognizedStatus(str, Enum): + """Model for transportation segment recognized status.""" + + as_permitted = "as_permitted" + as_private = "as_private" + as_disabled = "as_disabled" + as_employee = "as_employee" + as_student = "as_student" + + +class TravelMode(str, Enum): + """Model for transportation segment travel mode.""" + + vehicle = "vehicle" + motor_vehicle = "motor_vehicle" + car = "car" + truck = "truck" + motorcycle = "motorcycle" + foot = "foot" + bicycle = "bicycle" + bus = "bus" + hgv = "hgv" + hov = "hov" + emergency = "emergency" + + +class VehicleScopeComparison(str, Enum): + """Model for transportation segment vehicle scope comparison.""" + + greater_than = "greater_than" + greater_than_equal = "greater_than_equal" + equal = "equal" + less_than = "less_than" + less_than_equal = "less_than_equal" + + +class VehicleScopeDimension(str, Enum): + """Model for transportation segment vehicle scope dimension.""" + + axle_count = "axle_count" + height = "height" + length = "length" + weight = "weight" + width = "width" + + +class LengthUnit(str, Enum): + """Model for transportation segment length unit.""" + + in_ = "in" + ft = "ft" + yd = "yd" + mi = "mi" + cm = "cm" + m = "m" + km = "km" + + +class WeightUnit(str, Enum): + """Model for transportation segment weight unit.""" + + oz = "oz" + lb = "lb" + st = "st" + lt = "lt" + g = "g" + kg = "kg" + t = "t" + + +class Connector(BaseModel): + """Model for transportation segment connector.""" + + connector_id: Id + at: LinearlyReferencedPosition + + +class LevelRules(BaseModel): + """Model for transportation segment level rules container item.""" + + value: Level + between: Optional[LinearlyReferencedRange] = None + + +class Route(BaseModel): + """Model for transportation segment route.""" + + name: Optional[str] = Field(description="Full name of the route") + network: Optional[str] = Field( + description="Name of the highway system this route belongs to" + ) + ref: Optional[str] = Field(description="Code or number used to reference the route") + symbol: Optional[str] = Field(description="URL or description of route signage") + wikidata: Optional[Wikidata] = None + + +class Routes(RootModel): + """Model for transportation segment routes.""" + + root: List[Route] = Field(description="Routes this segment belongs to.") + + +class HeadingScopeContainer(BaseModel): + """Model for transportation segment heading scope container.""" + + heading: Optional[Heading] = None + + +class PurposeOfUseScopeContainer(BaseModel): + """Model for transportation segment purpose of use scope container.""" + + using: Optional[List[PurposeOfUse]] = Field(None, min_length=1) + + +class RecognizedStatusScopeContainer(BaseModel): + """Model for transportation segment recognized status scope container.""" + + recognized: Optional[List[RecognizedStatus]] = Field(None, min_length=1) + + +class TravelModeScopeContainer(BaseModel): + """Model for transportation segment travel mode scope container.""" + + mode: Optional[List[TravelMode]] = Field( + None, min_length=1, description="Travel mode(s) to which the rule applies" + ) + + +class VehicleScopeUnit(RootModel): + """Model for transportation segment vehicle scope unit.""" + + root: Union[LengthUnit, WeightUnit] = Field( + description="Parent enum of both length and width for use in vehicle scoping" + ) + + +class VehicleItem(BaseModel): + """Model for transportation segment vehicle item.""" + + dimension: VehicleScopeDimension + comparison: VehicleScopeComparison + value: Annotated[float, Field(strict=True, ge=0.0)] + unit: Optional[VehicleScopeUnit] = None + + +class VehicleScopeContainer(BaseModel): + """Model for transportation segment vehicle scope container.""" + + vehicle: Optional[List[VehicleItem]] = Field( + None, min_length=1, description="Vehicle attributes for which the rule applies" + ) + + +class When( + TemporalScopeContainer, + HeadingScopeContainer, + PurposeOfUseScopeContainer, + RecognizedStatusScopeContainer, + TravelModeScopeContainer, + VehicleScopeContainer, +): + """Model for transportation segment when.""" + + pass + + +class AccessContainer(BaseModel): + """Model for transportation segment access container item.""" + + access_type: AccessType + when: Optional[When] = None + + +class RoadFlagEnum(str, Enum): + """Overture road flag options.""" + + is_bridge = "is_bridge" + is_link = "is_link" + is_tunnel = "is_tunnel" + is_under_construction = "is_under_construction" + is_abandoned = "is_abandoned" + is_covered = "is_covered" + + +class RoadFlag(BaseModel): + """Overture road flag.""" + + values: List[RoadFlagEnum] + between: Optional[LinearlyReferencedRange] = None + + +class RoadSurfaceEnum(str, Enum): + """Overture road surface options.""" + + unknown = "unknown" + paved = "paved" + unpaved = "unpaved" + gravel = "gravel" + dirt = "dirt" + paving_stones = "paving_stones" + metal = "metal" + + +class RoadSurface(BaseModel): + """Overture road surface.""" + + value: RoadSurfaceEnum + between: Optional[LinearlyReferencedRange] = None + + +class SpeedUnit(str, Enum): + """Overture speed unit options.""" + + kmh = "km/h" + mph = "mph" + + +class Speed(BaseModel): + """Overture speed.""" + + value: Annotated[int, Field(ge=1, le=350)] + unit: Optional[SpeedUnit] = None + + +class SpeedLimit(BaseModel): + """Overture speed limit.""" + + min_speed: Optional[Speed] = None + max_speed: Speed + + +class Sequence(BaseModel): + """Overture sequence.""" + + connector_id: Id + segment_id: Id + + +class ProhibitedTransition(BaseModel): + """Overture prohibited transition.""" + + sequence: List[Sequence] + final_heading: Heading + when: When + between: Optional[LinearlyReferencedRange] = None + + +class SegmentProperties(BaseModel): + """Model for transportation segment properties.""" + + model_config = ConfigDict(extra="forbid") + + version: int = Field( + ge=0, + description="""Version number of the feature, incremented in each Overture + release where the geometry or attributes of this feature changed.""", + ) + id: Id + subtype: Subtype = Field(description="Broad category of transportation segment.") + sources: Optional[List[Sources]] = None + class_: Optional[RoadClass] = Field(None, alias="class") + access_restrictions: Optional[List[AccessContainer]] = Field( + None, description="Rules governing access to this road segment or lane" + ) + level: Optional[Level] = Field( + 0, description="Z-order of the feature where 0 is visual level" + ) + level_rules: Optional[List[LevelRules]] = None + connector_ids: Optional[List[Id]] = Field( + None, min_length=2, description="** DEPRECATED **" + ) + connectors: Optional[Annotated[List[Connector], Field(min_length=2)]] = Field([]) + """ + List of connectors which this segment is physically connected to and their relative + location. Each connector is a possible routing decision point, meaning it defines a + place along the segment in which there is possibility to transition to other + segments which share the same connector. + """ + road_surface: Optional[List[RoadSurface]] = None + road_flags: Optional[List[RoadFlag]] = None + speed_limits: Optional[List[SpeedLimit]] = None + prohibited_transitions: Optional[List[ProhibitedTransition]] = None + routes: Optional[Routes] = None + names: Optional[Names] = None diff --git a/tests/test_other.py b/tests/test_other.py index d832bd3..a93c600 100644 --- a/tests/test_other.py +++ b/tests/test_other.py @@ -1,6 +1,20 @@ """Test miscelaneous functions in the project.""" -from src.overturetoosm import objects +import json +import pytest +from src.overturetoosm import objects, segments + + +@pytest.fixture(name="props_dict") +def props_fix() -> dict: + """Fixture with the clean segment properties.""" + return { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w590831817", + "update_time": None, + "confidence": None, + } def test_util_source() -> None: @@ -16,3 +30,34 @@ def test_util_source() -> None: objects.source_statement([source_1, source_2]) == "dataset1, dataset2 via overturetoosm" ) + + +def test_segment_sources(props_dict: dict) -> None: + """Test that source URL is processed correctly.""" + source = objects.Sources(**props_dict) + assert source.get_osm_link() == "https://www.openstreetmap.org/way/590831817" + + +def test_segment_sources_not_osm(props_dict: dict) -> None: + """Test that source URL is processed correctly.""" + props_dict.update({"dataset": "dataset1"}) + source = objects.Sources(**props_dict) + assert source.get_osm_link() == None + + +@pytest.mark.parametrize( + "type", + [ + ("place", objects.PlaceProps), + ("building", objects.BuildingProps), + ("address", objects.AddressProps), + ("segment", segments.SegmentProperties), + ], +) +def test_objects(type) -> None: + """Test that all properties are processed correctly.""" + with open(f"scripts/test_{type[0]}.geojson", "r", encoding="utf-8") as f: + data = json.load(f) + + for feature in data["features"]: + type[1](**feature["properties"]) diff --git a/tests/test_segments.py b/tests/test_segments.py new file mode 100644 index 0000000..57a55e0 --- /dev/null +++ b/tests/test_segments.py @@ -0,0 +1,82 @@ +"""Test the segments.py module.""" + +from typing import Any, Dict + +import pytest +from pydantic import ValidationError + +from src.overturetoosm.segments import SegmentProperties +from src.overturetoosm.objects import ConfidenceError + + +@pytest.fixture(name="props_dict") +def props_fix() -> Dict[str, Any]: + """Fixture with the clean segment properties.""" + return { + "id": "0892aa87b057ffff043ffa50b0c799df", + "version": 0, + "sources": [ + { + "property": "", + "dataset": "OpenStreetMap", + "record_id": "w590831817", + "update_time": None, + "confidence": None, + } + ], + "subtype": "road", + "class": "secondary", + "names": { + "primary": "South Arlington Ridge Road", + "common": None, + "rules": None, + }, + "level": 3, + "connector_ids": [ + "08f2aa87b042d070047f7e4ae29f3ddf", + "08f2aa87b0553085043f7b50915fc2f9", + "08f2aa87b0550799043f5e54b6721dab", + "08f2aa87b055042c043d5f567e660ef3", + ], + "road_surface": [{"value": "paved", "between": None}], + "speed_limits": [ + { + "min_speed": None, + "max_speed": {"value": 25, "unit": "mph"}, + "is_max_speed_variable": None, + "when": None, + "between": None, + } + ], + } + + +def test_segment_props(props_dict: dict) -> None: + """Test that all properties are processed correctly.""" + new_props = SegmentProperties(**props_dict) + assert isinstance(new_props, SegmentProperties) + + +@pytest.mark.parametrize( + "remove_key", ["road_surface", "speed_limits", "sources", "level", "names"] +) +def test_segment_props_no_tags(props_dict: dict, remove_key: str) -> None: + """Test that all properties are processed correctly.""" + props_dict.pop(remove_key, None) + new_props = SegmentProperties(**props_dict) + assert isinstance(new_props, SegmentProperties) + + +@pytest.mark.parametrize("remove_key", ["id", "version", "subtype"]) +def test_segment_props_no_id(props_dict: dict, remove_key: str) -> None: + """Test that all properties are processed correctly.""" + props_dict.pop(remove_key, None) + with pytest.raises(ValidationError): + new_props = SegmentProperties(**props_dict) + + +# def test_segment_props_no_class(props_dict: dict) -> None: +# """Test that all properties are processed correctly.""" +# props_dict.pop("class", None) +# new_props = SegmentProperties(**props_dict).model_dump(exclude_none=True) +# assert isinstance(new_props, dict)