diff --git a/.github/workflows/assign_or_assign.yml b/.github/workflows/assign_or_assign.yml deleted file mode 100644 index 8bf99cd..0000000 --- a/.github/workflows/assign_or_assign.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Assign-or-Unassign-Issue -# Ref: https://docs.github.com/en/rest/issues/assignees#about-the-issue-assignees-api -# Ref: https://docs.github.com/en/actions/using-workflows/about-workflows -# Ref permissions: https://docs.github.com/en/actions/security-guides/automatic-token-authentication -on: - issue_comment: - types: created - -permissions: - issues: write - -jobs: - issue_assign_job: - runs-on: ubuntu-latest - steps: - # This job only runs for issue comments. - - if: github.event.comment.body == 'take' && !github.event.issue.pull_request - run: | - echo "Assigning issue ${{ github.event.issue.number }} to ${{ github.event.comment.user.login }}" - curl \ - -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - -d '{"assignees": ["${{ github.event.comment.user.login }}"]}' https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/assignees - - # This job only runs for issue comments. - - if: github.event.comment.body == 'remove' && !github.event.issue.pull_request - run: | - echo "Unassigning issue ${{ github.event.issue.number }} from ${{ github.event.comment.user.login }}" - curl \ - -X DELETE \ - -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - -d '{"assignees": ["${{ github.event.comment.user.login }}"]}' https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/assignees diff --git a/.github/workflows/lint_test.yml b/.github/workflows/lint-test.yml similarity index 77% rename from .github/workflows/lint_test.yml rename to .github/workflows/lint-test.yml index fcb2ccd..5de7a2d 100644 --- a/.github/workflows/lint_test.yml +++ b/.github/workflows/lint-test.yml @@ -13,19 +13,19 @@ jobs: matrix: python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install .[tests] - - name: Run black - run: black . --check - - name: Run ruff + - name: Run ruff linting run: ruff check . + - name: Run ruff formatting + run: ruff format --check - name: Run mypy run: mypy . - name: Run Tests diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6aa0e4d..319400e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -8,26 +8,26 @@ jobs: deploy: runs-on: ubuntu-latest environment: - name: pypi - url: https://pypi.org/project/mappymatch/ + name: pypi + url: https://pypi.org/project/mappymatch/ permissions: - id-token: write + id-token: write steps: - - uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install build - - name: Build package - run: | - python -m build - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.9" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install hatch + - name: Build package + run: | + hatch build + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: path: ./dist/* - - name: Publish package - uses: pypa/gh-action-pypi-publish@release/v1 + - name: Publish package + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1019a83..3cf48d3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,11 +1,13 @@ -repos: -- repo: https://github.com/psf/black - rev: 22.10.0 - hooks: - - id: black - args: [--config, pyproject.toml] -- repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.188 - hooks: - - id: ruff - +repos: + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: v0.8.0 + hooks: + - id: ruff + - id: ruff-format + + - repo: https://github.com/pre-commit/mirrors-mypy + rev: "v1.13.0" + hooks: + - id: mypy + additional_dependencies: + [matplotlib, pandas-stubs, pytest, types-requests] diff --git a/.readthedocs.yaml b/.readthedocs.yaml deleted file mode 100644 index 989d3c5..0000000 --- a/.readthedocs.yaml +++ /dev/null @@ -1,20 +0,0 @@ -version: 2 - -build: - os: ubuntu-22.04 - tools: - python: "3.12" - -python: - install: - - method: pip - path: . - extra_requirements: - - docs - -sphinx: - configuration: docs/source/conf.py - builder: html - -formats: - - pdf \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..8e6b09f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,71 @@ +# Contributing to mappymatch + +Thank you for considering contributing to mappymatch. +This document provides a high-level overview of how you can get involved. + +## Asking Questions + +Have a question? Rather than opening an issue directly, please ask questions +or post comments in [Q&A Discussions](https://github.com/NREL/mappymatch/discussions/categories/q-a). +The NREL team or other members of the community will assist. Your well-worded +question will serve as a resource to others searching for help. + +## Providing Feedback + +Your comments and feedback are very welcome. Please post to +[General Discussions](https://github.com/NREL/mappymatch/discussions/categories/general) +with lots of information and detail. It is beneficial to consider +how someone else will understand your comments in order to make +them most effective. + +## Reporting Issues + +Have you identified a reproducible problem in mappymatch? +Have a feature request? We want to hear about it! Here's how you can make +reporting your issue as effective as possible. + +### Look For an Existing Issue + +Before you create a new issue, please do a search in +[open issues](https://github.com/NREL/mappymatch/issues) to see if +the issue or feature request has already been filed. + +If you find your issue already exists, make relevant comments and add your +[reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). +Use a reaction in place of a "+1" comment: + +- 👍 - upvote +- 👎 - downvote + +If you cannot find an existing issue that describes your bug or feature, +create a new issue using the guidelines below. + +### Writing Good Bug Reports and Feature Requests + +File a single issue per problem and feature request. Do not enumerate +multiple bugs or feature requests in the same issue. + +Do not add your issue as a comment to an existing issue unless it's for the +identical input. Many issues look similar, but have different causes. + +The more information you can provide, the more likely someone will +be successful at reproducing the issue and finding a fix. + +Please follow the issue template guidelines to include relevant information +that will help in diagnosing the problem. + +### Final Checklist + +Please remember to do the following: + +- [ ] Search the issue repository to ensure your report is a new issue + +- [ ] Recreate the issue with a minimally descriptive example + +- [ ] Simplify your code around the issue to better isolate the problem + +## Contributing Fixes + +If you are interested in writing code to fix an issue or +submit a new feature, let us know in +[Ideas Discussions](https://github.com/NREL/mappymatch/discussions/categories/ideas)! diff --git a/docs/source/_static/_.txt b/docs/.nojekyll similarity index 100% rename from docs/source/_static/_.txt rename to docs/.nojekyll diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 92dd33a..0000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = source -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_autosummary/mappymatch.constructs.coordinate.rst b/docs/_autosummary/mappymatch.constructs.coordinate.rst new file mode 100644 index 0000000..e5ffeed --- /dev/null +++ b/docs/_autosummary/mappymatch.constructs.coordinate.rst @@ -0,0 +1,12 @@ +mappymatch.constructs.coordinate +================================ + +.. automodule:: mappymatch.constructs.coordinate + + + .. rubric:: Classes + + .. autosummary:: + + Coordinate + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.constructs.geofence.rst b/docs/_autosummary/mappymatch.constructs.geofence.rst new file mode 100644 index 0000000..71f2a8a --- /dev/null +++ b/docs/_autosummary/mappymatch.constructs.geofence.rst @@ -0,0 +1,12 @@ +mappymatch.constructs.geofence +============================== + +.. automodule:: mappymatch.constructs.geofence + + + .. rubric:: Classes + + .. autosummary:: + + Geofence + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.constructs.match.rst b/docs/_autosummary/mappymatch.constructs.match.rst new file mode 100644 index 0000000..578163d --- /dev/null +++ b/docs/_autosummary/mappymatch.constructs.match.rst @@ -0,0 +1,12 @@ +mappymatch.constructs.match +=========================== + +.. automodule:: mappymatch.constructs.match + + + .. rubric:: Classes + + .. autosummary:: + + Match + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.constructs.road.rst b/docs/_autosummary/mappymatch.constructs.road.rst new file mode 100644 index 0000000..ffc1cf0 --- /dev/null +++ b/docs/_autosummary/mappymatch.constructs.road.rst @@ -0,0 +1,13 @@ +mappymatch.constructs.road +========================== + +.. automodule:: mappymatch.constructs.road + + + .. rubric:: Classes + + .. autosummary:: + + Road + RoadId + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.constructs.rst b/docs/_autosummary/mappymatch.constructs.rst new file mode 100644 index 0000000..70cb562 --- /dev/null +++ b/docs/_autosummary/mappymatch.constructs.rst @@ -0,0 +1,17 @@ +mappymatch.constructs +===================== + +.. automodule:: mappymatch.constructs + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + coordinate + geofence + match + road + trace diff --git a/docs/_autosummary/mappymatch.constructs.trace.rst b/docs/_autosummary/mappymatch.constructs.trace.rst new file mode 100644 index 0000000..4aba5d7 --- /dev/null +++ b/docs/_autosummary/mappymatch.constructs.trace.rst @@ -0,0 +1,12 @@ +mappymatch.constructs.trace +=========================== + +.. automodule:: mappymatch.constructs.trace + + + .. rubric:: Classes + + .. autosummary:: + + Trace + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.maps.igraph.igraph_map.rst b/docs/_autosummary/mappymatch.maps.igraph.igraph_map.rst new file mode 100644 index 0000000..b3f81ec --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.igraph.igraph_map.rst @@ -0,0 +1,12 @@ +mappymatch.maps.igraph.igraph\_map +================================== + +.. automodule:: mappymatch.maps.igraph.igraph_map + + + .. rubric:: Classes + + .. autosummary:: + + IGraphMap + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.maps.igraph.rst b/docs/_autosummary/mappymatch.maps.igraph.rst new file mode 100644 index 0000000..0eb47e0 --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.igraph.rst @@ -0,0 +1,13 @@ +mappymatch.maps.igraph +====================== + +.. automodule:: mappymatch.maps.igraph + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + igraph_map diff --git a/docs/_autosummary/mappymatch.maps.map_interface.rst b/docs/_autosummary/mappymatch.maps.map_interface.rst new file mode 100644 index 0000000..28b4ee1 --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.map_interface.rst @@ -0,0 +1,12 @@ +mappymatch.maps.map\_interface +============================== + +.. automodule:: mappymatch.maps.map_interface + + + .. rubric:: Classes + + .. autosummary:: + + MapInterface + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.maps.nx.nx_map.rst b/docs/_autosummary/mappymatch.maps.nx.nx_map.rst new file mode 100644 index 0000000..1ea5049 --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.nx.nx_map.rst @@ -0,0 +1,12 @@ +mappymatch.maps.nx.nx\_map +========================== + +.. automodule:: mappymatch.maps.nx.nx_map + + + .. rubric:: Classes + + .. autosummary:: + + NxMap + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.maps.nx.readers.osm_readers.rst b/docs/_autosummary/mappymatch.maps.nx.readers.osm_readers.rst new file mode 100644 index 0000000..bdbf13b --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.nx.readers.osm_readers.rst @@ -0,0 +1,20 @@ +mappymatch.maps.nx.readers.osm\_readers +======================================= + +.. automodule:: mappymatch.maps.nx.readers.osm_readers + + + .. rubric:: Functions + + .. autosummary:: + + compress + nx_graph_from_osmnx + parse_osmnx_graph + + .. rubric:: Classes + + .. autosummary:: + + NetworkType + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.maps.nx.readers.rst b/docs/_autosummary/mappymatch.maps.nx.readers.rst new file mode 100644 index 0000000..e40e0bb --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.nx.readers.rst @@ -0,0 +1,13 @@ +mappymatch.maps.nx.readers +========================== + +.. automodule:: mappymatch.maps.nx.readers + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + osm_readers diff --git a/docs/_autosummary/mappymatch.maps.nx.rst b/docs/_autosummary/mappymatch.maps.nx.rst new file mode 100644 index 0000000..d5f45ee --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.nx.rst @@ -0,0 +1,14 @@ +mappymatch.maps.nx +================== + +.. automodule:: mappymatch.maps.nx + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + nx_map + readers diff --git a/docs/_autosummary/mappymatch.maps.rst b/docs/_autosummary/mappymatch.maps.rst new file mode 100644 index 0000000..f9a0dd5 --- /dev/null +++ b/docs/_autosummary/mappymatch.maps.rst @@ -0,0 +1,15 @@ +mappymatch.maps +=============== + +.. automodule:: mappymatch.maps + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + igraph + map_interface + nx diff --git a/docs/_autosummary/mappymatch.matchers.lcss.constructs.rst b/docs/_autosummary/mappymatch.matchers.lcss.constructs.rst new file mode 100644 index 0000000..4d9268f --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.lcss.constructs.rst @@ -0,0 +1,13 @@ +mappymatch.matchers.lcss.constructs +=================================== + +.. automodule:: mappymatch.matchers.lcss.constructs + + + .. rubric:: Classes + + .. autosummary:: + + CuttingPoint + TrajectorySegment + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.lcss.lcss.rst b/docs/_autosummary/mappymatch.matchers.lcss.lcss.rst new file mode 100644 index 0000000..1b53867 --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.lcss.lcss.rst @@ -0,0 +1,12 @@ +mappymatch.matchers.lcss.lcss +============================= + +.. automodule:: mappymatch.matchers.lcss.lcss + + + .. rubric:: Classes + + .. autosummary:: + + LCSSMatcher + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.lcss.ops.rst b/docs/_autosummary/mappymatch.matchers.lcss.ops.rst new file mode 100644 index 0000000..60f6596 --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.lcss.ops.rst @@ -0,0 +1,23 @@ +mappymatch.matchers.lcss.ops +============================ + +.. automodule:: mappymatch.matchers.lcss.ops + + + .. rubric:: Functions + + .. autosummary:: + + add_matches_for_stationary_points + drop_stationary_points + find_stationary_points + new_path + same_trajectory_scheme + split_trajectory_segment + + .. rubric:: Classes + + .. autosummary:: + + StationaryIndex + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.lcss.rst b/docs/_autosummary/mappymatch.matchers.lcss.rst new file mode 100644 index 0000000..e8d106f --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.lcss.rst @@ -0,0 +1,16 @@ +mappymatch.matchers.lcss +======================== + +.. automodule:: mappymatch.matchers.lcss + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + constructs + lcss + ops + utils diff --git a/docs/_autosummary/mappymatch.matchers.lcss.utils.rst b/docs/_autosummary/mappymatch.matchers.lcss.utils.rst new file mode 100644 index 0000000..cac3410 --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.lcss.utils.rst @@ -0,0 +1,15 @@ +mappymatch.matchers.lcss.utils +============================== + +.. automodule:: mappymatch.matchers.lcss.utils + + + .. rubric:: Functions + + .. autosummary:: + + compress + forward_merge + merge + reverse_merge + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.line_snap.rst b/docs/_autosummary/mappymatch.matchers.line_snap.rst new file mode 100644 index 0000000..8a1d37e --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.line_snap.rst @@ -0,0 +1,12 @@ +mappymatch.matchers.line\_snap +============================== + +.. automodule:: mappymatch.matchers.line_snap + + + .. rubric:: Classes + + .. autosummary:: + + LineSnapMatcher + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.match_result.rst b/docs/_autosummary/mappymatch.matchers.match_result.rst new file mode 100644 index 0000000..e9831c9 --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.match_result.rst @@ -0,0 +1,12 @@ +mappymatch.matchers.match\_result +================================= + +.. automodule:: mappymatch.matchers.match_result + + + .. rubric:: Classes + + .. autosummary:: + + MatchResult + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.matcher_interface.rst b/docs/_autosummary/mappymatch.matchers.matcher_interface.rst new file mode 100644 index 0000000..502963b --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.matcher_interface.rst @@ -0,0 +1,12 @@ +mappymatch.matchers.matcher\_interface +====================================== + +.. automodule:: mappymatch.matchers.matcher_interface + + + .. rubric:: Classes + + .. autosummary:: + + MatcherInterface + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.osrm.rst b/docs/_autosummary/mappymatch.matchers.osrm.rst new file mode 100644 index 0000000..9463901 --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.osrm.rst @@ -0,0 +1,18 @@ +mappymatch.matchers.osrm +======================== + +.. automodule:: mappymatch.matchers.osrm + + + .. rubric:: Functions + + .. autosummary:: + + parse_osrm_json + + .. rubric:: Classes + + .. autosummary:: + + OsrmMatcher + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.matchers.rst b/docs/_autosummary/mappymatch.matchers.rst new file mode 100644 index 0000000..f842aa3 --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.rst @@ -0,0 +1,18 @@ +mappymatch.matchers +=================== + +.. automodule:: mappymatch.matchers + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + lcss + line_snap + match_result + matcher_interface + osrm + valhalla diff --git a/docs/_autosummary/mappymatch.matchers.valhalla.rst b/docs/_autosummary/mappymatch.matchers.valhalla.rst new file mode 100644 index 0000000..39edf42 --- /dev/null +++ b/docs/_autosummary/mappymatch.matchers.valhalla.rst @@ -0,0 +1,19 @@ +mappymatch.matchers.valhalla +============================ + +.. automodule:: mappymatch.matchers.valhalla + + + .. rubric:: Functions + + .. autosummary:: + + build_match_result + build_path_from_result + + .. rubric:: Classes + + .. autosummary:: + + ValhallaMatcher + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.utils.crs.rst b/docs/_autosummary/mappymatch.utils.crs.rst new file mode 100644 index 0000000..e6126d8 --- /dev/null +++ b/docs/_autosummary/mappymatch.utils.crs.rst @@ -0,0 +1,6 @@ +mappymatch.utils.crs +==================== + +.. automodule:: mappymatch.utils.crs + + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.utils.exceptions.rst b/docs/_autosummary/mappymatch.utils.exceptions.rst new file mode 100644 index 0000000..a1996b5 --- /dev/null +++ b/docs/_autosummary/mappymatch.utils.exceptions.rst @@ -0,0 +1,12 @@ +mappymatch.utils.exceptions +=========================== + +.. automodule:: mappymatch.utils.exceptions + + + .. rubric:: Exceptions + + .. autosummary:: + + MapException + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.utils.geo.rst b/docs/_autosummary/mappymatch.utils.geo.rst new file mode 100644 index 0000000..2016df4 --- /dev/null +++ b/docs/_autosummary/mappymatch.utils.geo.rst @@ -0,0 +1,14 @@ +mappymatch.utils.geo +==================== + +.. automodule:: mappymatch.utils.geo + + + .. rubric:: Functions + + .. autosummary:: + + coord_to_coord_dist + latlon_to_xy + xy_to_latlon + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.utils.plot.rst b/docs/_autosummary/mappymatch.utils.plot.rst new file mode 100644 index 0000000..95536b0 --- /dev/null +++ b/docs/_autosummary/mappymatch.utils.plot.rst @@ -0,0 +1,17 @@ +mappymatch.utils.plot +===================== + +.. automodule:: mappymatch.utils.plot + + + .. rubric:: Functions + + .. autosummary:: + + plot_geofence + plot_map + plot_match_distances + plot_matches + plot_path + plot_trace + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.utils.process_trace.rst b/docs/_autosummary/mappymatch.utils.process_trace.rst new file mode 100644 index 0000000..21c0d84 --- /dev/null +++ b/docs/_autosummary/mappymatch.utils.process_trace.rst @@ -0,0 +1,13 @@ +mappymatch.utils.process\_trace +=============================== + +.. automodule:: mappymatch.utils.process_trace + + + .. rubric:: Functions + + .. autosummary:: + + remove_bad_start_from_trace + split_large_trace + \ No newline at end of file diff --git a/docs/_autosummary/mappymatch.utils.rst b/docs/_autosummary/mappymatch.utils.rst new file mode 100644 index 0000000..614dedc --- /dev/null +++ b/docs/_autosummary/mappymatch.utils.rst @@ -0,0 +1,18 @@ +mappymatch.utils +================ + +.. automodule:: mappymatch.utils + + +.. rubric:: Modules + +.. autosummary:: + :toctree: + :recursive: + + crs + exceptions + geo + plot + process_trace + url diff --git a/docs/_autosummary/mappymatch.utils.url.rst b/docs/_autosummary/mappymatch.utils.url.rst new file mode 100644 index 0000000..b927a28 --- /dev/null +++ b/docs/_autosummary/mappymatch.utils.url.rst @@ -0,0 +1,12 @@ +mappymatch.utils.url +==================== + +.. automodule:: mappymatch.utils.url + + + .. rubric:: Functions + + .. autosummary:: + + multiurljoin + \ No newline at end of file diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..6077352 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,59 @@ +# Book settings +# Learn more at https://jupyterbook.org/customize/config.html + +title: mappymatch +author: National Renewable Energy Laboratory + +# Force re-execution of notebooks on each build. +# See https://jupyterbook.org/content/execute.html +execute: + execute_notebooks: force + timeout: 300 + +# Define the name of the latex output file for PDF builds +latex: + latex_documents: + targetname: mappymatch.tex + +# Information about where the book exists on the web +repository: + url: https://github.com/NREL/mappymatch # Online location of your book + path_to_book: docs # Optional path to your book, relative to the repository root + branch: main # Which branch of the repository should be used when creating links (optional) + +# Add GitHub buttons to your book +# See https://jupyterbook.org/customize/config.html#add-a-link-to-your-repository +html: + use_issues_button: true + use_repository_button: true + +# Sphinx for API doc generation +sphinx: + extra_extensions: + - "sphinx.ext.autodoc" + - "sphinx.ext.autosummary" + - "sphinx.ext.viewcode" + - "sphinx_autodoc_typehints" + - "sphinxcontrib.autoyaml" + - "sphinxcontrib.mermaid" + config: + html_theme: sphinx_book_theme + language: "python" + html_context: + default_mode: light + nb_execution_show_tb: true # Shows the stack trace in stdout; its suppressed otherwise. + nb_execution_raise_on_error: true # Stops the Sphinx build if there is an error in a notebook. See https://github.com/executablebooks/jupyter-book/issues/2011 + suppress_warnings: + - etoc.toctree # autodoc output contains toctrees, so suppress this warning. See https://github.com/executablebooks/sphinx-external-toc/issues/36 + autoyaml_level: 3 + autosummary_generate: true + + # Autodoc config reference + # https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#configuration + autodoc_default_options: + members: true + member-order: bysource + undoc-members: true + private-members: false + autodoc_typehints: both + mermaid_version: "10.8" diff --git a/docs/_toc.yml b/docs/_toc.yml new file mode 100644 index 0000000..223a3db --- /dev/null +++ b/docs/_toc.yml @@ -0,0 +1,21 @@ +# Table of contents +# Learn more at https://jupyterbook.org/customize/toc.html + +format: jb-book +root: home +parts: + - caption: Quick Start + chapters: + - file: quick-start + + - caption: Installation + chapters: + - file: install + + - caption: Example + chapters: + - file: lcss-example + + - caption: Reference + chapters: + - file: api-docs diff --git a/docs/api-docs.md b/docs/api-docs.md new file mode 100644 index 0000000..aa360d4 --- /dev/null +++ b/docs/api-docs.md @@ -0,0 +1,12 @@ +# API Documentation + +```{eval-rst} +.. autosummary:: + :toctree: _autosummary + :recursive: + + mappymatch.constructs + mappymatch.maps + mappymatch.matchers + mappymatch.utils +``` diff --git a/docs/home.md b/docs/home.md new file mode 100644 index 0000000..d5caaf3 --- /dev/null +++ b/docs/home.md @@ -0,0 +1,13 @@ +# Mappymatch + +Mappymatch is a pure-Python package developed and open-sourced by the National Renewable Energy Laboratory. It contains a collection of "Matchers" that enable matching a GPS trace (series of GPS coordinates) to a map. + +## The Current Matchers + +- **`LCSSMatcher`**: A matcher that implements the LCSS algorithm described in this [paper](https://doi.org/10.3141%2F2645-08). Works best with high-resolution GPS traces. +- **`OsrmMatcher`**: A light matcher that pings an OSRM server to request map matching results. See the [official documentation](http://project-osrm.org/) for more info. +- **`ValhallaMatcher`**: A matcher to ping a [Valhalla](https://www.interline.io/valhalla/) server for map matching results. + +## Currently Supported Map Formats + +- **Open Street Maps** diff --git a/docs/install.md b/docs/install.md new file mode 100644 index 0000000..783d8af --- /dev/null +++ b/docs/install.md @@ -0,0 +1,37 @@ +# Install + +## From PyPI + +```bash +pip install mappymatch +``` + +```{note} +While mappymatch is a pure python package, some of the geospatial dependnecies can be hard to install via pip. +If you encounted issues, our recommended solution is to install the package from the source code, using conda +to facilitate the packages that can be challenging to install. + +We hope to eventually provide a conda distribution (help doing this would be greatly appreciated!) +``` + +## From Source + +Clone the repo: + +```bash +git clone https://github.com/NREL/mappymatch.git && cd mappymatch +``` + +Get [Anaconda](https://www.anaconda.com/download) or [miniconda](https://docs.anaconda.com/miniconda/). + +Then, use the `environment.yml` file (in the repo) to install dependencies: + +```bash +conda env create -f environment.yml +``` + +To activate the `mappymatch` environment: + +```bash +conda activate mappymatch +``` diff --git a/docs/lcss-example.ipynb b/docs/lcss-example.ipynb new file mode 100644 index 0000000..6d53ecb --- /dev/null +++ b/docs/lcss-example.ipynb @@ -0,0 +1,575 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "320f93ac-5965-44a4-8d20-40b8944a60a5", + "metadata": {}, + "source": [ + "# LCSS Example\n", + "\n", + "An example of using the LCSSMatcher to match a gps trace to the Open Street Maps road network" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "dbf22ede-f3b6-4940-b866-15263b8eeaff", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch import package_root" + ] + }, + { + "cell_type": "markdown", + "id": "fcbd7d7d-91fc-4bbe-849f-b91b4d919c6f", + "metadata": {}, + "source": [ + "First, we load the trace from a file. \n", + "The mappymatch package has a few sample traces included that we can use for demonstration.\n", + "\n", + "Before we build the trace, though, let's take a look at the file to see how mappymatch expects the input data:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a626d87a-382e-4d04-9e02-886f3a168701", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
latitudelongitude
039.655210-104.919169
139.655449-104.919274
239.655690-104.919381
339.655936-104.919486
439.656182-104.919593
\n", + "
" + ], + "text/plain": [ + " latitude longitude\n", + "0 39.655210 -104.919169\n", + "1 39.655449 -104.919274\n", + "2 39.655690 -104.919381\n", + "3 39.655936 -104.919486\n", + "4 39.656182 -104.919593" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "df = pd.read_csv(package_root() / \"resources/traces/sample_trace_3.csv\")\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "cd2ba449-3b1b-44ea-be6a-a11a12cca1a7", + "metadata": {}, + "source": [ + "Notice that we expect the input data to be in the EPSG:4326 coordinate reference system. \n", + "If your input data is not in this format, you'll need to convert it prior to building a Trace object.\n", + "\n", + "In order to idenfiy which coordinate is which in a trace, mappymatch uses the dataframe index as the coordinate index and so in this case, we just have a simple range based index for each coordinate.\n", + "We could set a different index on the dataframe and mappymatch would use that to identify the coordinates.\n", + "\n", + "Now, let's load the trace from the same file:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "278d868d-1095-427b-a6ef-55db76f9353c", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.constructs.trace import Trace\n", + "\n", + "trace = Trace.from_csv(\n", + " package_root() / \"resources/traces/sample_trace_3.csv\",\n", + " lat_column=\"latitude\",\n", + " lon_column=\"longitude\",\n", + " xy=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d5791707-491f-4c16-b5a9-51147a6ec896", + "metadata": {}, + "source": [ + "Notice here that we pass three optional arguments to the `from_csv` function. \n", + "By default, mappymatch expects the latitude and longitude columns to be named \"latitude\" and \"longitude\" but you can pass your own values if needed.\n", + "Also by default, mappymatch converts the trace into the web mercator coordinate reference system (EPSG:3857) by setting `xy=True`.\n", + "The LCSS matcher computes the cartesian distance between geometries and so a projected coordiante reference system is ideal.\n", + "In a future version of mappymatch we hope to support any projected coordiante system but right now we only support EPSG:3857.\n", + "\n", + "Okay, let's plot the trace to see what it looks like (mappymatch uses folium under the hood for plotting):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e1284f1-ef05-4732-9b20-891c444d5c68", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.utils.plot import plot_trace\n", + "\n", + "plot_trace(trace, point_color=\"black\", line_color=\"yellow\")" + ] + }, + { + "cell_type": "markdown", + "id": "a54fd4fa-974b-4e96-8224-b90e31ffdd37", + "metadata": {}, + "source": [ + "Next, we need to get a road map to match our Trace to.\n", + "One way to do this is to build a small geofence around the trace and then download a map that just fits around our trace:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc5f7cb1-8f01-45b3-8216-59d7fd7f1f22", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.constructs.geofence import Geofence\n", + "\n", + "geofence = Geofence.from_trace(trace, padding=2e3)" + ] + }, + { + "cell_type": "markdown", + "id": "c581bf51-878b-4968-991c-de77becea543", + "metadata": {}, + "source": [ + "Notice that we pass an optional argument to the constructor.\n", + "The padding defines how large around the trace we should build our geofence and is in the same units as the trace.\n", + "In our case, the trace has been projected to the web mercator CRS and so our units would be in approximate meters, 1e3 meters or 1 kilomter \n", + "\n", + "Now, let's plot both the trace and the geofence:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e8008c3-01ec-42be-b62e-730cfc35e995", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.utils.plot import plot_geofence\n", + "\n", + "plot_trace(trace, point_color=\"black\", m=plot_geofence(geofence))" + ] + }, + { + "cell_type": "markdown", + "id": "c294fc6c-4ad3-4f2a-a819-5772c887a65e", + "metadata": {}, + "source": [ + "At this point, we're ready to download a road network.\n", + "Mappymatch has a couple of ways to represent a road network: The `NxMap` and the `IGraphMap` which use `networkx` and `igraph`, respectively, under the hood to represent the road graph structure.\n", + "You might experiment with both to see if one is more performant or memory efficient in your use case.\n", + "\n", + "In this example we'll use the `NxMap`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1259d790-758b-413c-8ab1-19106ee5b3c8", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.maps.nx.nx_map import NxMap, NetworkType\n", + "\n", + "nx_map = NxMap.from_geofence(\n", + " geofence,\n", + " network_type=NetworkType.DRIVE,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "7388a8a5-4396-4c95-bc23-aeb8c057d57a", + "metadata": {}, + "source": [ + "The `from_geofence` constructor uses the osmnx package under the hood to download a road network.\n", + "\n", + "Notice we pass the optional argument `network_type` which defaults to `NetworkType.DRIVE` but can be used to get a different network like `NetworkType.BIKE` or `NetworkType.WALK`\n", + "\n", + "Now, we can plot the map to make sure we have the network that we want to match to:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6dd7f2f8-9407-418c-912d-723cf7672624", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.utils.plot import plot_map\n", + "\n", + "plot_map(nx_map)" + ] + }, + { + "cell_type": "markdown", + "id": "3e3e4926-7e63-4098-986a-605aa772a9d8", + "metadata": {}, + "source": [ + "Now, we're ready to perform the actual map matching. \n", + "\n", + "In this example we'll use the `LCSSMatcher` which implements the algorithm described in this paper:\n", + "\n", + "[Zhu, Lei, Jacob R. Holden, and Jeffrey D. Gonder.\n", + "\"Trajectory Segmentation Map-Matching Approach for Large-Scale, High-Resolution GPS Data.\"\n", + "Transportation Research Record: Journal of the Transportation Research Board 2645 (2017): 67-75.](https://doi.org/10.3141%2F2645-08)\n", + "\n", + "We won't go into detail here for how to tune the paramters but checkout the referenced paper for more details if you're interested. \n", + "The default parameters have been set based on internal testing on high resolution driving GPS traces. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "272e5779-5b3b-4862-9d5e-850866758554", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.matchers.lcss.lcss import LCSSMatcher\n", + "\n", + "matcher = LCSSMatcher(nx_map)\n", + "\n", + "match_result = matcher.match_trace(trace)" + ] + }, + { + "cell_type": "markdown", + "id": "64ab014b-3084-48a0-a89a-d579ca296dc6", + "metadata": {}, + "source": [ + "Now that we have the results, let's plot them:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5dcdab12-0592-472e-bd7d-b00add9d8533", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.utils.plot import plot_matches\n", + "\n", + "plot_matches(match_result.matches)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e470152-4b65-4844-a014-b922c5cbd8f8", + "metadata": {}, + "outputs": [], + "source": [ + "match_result.path_to_geodataframe().plot()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f7e52f4-b52a-4788-a990-f603378ea090", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "d9ac54eb-d5e0-45db-a90d-cf42906a3bc6", + "metadata": {}, + "source": [ + "The `plot_matches` function plots the roads that each point has been matched to and labels them with the road id.\n", + "\n", + "In some cases, if the trace is much sparser (for example if it was collected a lower resolution), you might want see the estimated path, rather than the explict matched roads.\n", + "\n", + "For example, let's reduce the trace frequency to every 30th point and re-match it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70d10607-71f6-4706-878a-8ab7332f7543", + "metadata": {}, + "outputs": [], + "source": [ + "reduced_trace = trace[0::30]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3668f51e-da5e-485a-8d8b-e2f76fd1c173", + "metadata": {}, + "outputs": [], + "source": [ + "plot_trace(reduced_trace, point_color=\"black\", line_color=\"yellow\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b203d89a-3384-4fcb-81ff-dc62f34277d0", + "metadata": {}, + "outputs": [], + "source": [ + "reduced_matches = matcher.match_trace(reduced_trace)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f56f70f8-7732-4801-af04-bffce4176853", + "metadata": {}, + "outputs": [], + "source": [ + "plot_matches(reduced_matches.matches)" + ] + }, + { + "cell_type": "markdown", + "id": "a4d7ac4f-d822-491a-9a1d-77cd42f0a7d7", + "metadata": {}, + "source": [ + "The match result also has a `path` attribute with the estiamted path through the network:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c389db6-427f-4b91-8857-06d36ea51809", + "metadata": {}, + "outputs": [], + "source": [ + "from mappymatch.utils.plot import plot_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8e63658-1de5-4313-b5c3-989afa0c5951", + "metadata": {}, + "outputs": [], + "source": [ + "plot_trace(\n", + " reduced_trace, point_color=\"blue\", m=plot_path(reduced_matches.path, crs=trace.crs)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "fdc744b4-9399-4a64-a0f9-a02791aaf859", + "metadata": {}, + "source": [ + "Lastly, we might want to convert the results into a format more suitible for saving to file or merging with some other dataset. \n", + "To do this, we can convert the result into a dataframe:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "456d58c4-d507-461d-be9d-75b80341a406", + "metadata": {}, + "outputs": [], + "source": [ + "result_df = reduced_matches.matches_to_dataframe()\n", + "result_df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "de20d601-aab6-4cab-ac98-3b25b8b433e1", + "metadata": {}, + "source": [ + "Here, for each coordinate, we have the distance to the matched road, and then attributes of the road itself like the geometry, the OSM node id and the road distance and travel time.\n", + "\n", + "We can also get a dataframe for the path:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e4bf8cf9-83a7-4347-9c7c-164ff0fe4413", + "metadata": {}, + "outputs": [], + "source": [ + "path_df = reduced_matches.path_to_dataframe()\n", + "path_df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "1e38cdb0-0028-4c23-88a0-e6fdafe295ce", + "metadata": {}, + "source": [ + "Another thing we can do is to only get a certain set of road types to match to. For example, let's say I only want to consider highways and primary roads for matching, I can do so by passing a custom filter when building the road network: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57168d3b-c9d0-47ae-9a84-a405b31ddf73", + "metadata": {}, + "outputs": [], + "source": [ + "nx_map = NxMap.from_geofence(\n", + " geofence,\n", + " network_type=NetworkType.DRIVE,\n", + " custom_filter='[\"highway\"~\"motorway|primary\"]',\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "faea5546-bda5-4642-9b75-26692efce16a", + "metadata": {}, + "outputs": [], + "source": [ + "plot_map(nx_map)" + ] + }, + { + "cell_type": "markdown", + "id": "04f39101-11cc-4cd5-92de-5b1f191de3b4", + "metadata": {}, + "source": [ + "Above you can see that now we have a much reduced graph to match to, let's see what happens" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35436094-897b-4537-b161-73eadd294625", + "metadata": {}, + "outputs": [], + "source": [ + "matcher = LCSSMatcher(nx_map)\n", + "\n", + "match_result = matcher.match_trace(trace)\n", + "\n", + "plot_matches(match_result.matches)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "820813b6-dba1-4a1c-aa37-fcba0deb20f1", + "metadata": {}, + "outputs": [], + "source": [ + "plot_path(match_result.path, crs=trace.crs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2137e503-0b00-4358-a1c8-be34ab6d10eb", + "metadata": {}, + "outputs": [], + "source": [ + "path_gdf = match_result.path_to_geodataframe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a5b3a413-7325-4629-89ad-664aab4ece10", + "metadata": {}, + "outputs": [], + "source": [ + "path_gdf.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2731f4d7-a9df-455f-859a-f22e48e40f37", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 747ffb7..0000000 --- a/docs/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=source -set BUILDDIR=build - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.https://www.sphinx-doc.org/ - exit /b 1 -) - -if "%1" == "" goto help - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/docs/quick-start.md b/docs/quick-start.md new file mode 100644 index 0000000..a0fb92e --- /dev/null +++ b/docs/quick-start.md @@ -0,0 +1,5 @@ +# Quick Start + +First, follow the [installation instructions](install). + +Then, checkout the [LCSS example](lcss-example). diff --git a/docs/source/conf.py b/docs/source/conf.py deleted file mode 100644 index 4c1b111..0000000 --- a/docs/source/conf.py +++ /dev/null @@ -1,83 +0,0 @@ -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import collections -import os -import sys -from datetime import date - -sys.path.insert(0, os.path.abspath("../..")) -print(os.path.abspath("../..")) - - -# -- Project information ----------------------------------------------------- - -project = "Mappymatch" -year = date.today().year -copyright = f"{year}, National Renewable Energy Laboratory" -author = "National Renewable Energy Laboratory" -# Initial releases at 0.x.x -# First stable release at 1.x.x -full_version = "0.5.0" -version = full_version -# Full version for display in various places. -release = full_version - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "sphinx.ext.autodoc", - "sphinx_rtd_theme", - "sphinx.ext.napoleon", - "sphinx.ext.viewcode", - "sphinxemoji.sphinxemoji", -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -# exclude_patterns = [] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "sphinx_rtd_theme" -html_theme_options = { - "style_external_links": True, - "style_nav_header_background": "#9B59B6", -} -# TODO https://www.sphinx-doc.org/en/master/usage/configuration.html?highlight=html_icon#confval-html_favicon -# html_logo = '' -# html_favicon = '' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["./_static"] -# TODO Revised based on discussion #120. -add_module_names = False - -# -- Post process ------------------------------------------------------------ - - -def remove_namedtuple_attrib_docstring(app, what, name, obj, skip, options): - if type(obj) is collections._tuplegetter: - return True - return skip - - -def setup(app): - app.connect("autodoc-skip-member", remove_namedtuple_attrib_docstring) diff --git a/docs/source/general/changelog.rst b/docs/source/general/changelog.rst deleted file mode 100644 index dcfbc98..0000000 --- a/docs/source/general/changelog.rst +++ /dev/null @@ -1,3 +0,0 @@ -Changelog -=================== - diff --git a/docs/source/general/contributing.rst b/docs/source/general/contributing.rst deleted file mode 100644 index bb07f51..0000000 --- a/docs/source/general/contributing.rst +++ /dev/null @@ -1,387 +0,0 @@ -Contributing -==================== - -.. contents:: Overview - :depth: 2 - :local: - -Getting Started ------------------ -We are happy your are even considering helping. We hope this guide makes the process seamless. We really appreciate your help! - -If you are new to open source contribution, please checkout :ref:`best-practices` and :ref:`toolbelt`. - -.. note:: - All command line code is run from the project root except where noted. - -.. tip:: - In :code:`git clone ` , text inside the < >, and the < > get replaced with the appropriate specific text. The < > visually separate the syntax which remains unchanged from the text that needs to be changed. It is a common development pattern that is confusing if you have not seen it before. To see another example of it, type :code:`git --help` on your command line. - -Select an issue ----------------- -Look through the open issues and for an issue labelled ``good first issue`` or ``documentation`` that is unassigned. - -Once you have selected an issue, then assign it to yourself by placing the word ``take`` as a comment. This will indicate to other contributors that you're working on the issue. Your goal is to finish the process from self assigning the issue to submitting the initial Pull Request (PR) in less than 2 weeks. This keeps your work from diverging too much from the main branch. - -That being said, life happens, we appreciate you however you decide to help. If something comes up, and you need to unassign an issue (place the word ``remove`` as a comment) or post that you are still working on it, then that is okay. - - -Build from the source (First time only) ----------------------------------------------- - #. Go to the `repo `_ and click on :guilabel:`Fork` in the upper right. - #. Navigate to your fork which will be /mappymatch . Click on the green :guilabel:`Code` drop down and copy the https link. - #. From the command line: - - .. code-block:: sh - :caption: Clone the forked repo. - - git clone - - .. code-block:: sh - :caption: Create the Conda environment, and activate it. You will need to run each command separately. - - cd mappymatch - conda env create -f environment_dev.yml - conda activate mappymatch_dev - - .. code-block:: sh - :caption: Verify installation by running tests. - - python -m unittest discover - - .. code-block:: output - :caption: Return should look like this, but the number of tests will vary. - - ................................................ - --------------------------------------------------------------- - Ran 51 tests in 14.621s - - OK - - -Install Pre-Commit hooks (First time only) --------------------------------------------------------------------- -.. code-block:: sh - - pre-commit install - - -Setup Git workflow (First time only) --------------------------------------------------------------------- -.. code-block:: sh - :caption: Setup upstream remote. - - git remote add upstream https://github.com/NREL/mappymatch.git - - -Execute Changes and Git workflow ---------------------------------------------------------------- - - #. - .. code-block:: - :caption: Checkout a branch from your forked repository - - git checkout -b - - #. Make your changes and add commits - - #. Pull in changes from upstream. This is best done periodically, if you have the branch checked out for a long time. - - .. code-block:: - :caption: Switch to main branch, pull changes from upstream, resolve conflicts that arise. - - git checkout main - git pull upstream main - - .. code-block:: - :caption: Switch to your branch, pull the changes from your main repository, and resolve conflicts that arise. - - git checkout - git pull origin main - - #. Push changes to get ready for PR. - - .. code-block:: - :caption: Push your changes to remote for your forked repository. - - git push origin - - -Open a PR ---------------------------------------------- - - #. Go to the `repo/PR `_ and click on :guilabel:`New pull request` in the upper right. - #. Click on :guilabel:`Compare across forks` in the top middle. - #. Leave the ``base repository`` section alone. For the ``head repository`` section select your fork and your branch. - #. **Review the code diffs** and then click :guilabel:`Create pull request`. - #. Check back after a fewer minutes to make sure the CI steps pass. If they fail, then make the fixes and push your branch to your forked repo again. The PR will update and rerun the CI. - -Finish the PR ---------------------------------------------- - - #. Check back in a few days for maintainer requests for changes. Don't be surprised or offended by the changes. Most PRs require some changes. - #. Make the changes and push your branch to your forked repo again. - #. The maintainer will merge your branch. - #. Delete you branch - #. Pull the changes into your forked repo. - - .. code-block:: sh - - git checkout main - git pull upstream main - -.. _best-practices: - -Best practices ---------------------------------------------- -Asking questions -_____________________________________________ -Have a question? Rather than opening an issue, please ask questions -or post comments in `Q&A Discussions `_ . -Members of the community are happy to assist. - -Providing feedback -______________________________________________ -Your comments and feedback are very welcome. Please post to -`General Discussions `_ -with lots of detail. - -Reporting issues -______________________________________________ -We are happy to fix bugs. Please report buys using the issues template. - -General issue reporting guidelines -______________________________________________ - - * One issue per problem. - - * Check through the closed issues before submitting a new one. - -Requesting features -_______________________________________________ -If you are interested in coding or requesting a new feature, let us know in -`Ideas Discussions `_ -Please wait for confirmation from a core maintainer before proceeding. - - -Previewing documentation locally --------------------------------------------- -To preview the documentation locally: - - #. From the command line, use `Sphinx `_ to rebuild the docs. - - .. code-block:: sh - - sphinx-autobuild -b html ./docs/source ./docs/_build - - #. Open ``http://127.0.0.1:8000`` with your browser. - - - -Maintainer Information ----------------------------------------- - -Adding a new package dependency -________________________________________ - -To add a new package dependency, add it to the ``dependency`` list in the ``/pyproject.toml`` file. - - -Updating Version Locations -________________________________________ - -To update the version automatically using tbump: - -.. code-block:: sh - - tbump --only-patch - -To update the version manually update it in the following locations: - - #. In the docs ``/docs/source/conf.py`` - #. In the setup.py ``/pyproject.toml`` (2 places) - - -Releasing to PyPi manually -__________________________________________ - - #. Build the wheel - - .. code-block:: sh - - python -m build - - #. Upload to Test PyPi. - - .. code-block:: sh - - twine upload -r testpypi dist/* --verbose - - #. Verify for typos and that the wheel installs. If you spot a mistake, correct it, commit the correction and change the version in the [project] table in ``/pyproject.toml`` to ...post<#> - #. Delete the old wheel, rebuild the wheel and reupload to Test PyPi. - #. Remove post<#> from the version. - #. If there are no mistakes, add add tag v.. to master branch on github. - - .. code-block:: sh - :caption: Tags have to pushed like a separate branch. - - git tag -a v.. -m "version .." - git push origin - - #. Upload to PyPi. - - .. code-block:: sh - - twine upload dist/* - - -.. _toolbelt: - -Tools in our toolbelt ---------------------------------------- -.. note:: - All command line examples use settings configured for the repo. Coverage and Isort automatically find their configuration files. - -Black -__________________________________ - -Implemented as a Pre-Commit hook. - -`Black `_ is an opinionated code formatter so you don't have to be. - -Command line use: - -.. code-block:: sh - - black --config pyproject.toml - - -Coverage -___________________________________ - -Not Implemented as CI - -`Coverage `_ is a tool used to monitor test coverage. It does so by executing the tests and monitoring which lines are run. - -Command line use: - -.. code-block:: sh - :caption: Run the tests with coverage monitoring. - - coverage -m unittest discover - -.. code-block:: sh - :caption: View the coverage report. - - coverage report -m - -Flake8 -________________________________________ - -Implemented as CI and Pre-Commit hook. - -`Flake8 `_ is a linting tool that wraps PyFlakes, pycodestyle, and Ned Batchelder's McCabe script into a single package. - -Command Line use: - -.. code-block:: sh - - flake8 --config tox.ini - -Interrogate -__________________________________ -Implemented as Pre-Commit hook. - -`Interrogate `_ reports on the level of and enforces docstring coverage for the code base. - -Command line use - -.. code-block:: sh - - interrogate -c pyproject.toml - - -Isort -__________________________________ - -Implemented as Pre-Commit hook. - -`Isort `_ automatically groups and sorts your import statements so you don't have to. - -Command line use: - -.. code-block:: sh - - isort - -Mypy -________________________________________ - -Implemented in CI. - -`Mypy `_ is an optional static type checker for Python that aims to combine the benefits of dynamic (or "duck") typing and static typing. - -Command Line use: - -.. code-block:: sh - :caption: Run normally. - - mypy --config-file mypy.ini - -.. code-block:: sh - :caption: Run in verbose mode. Used to see location of specific failures. - - mypy --config-file mypy.ini -v - -Pre-Commit -__________________________________ - -Implements all the precommit hooks. - -`Pre-Commit `_ is a framework for managing and maintaining multilanguage pre-commit hooks. Before the commit executes, pre-commit hooks are run to do useful things like code formatting. This means the unformatted code never enters your code base. - -Command line use: - -.. code-block:: sh - :caption: Run once to install hooks configured by .pre-commit-config.yaml - - pre-commit install - -.. code-block:: sh - :caption: Make changes to the code base, add files to the staging area, and commit changes as you normally would. - - git commit -m "Updated tools in toolchain docs section." - -You will get a success or failure. - -.. code-block:: output - :caption: Example output for success. No other steps are needed. - - black................................................(no files to check)Skipped - isort (python).......................................(no files to check)Skipped - interrogate..........................................(no files to check)Skipped - [create_contributing_docs 30c2bf3] Updated tools in toolchain docs section. - 1 file changed, 80 insertions(+), 4 deletions(-) - -.. code-block:: output - :caption: Example output for failure. See next code block for follow on steps. - - black....................................................................Failed - - hook id: black - - files were modified by this hook - - reformatted mappymatch\utils\url.py - - All done! \u2728 \U0001f370 \u2728 - 1 file reformatted. - - isort (python)...........................................................Passed - interrogate..............................................................Passed - - -.. code-block:: sh - :caption: Re-add the files to the staging area. Commit again. You should get a success. - - git add --all - git commit -m "Update contributing docs for precommit-failure." - diff --git a/docs/source/general/contributors.rst b/docs/source/general/contributors.rst deleted file mode 100644 index 4bfa732..0000000 --- a/docs/source/general/contributors.rst +++ /dev/null @@ -1,33 +0,0 @@ -Contributors -=================== - -As with any open source project, many people came together to create this library. - -Owners ----------- - -* `nreinicke `_ -* `jhoshiko `_ - - -Core maintainers ------------------------ - -* `machallboyd `_ - -Previous maintainers or Owners --------------------------------- - -* `Rowlando13 `_ - -Special thanks --------------------- - - * The many contributors from Pycon US 2022! You really got the project off the ground. - * The `National Renewable Energy Laboratory `_ for open sourcing the initial groundwork. - * Open source maintainers even if you only contributed one commit. - -Previous work: - - * Lei Zhu, Jacob R. Holden, and Jeffrey D. Gonder for their work on the algorithm that underlies the :code:`LCSSMatcher` detailed in `Trajectory Segmentation Map-Matching Approach for Large-Scale, High-Resolution GPS Data `_ - diff --git a/docs/source/general/examples.rst b/docs/source/general/examples.rst deleted file mode 100644 index 14817ce..0000000 --- a/docs/source/general/examples.rst +++ /dev/null @@ -1,7 +0,0 @@ -Examples -================ - -Example Usage -------------- - -Checkout `this notebook `_ for a detailed example of using the LCSSMatcher. diff --git a/docs/source/general/install.rst b/docs/source/general/install.rst deleted file mode 100644 index 056606a..0000000 --- a/docs/source/general/install.rst +++ /dev/null @@ -1,56 +0,0 @@ -Install -================== - -From PyPI (recommended) ---------- - -.. code-block:: - - pip install mappymatch - -From Source -------------------------- - -Clone the repo:: - - git clone https://github.com/NREL/mappymatch.git && cd mappymatch - -Then, use the environment.yml file (in the repo) to install dependencies:: - - conda env create -f environment.yml - -To activate the mappymatch environment:: - - conda activate mappymatch - - -.. warning:: - - Some users have reported problems installing GDAL (a dependency of geopandas) on windows. - Here are two possible solutions: - - 1) Install GDAL from source - This is the most difficult solution, but is trusted. - - Before installing the required dependencies, install GDAL into the system. This process is documented - by `UCLA `_. - - 2) Install GDAL from binary wheel - This is the easiest solution, but it is from an untrusted source and is not to be used in sensitive environments. - - A precompiled binary wheel is provided by Christoph Gohlke of the Laboratory for Fluorescence Dynamics at the - University of California. If you use this approach, both GDAL and Fiona wheels need to be installed. - - * `GDAL wheels `_ - * `Fiona wheels `_ - - #. Download the correct GDAL and Fiona wheels for your architecture and Python version - #. Install the GDAL wheel into the virtual environment `pip install ` - #. Install the Fiona wheel into the virtual environment `pip install ` - #. Use pip to install the remaining packages `pip install ` - - -From Conda ----------- - -|:construction:| We're currently working on a Conda package for mappymatch. \ No newline at end of file diff --git a/docs/source/general/quickstart.rst b/docs/source/general/quickstart.rst deleted file mode 100644 index f151b98..0000000 --- a/docs/source/general/quickstart.rst +++ /dev/null @@ -1,3 +0,0 @@ -Quickstart -============== -Checkout `this notebook `_ for a detailed example of using the LCSSMatcher. \ No newline at end of file diff --git a/docs/source/images/map-matching.gif b/docs/source/images/map-matching.gif deleted file mode 100644 index 5e8155d..0000000 Binary files a/docs/source/images/map-matching.gif and /dev/null differ diff --git a/docs/source/index.rst b/docs/source/index.rst deleted file mode 100644 index 714164c..0000000 --- a/docs/source/index.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. MapPyMatch documentation master file, created by - sphinx-quickstart on Mon May 2 10:18:14 2022. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -.. _mainindex: - -Mappymatch -======================== - -Mappymatch is a pure-python package developed and open sourced by the National Renewable Energy Laboratory. It contains a collection of "Matchers" that enable matching a GPS trace (series of GPS coordinates) to a map. - -The current Matchers are: ---------------------------------------- - - * ``LCSSMatcher`` A matcher that implements the LCSS algorithm described in this `paper `_. Works best with high resolution GPS traces. - - * ``OsrmMatcher`` A light matcher that pings an OSRM server to request map matching results. See the `official documentation `_ for more info. - - * ``ValhallaMatcher`` A matcher to ping a `Valhalla `_ server for map matching results. - -Currently supported map formats are: ---------------------------------------- - - * ``Open Street Maps`` - -.. toctree:: - :maxdepth: 3 - :caption: Documentation Index: - - general/quickstart - general/install - general/examples - reference/index - general/contributing - general/changelog - general/contributors - -.. Indices and tables -.. ================== - -.. * :ref:`genindex` -.. * :ref:`modindex` -.. * :ref:`search` \ No newline at end of file diff --git a/docs/source/reference/constructs.rst b/docs/source/reference/constructs.rst deleted file mode 100644 index cc25488..0000000 --- a/docs/source/reference/constructs.rst +++ /dev/null @@ -1,46 +0,0 @@ - -Constructs -========== - -Constructs are the fundamental data structures shared between all matching implementations. For readability, the full path is listed below and not used in other parts of the documentation. - -Available Constructs -------------------------- - -For readability, the full path is listed below and not used in other parts of the documentation. - -- :class:`mappymatch.constructs.coordinate.Coordinate` -- :class:`mappymatch.constructs.geofence.Geofence` -- :class:`mappymatch.constructs.match.Match` -- :class:`mappymatch.constructs.road.Road` -- :class:`mappymatch.constructs.trace.Trace` - -Coordinate ---------------------------------------- - -.. automodule:: mappymatch.constructs.coordinate - :members: - -Geofence -------------------------------------- - -.. automodule:: mappymatch.constructs.geofence - :members: - -Match ----------------------------------- - -.. automodule:: mappymatch.constructs.match - :members: - -Road ---------------------------------- - -.. automodule:: mappymatch.constructs.road - :members: - -Trace ----------------------------------- - -.. automodule:: mappymatch.constructs.trace - :members: diff --git a/docs/source/reference/index.rst b/docs/source/reference/index.rst deleted file mode 100644 index 56e8ec7..0000000 --- a/docs/source/reference/index.rst +++ /dev/null @@ -1,11 +0,0 @@ -API Reference -============= - -.. toctree:: - :maxdepth: 3 - - constructs - maps - matchers - readers - utils diff --git a/docs/source/reference/maps.rst b/docs/source/reference/maps.rst deleted file mode 100644 index e74aa22..0000000 --- a/docs/source/reference/maps.rst +++ /dev/null @@ -1,25 +0,0 @@ -Maps -==== - -The type of map used to display data can be changed based on what works best for you application. -Each map class must conform to the map interface defined in :class:`mappymatch.maps.map_interface.MapInterface`. - -Available Maps ------------------- - -For readability, the full path is listed below and not used in other parts of the documentation. - -- :class:`mappymatch.maps.nx.nx_map.NxMap` - -NxMap ---------------- -.. autoclass:: mappymatch.maps.nx.nx_map.NxMap - :members: - -Map interface -------------------- - -Each Matcher class must conform to the matcher interface defined below. - -.. autoclass:: mappymatch.maps.map_interface.MapInterface - :members: \ No newline at end of file diff --git a/docs/source/reference/matchers.rst b/docs/source/reference/matchers.rst deleted file mode 100644 index 14be98e..0000000 --- a/docs/source/reference/matchers.rst +++ /dev/null @@ -1,42 +0,0 @@ -Matchers -======== - -There are several matchers that can be used to determine the road that a coordinate is *matched* to. Matchers may have tradeoffs between speed and accuracy. - -Available Matchers ------------------- - -For readability, the full path is listed below and not used in other parts of the documentation. - -- :class:`mappymatch.matchers.lcss.lcss.LCSSMatcher` -- :class:`mappymatch.matchers.line_snap.LineSnapMatcher` -- :class:`mappymatch.matchers.valhalla.ValhallaMatcher` -- :class:`mappymatch.matchers.osrm.OsrmMatcher` - -LCSS ----------- -.. autoclass:: mappymatch.matchers.lcss.lcss.LCSSMatcher - :members: - -Line Snap -------------- -.. autoclass:: mappymatch.matchers.line_snap.LineSnapMatcher - :members: - -Valhalla --------------- -.. autoclass:: mappymatch.matchers.valhalla.ValhallaMatcher - :members: - -Osrm --------------- -.. autoclass:: mappymatch.matchers.osrm.OsrmMatcher - :members: - -Matcher Inferface --------------------- - -Each Matcher class must conform to the matcher interface defined below. - -.. autoclass:: mappymatch.matchers.matcher_interface.MatcherInterface - :members: \ No newline at end of file diff --git a/docs/source/reference/readers.rst b/docs/source/reference/readers.rst deleted file mode 100644 index 4ba07ef..0000000 --- a/docs/source/reference/readers.rst +++ /dev/null @@ -1,12 +0,0 @@ -Readers -======= - -(Reserved for future use) - -You can use these to generate a map for various sources. - -Readers Module ----------------------------------------------- - -.. automodule:: mappymatch.maps.nx.readers.osm_readers - :members: diff --git a/docs/source/reference/utils.rst b/docs/source/reference/utils.rst deleted file mode 100644 index 71d618b..0000000 --- a/docs/source/reference/utils.rst +++ /dev/null @@ -1,44 +0,0 @@ -Utils -===== - -Helper functions and classes. - -Modules ---------------------------- -For readability, the full path is listed below and not used in other parts of the documentation. - -* ``mappymatch.utils.exceptions`` -* ``mappymatch.utils.geo`` -* ``mappymatch.utils.plot`` -* ``mappymatch.utils.trace`` -* ``mappymatch.utils.url`` - -exceptions module ----------------------------------- - -.. automodule:: mappymatch.utils.exceptions - :members: - -geo module ---------------------------- - -.. automodule:: mappymatch.utils.geo - :members: - -plot module ----------------------------- - -.. automodule:: mappymatch.utils.plot - :members: - -trace module --------------------------------------- - -.. automodule:: mappymatch.utils.process_trace - :members: - -url module ---------------------------- - -.. automodule:: mappymatch.utils.url - :members: \ No newline at end of file diff --git a/environment.yml b/environment.yml index be2495e..5f3ade4 100644 --- a/environment.yml +++ b/environment.yml @@ -1,4 +1,3 @@ -# Add dependencies in alphabetical order. name: mappymatch channels: - conda-forge @@ -13,10 +12,8 @@ dependencies: - pandas - pip - pip: - - . - - pyproj - - requests + - . + - pyproj + - requests - rtree - shapely - - diff --git a/examples/line_snap_vs_lcss.py b/examples/line_snap_vs_lcss.py deleted file mode 100644 index 7001f14..0000000 --- a/examples/line_snap_vs_lcss.py +++ /dev/null @@ -1,41 +0,0 @@ -from pathlib import Path - -from mappymatch import package_root -from mappymatch.constructs.geofence import Geofence -from mappymatch.constructs.trace import Trace -from mappymatch.maps.nx.nx_map import NxMap -from mappymatch.matchers.lcss.lcss import LCSSMatcher -from mappymatch.matchers.line_snap import LineSnapMatcher - -PLOT = True - -if PLOT: - import webbrowser - - from mappymatch.utils.plot import plot_matches - -trace = Trace.from_csv(package_root() / "resources/traces/sample_trace_3.csv") - -# generate a geofence polygon that surrounds the trace; units are in meters; -# this is used to query OSM for a small map that we can match to -geofence = Geofence.from_trace(trace, padding=1e3) - -# uses osmnx to pull a networkx map from the OSM database -nx_map = NxMap.from_geofence(geofence) - -lcss_matcher = LCSSMatcher(nx_map) -snap_matcher = LineSnapMatcher(nx_map) - -lcss_matches = lcss_matcher.match_trace(trace) -snap_matches = snap_matcher.match_trace(trace) - -if PLOT: - lcss_file = Path("lcss_matches.html") - lmap = plot_matches(lcss_matches.matches) - lmap.save(str(lcss_file)) - webbrowser.open(lcss_file.absolute().as_uri()) - - smap_file = Path("snap_matches.html") - smap = plot_matches(snap_matches.matches) - smap.save(str(smap_file)) - webbrowser.open(smap_file.absolute().as_uri()) diff --git a/examples/match_one_trace.py b/examples/match_one_trace.py deleted file mode 100644 index ef66a55..0000000 --- a/examples/match_one_trace.py +++ /dev/null @@ -1,42 +0,0 @@ -from pathlib import Path - -from mappymatch import package_root -from mappymatch.constructs.geofence import Geofence -from mappymatch.constructs.trace import Trace -from mappymatch.maps.nx.nx_map import NxMap -from mappymatch.matchers.lcss.lcss import LCSSMatcher - -PLOT = True - -if PLOT: - import webbrowser - - from mappymatch.utils.plot import plot_geofence, plot_matches, plot_trace - -print("loading trace.") -trace = Trace.from_csv(package_root() / "resources/traces/sample_trace_1.csv") - -# generate a geofence polygon that surrounds the trace; units are in meters; -# this is used to query OSM for a small map that we can match to -print("building geofence.") -geofence = Geofence.from_trace(trace, padding=1e3) - -# uses osmnx to pull a networkx map from the OSM database -print("pull osm map.") -nx_map = NxMap.from_geofence(geofence) - -print("matching .") -matcher = LCSSMatcher(nx_map) - -match_result = matcher.match_trace(trace) - -if PLOT: - tmap_file = Path("trace_map.html") - tmap = plot_trace(trace, plot_geofence(geofence)) - tmap.save(str(tmap_file)) - webbrowser.open(tmap_file.absolute().as_uri()) - - mmap_file = Path("matches_map.html") - mmap = plot_matches(match_result.matches) - mmap.save(str(mmap_file)) - webbrowser.open(mmap_file.absolute().as_uri()) diff --git a/mappymatch/__about__.py b/mappymatch/__about__.py new file mode 100644 index 0000000..3d18726 --- /dev/null +++ b/mappymatch/__about__.py @@ -0,0 +1 @@ +__version__ = "0.5.0" diff --git a/mappymatch/constructs/geofence.py b/mappymatch/constructs/geofence.py index 9992cf9..b049736 100644 --- a/mappymatch/constructs/geofence.py +++ b/mappymatch/constructs/geofence.py @@ -83,9 +83,7 @@ def from_trace( polygon = trace_line_string.buffer(padding, buffer_res) if trace.crs != crs: - project = Transformer.from_crs( - trace.crs, crs, always_xy=True - ).transform + project = Transformer.from_crs(trace.crs, crs, always_xy=True).transform polygon = transform(project, polygon) return Geofence(crs=crs, geometry=polygon) diff --git a/mappymatch/constructs/trace.py b/mappymatch/constructs/trace.py index e059114..a09d30f 100644 --- a/mappymatch/constructs/trace.py +++ b/mappymatch/constructs/trace.py @@ -42,9 +42,7 @@ def __getitem__(self, i) -> Trace: def __add__(self, other: Trace) -> Trace: if self.crs != other.crs: - raise TypeError( - "cannot add two traces together with different crs" - ) + raise TypeError("cannot add two traces together with different crs") new_frame = pd.concat([self._frame, other._frame]) return Trace(new_frame) @@ -131,9 +129,7 @@ def from_dataframe( The trace built from the pandas dataframe """ frame = GeoDataFrame( - geometry=points_from_xy( - dataframe[lon_column], dataframe[lat_column] - ), + geometry=points_from_xy(dataframe[lon_column], dataframe[lat_column]), index=dataframe.index, crs=LATLON_CRS, ) diff --git a/mappymatch/maps/igraph/igraph_map.py b/mappymatch/maps/igraph/igraph_map.py index 1e5f0ea..f2c9bed 100644 --- a/mappymatch/maps/igraph/igraph_map.py +++ b/mappymatch/maps/igraph/igraph_map.py @@ -299,9 +299,7 @@ def to_file(self, outfile: Union[str, Path]): self.g.write_pickle(str(outfile)) - def _nearest_edge_index( - self, coord: Coordinate, buffer: float = 10.0 - ) -> int: + def _nearest_edge_index(self, coord: Coordinate, buffer: float = 10.0) -> int: """ An internal method to find the nearest edge to a coordinate @@ -368,14 +366,10 @@ def shortest_path( weight = self._time_weight if callable(weight): - raise NotImplementedError( - "IGraphMap does not support custom weights" - ) + raise NotImplementedError("IGraphMap does not support custom weights") if weight not in self.g.es.attributes(): - raise ValueError( - f"weight {weight} is not a valid attribute of the graph" - ) + raise ValueError(f"weight {weight} is not a valid attribute of the graph") if origin.crs != self.crs: raise ValueError( diff --git a/mappymatch/maps/nx/nx_map.py b/mappymatch/maps/nx/nx_map.py index 20b8dde..6a451ab 100644 --- a/mappymatch/maps/nx/nx_map.py +++ b/mappymatch/maps/nx/nx_map.py @@ -59,9 +59,7 @@ def __init__(self, graph: nx.MultiDiGraph): self.crs = crs - dist_weight = graph.graph.get( - "distance_weight", DEFAULT_DISTANCE_WEIGHT - ) + dist_weight = graph.graph.get("distance_weight", DEFAULT_DISTANCE_WEIGHT) time_weight = graph.graph.get("time_weight", DEFAULT_TIME_WEIGHT) geom_key = graph.graph.get("geometry_key", DEFAULT_GEOMETRY_KEY) metadata_key = graph.graph.get("metadata_key", DEFAULT_METADATA_KEY) @@ -181,8 +179,7 @@ def set_road_attributes(self, attributes: Dict[RoadId, Dict[str, Any]]): @property def roads(self) -> List[Road]: roads = [ - self._build_road(RoadId(u, v, k)) - for u, v, k in self.g.edges(keys=True) + self._build_road(RoadId(u, v, k)) for u, v, k in self.g.edges(keys=True) ] return roads @@ -316,11 +313,7 @@ def nearest_road(self, coord: Coordinate, buffer: float = 10.0) -> Road: nearest_candidates = list( map( lambda c: c.object, - ( - self.rtree.nearest( - coord.geom.buffer(buffer).bounds, 1, objects=True - ) - ), + (self.rtree.nearest(coord.geom.buffer(buffer).bounds, 1, objects=True)), ) ) diff --git a/mappymatch/maps/nx/readers/osm_readers.py b/mappymatch/maps/nx/readers/osm_readers.py index ebb626d..11311a9 100644 --- a/mappymatch/maps/nx/readers/osm_readers.py +++ b/mappymatch/maps/nx/readers/osm_readers.py @@ -8,7 +8,7 @@ from shapely.geometry import LineString from mappymatch.constructs.geofence import Geofence -from mappymatch.utils.crs import LATLON_CRS, XY_CRS +from mappymatch.utils.crs import XY_CRS from mappymatch.utils.exceptions import MapException log.basicConfig(level=log.INFO) @@ -52,9 +52,7 @@ def nx_graph_from_osmnx( try: import osmnx as ox except ImportError: - raise MapException( - "osmnx is not installed but is required for this map type" - ) + raise MapException("osmnx is not installed but is required for this map type") ox.settings.log_console = False raw_graph = ox.graph_from_polygon( @@ -84,17 +82,12 @@ def parse_osmnx_graph( try: import osmnx as ox except ImportError: - raise MapException( - "osmnx is not installed but is required for this map type" - ) + raise MapException("osmnx is not installed but is required for this map type") ox.settings.log_console = False g = graph if xy: - g = ox.project_graph(g, XY_CRS) - crs = XY_CRS - else: - crs = LATLON_CRS + g = ox.project_graph(g, to_crs=XY_CRS) g = ox.add_edge_speeds(g) g = ox.add_edge_travel_times(g) @@ -117,23 +110,23 @@ def parse_osmnx_graph( no_geom = 0 for u, v, d in g.edges(data=True): if "geometry" not in d: + if no_geom < 10: + print(d) # we'll build a pseudo-geometry using the x, y data from the nodes unode = g.nodes[u] vnode = g.nodes[v] - line = LineString( - [(unode["x"], unode["y"]), (vnode["x"], vnode["y"])] - ) + line = LineString([(unode["x"], unode["y"]), (vnode["x"], vnode["y"])]) d["geometry"] = line no_geom += 1 - if no_geom: + if no_geom > 0: + total_links = len(g.edges) print( - f"Warning: found {no_geom} links with no geometry; creating geometries from the node lat/lon" + f"Warning: found {no_geom} of {total_links} links with no geometry; " + "creating link geometries from the node endpoints" ) g = compress(g) - g.graph["crs"] = crs - # TODO: these should all be sourced from the same location g.graph["distance_weight"] = "kilometers" g.graph["time_weight"] = "travel_time" @@ -143,7 +136,7 @@ def parse_osmnx_graph( return g -def compress(g) -> nx.MultiDiGraph: +def compress(g: nx.MultiDiGraph) -> nx.MultiDiGraph: """ a hacky way to delete unnecessary data on the networkx graph @@ -168,6 +161,7 @@ def compress(g) -> nx.MultiDiGraph: "junction", "bridge", "tunnel", + "reversed", "y", "x", ] diff --git a/mappymatch/matchers/lcss/constructs.py b/mappymatch/matchers/lcss/constructs.py index aef1c49..e07bea1 100644 --- a/mappymatch/matchers/lcss/constructs.py +++ b/mappymatch/matchers/lcss/constructs.py @@ -204,9 +204,7 @@ def compute_cutting_points( p1 = np.argmax( [coord_to_coord_dist(start, c) for c in self.trace.coords] ) - p2 = np.argmax( - [coord_to_coord_dist(end, c) for c in self.trace.coords] - ) + p2 = np.argmax([coord_to_coord_dist(end, c) for c in self.trace.coords]) assert not isinstance(p1, ndarray) assert not isinstance(p2, ndarray) # To do - np.argmax returns array of indices where the highest value is found. diff --git a/mappymatch/matchers/lcss/lcss.py b/mappymatch/matchers/lcss/lcss.py index 24cc0b3..1310778 100644 --- a/mappymatch/matchers/lcss/lcss.py +++ b/mappymatch/matchers/lcss/lcss.py @@ -95,9 +95,7 @@ def _join_segment(a: TrajectorySegment, b: TrajectorySegment): rc = self.random_cuts dt = self.distance_threshold initial_segment = ( - TrajectorySegment( - trace=sub_trace, path=new_path(road_map, sub_trace) - ) + TrajectorySegment(trace=sub_trace, path=new_path(road_map, sub_trace)) .score_and_match(de, dt) .compute_cutting_points(de, ct, rc) ) @@ -109,16 +107,14 @@ def _join_segment(a: TrajectorySegment, b: TrajectorySegment): while n < 10: next_scheme = [] for segment in scheme: - scored_segment = segment.score_and_match( - de, dt - ).compute_cutting_points(de, ct, rc) + scored_segment = segment.score_and_match(de, dt).compute_cutting_points( + de, ct, rc + ) if scored_segment.score >= self.similarity_cutoff: next_scheme.append(scored_segment) else: # split and check the score - new_split = split_trajectory_segment( - road_map, scored_segment - ) + new_split = split_trajectory_segment(road_map, scored_segment) joined_segment = ft.reduce( _join_segment, new_split ).score_and_match(de, dt) @@ -133,9 +129,7 @@ def _join_segment(a: TrajectorySegment, b: TrajectorySegment): scheme = next_scheme - joined_segment = ft.reduce(_join_segment, scheme).score_and_match( - de, dt - ) + joined_segment = ft.reduce(_join_segment, scheme).score_and_match(de, dt) matches = joined_segment.matches diff --git a/mappymatch/matchers/lcss/ops.py b/mappymatch/matchers/lcss/ops.py index 82b545a..bd2af7b 100644 --- a/mappymatch/matchers/lcss/ops.py +++ b/mappymatch/matchers/lcss/ops.py @@ -105,9 +105,7 @@ def _short_segment(ts: TrajectorySegment): # can't split return [trajectory_segment] else: - segments = [ - TrajectorySegment(t, p) for t, p in zip(new_traces, new_paths) - ] + segments = [TrajectorySegment(t, p) for t, p in zip(new_traces, new_paths)] merged_segments = merge(segments, _short_segment) diff --git a/mappymatch/matchers/lcss/utils.py b/mappymatch/matchers/lcss/utils.py index 18488a4..5e7b3d8 100644 --- a/mappymatch/matchers/lcss/utils.py +++ b/mappymatch/matchers/lcss/utils.py @@ -125,8 +125,6 @@ def compress(cutting_points: List) -> Generator: a generator of compressed cutting points """ sorted_cuts = sorted(cutting_points, key=lambda c: c.trace_index) - for k, g in groupby( - enumerate(sorted_cuts), lambda x: x[0] - x[1].trace_index - ): + for k, g in groupby(enumerate(sorted_cuts), lambda x: x[0] - x[1].trace_index): all_cps = list(map(itemgetter(1), g)) yield all_cps[int(len(all_cps) / 2)] diff --git a/mappymatch/matchers/osrm.py b/mappymatch/matchers/osrm.py index 5c2d24c..863863f 100644 --- a/mappymatch/matchers/osrm.py +++ b/mappymatch/matchers/osrm.py @@ -20,18 +20,9 @@ def parse_osrm_json(j: dict, trace: Trace) -> list[Match]: """ parse the json response from the osrm match service - we're looking for the osm node ids which should be in the form: - - { 'matchings': - [{ 'legs': - [{ 'annotations': - {'nodes': [node_id, node_id] } - }] - }] - } - :param j: the json object - :return: + + :return: a list of matches """ matchings = j.get("matchings") if not matchings: @@ -57,9 +48,7 @@ def _parse_leg(d: dict, i: int) -> Match: road_id=road_id, geom=None, ) - match = Match( - road=road, coordinate=trace.coords[i], distance=float("infinity") - ) + match = Match(road=road, coordinate=trace.coords[i], distance=float("infinity")) return match return [_parse_leg(d, i) for i, d in enumerate(legs)] @@ -97,9 +86,7 @@ def match_trace(self, trace: Trace) -> MatchResult: # remove the trailing semicolon coordinate_str = coordinate_str[:-1] - osrm_request = ( - self.osrm_api_base + coordinate_str + "?annotations=true" - ) + osrm_request = self.osrm_api_base + coordinate_str + "?annotations=true" print(osrm_request) r = requests.get(osrm_request) diff --git a/mappymatch/utils/plot.py b/mappymatch/utils/plot.py index b77c732..80e81a1 100644 --- a/mappymatch/utils/plot.py +++ b/mappymatch/utils/plot.py @@ -28,9 +28,7 @@ def plot_geofence(geofence: Geofence, m: Optional[folium.Map] = None): The updated folium map with the geofence. """ if not geofence.crs == LATLON_CRS: - raise NotImplementedError( - "can currently only plot a geofence with lat lon crs" - ) + raise NotImplementedError("can currently only plot a geofence with lat lon crs") if not m: c = geofence.geometry.centroid.coords[0] @@ -79,9 +77,7 @@ def plot_trace( ).add_to(m) if line_color is not None: - folium.PolyLine( - [(p.y, p.x) for p in trace.coords], color=line_color - ).add_to(m) + folium.PolyLine([(p.y, p.x) for p in trace.coords], color=line_color).add_to(m) return m @@ -124,9 +120,9 @@ def _match_to_coord(m): coord_df = pd.DataFrame([_match_to_coord(m) for m in matches if m.road]) - coord_gdf = gpd.GeoDataFrame( - coord_df, geometry=coord_df.geom, crs=crs - ).drop(columns=["geom"]) + coord_gdf = gpd.GeoDataFrame(coord_df, geometry=coord_df.geom, crs=crs).drop( + columns=["geom"] + ) coord_gdf = coord_gdf.to_crs(LATLON_CRS) mid_i = int(len(coord_gdf) / 2) @@ -166,9 +162,7 @@ def plot_map(tmap: NxMap, m: Optional[folium.Map] = None): # TODO make this generic to all map types, not just NxMap roads = list(tmap.g.edges(data=True)) road_df = pd.DataFrame([r[2] for r in roads]) - gdf = gpd.GeoDataFrame( - road_df, geometry=road_df[tmap._geom_key], crs=tmap.crs - ) + gdf = gpd.GeoDataFrame(road_df, geometry=road_df[tmap._geom_key], crs=tmap.crs) if gdf.crs != LATLON_CRS: gdf = gdf.to_crs(LATLON_CRS) diff --git a/mappymatch/utils/process_trace.py b/mappymatch/utils/process_trace.py index 5a2d9fb..f24fcc0 100644 --- a/mappymatch/utils/process_trace.py +++ b/mappymatch/utils/process_trace.py @@ -17,9 +17,7 @@ def split_large_trace(trace: Trace, ideal_size: int) -> list[Trace]: if len(trace) <= ideal_size: return [trace] else: - ts = [ - trace[i : i + ideal_size] for i in range(0, len(trace), ideal_size) - ] + ts = [trace[i : i + ideal_size] for i in range(0, len(trace), ideal_size)] # check to make sure the last trace isn't too small if len(ts[-1]) <= 10: @@ -29,9 +27,7 @@ def split_large_trace(trace: Trace, ideal_size: int) -> list[Trace]: return ts -def remove_bad_start_from_trace( - trace: Trace, distance_threshold: float -) -> Trace: +def remove_bad_start_from_trace(trace: Trace, distance_threshold: float) -> Trace: """ Remove points at the beginning of a trace if it is a gap is too big. diff --git a/mypy.ini b/mypy.ini deleted file mode 100644 index a5cf2bd..0000000 --- a/mypy.ini +++ /dev/null @@ -1,8 +0,0 @@ -[mypy] -ignore_missing_imports = True -exclude = (?x)( - docs/ - | build/ - | dist/ - ) -files = mappymatch/, tests/ \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 5d6fdcc..7b8ec93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,33 +1,36 @@ [build-system] -requires = ["setuptools>=63.0.0", "wheel"] -build-backend = "setuptools.build_meta" +requires = ["hatchling"] +build-backend = "hatchling.build" [project] name = "mappymatch" -version = "0.5.0" -description = "Package for mapmatching." +dynamic = ["version"] +description = "Pure python package for map-matching." readme = "README.md" authors = [{ name = "National Renewable Energy Laboratory" }] license = { text = "BSD 3-Clause License Copyright (c) 2022, Alliance for Sustainable Energy, LLC" } classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: Other/Proprietary License", "Operating System :: OS Independent", "Programming Language :: Python", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering", ] keywords = ["GPS", "map", "match"] dependencies = [ - "geopandas", - "shapely", + "geopandas>=1", + "osmnx>=2", + "shapely>=2", "rtree", "pyproj", "pandas", "numpy", "matplotlib", - "osmnx", "networkx", "igraph", "folium", @@ -38,59 +41,63 @@ requires-python = ">=3.9" [project.optional-dependencies] # Used to run CI. -tests = ["black", "ruff", "mypy>=0.981", "types-requests", "pytest"] +tests = ["ruff", "mypy>=1", "types-requests", "pytest"] # Used to build the docs. -docs = ["sphinx>=8.1", "sphinx_rtd_theme>=3.0", "sphinxemoji>=0.3.1"] +docs = [ + "jupyter-book>=1", + "sphinx-book-theme", + "sphinx-autodoc-typehints", + "sphinxcontrib-autoyaml", + "sphinxcontrib.mermaid", +] # Tests + docs + other. dev = [ + "hatch", "mappymatch[tests]", "mappymatch[docs]", "coverage", - "interrogate", "pre-commit", - "build", - "twine", - "pip-tools", ] [project.urls] Homepage = "https://github.com/NREL/mappymatch" -[tool.setuptools.packages.find] -include = ["mappymatch*"] # package names should match these glob patterns (["*"] by default) +[tool.hatch.version] +path = "mappymatch/__about__.py" -[tool.black] -exclude = ''' -/( - \.git - | \.hg - | \.mypy_cache - | \.tox - | \.venv - | _build - | buck-out - | build - | dist - | env - | venv -)/ -''' -include = '\.pyi?$' -line-length = 79 -target-version = ['py39'] +[tool.hatch.build.targets.sdist] +exclude = ["tests/", "docs/", "examples/"] [tool.ruff] -line-length = 79 -ignore = ["E501"] -select = ["F", "E", "W", "I001"] +exclude = [ + "build/*", + "dist/*", +] + +# Same as Black. +line-length = 88 +indent-width = 4 + +# Assume Python 3.9 +target-version = "py39" -[tool.interrogate] -fail-under = 10 -exclude = ["tests", "docs", "examples", "resources"] -paths = ["mappymatch"] -# Ignore the docs configuration file. -ignore-regex = ["conf.py"] +[tool.ruff.lint] +# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. +# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or +# McCabe complexity (`C901`) by default. +select = ["E4", "E7", "E9", "F"] +ignore = [] +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] + +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[tool.mypy] +ignore_missing_imports = true +exclude = ["docs/", "build/", "dist/", "py-notebooks/"] [tool.coverage.run] # Ensures coverage for all if, elif, else branches. @@ -102,45 +109,3 @@ precision = 1 fail_under = 50.0 skip_covered = false skip_empty = true - -[tool.tbump] -# Uncomment this if your project is hosted on GitHub: -# github_url = "https://github.com///" - -[tool.tbump.version] -# Make sure this matches current_version before using tbump -current = "0.4.1" -# Example of a semver regexp. -regex = ''' - (?P\d+) - \. - (?P\d+) - \. - (?P\d+) - ''' - -[tool.tbump.git] -message_template = "Bump to {new_version}" -tag_template = "v{new_version}" - -# For each file to patch, add a [[tool.tbump.file]] config -# section containing the path of the file, relative to the -# tbump.toml location. -[[tool.tbump.file]] -src = "./pyproject.toml" -search = 'version = "{current_version}"' -[[tool.tbump.file]] -src = "./docs/source/conf.py" -search = 'full_version = "{current_version}"' - -# You can specify a list of commands to -# run after the files have been patched -# and before the git commit is made -# [[tool.tbump.before_commit]] - - -# Or run some commands after the git tag and the branch -# have been pushed: -# [[tool.tbump.after_push]] -# name = "publish" -# cmd = "./publish.sh" diff --git a/setup.py b/setup.py deleted file mode 100644 index 6068493..0000000 --- a/setup.py +++ /dev/null @@ -1,3 +0,0 @@ -from setuptools import setup - -setup() diff --git a/tests/test_assets/osmnx_drive_graph.graphml b/tests/test_assets/osmnx_drive_graph.graphml index cdea87d..ed35e55 100644 --- a/tests/test_assets/osmnx_drive_graph.graphml +++ b/tests/test_assets/osmnx_drive_graph.graphml @@ -1,15 +1,15 @@ - + - - + + - + - + @@ -115,8 +115,8 @@ 4 - 39.7532613 - -104.9781433 + 39.7532651 + -104.9781432 stop 4 @@ -177,8 +177,8 @@ 4 - 39.7461813 - -104.9873868 + 39.7461478 + -104.9873867 traffic_signals 4 @@ -393,8 +393,8 @@ 4 - 39.7565431 - -104.9827327 + 39.7565423 + -104.9827338 4 @@ -477,8 +477,8 @@ 4 - 39.7538763 - -104.9792549 + 39.7538716 + -104.979261 4 @@ -571,12 +571,6 @@ stop 4 - - 39.7572079 - -104.9835996 - mini_roundabout - 4 - 39.7581417 -104.9823944 @@ -682,13 +676,8 @@ traffic_signals 4 - - 39.7546246 - -104.9757573 - 4 - - 39.7546245 + 39.7546284 -104.9745694 4 @@ -748,8 +737,8 @@ 4 - 39.7662811 - -104.9736357 + 39.7662812 + -104.9736358 4 @@ -833,8 +822,8 @@ 4 - 39.7545346 - -104.9801134 + 39.7545309 + -104.9801183 4 @@ -1107,7 +1096,7 @@ 39.7613614 -104.9817256 - 4 + 3 39.7559857 @@ -1183,8 +1172,8 @@ 4 - 39.753192 - -104.9783626 + 39.7531892 + -104.9783737 3 @@ -1242,7 +1231,7 @@ 39.7622963 -104.9805188 - 4 + 3 39.7660229 @@ -1394,8 +1383,8 @@ 3 - 39.7558676 - -104.9818517 + 39.7558658 + -104.9818541 4 @@ -1404,8 +1393,8 @@ 3 - 39.7551995 - -104.9809805 + 39.7551967 + -104.9809841 4 @@ -1424,8 +1413,8 @@ 4 - 39.7546245 - -104.9748264 + 39.7546301 + -104.9748263 3 @@ -1483,8 +1472,8 @@ 3 - 39.7546247 - -104.9769609 + 39.7546445 + -104.9769607 4 @@ -1537,11 +1526,6 @@ stop 4 - - 39.7546201 - -104.9777916 - 3 - 39.7475221 -104.9804969 @@ -1583,11 +1567,6 @@ -104.9781464 3 - - 39.7590383 - -104.9742995 - 3 - 39.764933 -104.9736515 @@ -1603,11 +1582,6 @@ -104.9870204 3 - - 39.7594434 - -104.9737378 - 3 - 39.7400087 -104.9861301 @@ -1817,6 +1791,12 @@ -104.9781588 3 + + 39.7498571 + -104.9983166 + traffic_signals + 3 + 39.7419263 -104.9877167 @@ -1928,10 +1908,11 @@ -104.9873959 3 - - 39.7545962 - -104.978144 - 3 + + 39.7546364 + -104.9757572 + stop + 4 39.754664 @@ -1953,10121 +1934,10596 @@ -104.9806247 2 + + 39.7572523 + -104.9835527 + 3 + + + 39.7571704 + -104.9836596 + 3 + + + 39.7572559 + -104.9836629 + 3 + + + 39.7571746 + -104.9835561 + 3 + + + 39.7625345 + -104.9735558 + 3 + + + 39.7507166 + -104.9970424 + 1 + + + 39.7454325 + -104.9901293 + 4 + + + 39.744743 + -104.9892719 + 4 + + + 39.7434603 + -104.9876366 + 1 + + + 39.7486833 + -104.9875029 + 1 + + + 39.7454295 + -104.9875126 + 1 + + + 39.7460993 + -104.9875117 + 4 + + + 39.7470713 + -104.9875039 + 4 + + + 39.7472822 + -104.9875034 + 4 + + + 39.7473579 + -104.9875032 + 4 + + + 39.7449285 + -104.9862621 + 1 + + + 39.7449697 + -104.9873208 + 4 + + + 39.7484089 + -104.9914967 + 4 + + + 39.751762 + -104.9958557 + 4 + + + 39.7450778 + -104.9873991 + 4 + + + 39.7457192 + -104.9880105 + 4 + + + 39.7464031 + -104.9888781 + 4 + + + 39.7470741 + -104.98977 + 4 + + + 39.747727 + -104.9906055 + 4 + + + 39.749089 + -104.9923672 + 4 + + + 39.7497477 + -104.9932209 + 4 + + + 39.7504217 + -104.9940972 + 4 + + + 39.7510897 + -104.9949762 + 4 + 100397027 - False + primary 7 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 43.128 + 43.12810184766481 LINESTRING (-104.9848634 39.7400593, -104.984993 39.7400593, -104.9853678 39.7400594) [600545932, 600545925] - False + primary 6 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 108.759 + 108.75868213589499 LINESTRING (-104.9848634 39.7400593, -104.984731 39.7400603, -104.9842349 39.7400595, -104.9841573 39.740059, -104.98374 39.7400541, -104.9835915 39.7400524) 628588223 + residential 2 + 25 mph Sherman Street - residential - 25 mph - False + False False - 179.85199999999998 + 179.8514051266841 LINESTRING (-104.9848634 39.7400593, -104.9848622 39.7401901, -104.9848585 39.7406103, -104.9848562 39.7408742, -104.984849 39.7415899, -104.9848491 39.7416767) 117298378 - False + residential Curtis Street - residential + False True - 147.03 + 147.02986040884548 LINESTRING (-104.9742832 39.7630902, -104.9743805 39.7630154, -104.9750396 39.7625087, -104.9753854 39.7622431, -104.9754166 39.7622192, -104.9754995 39.7621552) - 726861732 - False + 1297819248 + residential 33rd Street - residential + False False - 104.626 + 104.625723985789 LINESTRING (-104.9742832 39.7630902, -104.9743785 39.763163, -104.9743866 39.7631691, -104.9747245 39.7634272, -104.975062 39.763685, -104.9750755 39.7636953, -104.9751515 39.7637534) + + 1299385804 + residential + 33rd Street + False + True + 87.6592976436212 + LINESTRING (-104.9742832 39.7630902, -104.9741988 39.7630257, -104.9741892 39.7630183, -104.9740539 39.7629127, -104.9738541 39.7627624, -104.973564 39.7625408, -104.9735558 39.7625345) + [700343605, 389063559] - False + tertiary 2 Arapahoe Street - tertiary + False False - 144.82700000000003 + 144.82652834221764 LINESTRING (-104.9751515 39.7637534, -104.9750799 39.76381, -104.9746546 39.7641437, -104.9745586 39.7642192, -104.9740416 39.764626, -104.9739671 39.7646848) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False True - 146.935 + 146.93557200509608 LINESTRING (-104.9751515 39.7637534, -104.9752396 39.7636852, -104.9759039 39.7631705, -104.9762795 39.7628795, -104.9763622 39.7628153) - 726861732 - False + 1297819248 + residential 33rd Street - residential + False False - 106.162 + 106.16152171451999 LINESTRING (-104.9751515 39.7637534, -104.9752242 39.7638089, -104.9752376 39.7638191, -104.9755876 39.7640864, -104.9759715 39.7643797, -104.9760326 39.7644263) - 726861732 - False + 1297819248 + residential 33rd Street - residential + False True - 104.62599999999999 + 104.62572398578898 LINESTRING (-104.9751515 39.7637534, -104.9750755 39.7636953, -104.975062 39.763685, -104.9747245 39.7634272, -104.9743866 39.7631691, -104.9743785 39.763163, -104.9742832 39.7630902) - 409342461 - False + 1201623835 + tertiary 2 Lawrence Street - residential + False False - 145.14300000000003 + 145.1438646289247 LINESTRING (-104.9760326 39.7644263, -104.9759711 39.7644739, -104.975959 39.7644833, -104.9756019 39.7647596, -104.9754311 39.7648918, -104.9749069 39.7652974, -104.9748359 39.7653524) - - 409342461 - False - 2 - Lawrence Street - residential - True - 146.764 - LINESTRING (-104.9760326 39.7644263, -104.9761123 39.7643646, -104.9761317 39.7643496, -104.9771642 39.7635506, -104.9772427 39.7634899) - - 726861732 - False + 1201623836 + residential 33rd Street - residential + False False - 105.377 - LINESTRING (-104.9760326 39.7644263, -104.9761167 39.7644906, -104.9764808 39.7647687, -104.9767369 39.7649643, -104.9768156 39.7650244, -104.9768279 39.7650338, -104.9769071 39.7650943) + 105.37682622155098 + LINESTRING (-104.9760326 39.7644263, -104.9761084 39.7644845, -104.9764808 39.7647687, -104.9767369 39.7649643, -104.9768156 39.7650244, -104.9768279 39.7650338, -104.9769071 39.7650943) - 726861732 - False + 1297819248 + residential 33rd Street - residential + False True - 106.16199999999999 + 106.16152171451998 LINESTRING (-104.9760326 39.7644263, -104.9759715 39.7643797, -104.9755876 39.7640864, -104.9752376 39.7638191, -104.9752242 39.7638089, -104.9751515 39.7637534) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 146.632 + 146.6317960182629 LINESTRING (-104.9769071 39.7650943, -104.9769899 39.7650301, -104.9777094 39.7644728, -104.9780219 39.7642307, -104.9781154 39.7641582) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 145.46 - LINESTRING (-104.9769071 39.7650943, -104.9768229 39.7651595, -104.9765292 39.7653871, -104.9762546 39.7655998, -104.9762378 39.7656128, -104.9760121 39.7657876, -104.975795 39.7659558, -104.9757084 39.7660229) + 145.46087650559642 + LINESTRING (-104.9769071 39.7650943, -104.9768229 39.7651595, -104.9762546 39.7655998, -104.9762378 39.7656128, -104.9760121 39.7657876, -104.975795 39.7659558, -104.9757084 39.7660229) - 726861732 - False + 1201623836 + residential 33rd Street - residential + False False - 104.372 + 104.37147003077267 LINESTRING (-104.9769071 39.7650943, -104.9769979 39.7651637, -104.977006 39.7651698, -104.9773484 39.7654313, -104.9776843 39.7656879, -104.9777027 39.765702, -104.9777733 39.7657559) - 726861732 - False + 1201623836 + residential 33rd Street - residential + False True - 105.377 - LINESTRING (-104.9769071 39.7650943, -104.9768279 39.7650338, -104.9768156 39.7650244, -104.9767369 39.7649643, -104.9764808 39.7647687, -104.9761167 39.7644906, -104.9760326 39.7644263) + 105.37682622155097 + LINESTRING (-104.9769071 39.7650943, -104.9768279 39.7650338, -104.9768156 39.7650244, -104.9767369 39.7649643, -104.9764808 39.7647687, -104.9761084 39.7644845, -104.9760326 39.7644263) 325121351 - False + residential 33rd Street - residential + False True - 105.313 + 105.31286036858472 LINESTRING (-104.9777733 39.7657559, -104.9778596 39.7658215, -104.9778733 39.7658318, -104.9782276 39.7661011, -104.9785501 39.7663461, -104.9785668 39.7663588, -104.9786496 39.7664217) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False True - 146.453 + 146.4530173931266 LINESTRING (-104.9777733 39.7657559, -104.9778563 39.7656918, -104.9783202 39.7653331, -104.9789019 39.7648833, -104.978981 39.7648216) - - 726861732 - False - 33rd Street - residential - True - 104.37199999999999 - LINESTRING (-104.9777733 39.7657559, -104.9777027 39.765702, -104.9776843 39.7656879, -104.9773484 39.7654313, -104.977006 39.7651698, -104.9769979 39.7651637, -104.9769071 39.7650943) - 959622561 + tertiary 2 Walnut Street - tertiary - False + False False - 145.396 + 145.3957837950451 LINESTRING (-104.9777733 39.7657559, -104.9776914 39.7658183, -104.9772389 39.7661699, -104.9766383 39.7666366, -104.9765766 39.7666852) + + 1201623836 + residential + 33rd Street + False + True + 104.37147003077267 + LINESTRING (-104.9777733 39.7657559, -104.9777027 39.765702, -104.9776843 39.7656879, -104.9773484 39.7654313, -104.977006 39.7651698, -104.9769979 39.7651637, -104.9769071 39.7650943) + [628398047, 769415491, 132915796, 769415492] - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 108.21799999999999 + 108.21742512300385 LINESTRING (-104.9873865 39.7416884, -104.987384 39.7416399, -104.987387 39.7415601, -104.9873878 39.7414956, -104.9873892 39.7414151, -104.9873885 39.7413755, -104.9873893 39.7412999, -104.9873915 39.7410883, -104.9873935 39.7408903, -104.987393 39.7408768, -104.9873959 39.7407153) 330615235 - True + tertiary 2 East 16th Avenue - tertiary + True False - 42.254999999999995 + 42.25498706640768 LINESTRING (-104.9873865 39.7416884, -104.9872571 39.7416882, -104.9868923 39.7416881) 16982257 + tertiary 2 East 16th Avenue - tertiary - False + False False - 11.201 + 11.201083015177042 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False False - 107.751 + 107.75084552771888 LINESTRING (-104.9861093 39.7416811, -104.9859905 39.7416809, -104.985493 39.7416803, -104.9851204 39.7416782, -104.9849943 39.7416775, -104.9848491 39.7416767) [628398051, 628398052, 944148645] - True + primary 4 + 30 mph Lincoln Street - primary - 30 mph + True False - 176.779 + 176.77795955531096 LINESTRING (-104.9861093 39.7416811, -104.9861093 39.7417787, -104.9861093 39.7422836, -104.9861093 39.7423419, -104.9861093 39.742791, -104.9861093 39.7429218, -104.9861093 39.7431858, -104.9861095 39.7432709) 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False False - 108.27199999999999 + 108.27108908672331 LINESTRING (-104.9848491 39.7416767, -104.9847425 39.7416765, -104.9842323 39.7416758, -104.9839884 39.7416754, -104.9837393 39.741675, -104.9835828 39.7416748) 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False True - 107.75099999999999 + 107.75084552771888 LINESTRING (-104.9848491 39.7416767, -104.9849943 39.7416775, -104.9851204 39.7416782, -104.985493 39.7416803, -104.9859905 39.7416809, -104.9861093 39.7416811) 628588223 + residential 2 + 25 mph Sherman Street - residential - 25 mph - False + False False - 176.95700000000002 + 176.9559056309194 LINESTRING (-104.9848491 39.7416767, -104.984849 39.7417767, -104.9848479 39.7428418, -104.9848476 39.7431795, -104.9848476 39.7432681) 628588223 + residential 2 + 25 mph Sherman Street - residential - 25 mph - False + False True - 179.85199999999998 + 179.8514051266841 LINESTRING (-104.9848491 39.7416767, -104.984849 39.7415899, -104.9848562 39.7408742, -104.9848585 39.7406103, -104.9848622 39.7401901, -104.9848634 39.7400593) 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False False - 107.262 + 107.2606786595099 LINESTRING (-104.9835828 39.7416748, -104.9834597 39.7416821, -104.982967 39.7416797, -104.9827877 39.7416803, -104.9824533 39.7416815, -104.9823287 39.7416807) 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False True - 108.27199999999999 + 108.27108908672331 LINESTRING (-104.9835828 39.7416748, -104.9837393 39.741675, -104.9839884 39.7416754, -104.9842323 39.7416758, -104.9847425 39.7416765, -104.9848491 39.7416767) [628634627, 645821550] - True + secondary ['3', '4'] + 30 mph Grant Street - secondary - 30 mph + True False - 180.405 - LINESTRING (-104.9835828 39.7416748, -104.983583 39.7415868, -104.983586 39.7410527, -104.9835877 39.740734, -104.9835887 39.7405386, -104.9835904 39.7403222, -104.9835916 39.7401612, -104.9835915 39.7400524) + 180.4045259762167 + LINESTRING (-104.9835828 39.7416748, -104.983583 39.7415868, -104.983586 39.7410527, -104.9835877 39.740734, -104.9835887 39.7405386, -104.9835904 39.7403222, -104.9835911 39.740158, -104.9835915 39.7400524) 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False False - 104.48599999999999 + 104.4861840108125 LINESTRING (-104.9823287 39.7416807, -104.9822376 39.7416818, -104.9817217 39.7416787, -104.981221 39.7416772, -104.9811067 39.7416764) 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False True - 107.262 + 107.26067865950992 LINESTRING (-104.9823287 39.7416807, -104.9824533 39.7416815, -104.9827877 39.7416803, -104.982967 39.7416797, -104.9834597 39.7416821, -104.9835828 39.7416748) 334259980 - True + secondary 2 Logan Street - secondary + True False - 175.86800000000002 + 175.86724811673344 LINESTRING (-104.9823287 39.7416807, -104.9823303 39.7417767, -104.9823292 39.7420979, -104.9823301 39.7426785, -104.9823307 39.743024, -104.9823309 39.7431693, -104.9823311 39.7432623) 124661412 - False + tertiary 2 East 16th Avenue - tertiary + False True - 104.486 + 104.4861840108125 LINESTRING (-104.9811067 39.7416764, -104.981221 39.7416772, -104.9817217 39.7416787, -104.9822376 39.7416818, -104.9823287 39.7416807) 596723424 - False + residential 2 Pennsylvania Street - residential + False True - 176.03399999999996 + 176.03360422673674 LINESTRING (-104.9811067 39.7416764, -104.9811057 39.7417669, -104.9811056 39.7417993, -104.9811035 39.7426478, -104.9811034 39.7426855, -104.9811032 39.7427805, -104.9811024 39.7430909, -104.9811023 39.7431373, -104.9811022 39.7431659, -104.981102 39.7432595) [812978772, 596451653] - False + residential 2 Pennsylvania Street - residential + False [False, True] - 183.78499999999997 + 183.78380421449887 LINESTRING (-104.9811067 39.7416764, -104.981106 39.7415789, -104.9811063 39.7415465, -104.9811071 39.7412335, -104.9811079 39.7409143, -104.9811082 39.7407681, -104.9811089 39.7404884, -104.9811094 39.7402955, -104.9811098 39.7401278, -104.9811101 39.7400236) 812978773 - False + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False False - 102.553 + 102.55330563855323 LINESTRING (-104.9811067 39.7416764, -104.981006 39.7416753, -104.980502 39.7416783, -104.980006 39.7416768, -104.9799073 39.7416767) 798188480 + residential 2 Pearl Street - residential - False + False False - 175.71499999999997 - LINESTRING (-104.9799073 39.7416767, -104.979908 39.7417692, -104.9799096 39.7417747, -104.9799081 39.742131, -104.9799076 39.7422566, -104.979907 39.7423933, -104.9799064 39.7425326, -104.9799054 39.7427856, -104.9799046 39.7429707, -104.9799039 39.7431324, -104.9799038 39.7431621, -104.9799034 39.7432568) + 175.71565885992902 + LINESTRING (-104.9799073 39.7416767, -104.979908 39.7417692, -104.9799096 39.7417747, -104.9799081 39.742131, -104.979907 39.7422566, -104.979907 39.7423933, -104.9799064 39.7425326, -104.9799054 39.7427856, -104.9799046 39.7429707, -104.9799039 39.7431324, -104.9799038 39.7431621, -104.9799034 39.7432568) 798188480 + residential 2 Pearl Street - residential - False + False True - 183.96399999999997 - LINESTRING (-104.9799073 39.7416767, -104.979908 39.7416018, -104.9799097 39.7415592, -104.9799084 39.7411407, -104.9799076 39.7408831, -104.9799066 39.74055, -104.979906 39.7403737, -104.9799053 39.7401271, -104.979905 39.7400223) + 183.9640672591956 + LINESTRING (-104.9799073 39.7416767, -104.979908 39.7416018, -104.9799097 39.7415592, -104.9799084 39.7411407, -104.9799076 39.7408831, -104.9799066 39.74055, -104.9799064 39.740505, -104.9799061 39.7404029, -104.979906 39.7403737, -104.9799053 39.7401271, -104.979905 39.7400223) 812978773 - False + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False False - 99.443 + 99.4439379932947 LINESTRING (-104.9799073 39.7416767, -104.97983 39.7416763, -104.9795293 39.7416774, -104.979339 39.7416755, -104.9788497 39.7416707, -104.9787443 39.7416712) 812978773 - False + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False True - 102.55300000000001 + 102.55330563855321 LINESTRING (-104.9799073 39.7416767, -104.980006 39.7416768, -104.980502 39.7416783, -104.981006 39.7416753, -104.9811067 39.7416764) [39471712, 628643775] - True + tertiary 2 Washington Street - tertiary + True False - 183.77299999999997 + 183.77339263918057 LINESTRING (-104.9787443 39.7416712, -104.9787443 39.7415774, -104.9787457 39.7413446, -104.9787471 39.7410688, -104.9787474 39.7410171, -104.9787498 39.7405263, -104.9787501 39.7404643, -104.9787512 39.7402274, -104.9787517 39.7401263, -104.9787514 39.7400185) 812978773 - False + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False False - 100.347 + 100.34748519536929 LINESTRING (-104.9787443 39.7416712, -104.9786683 39.741671, -104.9783237 39.7416736, -104.9782223 39.7416735, -104.977678 39.7416732, -104.9775707 39.7416745) 812978773 - False + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False True - 99.44299999999998 + 99.4439379932947 LINESTRING (-104.9787443 39.7416712, -104.9788497 39.7416707, -104.979339 39.7416755, -104.9795293 39.7416774, -104.97983 39.7416763, -104.9799073 39.7416767) 335726354 - True + tertiary 2 + 30 mph Clarkson Street - tertiary - 30 mph + True False - 175.34199999999998 + 175.3445525349742 LINESTRING (-104.9775707 39.7416745, -104.9775703 39.7417591, -104.9775689 39.7420706, -104.977568 39.7422795, -104.9775677 39.7423376, -104.9775672 39.7424625, -104.9775658 39.7427756, -104.9775655 39.7428337, -104.9775641 39.7431542, -104.9775637 39.7432514) - 812978773 - False + [1225455421, 812978773] + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False False - 120.11000000000001 + 120.10959733424653 LINESTRING (-104.9775707 39.7416745, -104.977463 39.7416736, -104.9768947 39.741671, -104.9763263 39.7416694, -104.976166 39.7416666) 812978773 - False + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False True - 100.34700000000001 + 100.34748519536929 LINESTRING (-104.9775707 39.7416745, -104.977678 39.7416732, -104.9782223 39.7416735, -104.9783237 39.7416736, -104.9786683 39.741671, -104.9787443 39.7416712) 16985355 - False + residential 2 Emerson Street - residential + False False - 175.87600000000003 + 175.8747712797826 LINESTRING (-104.976166 39.7416666, -104.9761693 39.7417627, -104.9761681 39.7417741, -104.9761716 39.7426872, -104.9761733 39.7431305, -104.9761734 39.7431461, -104.9761739 39.7432482) - - [16985355, 1173823085] - False - 2 - Emerson Street - residential - True - 183.53400000000002 - LINESTRING (-104.976166 39.7416666, -104.9761677 39.7415711, -104.9761677 39.7415473, -104.9761684 39.7407747, -104.9761684 39.7407534, -104.9761794 39.7401459, -104.9761794 39.7401174, -104.9761791 39.7400161) - - 812978773 - False + 1222111589 + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False False - 118.997 + 118.99677334385143 LINESTRING (-104.976166 39.7416666, -104.9760323 39.7416691, -104.975464 39.7416676, -104.9748977 39.7416668, -104.9747743 39.7416662) - - 812978773 - False + + [1225455420, 1173823085] + residential 2 - East 16th Avenue - tertiary - 25 mph + Emerson Street + False True - 120.11 - LINESTRING (-104.976166 39.7416666, -104.9763263 39.7416694, -104.9768947 39.741671, -104.977463 39.7416736, -104.9775707 39.7416745) + 183.53132832456168 + LINESTRING (-104.976166 39.7416666, -104.9761668 39.7415711, -104.976167 39.7415473, -104.9761737 39.7407747, -104.9761739 39.7407534, -104.9761792 39.7401459, -104.9761794 39.7401174, -104.9761791 39.7400161) - - 812978773 - False + + [812978773, 1225455421] + tertiary 2 + 25 mph East 16th Avenue - tertiary - 25 mph + False True - 118.99700000000001 - LINESTRING (-104.9747743 39.7416662, -104.9748977 39.7416668, -104.975464 39.7416676, -104.9760323 39.7416691, -104.976166 39.7416666) + 120.10959733424653 + LINESTRING (-104.976166 39.7416666, -104.9763263 39.7416694, -104.9768947 39.741671, -104.977463 39.7416736, -104.9775707 39.7416745) [1184891760, 600545922, 600545917] - True - ['3', '1', '2'] + tertiary + ['2', '3', '1'] + 30 mph Ogden Street - tertiary - 30 mph + True False - 182.93800000000002 + 182.93925660569752 LINESTRING (-104.9747743 39.7416662, -104.9747768 39.7415701, -104.9747818 39.7412118, -104.9747888 39.7407172, -104.974791 39.7405572, -104.9747943 39.7403223, -104.9747971 39.7401262, -104.9747986 39.7400211) + + 1222111589 + tertiary + 2 + 25 mph + East 16th Avenue + False + True + 118.99677334385143 + LINESTRING (-104.9747743 39.7416662, -104.9748977 39.7416668, -104.975464 39.7416676, -104.9760323 39.7416691, -104.976166 39.7416666) + 325699005 + residential 2 Glenarm Place - tertiary - False + False True - 20.572000000000003 - LINESTRING (-104.9781433 39.7532613, -104.9782299 39.7532468, -104.978299 39.7532272, -104.9783626 39.753192) + 22.62567952396558 + LINESTRING (-104.9781432 39.7532651, -104.9782303 39.7532663, -104.9783158 39.7532344, -104.9783737 39.7531892) - - [549942085, 329980805] - False + + [769456733, 549942085, 329980805] + tertiary 2 Washington Street - tertiary + False False - 148.43499999999997 - LINESTRING (-104.9781433 39.7532613, -104.9781432 39.7533534, -104.9781431 39.7534559, -104.9781428 39.7536815, -104.9781427 39.7537763, -104.9781424 39.7540152, -104.9781424 39.7540365, -104.9781422 39.7541719, -104.9781419 39.7544874, -104.978144 39.7545962) + 159.0881539287534 + LINESTRING (-104.9781432 39.7532651, -104.9781432 39.7533534, -104.9781431 39.7534559, -104.9781428 39.7536815, -104.9781427 39.7537763, -104.9781424 39.7540152, -104.9781424 39.7540365, -104.9781422 39.7541719, -104.9781419 39.7544874, -104.978144 39.7545962, -104.9781587 39.754607, -104.9782389 39.754664) 329980805 - False + tertiary 2 Washington Street - tertiary + False True - 141.074 - LINESTRING (-104.9781433 39.7532613, -104.9781439 39.752681, -104.9781445 39.7521053, -104.9781445 39.7520986, -104.9781447 39.7519926) + 141.4958049002638 + LINESTRING (-104.9781432 39.7532651, -104.9781433 39.7531563, -104.9781439 39.752681, -104.9781445 39.7521053, -104.9781445 39.7520986, -104.9781447 39.7519926) 1103190093 - False + residential 2 + 25 mph East 25th Avenue - residential - 25 mph + False False - 101.47599999999998 - LINESTRING (-104.9781433 39.7532613, -104.9780502 39.7532611, -104.9778196 39.7532605, -104.9776227 39.75326, -104.9775621 39.7532598, -104.9770774 39.7532586, -104.9769563 39.7532583) + 101.46779910458687 + LINESTRING (-104.9781432 39.7532651, -104.9780501 39.7532646, -104.9778196 39.7532633, -104.9776227 39.7532621, -104.9775621 39.7532618, -104.9770774 39.753259, -104.9769563 39.7532583) 16984781 + residential 2 Clarkson Street - residential - False + False False - 140.785 + 140.78421496426716 LINESTRING (-104.9769563 39.7532583, -104.9769565 39.7531549, -104.9769565 39.7531324, -104.9769582 39.7521203, -104.9769582 39.752094, -104.9769584 39.7519922) 26295985 - False + residential 2 + 20 mph Clarkson Street - residential - 20 mph + False False - 151.938 - LINESTRING (-104.9769563 39.7532583, -104.9769566 39.7533492, -104.9769567 39.7533716, -104.9769596 39.7542265, -104.9769602 39.7544142, -104.9769605 39.7545253, -104.9769606 39.7545437, -104.9769609 39.7546247) + 154.1391062952843 + LINESTRING (-104.9769563 39.7532583, -104.9769566 39.7533492, -104.9769567 39.7533716, -104.9769596 39.7542265, -104.9769602 39.7544142, -104.9769605 39.7545253, -104.9769606 39.7545437, -104.9769607 39.7546445) 1103190093 - False + residential 2 + 25 mph East 25th Avenue - residential - 25 mph + False True - 101.476 - LINESTRING (-104.9769563 39.7532583, -104.9770774 39.7532586, -104.9775621 39.7532598, -104.9776227 39.75326, -104.9778196 39.7532605, -104.9780502 39.7532611, -104.9781433 39.7532613) + 101.46779910458687 + LINESTRING (-104.9769563 39.7532583, -104.9770774 39.753259, -104.9775621 39.7532618, -104.9776227 39.7532621, -104.9778196 39.7532633, -104.9780501 39.7532646, -104.9781432 39.7532651) 1173823102 - False + residential 2 + 25 mph East 25th Avenue - residential - 25 mph + False False - 101.774 + 101.77328737312256 LINESTRING (-104.9769563 39.7532583, -104.9768599 39.7532581, -104.9763678 39.7532568, -104.9759157 39.7532557, -104.9758822 39.7532556, -104.9757658 39.7532553) 16982310 - False + residential 2 + 25 mph East 25th Avenue - residential - 25 mph + False False - 102.21799999999999 + 102.21783232142718 LINESTRING (-104.9757658 39.7532553, -104.9756654 39.753255, -104.9756448 39.753255, -104.9751658 39.7532538, -104.9746848 39.7532526, -104.9745701 39.7532523) - + [550013301, 1173823101] + residential 2 Emerson Street - residential - False + False False - 152.261 - LINESTRING (-104.9757658 39.7532553, -104.9757658 39.7533462, -104.9757574 39.7545261, -104.9757573 39.7545406, -104.9757573 39.7546246) + 153.57352132571603 + LINESTRING (-104.9757658 39.7532553, -104.9757658 39.7533462, -104.9757573 39.7545406, -104.9757572 39.7546364) 1173823102 - False + residential 2 + 25 mph East 25th Avenue - residential - 25 mph + False True - 101.774 + 101.77328737312256 LINESTRING (-104.9757658 39.7532553, -104.9758822 39.7532556, -104.9759157 39.7532557, -104.9763678 39.7532568, -104.9768599 39.7532581, -104.9769563 39.7532583) 1176299731 + residential 2 Emerson Street - residential - False + False True - 140.49499999999998 + 140.49501697011064 LINESTRING (-104.9757658 39.7532553, -104.9757659 39.7531513, -104.9757662 39.7528311, -104.9757668 39.7521048, -104.9757668 39.7520899, -104.9757668 39.7519918) 16982310 - False + residential 2 + 25 mph East 25th Avenue - residential - 25 mph + False True - 102.21799999999999 + 102.21783232142721 LINESTRING (-104.9745701 39.7532523, -104.9746848 39.7532526, -104.9751658 39.7532538, -104.9756448 39.753255, -104.9756654 39.753255, -104.9757658 39.7532553) 16989076 - False + residential 2 Ogden Street - residential + False False - 140.21699999999998 + 140.21701221391075 LINESTRING (-104.9745701 39.7532523, -104.9745701 39.7531488, -104.9745701 39.75311, -104.9745704 39.7525406, -104.9745707 39.7520816, -104.9745707 39.7519913) 16989076 - False + residential 2 Ogden Street - residential + False True - 152.58100000000002 - LINESTRING (-104.9745701 39.7532523, -104.97457 39.753342, -104.97457 39.7533791, -104.9745699 39.753664, -104.9745697 39.7540043, -104.9745697 39.7540866, -104.9745694 39.7544991, -104.9745694 39.7545375, -104.9745694 39.7546245) + 153.01557056265528 + LINESTRING (-104.9745701 39.7532523, -104.97457 39.753342, -104.97457 39.7533791, -104.9745699 39.753664, -104.9745697 39.7540043, -104.9745697 39.7540866, -104.9745694 39.7544991, -104.9745694 39.7545375, -104.9745694 39.7546284) [600545932, 600545925] - False + primary 6 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 108.75899999999999 + 108.758682135895 LINESTRING (-104.9835915 39.7400524, -104.98374 39.7400541, -104.9841573 39.740059, -104.9842349 39.7400595, -104.984731 39.7400603, -104.9848634 39.7400593) [600546003, 600545988, 600545934] - False - ['4', '5'] - I 70 Bus;US 40;US 287 + primary + ['5', '4'] + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 106.95599999999999 - LINESTRING (-104.9835915 39.7400524, -104.9834824 39.7400494, -104.9829659 39.7400417, -104.9828248 39.7400405, -104.9824432 39.7400378, -104.9823408 39.7400375) + 106.95593397791662 + LINESTRING (-104.9835915 39.7400524, -104.9834798 39.7400494, -104.9829659 39.7400417, -104.9828248 39.7400405, -104.9824432 39.7400378, -104.9823408 39.7400375) 488803528 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 107.41300000000001 + 107.41387234194552 LINESTRING (-104.9835874 39.7432652, -104.9834637 39.7432649, -104.98302 39.7432639, -104.9824764 39.7432626, -104.9823311 39.7432623) 645821550 - True + secondary 3 + 30 mph Grant Street - secondary - 30 mph + True False - 176.845 + 176.8450994838841 LINESTRING (-104.9835874 39.7432652, -104.9835871 39.7431731, -104.9835864 39.7429431, -104.9835851 39.7424892, -104.9835847 39.7423501, -104.9835831 39.7417725, -104.9835828 39.7416748) 32971329 - True + tertiary 3 Grant Street - tertiary + True False - 178.88 + 178.88000309388892 LINESTRING (-104.9835922 39.7448739, -104.9835919 39.7447765, -104.9835907 39.7443759, -104.9835899 39.7440862, -104.9835879 39.7434273, -104.9835877 39.7433703, -104.9835874 39.7432652) 131612991 - False + tertiary 2 Grant Street - tertiary + False True - 145.388 + 145.38826907137747 LINESTRING (-104.9835922 39.7448739, -104.9835925 39.7449679, -104.9835934 39.7452797, -104.983595 39.7460981, -104.9835961 39.7461814) [131612992, 1121982497] - True + secondary ['3', '4'] + 30 mph East 18th Avenue - secondary - 30 mph + True False - 107.80600000000001 + 107.8057772001616 LINESTRING (-104.9835922 39.7448739, -104.9837411 39.7448745, -104.9839696 39.7448755, -104.9842266 39.7448765, -104.9844172 39.7448773, -104.9847384 39.7448787, -104.9848531 39.7448792) 131612991 - False + tertiary 2 Grant Street - tertiary + False False - 145.388 + 145.38826907137747 LINESTRING (-104.9835961 39.7461814, -104.983595 39.7460981, -104.9835934 39.7452797, -104.9835925 39.7449679, -104.9835922 39.7448739) 231105071 - False + tertiary 2 Grant Street - tertiary + False True - 150.526 + 150.52527396769221 LINESTRING (-104.9835961 39.7461814, -104.983596 39.7462833, -104.9835994 39.7472578, -104.9836001 39.7474744, -104.9836003 39.7475351) 1039146327 - False + tertiary 2 East 19th Avenue - tertiary + False False - 108.00899999999999 + 108.00731837650916 LINESTRING (-104.9835961 39.7461814, -104.983463 39.7461814, -104.9829472 39.7461814, -104.98266 39.7461814, -104.982449 39.7461814, -104.9823328 39.7461815) - [1039146328, 231105084] - False + [1039146328, 1222109785] + tertiary 3 East 19th Avenue - tertiary + False True - 107.032 + 107.03265581771535 LINESTRING (-104.9835961 39.7461814, -104.98374 39.7461814, -104.9842213 39.7461814, -104.9847364 39.7461814, -104.984848 39.7461814) 131612993 - False - 4 + tertiary + 3 East 20th Avenue - tertiary + False False - 30.094 + 30.094356742507504 LINESTRING (-104.9836003 39.7475351, -104.9837243 39.7475355, -104.9839523 39.7475363) 231105071 - False + tertiary 2 Grant Street - tertiary + False False - 150.52599999999998 + 150.52527396769224 LINESTRING (-104.9836003 39.7475351, -104.9836001 39.7474744, -104.9835994 39.7472578, -104.983596 39.7462833, -104.9835961 39.7461814) 231105093 - False + tertiary 2 East 20th Avenue - tertiary + False True - 110.247 + 110.24672715208307 LINESTRING (-104.9836003 39.7475351, -104.9834815 39.7475346, -104.9829391 39.7475324, -104.9824438 39.7475303, -104.9823108 39.7475298) [1176005219, 51866043] + tertiary 2 Grant Street - tertiary - False + False True - 30.111 + 30.111727215090966 LINESTRING (-104.9836003 39.7475351, -104.9836006 39.7476299, -104.9836011 39.7477738, -104.9836012 39.7478059) [907325132, 907325133, 628643759] - False + primary 5 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 54.553000000000004 + 54.55274245049495 LINESTRING (-104.9741606 39.7400245, -104.9745214 39.7400226, -104.9746341 39.740022, -104.9747986 39.7400211) 450174379 - True + primary 4 + 30 mph Broadway - primary - 30 mph + True False - 15.278 + 15.278242784928665 - - [628393624, 16986121] - ['3', '4'] + + 16986121 + tertiary + 3 Glenarm Place - tertiary - False + False False - 76.593 - LINESTRING (-104.9873868 39.7461813, -104.9875376 39.7460893, -104.987645 39.7460045, -104.987775 39.7459031, -104.9879452 39.7457704, -104.9880305 39.7457035) + 11.97065790409549 231105084 - False + tertiary 3 East 19th Avenue - tertiary + False False - 108.529 - LINESTRING (-104.9873868 39.7461813, -104.9872407 39.7461813, -104.9867475 39.7461813, -104.9865864 39.7461813, -104.986561 39.7461813, -104.9863791 39.7461813, -104.9862599 39.7461813, -104.9861174 39.7461813) + 109.09755421949174 + LINESTRING (-104.9873867 39.7461478, -104.9872495 39.7461813, -104.9867475 39.7461813, -104.9865864 39.7461813, -104.986561 39.7461813, -104.9863791 39.7461813, -104.9862599 39.7461813, -104.9861174 39.7461813) - + 935725119 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 124.268 - LINESTRING (-104.9873868 39.7461813, -104.9873864 39.7460514, -104.9873871 39.7459477, -104.98739 39.7455439, -104.9873909 39.7454189, -104.9873994 39.7450638) + 118.98630198370218 + LINESTRING (-104.9873867 39.7461478, -104.9873864 39.7460514, -104.9873871 39.7459477, -104.98739 39.7455439, -104.9873909 39.7454189, -104.9873991 39.7450778) 61135104 + primary 5 + 30 mph Broadway - primary - 30 mph - False + False True - 146.54500000000002 - LINESTRING (-104.9873785 39.7489186, -104.9873776 39.7491682, -104.9873772 39.7492734, -104.9873767 39.7494121, -104.9873763 39.7495106, -104.9873761 39.7495824, -104.9873754 39.7497688, -104.9873742 39.7501091, -104.9873737 39.7502365) + 146.54457858810505 + LINESTRING (-104.9873785 39.7489186, -104.9873776 39.7491682, -104.9873772 39.7492734, -104.9873767 39.7494121, -104.9873763 39.7495106, -104.9873761 39.7495824, -104.9873754 39.7497688, -104.9873742 39.7501091, -104.9873738 39.7502079, -104.9873737 39.7502365) [935721522, 124001035, 628378951] - True + secondary ['3', '4'] + 30 mph 20th Street - secondary - 30 mph + True False - 102.837 - LINESTRING (-104.9873785 39.7489186, -104.9875578 39.7490541, -104.9877416 39.7491979, -104.9878019 39.7492469, -104.9878212 39.7492618, -104.9881441 39.7495115, -104.9882254 39.7495753) + 102.8364242444751 + LINESTRING (-104.9873785 39.7489186, -104.9875578 39.7490541, -104.9877416 39.7491979, -104.9878019 39.7492469, -104.9878212 39.7492618, -104.9881441 39.7495115, -104.9882001 39.7495554, -104.9882254 39.7495753) [628389323, 628389319] - True + tertiary 3 California Street - tertiary + True False - 149.036 + 149.03658863831674 LINESTRING (-104.9873785 39.7489186, -104.9875425 39.7487915, -104.9878358 39.7485653, -104.9884942 39.7480576, -104.988535 39.7480266, -104.9886094 39.7479695) [628398049, 122079301] - True - ['4', '5'] + primary + ['5', '4'] + 30 mph Broadway - primary - 30 mph + True False - 139.017 + 139.01647340386614 LINESTRING (-104.9873785 39.7489186, -104.9873792 39.7486836, -104.9873797 39.7485194, -104.9873806 39.7482219, -104.9873812 39.7480211, -104.9873823 39.7476684) 61135104 + primary 5 + 30 mph Broadway - primary - 30 mph - False + False False - 146.545 - LINESTRING (-104.9873737 39.7502365, -104.9873742 39.7501091, -104.9873754 39.7497688, -104.9873761 39.7495824, -104.9873763 39.7495106, -104.9873767 39.7494121, -104.9873772 39.7492734, -104.9873776 39.7491682, -104.9873785 39.7489186) + 146.54457858810508 + LINESTRING (-104.9873737 39.7502365, -104.9873738 39.7502079, -104.9873742 39.7501091, -104.9873754 39.7497688, -104.9873761 39.7495824, -104.9873763 39.7495106, -104.9873767 39.7494121, -104.9873772 39.7492734, -104.9873776 39.7491682, -104.9873785 39.7489186) 132364824 - True + secondary 2 + 25 mph Stout Street - secondary - 25 mph + True False - 44.042 + 44.04213912426476 LINESTRING (-104.9873737 39.7502365, -104.9872615 39.750325, -104.9870113 39.750518) [427711369, 921942722, 489716484, 921942719] - ['6', '5'] + primary + ['5', '6'] + 30 mph Broadway - primary - 30 mph - False + False True - 149.603 + 149.6039046561347 LINESTRING (-104.9873737 39.7502365, -104.9873763 39.7503894, -104.9873776 39.7507362, -104.987378 39.7508206, -104.9873781 39.7508519, -104.9873787 39.7510135, -104.9873805 39.7514822, -104.9873809 39.7515819) 130904135 + primary 5 + 30 mph Broadway - primary - 30 mph - False + False True - 120.11500000000001 + 120.11493710834287 LINESTRING (-104.9873809 39.7515819, -104.9873831 39.7517358, -104.9873834 39.7518278, -104.9873847 39.752242, -104.9873848 39.7522638, -104.9873879 39.7526621) 132706726 - True + secondary 2 + 25 mph Champa Street - secondary - 25 mph + True False - 61.44799999999999 + 61.449131441006145 LINESTRING (-104.9873809 39.7515819, -104.987528 39.7514707, -104.9878359 39.751238, -104.9878935 39.7511945) [427711369, 921942722, 489716484, 921942719] - ['6', '5'] + primary + ['5', '6'] + 30 mph Broadway - primary - 30 mph - False + False False - 149.603 + 149.6039046561347 LINESTRING (-104.9873809 39.7515819, -104.9873805 39.7514822, -104.9873787 39.7510135, -104.9873781 39.7508519, -104.987378 39.7508206, -104.9873776 39.7507362, -104.9873763 39.7503894, -104.9873737 39.7502365) 130897919 + primary 6 + 30 mph Broadway - primary - 30 mph - False + False True - 30.156 + 30.15625332440363 39876727 - True + secondary 2 + 25 mph 22nd Street - secondary - 25 mph + True False - 85.02000000000001 + 85.02013420282358 LINESTRING (-104.9873879 39.7526621, -104.9872445 39.7525536, -104.9871244 39.752466, -104.9867535 39.7521785, -104.9866817 39.7521238) 130904135 + primary 5 + 30 mph Broadway - primary - 30 mph - False + False False - 120.11500000000001 + 120.1149371083429 LINESTRING (-104.9873879 39.7526621, -104.9873848 39.7522638, -104.9873847 39.752242, -104.9873834 39.7518278, -104.9873831 39.7517358, -104.9873809 39.7515819) 130897919 + primary 6 + 30 mph Broadway - primary - 30 mph - False + False False - 30.156 + 30.15625332440363 130897913 + primary 6 + 30 mph Broadway - primary - 30 mph - False + False False - 33.448 + 33.4476221834294 LINESTRING (-104.9873868 39.7529333, -104.9873865 39.752955, -104.9873863 39.7532341) - 628359724 - True + [628359724, 1242506701] + tertiary 2 Curtis Street - tertiary + True False - 41.703 + 41.70221204528619 LINESTRING (-104.9873868 39.7529333, -104.9873605 39.7529531, -104.9872737 39.7530205, -104.9870424 39.7531989) 44932623 - True + tertiary Arapahoe Street - tertiary + True False - 19.951 + 19.951097702826793 LINESTRING (-104.9873848 39.7542786, -104.9873075 39.7543383, -104.9872202 39.7544058) - [130897913, 427711370] + [427711370, 1242506702] + primary 6 + 30 mph Broadway - primary - 30 mph - False + False True - 116.144 + 116.14334063886407 LINESTRING (-104.9873848 39.7542786, -104.9873854 39.7538855, -104.9873859 39.7536031, -104.9873861 39.7534371, -104.9873863 39.753284, -104.9873863 39.7532341) 596381379 + primary 6 + 30 mph Broadway - primary - 30 mph - False + False False - 28.156 + 28.155322487654555 LINESTRING (-104.9873848 39.7542786, -104.987384 39.7543626, -104.9873847 39.754398, -104.9873844 39.7545318) [124661400, 1175102793] - True + tertiary 3 Arapahoe Street - tertiary + True False - 127.23800000000001 + 127.23724726941393 LINESTRING (-104.9873848 39.7542786, -104.9875424 39.7541572, -104.987896 39.7538848, -104.9881331 39.7537022, -104.9883472 39.753538, -104.9884361 39.7534686) 132260222 - True + primary 4 + 30 mph Park Avenue West - secondary - 30 mph + True False - 86.984 + 86.9843100380142 LINESTRING (-104.9873844 39.7545318, -104.9875387 39.754649, -104.9876595 39.7547426, -104.9880191 39.7550199, -104.9881046 39.7550844) 596381379 + primary 6 + 30 mph Broadway - primary - 30 mph - False + False True - 28.156 + 28.15532248765456 LINESTRING (-104.9873844 39.7545318, -104.9873847 39.754398, -104.987384 39.7543626, -104.9873848 39.7542786) 596381385 - False + secondary 4 + 30 mph Park Avenue West - secondary - 30 mph + False True - 19.832 + 19.832507942502453 LINESTRING (-104.9873844 39.7545318, -104.9872742 39.7544474, -104.9872202 39.7544058) [628378530, 132364780] - ['4', '5'] + secondary + ['5', '4'] + 30 mph Broadway - primary - 30 mph - False + False True - 122.27500000000002 + 122.27559057956874 LINESTRING (-104.9873844 39.7545318, -104.9873863 39.7546803, -104.9873915 39.7550788, -104.9873969 39.7554969, -104.9873977 39.7556314) [628378530, 132364780] - ['4', '5'] + secondary + ['5', '4'] + 30 mph Broadway - primary - 30 mph - False + False False - 122.275 + 122.27559057956874 LINESTRING (-104.9873977 39.7556314, -104.9873969 39.7554969, -104.9873915 39.7550788, -104.9873863 39.7546803, -104.9873844 39.7545318) 132364801 - False + secondary 4 + 30 mph Broadway - primary - 30 mph + False True - 86.111 + 86.11105186117108 LINESTRING (-104.9873977 39.7556314, -104.9873989 39.7557844, -104.9874007 39.756016, -104.9874038 39.7564058) 284847374 - True + tertiary 1 Lawrence Street - residential + True False - 60.527 + 60.52693081539908 LINESTRING (-104.9873977 39.7556314, -104.9872613 39.7557369, -104.9869885 39.755948, -104.9868986 39.7560175) 132364801 - False + secondary 4 + 30 mph Broadway - primary - 30 mph + False False - 86.111 + 86.11105186117109 LINESTRING (-104.9874038 39.7564058, -104.9874007 39.756016, -104.9873989 39.7557844, -104.9873977 39.7556314) 132364801 - False + secondary 4 + 30 mph Broadway - primary - 30 mph + False True - 61.726 + 61.72553704153121 LINESTRING (-104.9874038 39.7564058, -104.987407 39.7568073, -104.9874082 39.7569609) 701725177 - False + residential 2 24th Street - residential + False False - 43.498 + 43.49808503027489 LINESTRING (-104.9874038 39.7564058, -104.9875381 39.7565103, -104.9875635 39.7565301, -104.9876614 39.7566063, -104.987685 39.7566247, -104.9877614 39.7566841) 1178149436 - False + residential 2 24th Street - residential + False True - 61.069 + 61.06816971755521 LINESTRING (-104.9874038 39.7564058, -104.9873489 39.7563636, -104.9872554 39.7562917, -104.9869956 39.7560921, -104.9869664 39.7560696, -104.9868986 39.7560175) 132364784 - True + tertiary 3 + 30 mph Larimer Street - tertiary - 30 mph + True False - 43.114999999999995 + 43.115374532782425 LINESTRING (-104.9874082 39.7569609, -104.9875515 39.756848, -104.9877614 39.7566841) 132364801 - False + secondary 4 + 30 mph Broadway - primary - 30 mph + False False - 61.726 + 61.72553704153121 LINESTRING (-104.9874082 39.7569609, -104.987407 39.7568073, -104.9874038 39.7564058) 230983595 - False + tertiary_link 2 + 30 mph Larimer Street - tertiary_link - 30 mph + False True - 46.989000000000004 + 46.98955694147595 LINESTRING (-104.9874082 39.7569609, -104.9872574 39.7570772, -104.9870204 39.7572604) [89637457, 906473023] - False + secondary 5 + 30 mph Broadway - primary - 30 mph + False True - 45.003 + 45.0020166879215 LINESTRING (-104.9874082 39.7569609, -104.9874126 39.7571032, -104.9874149 39.7571789, -104.9874206 39.7573655) 89637457 - False + secondary 5 + 30 mph Broadway - primary - 30 mph + False False - 34.146 - LINESTRING (-104.9874483 39.7582698, -104.9874435 39.7581277, -104.9874389 39.7579628) + 34.146433805919806 + LINESTRING (-104.9874483 39.7582698, -104.987446 39.7582008, -104.9874435 39.7581277, -104.9874389 39.7579628) - [325696452, 807837764] + [807837764, 1222072404] + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 149.20600000000002 + 149.20598405049088 LINESTRING (-104.9874483 39.7582698, -104.9872935 39.7583939, -104.9865692 39.758954, -104.986301 39.7591614, -104.9862206 39.7592236) [628398050, 491466438, 700245321, 700245322, 700245323, 700245324, 974918126] - True - ['4', '5'] + ['primary', 'secondary'] + ['5', '4'] + 30 mph Lincoln Street - ['secondary', 'primary'] - 30 mph + True False - 179.415 + 179.4148752129199 LINESTRING (-104.9861095 39.7432709, -104.9861098 39.7433754, -104.9861105 39.7436218, -104.9861106 39.7436507, -104.9861117 39.7440832, -104.9861119 39.7441425, -104.9861102 39.7444027, -104.9861109 39.7444785, -104.9861136 39.7447853, -104.9861139 39.7448844) 645821548 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 107.893 + 107.8926308205025 LINESTRING (-104.9861095 39.7432709, -104.9859866 39.7432707, -104.9854902 39.7432695, -104.9849846 39.7432684, -104.9848476 39.7432681) 628588222 + residential 3 + 25 mph Sherman Street - residential - 25 mph - False + False False - 179.14600000000002 + 179.14702505712327 LINESTRING (-104.9848476 39.7432681, -104.9848478 39.7433703, -104.9848503 39.744089, -104.9848511 39.7443051, -104.9848528 39.7447822, -104.9848531 39.7448792) 628588223 + residential 2 + 25 mph Sherman Street - residential - 25 mph - False + False True - 176.957 + 176.9559056309194 LINESTRING (-104.9848476 39.7432681, -104.9848476 39.7431795, -104.9848479 39.7428418, -104.984849 39.7417767, -104.9848491 39.7416767) 645821548 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 107.747 + 107.74732025051209 LINESTRING (-104.9848476 39.7432681, -104.9847418 39.7432678, -104.984236 39.7432667, -104.9841671 39.7432665, -104.9837398 39.7432655, -104.9835874 39.7432652) 334259980 - True + secondary 2 Logan Street - secondary + True False - 178.62300000000002 + 178.62391310081273 LINESTRING (-104.9823311 39.7432623, -104.9823312 39.7433668, -104.9823323 39.7440821, -104.9823325 39.744238, -104.9823334 39.7447713, -104.9823336 39.7448687) 488803528 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 105.089 + 105.08825933543366 LINESTRING (-104.9823311 39.7432623, -104.982237 39.7432621, -104.9817145 39.7432609, -104.9812195 39.7432598, -104.981102 39.7432595) 488803528 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 102.48 + 102.4804988183937 LINESTRING (-104.981102 39.7432595, -104.9810014 39.7432593, -104.9804915 39.7432581, -104.9800047 39.743257, -104.9799034 39.7432568) 596723424 - False + residential 2 Pennsylvania Street - residential + False False - 176.03400000000002 + 176.03360422673674 LINESTRING (-104.981102 39.7432595, -104.9811022 39.7431659, -104.9811023 39.7431373, -104.9811024 39.7430909, -104.9811032 39.7427805, -104.9811034 39.7426855, -104.9811035 39.7426478, -104.9811056 39.7417993, -104.9811057 39.7417669, -104.9811067 39.7416764) 596723424 - False + residential 2 Pennsylvania Street - residential + False True - 178.36799999999997 + 178.36836638838733 LINESTRING (-104.981102 39.7432595, -104.9811017 39.7433654, -104.9811016 39.743391, -104.9811011 39.7436138, -104.9811009 39.7437002, -104.9810991 39.7444326, -104.9810983 39.7447406, -104.9810982 39.7447672, -104.981098 39.7448636) 488803528 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 99.73700000000001 + 99.73597307644701 LINESTRING (-104.9799034 39.7432568, -104.9798233 39.7432566, -104.9797181 39.7432564, -104.979628 39.7432562, -104.9793361 39.7432555, -104.9788406 39.7432543, -104.9787369 39.7432541) 798188480 + residential 2 Pearl Street - residential - False + False False - 178.12599999999998 - LINESTRING (-104.9799034 39.7432568, -104.9799029 39.7433613, -104.9799028 39.7433778, -104.9799024 39.7434478, -104.9799018 39.7435782, -104.9799018 39.7435862, -104.9798992 39.7440685, -104.9798956 39.7447475, -104.9798955 39.7447652, -104.979895 39.7448587) + 178.1248664437245 + LINESTRING (-104.9799034 39.7432568, -104.9799029 39.7433613, -104.9799028 39.7433778, -104.9799024 39.7434478, -104.9799023 39.7434623, -104.9799018 39.7435782, -104.9799018 39.7435862, -104.9798992 39.7440685, -104.9798956 39.7447475, -104.9798955 39.7447652, -104.979895 39.7448587) 798188480 + residential 2 Pearl Street - residential - False + False True - 175.715 - LINESTRING (-104.9799034 39.7432568, -104.9799038 39.7431621, -104.9799039 39.7431324, -104.9799046 39.7429707, -104.9799054 39.7427856, -104.9799064 39.7425326, -104.979907 39.7423933, -104.9799076 39.7422566, -104.9799081 39.742131, -104.9799096 39.7417747, -104.979908 39.7417692, -104.9799073 39.7416767) + 175.71565885992902 + LINESTRING (-104.9799034 39.7432568, -104.9799038 39.7431621, -104.9799039 39.7431324, -104.9799046 39.7429707, -104.9799054 39.7427856, -104.9799064 39.7425326, -104.979907 39.7423933, -104.979907 39.7422566, -104.9799081 39.742131, -104.9799096 39.7417747, -104.979908 39.7417692, -104.9799073 39.7416767) 39471712 - True + tertiary 2 Washington Street - tertiary + True False - 176.011 + 176.0118495453143 LINESTRING (-104.9787369 39.7432541, -104.9787374 39.743158, -104.9787406 39.7424414, -104.9787427 39.741982, -104.9787431 39.7418846, -104.9787437 39.7417622, -104.9787443 39.7416712) 488803528 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 100.30799999999999 + 100.30882275804498 LINESTRING (-104.9787369 39.7432541, -104.9786614 39.7432539, -104.9782206 39.7432529, -104.9777787 39.7432519, -104.9776756 39.7432517, -104.9775637 39.7432514) 335726354 - True + tertiary 2 + 30 mph Clarkson Street - tertiary - 30 mph + True False - 177.65699999999998 - LINESTRING (-104.9775637 39.7432514, -104.9775632 39.7433814, -104.9775612 39.7438262, -104.9775571 39.744761, -104.9775567 39.7448491) + 177.6573947194922 + LINESTRING (-104.9775637 39.7432514, -104.9775632 39.7433806, -104.9775612 39.7438262, -104.9775571 39.744761, -104.9775567 39.7448491) 488803528 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 118.828 + 118.82817101083234 LINESTRING (-104.9775637 39.7432514, -104.9774612 39.7432512, -104.9770338 39.7432502, -104.9768934 39.7432499, -104.9763339 39.7432485, -104.9761739 39.7432482) 16985355 - False + residential 2 Emerson Street - residential + False False - 177.37800000000001 + 177.378919419906 LINESTRING (-104.9761739 39.7432482, -104.9761734 39.7433783, -104.9761733 39.7433996, -104.9761727 39.7436127, -104.9761721 39.7438221, -104.9761696 39.7446205, -104.9761693 39.7447302, -104.9761692 39.7447538, -104.9761689 39.7448434) 16985355 - False + residential 2 Emerson Street - residential + False True - 175.87599999999998 + 175.87477127978258 LINESTRING (-104.9761739 39.7432482, -104.9761734 39.7431461, -104.9761733 39.7431305, -104.9761716 39.7426872, -104.9761681 39.7417741, -104.9761693 39.7417627, -104.976166 39.7416666) 488803528 - True + secondary 3 + 30 mph East 17th Avenue - secondary - 30 mph + True False - 119.43499999999999 - LINESTRING (-104.9761739 39.7432482, -104.976008 39.7432479, -104.9748922 39.7432453, -104.974777 39.743245) + 119.43522135746173 + LINESTRING (-104.9761739 39.7432482, -104.976008 39.7432479, -104.975159 39.7432459, -104.9748922 39.7432453, -104.974777 39.743245) 1184891760 - True + tertiary 1 + 30 mph Ogden Street - tertiary - 30 mph + True False - 175.55499999999998 + 175.55556875980744 LINESTRING (-104.974777 39.743245, -104.9747768 39.7431344, -104.9747764 39.7426883, -104.9747757 39.7417545, -104.9747743 39.7416662) 16983321 - False + residential 31st Street - residential + False False - 105.20499999999998 + 105.20433027885801 LINESTRING (-104.980178 39.7638965, -104.980275 39.7639707, -104.9802984 39.763988, -104.9806355 39.7642444, -104.9809678 39.7644972, -104.9809829 39.7645086, -104.981053 39.7645619) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 145.083 + 145.0837819823257 LINESTRING (-104.980178 39.7638965, -104.9798226 39.7641713, -104.979381 39.7645129, -104.9790686 39.7647546, -104.978981 39.7648216) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False True - 146.322 + 146.32209027529782 LINESTRING (-104.980178 39.7638965, -104.9803399 39.7637713, -104.9803826 39.7637376, -104.9809817 39.763275, -104.9813076 39.763023, -104.9813848 39.7629632) 16983321 - False + residential 31st Street - residential + False True - 105.20500000000001 + 105.204330278858 LINESTRING (-104.981053 39.7645619, -104.9809829 39.7645086, -104.9809678 39.7644972, -104.9806355 39.7642444, -104.9802984 39.763988, -104.980275 39.7639707, -104.980178 39.7638965) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False False - 145.67100000000002 + 145.67008635675782 LINESTRING (-104.981053 39.7645619, -104.9810759 39.7645441, -104.9817421 39.7640285, -104.9821776 39.7636915, -104.9822541 39.7636325) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False True - 145.39600000000002 + 145.3964394026322 LINESTRING (-104.981053 39.7645619, -104.9809684 39.7646273, -104.9804798 39.7650055, -104.980378 39.7650842, -104.9798542 39.7654896) 409342461 - False + tertiary 2 Lawrence Street - residential + False False - 147.169 + 147.16950695663408 LINESTRING (-104.9784561 39.7625509, -104.9783691 39.7626182, -104.9773079 39.7634391, -104.9772427 39.7634899) 409342461 - False + tertiary 2 Lawrence Street - residential + False True - 144.77599999999998 + 144.77674867265503 LINESTRING (-104.9784561 39.7625509, -104.9785397 39.7624862, -104.9788379 39.7622555, -104.9791096 39.7620453, -104.9795663 39.7616917, -104.9796498 39.7616272) 707952698 - False + residential 31st Street - residential + False False - 105.223 + 105.2226105716434 LINESTRING (-104.9784561 39.7625509, -104.9785502 39.7626241, -104.9788997 39.7628959, -104.9792312 39.7631537, -104.9792443 39.7631639, -104.9793215 39.7632239) 707959687 - False + residential 31st Street - residential + False True - 106.34299999999999 + 106.34443018101248 LINESTRING (-104.9784561 39.7625509, -104.9783873 39.7624984, -104.9780159 39.7622148, -104.977672 39.7619523, -104.9775733 39.761877) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 145.302 + 145.3006204992272 LINESTRING (-104.9793215 39.7632239, -104.9794041 39.7631599, -104.9796978 39.762932, -104.9798968 39.7627782, -104.979972 39.7627199, -104.9804351 39.7623612, -104.9805188 39.7622963) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 146.358 + 146.35825896208573 LINESTRING (-104.9793215 39.7632239, -104.9792334 39.7632921, -104.9790498 39.7634344, -104.9784943 39.7638648, -104.9782841 39.7640275, -104.9782015 39.7640915, -104.9781154 39.7641582) 707952698 - False + residential 31st Street - residential + False False - 54.108000000000004 + 54.106916970304724 LINESTRING (-104.9793215 39.7632239, -104.9794172 39.7632984, -104.9794272 39.7633062, -104.9795667 39.7634147, -104.9797646 39.7635714) 707952698 - False + residential 31st Street - residential + False True - 105.223 + 105.22261057164339 LINESTRING (-104.9793215 39.7632239, -104.9792443 39.7631639, -104.9792312 39.7631537, -104.9788997 39.7628959, -104.9785502 39.7626241, -104.9784561 39.7625509) 707952698 - False + residential 31st Street - residential + False True - 54.108000000000004 + 54.106916970304724 LINESTRING (-104.9797646 39.7635714, -104.9795667 39.7634147, -104.9794272 39.7633062, -104.9794172 39.7632984, -104.9793215 39.7632239) 130921917 - False + residential 2 31st Street - residential + False True - 104.70500000000001 + 104.70501967470224 LINESTRING (-104.9740832 39.7592076, -104.974175 39.7592768, -104.9741983 39.7592943, -104.9745273 39.7595421, -104.9748587 39.7597988, -104.9748716 39.7598088, -104.9749522 39.7598712) - - 788043282 - False + + [781164692, 788043282, 278138236] + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 26.387 - LINESTRING (-104.9740832 39.7592076, -104.9741759 39.759135, -104.9742995 39.7590383) - - - [788043282, 646050014] - False - 2 - California Street - tertiary - 25 mph - True - 39.558 - LINESTRING (-104.9740832 39.7592076, -104.9740218 39.7592562, -104.9739982 39.7592749, -104.9739091 39.759338, -104.9738172 39.7593991, -104.9737378 39.7594434) + 146.74297728814832 + LINESTRING (-104.9740832 39.7592076, -104.9741759 39.759135, -104.9742995 39.7590383, -104.9748378 39.7586168, -104.9751972 39.7583355, -104.975286 39.758266) 16983324 + residential 31st Street - residential - False + False True - 105.523 - LINESTRING (-104.9749522 39.7598712, -104.9750275 39.7599292, -104.97504 39.7599388, -104.9753936 39.7602115, -104.9757393 39.7604861, -104.9758183 39.7605474) + 105.51996345421915 + LINESTRING (-104.9749522 39.7598712, -104.97505 39.7599476, -104.9750649 39.7599592, -104.9753922 39.7602146, -104.9757395 39.7604859, -104.9758183 39.7605474) 130921917 - False + residential 2 31st Street - residential + False False - 104.70500000000001 + 104.70501967470224 LINESTRING (-104.9749522 39.7598712, -104.9748716 39.7598088, -104.9748587 39.7597988, -104.9745273 39.7595421, -104.9741983 39.7592943, -104.974175 39.7592768, -104.9740832 39.7592076) [130921922, 16989157] - True + secondary 3 + 25 mph ['Stout Street', 'East 31st Avenue'] - secondary - 25 mph + True False - 145.073 + 145.07286499369712 LINESTRING (-104.9749522 39.7598712, -104.9748652 39.7599388, -104.9740007 39.7606105, -104.9739624 39.7606403, -104.9739034 39.7606816, -104.9738736 39.7606988, -104.9738215 39.7607228, -104.9737693 39.7607393, -104.9737157 39.7607506) 16983324 + residential 31st Street - residential - False + False False - 105.523 - LINESTRING (-104.9758183 39.7605474, -104.9757393 39.7604861, -104.9753936 39.7602115, -104.97504 39.7599388, -104.9750275 39.7599292, -104.9749522 39.7598712) + 105.51996345421915 + LINESTRING (-104.9758183 39.7605474, -104.9757395 39.7604859, -104.9753922 39.7602146, -104.9750649 39.7599592, -104.97505 39.7599476, -104.9749522 39.7598712) 88982058 - True + secondary 1 + 30 mph Champa Street - secondary - 30 mph + True False - 146.941 - LINESTRING (-104.9758183 39.7605474, -104.9759093 39.7604771, -104.9769673 39.7596595, -104.9770306 39.7596105) + 146.94068344684604 + LINESTRING (-104.9758183 39.7605474, -104.9759093 39.7604771, -104.9769541 39.7596696, -104.9770306 39.7596105) 628389288 - True + tertiary 3 Curtis Street - tertiary + True False - 146.053 + 146.05171090427353 LINESTRING (-104.9935966 39.7481388, -104.9935201 39.748199, -104.9930835 39.748536, -104.993022 39.7485835, -104.9929604 39.7486311, -104.9924742 39.7490064, -104.9923918 39.74907) [1122234078, 1122234079] - True - ['4', '5'] + secondary + ['3', '4'] 17th Street - secondary + True False - 106.124 + 106.12329351587537 LINESTRING (-104.9935966 39.7481388, -104.9935177 39.7480782, -104.9931693 39.747811, -104.992808 39.7475349, -104.9927179 39.7474647) - - [700245968, 700245969, 466867211] - True + + 466867211 + tertiary 3 Curtis Street - tertiary + True False - 145.44799999999998 - LINESTRING (-104.9923918 39.74907, -104.992314 39.7491301, -104.9918175 39.7495138, -104.9916837 39.7496172, -104.9916351 39.7496548, -104.9912752 39.7499329, -104.9911919 39.7499973) + 2.981045390256482 508015542 - True + secondary 3 18th Street - secondary + True False - 103.32 + 103.31991150190139 LINESTRING (-104.9923918 39.74907, -104.9924952 39.7491471, -104.993182 39.7496643, -104.9932554 39.74972) [628378954, 25653759] - True + tertiary ['3', '4'] + 25 mph 19th Street - tertiary - 25 mph + True False - 106.08 + 106.08094646924506 LINESTRING (-104.9911919 39.7499973, -104.9911117 39.7499353, -104.9906596 39.7495863, -104.9904051 39.7493899, -104.9903143 39.7493229) [133953241, 318916630] - True + tertiary 3 Curtis Street - tertiary + True False - 147.04399999999998 - LINESTRING (-104.9911919 39.7499973, -104.9910898 39.7500766, -104.9909096 39.7502149, -104.9908042 39.7502958, -104.990586 39.7504638, -104.990559 39.7504846, -104.9900586 39.7508707, -104.9899765 39.750933) + 147.04392693444743 + LINESTRING (-104.9911919 39.7499973, -104.9911301 39.7500453, -104.9910898 39.7500766, -104.9909096 39.7502149, -104.9908042 39.7502958, -104.990586 39.7504638, -104.990559 39.7504846, -104.9900586 39.7508707, -104.9899765 39.750933) 131620778 - True + secondary 4 + 30 mph 20th Street - secondary - 30 mph + True False - 105.971 + 105.97028200720905 LINESTRING (-104.9899765 39.750933, -104.9900692 39.7510067, -104.9901539 39.7510719, -104.9904042 39.7512646, -104.9907585 39.7515384, -104.9908493 39.7516097) 131620806 - True + tertiary 3 Curtis Street - tertiary + True False - 146.34400000000002 + 146.344089213903 LINESTRING (-104.9899765 39.750933, -104.9898909 39.750999, -104.9894118 39.7513677, -104.9892851 39.7514652, -104.9890571 39.7516407, -104.9888353 39.7518114, -104.9887668 39.7518642) 131620783 - True + tertiary 3 Curtis Street - tertiary + True False - 146.095 + 146.09654472488782 LINESTRING (-104.9887668 39.7518642, -104.9887039 39.751913, -104.988485 39.7520813, -104.9882585 39.7522558, -104.9881539 39.7523363, -104.9879496 39.7524936, -104.9876488 39.7527253, -104.9875591 39.7527938) 131620784 + tertiary 2 21st Street - tertiary - False + False False - 105.448 + 105.44839592972099 LINESTRING (-104.9887668 39.7518642, -104.9886921 39.7518064, -104.988665 39.7517856, -104.9883372 39.7515348, -104.988009 39.751282, -104.9879747 39.7512555, -104.9878935 39.7511945) 501887283 + tertiary 2 21st Street - tertiary - False + False True - 106.022 + 106.02155186292927 LINESTRING (-104.9887668 39.7518642, -104.9888527 39.7519303, -104.9888759 39.7519482, -104.9892006 39.7521981, -104.9895537 39.75247, -104.9896431 39.7525389) 1051771068 - True + tertiary 3 Curtis Street - tertiary + True False - 21.391 + 21.390962021868514 1051771069 - True + primary + 25 mph 22nd Street - secondary - 25 mph + True False - 20.704 + 20.7040493715325 [628378532, 1123333030, 130921918] - False - ['4', '3'] + secondary + ['3', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False False - 105.51599999999999 + 105.5175284666024 LINESTRING (-104.9863465 39.7537355, -104.9864302 39.7538005, -104.9866259 39.7539501, -104.9867867 39.7540724, -104.9871523 39.7543532, -104.9872202 39.7544058) - 130921920 + [130921920, 1242506703] + tertiary 3 Curtis Street - tertiary - False + False False - 84.257 + 84.25736577310492 LINESTRING (-104.9863465 39.7537355, -104.9864346 39.7536676, -104.9865096 39.7536097, -104.9866294 39.7535173, -104.9868879 39.753318, -104.9870424 39.7531989) 808959124 - False + unclassified 2 Curtis Street - tertiary + False True - 146.096 + 146.09597335709324 LINESTRING (-104.9863465 39.7537355, -104.9862639 39.7537997, -104.9857433 39.7542041, -104.9856292 39.7542927, -104.9854728 39.7544143, -104.9852312 39.754602, -104.9851444 39.7546694) [1123333180, 1123333181] - False - ['4', '3'] + secondary + ['3', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False True - 105.863 + 105.86311884283478 LINESTRING (-104.9863465 39.7537355, -104.9862682 39.7536743, -104.9860137 39.7534755, -104.9859182 39.7534007, -104.9855778 39.7531349, -104.9854782 39.7530567) 26296015 - False + residential 2 Curtis Street - tertiary + False True - 146.847 + 146.84717237546124 LINESTRING (-104.9851444 39.7546694, -104.9850596 39.7547353, -104.9848054 39.7549328, -104.9840279 39.7555368, -104.9839361 39.7556081) 808959124 - False + unclassified 2 Curtis Street - tertiary + False False - 146.096 + 146.09597335709324 LINESTRING (-104.9851444 39.7546694, -104.9852312 39.754602, -104.9854728 39.7544143, -104.9856292 39.7542927, -104.9857433 39.7542041, -104.9862639 39.7537997, -104.9863465 39.7537355) 808959125 - False + residential 2 24th Street - residential + False True - 106.01899999999999 + 106.01806023405877 LINESTRING (-104.9851444 39.7546694, -104.9850629 39.7546069, -104.9850346 39.7545852, -104.9847106 39.7543365, -104.9843858 39.7540872, -104.9843672 39.7540729, -104.9842667 39.7539958) 1175102790 - False + residential 2 24th Street - residential + False False - 106.144 + 106.14389603026778 LINESTRING (-104.9851444 39.7546694, -104.9852358 39.7547396, -104.9852641 39.7547614, -104.9855882 39.7550105, -104.9859309 39.7552739, -104.9860225 39.7553443) 26296015 - False + residential 2 Curtis Street - tertiary + False False - 146.847 + 146.8471723754612 LINESTRING (-104.9839361 39.7556081, -104.9840279 39.7555368, -104.9848054 39.7549328, -104.9850596 39.7547353, -104.9851444 39.7546694) 26296015 - False + residential 2 Curtis Street - tertiary + False True - 146.25799999999998 - LINESTRING (-104.9839361 39.7556081, -104.9838563 39.7556697, -104.9831238 39.7562392, -104.9828239 39.7564722, -104.9827327 39.7565431) + 146.12980177647776 + LINESTRING (-104.9839361 39.7556081, -104.9838563 39.7556697, -104.9831238 39.7562392, -104.9828239 39.7564722, -104.9827338 39.7565423) 236790149 - False + residential 25th Street - residential + False False - 106.187 + 106.18665668251346 LINESTRING (-104.9839361 39.7556081, -104.9838538 39.7555448, -104.9835014 39.7552735, -104.9834341 39.7552217, -104.983183 39.7550286, -104.9831596 39.7550106, -104.9830582 39.7549325) 236790149 - False + residential 25th Street - residential + False True - 104.874 + 104.87467868811947 LINESTRING (-104.9839361 39.7556081, -104.9840294 39.7556799, -104.9843782 39.7559483, -104.9847259 39.7562161, -104.9848031 39.7562754) 26296015 - False + residential 2 Curtis Street - tertiary + False False - 146.258 - LINESTRING (-104.9827327 39.7565431, -104.9828239 39.7564722, -104.9831238 39.7562392, -104.9838563 39.7556697, -104.9839361 39.7556081) + 146.12980177647773 + LINESTRING (-104.9827338 39.7565423, -104.9828239 39.7564722, -104.9831238 39.7562392, -104.9838563 39.7556697, -104.9839361 39.7556081) 26296015 - False + residential 2 Curtis Street - tertiary + False True - 146.194 - LINESTRING (-104.9827327 39.7565431, -104.9826473 39.7566094, -104.9816274 39.7574017, -104.9816166 39.7574101, -104.9815297 39.7574776) + 146.32393624561087 + LINESTRING (-104.9827338 39.7565423, -104.9826473 39.7566094, -104.9816274 39.7574017, -104.9816166 39.7574101, -104.9815297 39.7574776) - + 278136621 - False + residential 26th Street - residential + False False - 104.67200000000001 - LINESTRING (-104.9827327 39.7565431, -104.9828261 39.7566148, -104.9828466 39.7566305, -104.9831736 39.7568812, -104.9835208 39.7571476, -104.9835996 39.7572079) + 99.4201092371807 + LINESTRING (-104.9827338 39.7565423, -104.9828271 39.756614, -104.9828476 39.7566297, -104.9831741 39.7568808, -104.9835209 39.7571475, -104.9835561 39.7571746) 278136621 - False + residential 26th Street - residential + False True - 106.36499999999998 - LINESTRING (-104.9827327 39.7565431, -104.9826489 39.7564788, -104.9826375 39.7564701, -104.9825402 39.7563955, -104.9822963 39.7562085, -104.9819708 39.755959, -104.9819514 39.7559441, -104.9818517 39.7558676) + 106.36549705648659 + LINESTRING (-104.9827338 39.7565423, -104.9826501 39.7564779, -104.9826387 39.7564691, -104.9825416 39.7563944, -104.982298 39.7562072, -104.9819731 39.7559572, -104.9819537 39.7559423, -104.9818541 39.7558658) 26296015 - False + residential 2 Curtis Street - tertiary + False False - 146.194 - LINESTRING (-104.9815297 39.7574776, -104.9816166 39.7574101, -104.9816274 39.7574017, -104.9826473 39.7566094, -104.9827327 39.7565431) + 146.3239362456109 + LINESTRING (-104.9815297 39.7574776, -104.9816166 39.7574101, -104.9816274 39.7574017, -104.9826473 39.7566094, -104.9827338 39.7565423) 26296015 - False + residential 2 Curtis Street - tertiary + False True - 147.04399999999998 + 147.0431647855402 LINESTRING (-104.9815297 39.7574776, -104.9814397 39.7575476, -104.9814311 39.7575543, -104.9804136 39.7583447, -104.9803198 39.7584176) 278136619 - False + unclassified 2 27th Street - tertiary + False False - 104.482 + 104.48261759477961 LINESTRING (-104.9815297 39.7574776, -104.9816231 39.7575494, -104.9819684 39.7578146, -104.9823178 39.7580829, -104.9823944 39.7581417) 278136619 - False + unclassified 2 27th Street - tertiary + False True - 106.527 + 106.52680103514524 LINESTRING (-104.9815297 39.7574776, -104.9814437 39.7574115, -104.9810965 39.7571449, -104.9807975 39.7569153, -104.9807591 39.7568858, -104.9807465 39.7568761, -104.9806481 39.7568005) 26296015 - False + residential 2 Curtis Street - tertiary + False False - 147.04399999999998 + 147.0431647855402 LINESTRING (-104.9803198 39.7584176, -104.9804136 39.7583447, -104.9814311 39.7575543, -104.9814397 39.7575476, -104.9815297 39.7574776) 26296015 - False + residential 2 Curtis Street - tertiary + False True - 145.809 + 145.80861200361895 LINESTRING (-104.9803198 39.7584176, -104.9802389 39.7584804, -104.9792328 39.759262, -104.979206 39.7592828, -104.9791199 39.7593496) 674354857 - False + residential 28th Street - residential + False False - 104.28300000000002 + 104.28363258810795 LINESTRING (-104.9803198 39.7584176, -104.9804093 39.7584864, -104.9804234 39.7584972, -104.9807563 39.7587533, -104.9810807 39.759003, -104.9811072 39.7590234, -104.981182 39.7590811) 674354857 - False + residential 28th Street - residential + False True - 106.69900000000001 + 106.69783107262982 LINESTRING (-104.9803198 39.7584176, -104.9802332 39.758351, -104.9802149 39.7583369, -104.9798829 39.7580813, -104.979536 39.7578144, -104.9794377 39.7577387) 26296015 - False + residential 2 Curtis Street - tertiary + False False - 145.809 + 145.80861200361895 LINESTRING (-104.9791199 39.7593496, -104.979206 39.7592828, -104.9792328 39.759262, -104.9802389 39.7584804, -104.9803198 39.7584176) 26296015 - False + residential 2 Curtis Street - tertiary + False True - 146.88400000000001 + 146.88398940688867 LINESTRING (-104.9791199 39.7593496, -104.9790299 39.7594196, -104.9790153 39.7594309, -104.978304 39.7599835, -104.9779993 39.7602202, -104.9779113 39.7602886) 781164697 - False + residential 29th Street - residential + False False - 104.1 + 104.09999002308423 LINESTRING (-104.9791199 39.7593496, -104.9792092 39.7594185, -104.9795537 39.7596845, -104.9799047 39.7599555, -104.9799792 39.760013) 781164697 - False + residential 29th Street - residential + False True - 106.857 + 106.85642173657253 LINESTRING (-104.9791199 39.7593496, -104.9790357 39.7592845, -104.9786795 39.7590096, -104.9783509 39.7587558, -104.9783343 39.758743, -104.9782379 39.7586686) 117298378 - False + residential Curtis Street - residential + False False - 147.03 + 147.02986040884548 LINESTRING (-104.9754995 39.7621552, -104.9754166 39.7622192, -104.9753854 39.7622431, -104.9750396 39.7625087, -104.9743805 39.7630154, -104.9742832 39.7630902) - [505662289, 1175102785] - False + [1175102785, 1201623838] + residential 32nd Street - residential + False False - 104.044 + 104.04409717645096 LINESTRING (-104.9754995 39.7621552, -104.9755908 39.762225, -104.9758983 39.7624601, -104.9762797 39.7627516, -104.9762893 39.7627589, -104.9763622 39.7628153) [1175102784, 1175102787] - False + residential 32nd Street - residential + False True - 106.756 + 106.75655570003731 LINESTRING (-104.9754995 39.7621552, -104.975411 39.7620876, -104.9750586 39.7618176, -104.9747325 39.7615693, -104.9747142 39.7615554, -104.9746134 39.7614786) 236790149 - False + residential 25th Street - residential + False False - 106.812 + 106.81214301521327 LINESTRING (-104.9795755 39.7522518, -104.9794865 39.7521828, -104.9794652 39.7521665, -104.9791386 39.7519156, -104.9787936 39.75165, -104.9786925 39.7515722) 236790149 - False + residential 25th Street - residential + False True - 107.734 + 107.73483919795733 LINESTRING (-104.9795755 39.7522518, -104.9796655 39.7523211, -104.979682 39.7523338, -104.980013 39.7525886, -104.9803419 39.7528417, -104.9803644 39.7528591, -104.9803921 39.7528804, -104.9804661 39.7529373) 781314137 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False False - 147.245 - LINESTRING (-104.9795755 39.7522518, -104.9794913 39.7523171, -104.9784603 39.7531163, -104.9783626 39.753192) + 146.35645138314732 + LINESTRING (-104.9795755 39.7522518, -104.9794913 39.7523171, -104.9784638 39.7531189, -104.9783737 39.7531892) 781314137 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False True - 147.327 + 147.3275886514043 LINESTRING (-104.9795755 39.7522518, -104.9796693 39.7521791, -104.9807028 39.751378, -104.9807891 39.7513111) 236790149 - False + residential 25th Street - residential + False False - 107.73399999999998 + 107.73483919795731 LINESTRING (-104.9804661 39.7529373, -104.9803921 39.7528804, -104.9803644 39.7528591, -104.9803419 39.7528417, -104.980013 39.7525886, -104.979682 39.7523338, -104.9796655 39.7523211, -104.9795755 39.7522518) 236790149 - False + residential 25th Street - residential + False True - 103.88 + 103.87963570123081 LINESTRING (-104.9804661 39.7529373, -104.9805322 39.7529882, -104.9805604 39.7530099, -104.9808822 39.7532576, -104.9812344 39.7535287, -104.9813248 39.7535983) 325698648 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 147.047 - LINESTRING (-104.9804661 39.7529373, -104.9803914 39.7529952, -104.9793993 39.7537644, -104.9793294 39.7538186, -104.9792549 39.7538763) + 146.30889595211414 + LINESTRING (-104.9804661 39.7529373, -104.9803914 39.7529952, -104.9793993 39.7537644, -104.9793294 39.7538186, -104.979261 39.7538716) 236790149 - False + residential 25th Street - residential + False False - 103.88000000000001 + 103.87963570123081 LINESTRING (-104.9813248 39.7535983, -104.9812344 39.7535287, -104.9808822 39.7532576, -104.9805604 39.7530099, -104.9805322 39.7529882, -104.9804661 39.7529373) 236790149 - False + residential 25th Street - residential + False True - 104.48499999999999 + 104.48619974926386 LINESTRING (-104.9813248 39.7535983, -104.9814086 39.7536628, -104.981573 39.7537893, -104.9817561 39.7539303, -104.9820843 39.7541828, -104.9821034 39.7541975, -104.9821886 39.7542631) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 146.254 + 146.2533664428783 LINESTRING (-104.9813248 39.7535983, -104.9814198 39.7535248, -104.9814399 39.7535093, -104.9819659 39.7531027, -104.9824563 39.7527236, -104.9825312 39.7526657) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 146.845 - LINESTRING (-104.9813248 39.7535983, -104.9812482 39.7536575, -104.9812152 39.753683, -104.9803146 39.7543791, -104.9802075 39.7544619, -104.9801134 39.7545346) + 146.25840817952678 + LINESTRING (-104.9813248 39.7535983, -104.9812482 39.7536575, -104.9812152 39.753683, -104.9803146 39.7543791, -104.9802075 39.7544619, -104.9801183 39.7545309) 236790149 - False + residential 25th Street - residential + False False - 104.485 + 104.48619974926387 LINESTRING (-104.9821886 39.7542631, -104.9821034 39.7541975, -104.9820843 39.7541828, -104.9817561 39.7539303, -104.981573 39.7537893, -104.9814086 39.7536628, -104.9813248 39.7535983) 236790149 - False + residential 25th Street - residential + False True - 105.198 + 105.19798869256364 LINESTRING (-104.9821886 39.7542631, -104.9822839 39.7543365, -104.9823061 39.7543535, -104.9823614 39.7543961, -104.9826308 39.7546035, -104.9829605 39.7548573, -104.9829797 39.7548721, -104.9830582 39.7549325) 1039922862 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 146.65400000000002 - LINESTRING (-104.9821886 39.7542631, -104.9821027 39.7543296, -104.9818171 39.754551, -104.9810716 39.7551289, -104.9810255 39.7551642, -104.9809805 39.7551995) + 146.21632287084122 + LINESTRING (-104.9821886 39.7542631, -104.9821027 39.7543296, -104.9818171 39.754551, -104.9810716 39.7551289, -104.9810255 39.7551642, -104.9809841 39.7551967) 236790149 - False + residential 25th Street - residential + False False - 105.198 + 105.19798869256363 LINESTRING (-104.9830582 39.7549325, -104.9829797 39.7548721, -104.9829605 39.7548573, -104.9826308 39.7546035, -104.9823614 39.7543961, -104.9823061 39.7543535, -104.9822839 39.7543365, -104.9821886 39.7542631) 236790149 - False + residential 25th Street - residential + False True - 106.187 + 106.18665668251344 LINESTRING (-104.9830582 39.7549325, -104.9831596 39.7550106, -104.983183 39.7550286, -104.9834341 39.7552217, -104.9835014 39.7552735, -104.9838538 39.7555448, -104.9839361 39.7556081) 278139935 - True + secondary 1 + 25 mph Champa Street - secondary - 25 mph + True False - 146.702 + 146.70193307601514 LINESTRING (-104.9830582 39.7549325, -104.9831525 39.7548594, -104.9841779 39.7540646, -104.9842667 39.7539958) - - [700343605, 25680149] - False + + [1297796972, 25680149] + tertiary 2 + 20 mph Arapahoe Street - tertiary - 20 mph + False False - 146.06799999999998 - LINESTRING (-104.9848031 39.7562754, -104.9847185 39.756341, -104.9839453 39.7569401, -104.9836892 39.7571385, -104.9835996 39.7572079) + 139.49622396738948 + LINESTRING (-104.9848031 39.7562754, -104.9847189 39.7563413, -104.9839497 39.7569434, -104.9836948 39.7571429, -104.9836596 39.7571704) 25680149 - False + tertiary 2 + 20 mph Arapahoe Street - tertiary - 20 mph + False True - 146.91899999999998 + 146.91874800125075 LINESTRING (-104.9848031 39.7562754, -104.9848925 39.7562067, -104.9859294 39.7554154, -104.9860225 39.7553443) 52080485 + residential 1 25th Street - residential - False + False True - 106.89 + 106.88990486101636 LINESTRING (-104.9848031 39.7562754, -104.9848989 39.7563486, -104.9851371 39.7565304, -104.9853666 39.7567056, -104.9856013 39.7568848, -104.9856903 39.7569528) 236790149 - False + residential 25th Street - residential + False False - 104.874 + 104.87467868811947 LINESTRING (-104.9848031 39.7562754, -104.9847259 39.7562161, -104.9843782 39.7559483, -104.9840294 39.7556799, -104.9839361 39.7556081) 25680151 - False + residential 2 25th Street - residential + False True - 104.71600000000001 + 104.71533319688972 LINESTRING (-104.9865535 39.757621, -104.9864688 39.7575554, -104.9864486 39.7575398, -104.986234 39.7573737, -104.9861324 39.7572951, -104.9857998 39.7570376, -104.985776 39.7570192, -104.9856903 39.7569528) [525746699, 231105086] + residential 2 25th Street - residential - False + False False - 91.499 + 91.4977780659248 LINESTRING (-104.9865535 39.757621, -104.9866407 39.7576886, -104.9866634 39.7577062, -104.9869941 39.7579624, -104.9872394 39.7579626, -104.9872673 39.7579626, -104.9874389 39.7579628) 719091071 - False + tertiary_link 2 + 30 mph Larimer Street - tertiary_link - 30 mph + False True - 146.03099999999998 + 146.0316982186533 LINESTRING (-104.9865535 39.757621, -104.9864798 39.7576781, -104.9854307 39.7584909, -104.9853503 39.7585533) [1103188739, 230983595] - False + tertiary_link 2 + 30 mph Larimer Street - tertiary_link - 30 mph + False False - 56.575 + 56.57476576130043 LINESTRING (-104.9865535 39.757621, -104.9866369 39.7575566, -104.9868563 39.7573872, -104.9870204 39.7572604) + + 628389329 + tertiary + 4 + Welton Street + False + True + 2.9691770991599316 + [305117881, 628389325] - True - ['3', '2'] + tertiary + ['2', '3'] Welton Street - tertiary + True False - 145.90300000000002 + 145.90265919784733 LINESTRING (-104.9901053 39.7454518, -104.9900226 39.7455156, -104.9895729 39.7458661, -104.9894277 39.7459793, -104.9889854 39.746324, -104.9889045 39.7463841) [964937287, 1051789263] - True - ['4', '5'] + secondary + 3 17th Street - secondary + True False - 106.1 + 106.10051160878085 LINESTRING (-104.9901053 39.7454518, -104.9900259 39.7453907, -104.9897234 39.7451577, -104.9896641 39.7451118, -104.9893107 39.7448387, -104.9892287 39.7447764) + + 130885103 + tertiary + 2 + Welton Street + True + False + 3.091600428021008 + [628378958, 130885102] - True + secondary 3 + 25 mph 18th Street - secondary - 25 mph + True False - 106.57900000000001 + 106.57956534914264 LINESTRING (-104.9889045 39.7463841, -104.9889811 39.7464424, -104.9893427 39.7467186, -104.989452 39.7468032, -104.9895541 39.7468821, -104.9897088 39.7470017, -104.9897373 39.7470234, -104.9897867 39.7470613) - - [472434857, 1093130020, 130885103] - True - ['3', '2'] - Welton Street - tertiary - False - 139.833 - LINESTRING (-104.9889045 39.7463841, -104.9888211 39.7464441, -104.9885097 39.7466592, -104.9883055 39.746792, -104.9881913 39.7468618, -104.9877077 39.7471574, -104.9876516 39.7471916) - - + 1093130021 - True + tertiary 3 + 25 mph 19th Street - tertiary - 25 mph + True False - 33.293 - LINESTRING (-104.9876516 39.7471916, -104.9875977 39.7471478, -104.9873844 39.7469738) + 18.395508532787787 + LINESTRING (-104.9876516 39.7471916, -104.9875977 39.7471478, -104.9875039 39.7470713) - + 1093130022 - True + tertiary 2 Welton Street - tertiary + True False - 29.317999999999998 - LINESTRING (-104.9876516 39.7471916, -104.9875731 39.7472396, -104.9873832 39.7473557) + 16.187293956756136 + LINESTRING (-104.9876516 39.7471916, -104.9875731 39.7472396, -104.9875034 39.7472822) 325698648 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 146.04 + 146.04016105354503 LINESTRING (-104.9852896 39.7491977, -104.9852136 39.7492567, -104.9846595 39.7496863, -104.9841806 39.7500577, -104.9840868 39.7501303) 650079086 + unclassified 2 21st Street - tertiary - False + False False - 107.69299999999998 + 107.69242361048727 LINESTRING (-104.9852896 39.7491977, -104.9852546 39.7491708, -104.9852143 39.7491399, -104.9851862 39.7491183, -104.9851691 39.7491052, -104.9849675 39.7489506, -104.9849464 39.7489344, -104.9848411 39.7488537, -104.9847408 39.7487768, -104.9844925 39.7485864, -104.9843978 39.7485137) 650079086 + unclassified 2 21st Street - tertiary - False + False True - 104.739 + 104.7386872425083 LINESTRING (-104.9852896 39.7491977, -104.9853624 39.7492535, -104.9853866 39.749272, -104.9857139 39.749523, -104.9860315 39.7497667, -104.9860602 39.7497887, -104.986157 39.7498629) 278136621 - False + residential 26th Street - residential + False False - 103.655 - LINESTRING (-104.9792549 39.7538763, -104.9793216 39.7539274, -104.9793426 39.7539435, -104.9796671 39.7541923, -104.9796898 39.7542097, -104.9800075 39.7544525, -104.9800245 39.7544655, -104.9801134 39.7545346) + 103.66063107314739 + LINESTRING (-104.979261 39.7538716, -104.9793276 39.7539228, -104.9793485 39.7539389, -104.9796726 39.7541881, -104.9796952 39.7542055, -104.9800119 39.7544491, -104.9800289 39.7544621, -104.9801183 39.7545309) 278136621 - False + residential 26th Street - residential + False True - 107.742 - LINESTRING (-104.9792549 39.7538763, -104.9791804 39.7538191, -104.9791527 39.7537979, -104.9791278 39.7537787, -104.9788003 39.753527, -104.9784815 39.753283, -104.9784463 39.7532562, -104.9783626 39.753192) + 107.29086244746176 + LINESTRING (-104.979261 39.7538716, -104.9791866 39.7538144, -104.9791589 39.7537931, -104.979134 39.7537739, -104.9788066 39.7535222, -104.9784886 39.7532776, -104.9784535 39.7532506, -104.9783737 39.7531892) [325698648, 570128144] - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 123.351 - LINESTRING (-104.9792549 39.7538763, -104.9791996 39.7539192, -104.9783571 39.7545724, -104.9783125 39.7546069, -104.9782389 39.754664) + 124.0886916598277 + LINESTRING (-104.979261 39.7538716, -104.9791996 39.7539192, -104.9783571 39.7545724, -104.9783125 39.7546069, -104.9782389 39.754664) + + + [16987012, 278136613, 325150446] + tertiary + 2 + ['27th Street', 'East 26th Avenue'] + False + [False, True] + 99.90245889270818 + LINESTRING (-104.9780529 39.7548083, -104.9779773 39.7547503, -104.9779298 39.7547173, -104.9778602 39.7546682, -104.9777889 39.75465, -104.9775593 39.7546485, -104.9774156 39.7546475, -104.9771675 39.7546458, -104.9770777 39.7546452, -104.9769607 39.7546445) [628628010, 570128141] - True + tertiary 2 27th Street - tertiary + True False - 103.429 + 103.42834265554137 LINESTRING (-104.9780529 39.7548083, -104.9781554 39.7548869, -104.9783149 39.7550094, -104.9784838 39.755139, -104.9788228 39.7553992, -104.9789091 39.7554655) 570128142 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 146.552 + 146.5517657679573 LINESTRING (-104.9780529 39.7548083, -104.9779734 39.7548699, -104.9769386 39.755672, -104.9768457 39.7557441) 674354857 - False + residential 28th Street - residential + False False - 103.218 + 103.21905818744906 LINESTRING (-104.9768457 39.7557441, -104.9769128 39.7557958, -104.9769401 39.7558168, -104.9772724 39.7560724, -104.9775965 39.7563219, -104.9776176 39.7563381, -104.9776991 39.7564008) 674354858 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 146.572 + 146.57258781918176 LINESTRING (-104.9768457 39.7557441, -104.9767684 39.755804, -104.9757317 39.7566077, -104.9756384 39.7566801) 674354859 - True + residential 28th Street - residential + False False - 56.376999999999995 + 56.37662455543874 LINESTRING (-104.9768457 39.7557441, -104.9767703 39.755686, -104.9767439 39.7556657, -104.9766525 39.7555954, -104.9763764 39.7553879) [781164694, 16985783] - False + residential 29th Street - residential + False False - 103.001 - 25 mph + 103.001441234296 + 25 mph LINESTRING (-104.9756384 39.7566801, -104.9757039 39.7567304, -104.9757135 39.7567378, -104.9758958 39.7568776, -104.9760619 39.757005, -104.976409 39.757273, -104.9764899 39.7573355) 16985783 - False + residential 29th Street - residential + False True - 109.145 + 109.14499485246085 LINESTRING (-104.9756384 39.7566801, -104.9755623 39.7566219, -104.9755356 39.7566013, -104.9755209 39.75659, -104.9751825 39.7563294, -104.975076 39.7562474, -104.9748352 39.756062, -104.974736 39.7559857) 674354858 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 145.64 + 145.64041404113905 LINESTRING (-104.9756384 39.7566801, -104.9755581 39.7567423, -104.9745258 39.7575426, -104.9744387 39.7576101) 231105088 - False + residential 2 30th Street - residential + False True - 108.262 + 108.26292864553606 LINESTRING (-104.9744387 39.7576101, -104.9743607 39.7575508, -104.9743324 39.7575288, -104.9742979 39.757502, -104.9739842 39.7572583, -104.9736326 39.7569856, -104.9735559 39.7569126) [819744385, 781164695] - False + residential 2 30th Street - residential + False False - 102.788 - 25 mph + 102.78671464100478 + 25 mph LINESTRING (-104.9744387 39.7576101, -104.9745023 39.7576593, -104.9745384 39.7576873, -104.9748567 39.7579336, -104.9752102 39.7582077, -104.975286 39.758266) [812978772, 596451653] - False + residential 2 Pennsylvania Street - residential + False [False, True] - 183.78500000000003 + 183.78380421449887 LINESTRING (-104.9811101 39.7400236, -104.9811098 39.7401278, -104.9811094 39.7402955, -104.9811089 39.7404884, -104.9811082 39.7407681, -104.9811079 39.7409143, -104.9811071 39.7412335, -104.9811063 39.7415465, -104.981106 39.7415789, -104.9811067 39.7416764) [130886458, 628643782, 628643783] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 105.24499999999999 + 105.24395325640151 LINESTRING (-104.9811101 39.7400236, -104.9812174 39.7400247, -104.9815321 39.740028, -104.981728 39.74003, -104.9818687 39.7400315, -104.9822443 39.7400345, -104.9823408 39.7400375) [628643784, 628643780, 628643781] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 103.041 + 103.0408049873165 LINESTRING (-104.9811101 39.7400236, -104.9810125 39.7400235, -104.9806577 39.7400232, -104.9804929 39.7400231, -104.980254 39.7400229, -104.9800128 39.7400227, -104.979905 39.7400223) 596723424 - False + residential 2 Pennsylvania Street - residential + False False - 178.368 + 178.36836638838733 LINESTRING (-104.981098 39.7448636, -104.9810982 39.7447672, -104.9810983 39.7447406, -104.9810991 39.7444326, -104.9811009 39.7437002, -104.9811011 39.7436138, -104.9811016 39.743391, -104.9811017 39.7433654, -104.981102 39.7432595) 596723424 - False + residential 2 Pennsylvania Street - residential + False True - 146.534 + 146.53316092970653 LINESTRING (-104.981098 39.7448636, -104.9810977 39.7449596, -104.9810977 39.7449788, -104.9810965 39.7454529, -104.981095 39.7460643, -104.9810949 39.7460879, -104.9810947 39.7461814) 1184891759 - True + secondary 3 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 105.642 + 105.6426070713991 LINESTRING (-104.981098 39.7448636, -104.981219 39.7448641, -104.9822329 39.7448683, -104.9823336 39.7448687) 34665616 + residential 2 Pennsylvania Street - residential - False + False True - 149.367 + 149.36864446489966 LINESTRING (-104.9810947 39.7461814, -104.9810944 39.7462761, -104.9810944 39.7462912, -104.9810926 39.7469883, -104.9810915 39.7474245, -104.9810914 39.7474684, -104.9810913 39.7475247) 596723424 - False + residential 2 Pennsylvania Street - residential + False False - 146.534 + 146.53316092970653 LINESTRING (-104.9810947 39.7461814, -104.9810949 39.7460879, -104.981095 39.7460643, -104.9810965 39.7454529, -104.9810977 39.7449788, -104.9810977 39.7449596, -104.981098 39.7448636) 596723425 - False + tertiary 2 East 19th Avenue - tertiary + False False - 102.72399999999999 + 102.72436286003568 LINESTRING (-104.9810947 39.7461814, -104.9809766 39.7461822, -104.9800028 39.7461822, -104.9798932 39.7461815) 1039146327 - False + tertiary 2 East 19th Avenue - tertiary + False True - 105.853 + 105.85293374444849 LINESTRING (-104.9810947 39.7461814, -104.9812165 39.7461818, -104.9817079 39.7461814, -104.982225 39.7461814, -104.9823328 39.7461815) 34665616 + residential 2 Pennsylvania Street - residential - False + False False - 149.367 + 149.36864446489966 LINESTRING (-104.9810913 39.7475247, -104.9810914 39.7474684, -104.9810915 39.7474245, -104.9810926 39.7469883, -104.9810944 39.7462912, -104.9810944 39.7462761, -104.9810947 39.7461814) 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False True - 50.818999999999996 + 50.81875631650374 LINESTRING (-104.9810913 39.7475247, -104.980975 39.7475242, -104.9804969 39.7475221) 231105093 - False + tertiary 2 East 20th Avenue - tertiary + False False - 104.26299999999999 + 104.26212112315781 LINESTRING (-104.9810913 39.7475247, -104.9812037 39.7475252, -104.981708 39.7475273, -104.9822149 39.7475296, -104.9823108 39.7475298) 781314134 + residential + 25 mph 22nd Street - tertiary - 25 mph - False + False True - 77.696 + 77.6951716491356 LINESTRING (-104.9810913 39.7475247, -104.9810956 39.7476147, -104.9810966 39.7476266, -104.9810995 39.7476595, -104.9811041 39.7477113, -104.9811211 39.74778, -104.9811424 39.7478258, -104.9811785 39.7478782, -104.9812083 39.7479108, -104.9812621 39.7479604, -104.981336 39.7480173, -104.9813981 39.7480614, -104.9814775 39.7481193) - 1122234080 - True - 4 + [1122234080, 1208967945] + secondary + ['3', '4'] 17th Street - secondary + True False - 103.44999999999999 - LINESTRING (-104.9944532 39.7487959, -104.994378 39.7487388, -104.9936995 39.7482177, -104.9935966 39.7481388) + 103.44985013897815 + LINESTRING (-104.9944532 39.7487959, -104.994378 39.7487388, -104.9938791 39.7483559, -104.9936995 39.7482177, -104.9935966 39.7481388) [133953244, 1130559318] - True + secondary ['3', '4'] 18th Street - secondary + True False - 106.05099999999999 - LINESTRING (-104.9932554 39.74972, -104.9933524 39.7497956, -104.9937092 39.7500735, -104.9939004 39.7502228, -104.9940535 39.7503417, -104.9941268 39.7503988) + 106.05163655882936 + LINESTRING (-104.9932554 39.74972, -104.9933324 39.74978, -104.9933524 39.7497956, -104.9937092 39.7500735, -104.9939004 39.7502228, -104.9940535 39.7503417, -104.9941268 39.7503988) 628393641 - True + tertiary 2 Arapahoe Street - tertiary + True False - 145.072 + 145.07127027108723 LINESTRING (-104.9932554 39.74972, -104.9933302 39.7496645, -104.994377 39.7488561, -104.9944532 39.7487959) - + 231028999 - True + tertiary 3 Arapahoe Street - tertiary + True False - 146.84 - LINESTRING (-104.9920451 39.750657, -104.9921312 39.7505916, -104.9931708 39.749788, -104.9932554 39.74972) + 142.57632234981463 + LINESTRING (-104.9920451 39.750657, -104.9921312 39.7505916, -104.9931708 39.749788, -104.9932209 39.7497477) 231029001 - True + tertiary 4 19th Street - tertiary + True False - 103.44800000000001 + 103.44800993216623 LINESTRING (-104.9920451 39.750657, -104.9919711 39.7506007, -104.9914113 39.7501677, -104.9912831 39.7500686, -104.9911919 39.7499973) 25653807 + secondary 3 + 30 mph 20th Street - secondary - 30 mph - False + False False - 103.911 - LINESTRING (-104.9908493 39.7516097, -104.9909452 39.751683, -104.9911493 39.751838, -104.9912188 39.7518907, -104.991289 39.7519439, -104.991635 39.7522055, -104.9917152 39.7522655) + 103.91026589295335 + LINESTRING (-104.9908493 39.7516097, -104.9909075 39.7516542, -104.9909452 39.751683, -104.9911493 39.751838, -104.9912188 39.7518907, -104.991289 39.7519439, -104.991635 39.7522055, -104.9917152 39.7522655) 133953243 - True + tertiary 3 Arapahoe Street - tertiary + True False - 147.219 - LINESTRING (-104.9908493 39.7516097, -104.9909332 39.7515418, -104.9915408 39.7510588, -104.9917053 39.7509277, -104.9919479 39.7507336, -104.9920451 39.750657) + 147.21849564491336 + LINESTRING (-104.9908493 39.7516097, -104.9909332 39.7515418, -104.9915408 39.7510588, -104.9917053 39.7509277, -104.9919479 39.7507336, -104.9919684 39.7507174, -104.9920451 39.750657) 501887283 + tertiary 2 21st Street - tertiary - False + False False - 106.022 + 106.02155186292929 LINESTRING (-104.9896431 39.7525389, -104.9895537 39.75247, -104.9892006 39.7521981, -104.9888759 39.7519482, -104.9888527 39.7519303, -104.9887668 39.7518642) 501887283 + tertiary 2 21st Street - tertiary - False + False True - 104.27 - LINESTRING (-104.9896431 39.7525389, -104.9897372 39.7526113, -104.989815 39.7526712, -104.9899528 39.7527773, -104.9900841 39.7528784, -104.9904306 39.7531451, -104.990505 39.7532024) + 104.26994549038437 + LINESTRING (-104.9896431 39.7525389, -104.9897006 39.7525832, -104.9897372 39.7526113, -104.989815 39.7526712, -104.9899528 39.7527773, -104.9900841 39.7528784, -104.9904306 39.7531451, -104.990505 39.7532024) [1102890685, 1102890686] - True + tertiary 3 Arapahoe Street - tertiary + True False - 145.975 + 145.97462048487597 LINESTRING (-104.9896431 39.7525389, -104.9897145 39.7524842, -104.9898395 39.7523878, -104.9900643 39.7522146, -104.9901805 39.7521251, -104.9901905 39.7521174, -104.9903201 39.7520175, -104.9904983 39.7518802, -104.9907645 39.751675, -104.9908493 39.7516097) [124661400, 1102890684] - True + tertiary 3 Arapahoe Street - tertiary + True False - 146.065 + 146.06476164140525 LINESTRING (-104.9884361 39.7534686, -104.9885183 39.7534054, -104.9885893 39.7533507, -104.9887199 39.7532501, -104.9888479 39.7531515, -104.9892271 39.7528592, -104.9892786 39.752819, -104.9893579 39.7527571, -104.989577 39.7525919, -104.9896431 39.7525389) [132260224, 935709648] - True + primary ['3', '4'] + 25 mph 22nd Street - secondary - 25 mph + True False - 106.071 + 106.07099190932644 LINESTRING (-104.9884361 39.7534686, -104.9883489 39.7534015, -104.9879967 39.7531305, -104.9879402 39.753087, -104.9878355 39.7530065, -104.9876718 39.7528805, -104.9875591 39.7527938) 596381385 - False + secondary 4 + 30 mph Park Avenue West - secondary - 30 mph + False False - 19.832 + 19.832507942502453 LINESTRING (-104.9872202 39.7544058, -104.9872742 39.7544474, -104.9873844 39.7545318) [1102890683, 596381390] - True + tertiary 2 Arapahoe Street - tertiary + True False - 146.196 + 146.19580176125453 LINESTRING (-104.9872202 39.7544058, -104.987141 39.7544686, -104.9870432 39.7545451, -104.9867887 39.7547443, -104.9861073 39.7552778, -104.9860225 39.7553443) [130921918, 628378532, 1123333030] - False - ['4', '3'] + secondary + ['3', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False True - 105.51599999999999 + 105.51752846660239 LINESTRING (-104.9872202 39.7544058, -104.9871523 39.7543532, -104.9867867 39.7540724, -104.9866259 39.7539501, -104.9864302 39.7538005, -104.9863465 39.7537355) 25680149 - False + tertiary 2 + 20 mph Arapahoe Street - tertiary - 20 mph + False False - 146.919 + 146.91874800125075 LINESTRING (-104.9860225 39.7553443, -104.9859294 39.7554154, -104.9848925 39.7562067, -104.9848031 39.7562754) 1175102790 - False + residential 2 24th Street - residential + False True - 106.144 + 106.14389603026778 LINESTRING (-104.9860225 39.7553443, -104.9859309 39.7552739, -104.9855882 39.7550105, -104.9852641 39.7547614, -104.9852358 39.7547396, -104.9851444 39.7546694) [701725179, 1178149438] - False + residential 2 24th Street - residential + False False - 105.889 + 105.88888844910127 LINESTRING (-104.9860225 39.7553443, -104.9860697 39.7553808, -104.9861131 39.7554139, -104.9864583 39.7556792, -104.986786 39.755931, -104.98681 39.7559495, -104.9868986 39.7560175) - - 278136621 - False - 26th Street - residential - False - 106.788 - LINESTRING (-104.9835996 39.7572079, -104.983682 39.757271, -104.9838876 39.7574289, -104.9844174 39.7578349, -104.9844841 39.7578861) - - - 278136621 - False - 26th Street - residential - True - 104.672 - LINESTRING (-104.9835996 39.7572079, -104.9835208 39.7571476, -104.9831736 39.7568812, -104.9828466 39.7566305, -104.9828261 39.7566148, -104.9827327 39.7565431) - - - 700343605 - False - 2 - Arapahoe Street - tertiary - False - 146.27100000000002 - LINESTRING (-104.9835996 39.7572079, -104.9835122 39.7572756, -104.9824777 39.7580772, -104.9823944 39.7581417) - - - [25680149, 700343605] - False - 2 - Arapahoe Street - tertiary - True - 146.06799999999998 - 20 mph - LINESTRING (-104.9835996 39.7572079, -104.9836892 39.7571385, -104.9839453 39.7569401, -104.9847185 39.756341, -104.9848031 39.7562754) - 278136619 - False + unclassified 2 27th Street - tertiary + False False - 106.69500000000001 - LINESTRING (-104.9823944 39.7581417, -104.9824783 39.7582061, -104.9828421 39.7584854, -104.9831942 39.7587555, -104.9832142 39.7587708, -104.9832775 39.7588198) + 106.6951986625513 + LINESTRING (-104.9823944 39.7581417, -104.982484 39.758211, -104.9828421 39.7584854, -104.9831942 39.7587555, -104.9832102 39.7587678, -104.9832775 39.7588198) 278136619 - False + unclassified 2 27th Street - tertiary + False True - 104.482 + 104.48261759477963 LINESTRING (-104.9823944 39.7581417, -104.9823178 39.7580829, -104.9819684 39.7578146, -104.9816231 39.7575494, -104.9815297 39.7574776) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False False - 147.145 + 147.14580242459348 LINESTRING (-104.9823944 39.7581417, -104.982315 39.7582042, -104.9812765 39.7590079, -104.981182 39.7590811) - + 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False True - 146.27100000000002 - LINESTRING (-104.9823944 39.7581417, -104.9824777 39.7580772, -104.9835122 39.7572756, -104.9835996 39.7572079) + 139.94393282334855 + LINESTRING (-104.9823944 39.7581417, -104.982478 39.7580775, -104.9835181 39.7572788, -104.9835527 39.7572523) [805899089, 674354857] - False + residential 28th Street - residential + False False - 106.606 + 106.6055759782852 LINESTRING (-104.981182 39.7590811, -104.9812695 39.7591483, -104.9813011 39.7591726, -104.9816257 39.7594224, -104.9819815 39.7596957, -104.9820635 39.7597593) 674354857 - False + residential 28th Street - residential + False True - 104.283 + 104.28363258810795 LINESTRING (-104.981182 39.7590811, -104.9811072 39.7590234, -104.9810807 39.759003, -104.9807563 39.7587533, -104.9804234 39.7584972, -104.9804093 39.7584864, -104.9803198 39.7584176) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False False - 145.975 + 145.97450584002942 LINESTRING (-104.981182 39.7590811, -104.9810996 39.759145, -104.9800663 39.7599456, -104.9799792 39.760013) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False True - 147.145 + 147.14580242459348 LINESTRING (-104.981182 39.7590811, -104.9812765 39.7590079, -104.982315 39.7582042, -104.9823944 39.7581417) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False False - 146.754 + 146.7535741339849 LINESTRING (-104.9799792 39.760013, -104.9798903 39.7600819, -104.978856 39.7608828, -104.97877 39.7609499) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False True - 145.975 + 145.97450584002942 LINESTRING (-104.9799792 39.760013, -104.9800663 39.7599456, -104.9810996 39.759145, -104.981182 39.7590811) 781164697 - False + residential 29th Street - residential + False False - 106.51299999999999 + 106.51315688223876 LINESTRING (-104.9799792 39.760013, -104.9800659 39.76008, -104.9804198 39.7603532, -104.9807898 39.7606389, -104.9808584 39.7606918) 781164697 - False + residential 29th Street - residential + False True - 104.1 + 104.09999002308422 LINESTRING (-104.9799792 39.760013, -104.9799047 39.7599555, -104.9795537 39.7596845, -104.9792092 39.7594185, -104.9791199 39.7593496) 231105077 - False + residential 30th Street - residential + False False - 106.431 + 106.43053784641235 LINESTRING (-104.97877 39.7609499, -104.9788642 39.7610224, -104.9792089 39.7612878, -104.9795811 39.7615744, -104.9796498 39.7616272) 231105077 - False + residential 30th Street - residential + False True - 103.898 + 103.89771096296131 LINESTRING (-104.97877 39.7609499, -104.9786934 39.7608908, -104.9783437 39.7606216, -104.9780265 39.7603773, -104.9779986 39.7603558, -104.9779113 39.7602886) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False False - 145.226 + 145.22641018009978 LINESTRING (-104.97877 39.7609499, -104.9786889 39.7610127, -104.9782671 39.7613395, -104.9780278 39.7615249, -104.9776519 39.7618161, -104.9775733 39.761877) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False True - 146.754 + 146.7535741339849 LINESTRING (-104.97877 39.7609499, -104.978856 39.7608828, -104.9798903 39.7600819, -104.9799792 39.760013) 389063559 - False + tertiary 2 Arapahoe Street - tertiary + False False - 38.592 + 38.59210861379577 LINESTRING (-104.9739671 39.7646848, -104.973882 39.7647516, -104.9736515 39.764933) [700343605, 389063559] - False + tertiary 2 Arapahoe Street - tertiary + False True - 144.827 + 144.82652834221764 LINESTRING (-104.9739671 39.7646848, -104.9740416 39.764626, -104.9745586 39.7642192, -104.9746546 39.7641437, -104.9750799 39.76381, -104.9751515 39.7637534) 572419638 - False + residential 34th Street - residential + False True - 105.00199999999998 + 105.00013459591148 LINESTRING (-104.9739671 39.7646848, -104.9740485 39.7647473, -104.9740656 39.7647604, -104.974405 39.7650213, -104.9747517 39.7652877, -104.9747653 39.7652982, -104.9748359 39.7653524) 16984097 - True + secondary 2 + 25 mph Walnut Street - secondary - 25 mph + True False - 146.739 + 146.73876217932528 LINESTRING (-104.9898406 39.7564245, -104.9897551 39.75649, -104.9886304 39.7573604) - [16984097, 1121182172] - True + [16984097, 1121182172, 1300764622] + secondary 2 + 25 mph Walnut Street - secondary - 25 mph + True False - 142.97799999999998 + 142.97843293005002 LINESTRING (-104.9886304 39.7573604, -104.9884671 39.7574867, -104.9883324 39.757591, -104.9880887 39.757777, -104.9877901 39.7580053, -104.9877858 39.7580083, -104.9876001 39.7581607, -104.9874483 39.7582698) 701725177 - False + residential 2 24th Street - residential + False True - 105.77300000000001 - LINESTRING (-104.9886304 39.7573604, -104.9885709 39.7573059, -104.9885258 39.757279, -104.9882105 39.7570336, -104.9878947 39.7567878, -104.9878686 39.7567675, -104.9877614 39.7566841) + 105.7725523429721 + LINESTRING (-104.9886304 39.7573604, -104.9885973 39.7573301, -104.9885709 39.7573059, -104.9885258 39.757279, -104.9882105 39.7570336, -104.9878947 39.7567878, -104.9878686 39.7567675, -104.9877614 39.7566841) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 146.031 + 146.0312827033962 LINESTRING (-104.9862206 39.7592236, -104.9861339 39.7592907, -104.9858328 39.7595235, -104.9850979 39.7600919, -104.9850162 39.760155) - - [325696452, 807837764] - 2 - Walnut Street - tertiary - 30 mph - False - True - 149.206 - LINESTRING (-104.9862206 39.7592236, -104.986301 39.7591614, -104.9865692 39.758954, -104.9872935 39.7583939, -104.9874483 39.7582698) - 719091072 - False + residential 26th Street - residential + False True - 105.30799999999999 + 105.308127218226 LINESTRING (-104.9862206 39.7592236, -104.9861695 39.7591837, -104.9861228 39.7591483, -104.9857869 39.7588896, -104.9854564 39.758635, -104.9854403 39.7586226, -104.9853503 39.7585533) + + [1222072404, 807837764] + tertiary + 2 + 30 mph + Walnut Street + False + True + 149.20598405049088 + LINESTRING (-104.9862206 39.7592236, -104.986301 39.7591614, -104.9865692 39.758954, -104.9872935 39.7583939, -104.9874483 39.7582698) + 278136619 - False + unclassified 2 27th Street - tertiary + False False - 105.02 + 105.01997633784416 LINESTRING (-104.9850162 39.760155, -104.9851164 39.7602315, -104.9851255 39.7602385, -104.9853588 39.760418, -104.9854689 39.7605027, -104.9856358 39.7606308, -104.9858014 39.760758, -104.9858854 39.7608225) 278136619 - False + unclassified 2 27th Street - tertiary + False True - 105.178 + 105.17763061814327 LINESTRING (-104.9850162 39.760155, -104.9849419 39.7600981, -104.9849269 39.7600866, -104.9845895 39.7598273, -104.9842376 39.7595571, -104.9841457 39.7594865) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 147.46000000000004 + 147.4592868659331 LINESTRING (-104.9850162 39.760155, -104.9849265 39.7602243, -104.9845882 39.7604856, -104.9838938 39.761022, -104.9838 39.7610955) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False True - 146.031 + 146.0312827033962 LINESTRING (-104.9850162 39.760155, -104.9850979 39.7600919, -104.9858328 39.7595235, -104.9861339 39.7592907, -104.9862206 39.7592236) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 146.31500000000003 + 146.31489494634923 LINESTRING (-104.9825916 39.76203, -104.9825134 39.7620905, -104.9819604 39.7625181, -104.981731 39.7626955, -104.9814752 39.7628933, -104.9813848 39.7629632) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False True - 146.51500000000001 + 146.51482325892422 LINESTRING (-104.9825916 39.76203, -104.9826701 39.7619692, -104.9829204 39.7617758, -104.9833789 39.7614212, -104.9837214 39.7611563, -104.9838 39.7610955) 1182413373 - False + residential 29th Street - residential + False False - 105.11699999999999 + 105.11675191382372 LINESTRING (-104.9825916 39.76203, -104.9826938 39.7621089, -104.9827078 39.7621197, -104.983049 39.7623831, -104.983364 39.7626263, -104.9833887 39.7626454, -104.9834593 39.7626999) 1182413373 - False + residential 29th Street - residential + False True - 104.912 + 104.9123149430457 LINESTRING (-104.9825916 39.76203, -104.9825433 39.7619927, -104.9825281 39.761981, -104.9823862 39.7618714, -104.9821646 39.7617003, -104.9818516 39.7614586, -104.9818267 39.7614395, -104.9817256 39.7613614) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 146.32199999999997 + 146.3220902752978 LINESTRING (-104.9813848 39.7629632, -104.9813076 39.763023, -104.9809817 39.763275, -104.9803826 39.7637376, -104.9803399 39.7637713, -104.980178 39.7638965) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False True - 146.315 + 146.31489494634923 LINESTRING (-104.9813848 39.7629632, -104.9814752 39.7628933, -104.981731 39.7626955, -104.9819604 39.7625181, -104.9825134 39.7620905, -104.9825916 39.76203) 819744387 - False + residential 30th Street - residential + False False - 105.165 + 105.1653630359383 LINESTRING (-104.9813848 39.7629632, -104.9814949 39.763048, -104.9815062 39.7630567, -104.9815739 39.7631087, -104.9818412 39.7633146, -104.9820451 39.7634716, -104.9821617 39.7635614, -104.9821838 39.7635784, -104.9822541 39.7636325) 819744387 - False + residential 30th Street - residential + False True - 104.77799999999999 + 104.77772993588654 LINESTRING (-104.9813848 39.7629632, -104.9813207 39.7629139, -104.9813052 39.7629019, -104.9809576 39.7626343, -104.9806397 39.7623894, -104.9806156 39.7623709, -104.9805188 39.7622963) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 146.453 + 146.45301739312657 LINESTRING (-104.978981 39.7648216, -104.9789019 39.7648833, -104.9783202 39.7653331, -104.9778563 39.7656918, -104.9777733 39.7657559) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False True - 145.083 + 145.0837819823257 LINESTRING (-104.978981 39.7648216, -104.9790686 39.7647546, -104.979381 39.7645129, -104.9798226 39.7641713, -104.980178 39.7638965) 505662289 - False + residential 32nd Street - residential + False False - 105.298 + 105.2977753511278 LINESTRING (-104.978981 39.7648216, -104.9790755 39.7648934, -104.9794359 39.7651694, -104.9797626 39.7654195, -104.9797779 39.7654312, -104.9798542 39.7654896) 505662289 - False + residential 32nd Street - residential + False True - 104.47800000000001 + 104.47719745681886 LINESTRING (-104.978981 39.7648216, -104.9789085 39.7647655, -104.9787597 39.7646515, -104.9785656 39.764503, -104.978211 39.7642319, -104.9781154 39.7641582) 231108460 - False + residential 34th Street - residential + False False - 105.41999999999999 + 105.42002957875444 LINESTRING (-104.9765766 39.7666852, -104.9766777 39.7667623, -104.9766896 39.7667714, -104.9770258 39.7670278, -104.9773749 39.7672941, -104.9773935 39.7673083, -104.9774521 39.767353) 325121348 + tertiary 2 Walnut Street - tertiary - False + False False - 145.716 + 145.71560490227756 LINESTRING (-104.9765766 39.7666852, -104.9764921 39.7667508, -104.9761547 39.7670128, -104.9759093 39.7672034, -104.9754673 39.7675483, -104.9753772 39.7676165) 959622560 - False + residential 34th Street - residential + False True - 104.547 + 104.54687661849786 LINESTRING (-104.9765766 39.7666852, -104.9765082 39.766633, -104.9764981 39.7666253, -104.9763424 39.7665065, -104.9761472 39.7663576, -104.9758135 39.7661031, -104.9758016 39.766094, -104.9757084 39.7660229) 959622561 + tertiary 2 Walnut Street - tertiary - False + False True - 145.39600000000002 + 145.39578379504513 LINESTRING (-104.9765766 39.7666852, -104.9766383 39.7666366, -104.9772389 39.7661699, -104.9776914 39.7658183, -104.9777733 39.7657559) 16984744 - False + residential 35th Street - residential + False False - 105.53099999999999 + 105.53071401726518 LINESTRING (-104.9753772 39.7676165, -104.9754713 39.7676887, -104.9754817 39.7676967, -104.9756455 39.7678223, -104.975821 39.7679568, -104.9761475 39.7682072, -104.9761677 39.768223, -104.9762513 39.7682868) 16984744 - False + residential 35th Street - residential + False True - 104.179 + 104.1779950782215 LINESTRING (-104.9753772 39.7676165, -104.9753009 39.767558, -104.975288 39.7675481, -104.974947 39.7672866, -104.9746241 39.767039, -104.9746039 39.7670235, -104.9745143 39.7669548) 325121348 + tertiary 2 Walnut Street - tertiary - False + False True - 145.716 + 145.71560490227756 LINESTRING (-104.9753772 39.7676165, -104.9754673 39.7675483, -104.9759093 39.7672034, -104.9761547 39.7670128, -104.9764921 39.7667508, -104.9765766 39.7666852) 318915714 - True + secondary 2 + 25 mph Stout Street - secondary - 25 mph + True False - 146.68699999999998 + 146.68805746182485 LINESTRING (-104.9894316 39.7486371, -104.9893603 39.7486918, -104.9883021 39.7495151, -104.9882254 39.7495753) [628378952, 628378953] - True + tertiary 3 + 25 mph 19th Street - tertiary - 25 mph + True False - 102.233 + 102.23375637139397 LINESTRING (-104.9894316 39.7486371, -104.9893826 39.7485973, -104.9893572 39.7485767, -104.9891474 39.7484063, -104.9886959 39.7480397, -104.9886508 39.748003, -104.9886094 39.7479695) 589989823 - True + tertiary 4 + 25 mph 19th Street - tertiary - 25 mph + True False - 107.28599999999999 + 107.2853220463016 LINESTRING (-104.9903143 39.7493229, -104.99023 39.7492573, -104.9901611 39.7492038, -104.9895336 39.7487155, -104.9894316 39.7486371) - + [628389298, 628389295] - True - ['3', '2'] + secondary + ['2', '3'] + 25 mph Champa Street - secondary - 25 mph + True False - 146.038 - LINESTRING (-104.9903143 39.7493229, -104.9903979 39.7492578, -104.9910858 39.7487261, -104.9912362 39.7486099, -104.9914367 39.7484549, -104.991519 39.7483918) + 143.34465816957677 + LINESTRING (-104.9903143 39.7493229, -104.9903979 39.7492578, -104.9910858 39.7487261, -104.9912362 39.7486099, -104.9914367 39.7484549, -104.9914967 39.7484089) 121309483 - True + tertiary 3 + 25 mph Lawrence Street - tertiary - 25 mph + True False - 146.118 - LINESTRING (-104.9929197 39.7513332, -104.9928264 39.7514054, -104.992404 39.7517323, -104.9923252 39.7517933, -104.9917954 39.7522034, -104.9917152 39.7522655) + 146.11660763978398 + LINESTRING (-104.9929197 39.7513332, -104.9928539 39.7513841, -104.9928264 39.7514054, -104.992404 39.7517323, -104.9923252 39.7517933, -104.9917954 39.7522034, -104.9917152 39.7522655) 133953242 - True + tertiary 4 19th Street - tertiary + True False - 106.03800000000001 - LINESTRING (-104.9929197 39.7513332, -104.9928432 39.7512741, -104.9926444 39.7511204, -104.9925155 39.7510207, -104.9924974 39.7510067, -104.9921566 39.7507432, -104.9920451 39.750657) + 106.03804075888753 + LINESTRING (-104.9929197 39.7513332, -104.9928432 39.7512741, -104.9926444 39.7511204, -104.9925155 39.7510207, -104.9924974 39.7510067, -104.9921566 39.7507432, -104.9920947 39.7506953, -104.9920451 39.750657) - + 130911264 - True + tertiary 4 Larimer Street - tertiary + True False - 146.893 - LINESTRING (-104.993798 39.7520123, -104.993887 39.7519426, -104.9949193 39.751133, -104.9950021 39.7510699) + 143.77030656174395 + LINESTRING (-104.993798 39.7520123, -104.993887 39.7519426, -104.9949193 39.751133, -104.9949762 39.7510897) 133953242 - True + tertiary 4 19th Street - tertiary + True False - 106.489 + 106.48921337751011 LINESTRING (-104.993798 39.7520123, -104.9937108 39.7519449, -104.993372 39.7516829, -104.9930208 39.7514114, -104.9929197 39.7513332) - 130911259 - True + [130911259, 1333007391] + secondary 2 + 25 mph Market Street - secondary - 25 mph + True False - 148.09400000000002 - LINESTRING (-104.9946844 39.7526835, -104.994593 39.7527561, -104.9937255 39.7534218, -104.993624 39.7534997, -104.993553 39.7535529, -104.9934602 39.7536258) + 148.09435893339344 + LINESTRING (-104.9946844 39.7526835, -104.9946381 39.7527203, -104.994593 39.7527561, -104.9937255 39.7534218, -104.993624 39.7534997, -104.993553 39.7535529, -104.9934602 39.7536258) 130911261 - True + tertiary 3 19th Street - tertiary - False - 106.362 - LINESTRING (-104.9946844 39.7526835, -104.9946 39.7526218, -104.994238 39.7523455, -104.9938947 39.7520858, -104.993798 39.7520123) - - - 16984945 - False - 28th Street - residential - 25 mph - False - 50.190000000000005 - LINESTRING (-104.9757573 39.7546246, -104.9757589 39.7547301, -104.9757606 39.7547591, -104.9757625 39.7547931, -104.9757651 39.7548147, -104.9757704 39.7548382, -104.9757786 39.7548645, -104.9757896 39.7548926, -104.9758011 39.7549163, -104.9758175 39.7549388, -104.9758258 39.7549486, -104.9758519 39.7549751, -104.9758692 39.7549902, -104.9759271 39.7550372) - - - 278136613 - False - 2 - East 26th Avenue - tertiary + True False - 79.578 - LINESTRING (-104.9757573 39.7546246, -104.9756466 39.7546246, -104.9751619 39.7546245, -104.9748264 39.7546245) - - - 278136613 - False - 2 - East 26th Avenue - tertiary - True - 102.889 - LINESTRING (-104.9757573 39.7546246, -104.9758795 39.7546246, -104.9763654 39.7546247, -104.9765058 39.7546247, -104.9768619 39.7546247, -104.9769609 39.7546247) - - - [1173823101, 550013301] - 2 - Emerson Street - residential - False - True - 152.261 - LINESTRING (-104.9757573 39.7546246, -104.9757573 39.7545406, -104.9757574 39.7545261, -104.9757658 39.7533462, -104.9757658 39.7532553) + 106.36173080093243 + LINESTRING (-104.9946844 39.7526835, -104.9946398 39.7526509, -104.9946 39.7526218, -104.994238 39.7523455, -104.9938947 39.7520858, -104.993798 39.7520123) 16988400 - True + residential 1 Ogden Street - residential + False False - 27.858 - LINESTRING (-104.9745694 39.7546245, -104.974529 39.7547254, -104.9744721 39.7548636) + 27.44395500640882 + LINESTRING (-104.9745694 39.7546284, -104.974529 39.7547254, -104.9744721 39.7548636) 16989076 - False + residential 2 Ogden Street - residential + False False - 152.581 - LINESTRING (-104.9745694 39.7546245, -104.9745694 39.7545375, -104.9745694 39.7544991, -104.9745697 39.7540866, -104.9745697 39.7540043, -104.9745699 39.753664, -104.97457 39.7533791, -104.97457 39.753342, -104.9745701 39.7532523) + 153.01557056265528 + LINESTRING (-104.9745694 39.7546284, -104.9745694 39.7545375, -104.9745694 39.7544991, -104.9745697 39.7540866, -104.9745697 39.7540043, -104.9745699 39.753664, -104.97457 39.7533791, -104.97457 39.753342, -104.9745701 39.7532523) 278136613 - False + tertiary 2 East 26th Avenue - tertiary + False True - 21.97 - LINESTRING (-104.9745694 39.7546245, -104.9746801 39.7546245, -104.9748264 39.7546245) + 21.9620917961436 + LINESTRING (-104.9745694 39.7546284, -104.97468 39.7546292, -104.9748263 39.7546301) [427849110, 944276932, 427849109, 461904630] - True - ['4', '5'] + primary + ['5', '4'] + 30 mph Lincoln Street - primary - 30 mph + True False - 48.037000000000006 - LINESTRING (-104.9861113 39.7475235, -104.9861111 39.7475691, -104.98611 39.747724, -104.9861094 39.7478097, -104.9861098 39.7479555) + 48.03677869355686 + LINESTRING (-104.9861113 39.7475235, -104.9861111 39.7475691, -104.98611 39.747724, -104.9861097 39.747746, -104.9861094 39.7478097, -104.9861098 39.7479555) [724130528, 128948347] - True + tertiary East 20th Avenue - residential + True False - 98.419 + 98.41887143653781 LINESTRING (-104.9861113 39.7475235, -104.9859814 39.7475252, -104.9857404 39.7475284, -104.9856656 39.7475294, -104.9854814 39.7475319, -104.9849603 39.7475388) 231105093 - False + tertiary 2 East 20th Avenue - tertiary + False False - 110.247 + 110.24672715208307 LINESTRING (-104.9823108 39.7475298, -104.9824438 39.7475303, -104.9829391 39.7475324, -104.9834815 39.7475346, -104.9836003 39.7475351) 231105093 - False + tertiary 2 East 20th Avenue - tertiary + False True - 104.26299999999999 + 104.26212112315783 LINESTRING (-104.9823108 39.7475298, -104.9822149 39.7475296, -104.981708 39.7475273, -104.9812037 39.7475252, -104.9810913 39.7475247) 505660819 - False + tertiary 2 Logan Street - tertiary + False True - 149.936 + 149.9361463508386 LINESTRING (-104.9823108 39.7475298, -104.9823118 39.7474713, -104.982331 39.7462793, -104.9823328 39.7461815) 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False False - 52.529 + 52.52868418115331 LINESTRING (-104.9798825 39.7475194, -104.9799998 39.7475199, -104.980158 39.7475206, -104.9804969 39.7475221) 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False True - 98.423 + 98.42291862338888 LINESTRING (-104.9798825 39.7475194, -104.9797999 39.747519, -104.9787313 39.7475143) 798188480 + residential 2 Pearl Street - residential - False + False True - 148.771 + 148.77072107201408 LINESTRING (-104.9798825 39.7475194, -104.9798829 39.7474654, -104.9798832 39.7474314, -104.9798867 39.7469885, -104.979888 39.7468321, -104.9798923 39.7462923, -104.9798925 39.746273, -104.9798932 39.7461815) 119422847 + tertiary 2 Washington Street - tertiary - False + False False - 148.20100000000002 + 148.2008292623952 LINESTRING (-104.9787313 39.7475143, -104.9787313 39.7474627, -104.9787321 39.7462893, -104.9787321 39.7462692, -104.9787322 39.7461815) 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False False - 98.423 + 98.42291862338888 LINESTRING (-104.9787313 39.7475143, -104.9797999 39.747519, -104.9798825 39.7475194) 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False True - 41.808 + 41.80747139272021 LINESTRING (-104.9787313 39.7475143, -104.9784726 39.7475132, -104.9782423 39.7475122) 52867702 - False + secondary 4 + 30 mph Park Avenue West - secondary - 30 mph + False False - 47.536 + 47.53597805541413 LINESTRING (-104.9782423 39.7475122, -104.9784244 39.7476515, -104.978637 39.7478133) 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False False - 41.808 + 41.80747139272021 LINESTRING (-104.9782423 39.7475122, -104.9784726 39.7475132, -104.9787313 39.7475143) 131612981 - False + tertiary 2 Washington Street - tertiary + False False - 47.442 + 47.4419547254401 LINESTRING (-104.9782423 39.7475122, -104.9781622 39.7476216, -104.9781588 39.7479227) 131612983 - False + secondary 4 + 30 mph Park Avenue - secondary - 30 mph + False True - 83.146 + 83.1465949962137 LINESTRING (-104.9782423 39.7475122, -104.9781146 39.7474093, -104.9776689 39.7470503, -104.9775708 39.7469713) 231105075 - False + tertiary 2 East 20th Avenue - tertiary + False True - 57.902 + 57.90211207489688 LINESTRING (-104.9782423 39.7475122, -104.9779687 39.7475053, -104.9775654 39.7474952) 52959213 + tertiary 3 Clarkson Street - tertiary - False + False False - 58.257 + 58.256936194632345 LINESTRING (-104.9775654 39.7474952, -104.9775664 39.7473962, -104.9775667 39.7473701, -104.9775675 39.7472902, -104.977569 39.7471497, -104.9775708 39.7469713) 131612984 - False + tertiary 2 East 20th Avenue - tertiary + False True - 50.867000000000004 + 50.86633535773179 LINESTRING (-104.9775654 39.7474952, -104.9774569 39.7474932, -104.9769706 39.7474844) 231105075 - False + tertiary 2 East 20th Avenue - tertiary + False False - 57.902 + 57.90211207489688 LINESTRING (-104.9775654 39.7474952, -104.9779687 39.7475053, -104.9782423 39.7475122) 131612984 - False + tertiary 2 East 20th Avenue - tertiary + False False - 50.867000000000004 + 50.86633535773179 LINESTRING (-104.9769706 39.7474844, -104.9774569 39.7474932, -104.9775654 39.7474952) 131612990 + residential 2 Clarkson Street - residential - False + False True - 223.226 + 223.2252349896517 LINESTRING (-104.9769706 39.7474844, -104.9769702 39.7475834, -104.9769701 39.7476137, -104.976968 39.7481329, -104.9769659 39.7486361, -104.9769631 39.7493379, -104.9769629 39.7493819, -104.9769628 39.7493983, -104.9769624 39.7494919) 1173823099 - False + tertiary 2 East 20th Avenue - tertiary + False False - 69.611 + 69.61075877598383 LINESTRING (-104.9769706 39.7474844, -104.9768873 39.747484, -104.9763779 39.7474819, -104.976265 39.7474814, -104.9761564 39.7474809) [231105090, 1173823095] + residential Emerson Street - residential - False + False True - 144.9 + 144.9002370342448 LINESTRING (-104.9761564 39.7474809, -104.9761568 39.7473905, -104.9761617 39.7462895, -104.976161 39.7462665, -104.9761621 39.7461778) 1173823099 - False + tertiary 2 East 20th Avenue - tertiary + False True - 69.61099999999999 + 69.61075877598383 LINESTRING (-104.9761564 39.7474809, -104.976265 39.7474814, -104.9763779 39.7474819, -104.9768873 39.747484, -104.9769706 39.7474844) 1173823100 - False + tertiary 2 East 20th Avenue - tertiary + False False - 33.001 + 33.001385931557785 LINESTRING (-104.9761564 39.7474809, -104.9760095 39.7474802, -104.9757704 39.7474793) 16985352 + residential 2 Emerson Street - residential - False + False False - 223.29099999999997 + 223.29089076371628 LINESTRING (-104.9757704 39.7474793, -104.9757703 39.7475828, -104.9757703 39.7476176, -104.975769 39.7492195, -104.9757689 39.7493894, -104.9757688 39.7494874) 186399975 - False + tertiary 2 East 20th Avenue - tertiary + False False - 91.635 + 91.6345045073476 LINESTRING (-104.9757704 39.7474793, -104.9754433 39.7474779, -104.9751821 39.7474767, -104.9748317 39.7474752, -104.9746986 39.7474747) 1173823100 - False + tertiary 2 East 20th Avenue - tertiary + False True - 33.001 + 33.001385931557785 LINESTRING (-104.9757704 39.7474793, -104.9760095 39.7474802, -104.9761564 39.7474809) 16989076 - False + residential 2 Ogden Street - residential + False True - 225.769 + 225.76964557722607 LINESTRING (-104.9746986 39.7474747, -104.9746567 39.747535, -104.974624 39.7475806, -104.9745919 39.7476295, -104.9745755 39.7476749, -104.9745728 39.7477107, -104.974572 39.7493521, -104.974572 39.7493832, -104.9745719 39.7494829) 186399975 - False + tertiary 2 East 20th Avenue - tertiary + False True - 91.63499999999999 + 91.6345045073476 LINESTRING (-104.9746986 39.7474747, -104.9748317 39.7474752, -104.9751821 39.7474767, -104.9754433 39.7474779, -104.9757704 39.7474793) [691564659, 279927540] - False + tertiary 2 Ogden Street - tertiary + False False - 146.299 + 146.29788525561122 LINESTRING (-104.9746986 39.7474747, -104.9747415 39.7474064, -104.9747492 39.7473865, -104.9747578 39.7473641, -104.9747704 39.7473122, -104.9747724 39.7472575, -104.9747721 39.7471524, -104.9747713 39.7469283, -104.9747711 39.7468396, -104.9747707 39.7467131, -104.9747692 39.7462568, -104.9747689 39.7461693) 16984744 - False + residential 35th Street - residential + False False - 106.07100000000001 - LINESTRING (-104.9736357 39.7662811, -104.9737289 39.7663525, -104.9737542 39.7663719, -104.9740837 39.7666246, -104.9744029 39.7668694, -104.9744274 39.7668882, -104.9745143 39.7669548) + 106.05698722400356 + LINESTRING (-104.9736358 39.7662812, -104.9737289 39.7663525, -104.9737542 39.7663719, -104.9740837 39.7666246, -104.9744029 39.7668694, -104.9744274 39.7668882, -104.9745143 39.7669548) - [409342461, 1175102775] - False + [1201623835, 1175102775] + tertiary 2 Lawrence Street - residential + False True - 145.559 - LINESTRING (-104.9736357 39.7662811, -104.9737207 39.7662153, -104.9747498 39.7654189, -104.9748359 39.7653524) + 145.5607074391553 + LINESTRING (-104.9736358 39.7662812, -104.9737207 39.7662153, -104.9747498 39.7654189, -104.9748359 39.7653524) 16984744 - False + residential 35th Street - residential + False False - 104.179 + 104.1779950782215 LINESTRING (-104.9745143 39.7669548, -104.9746039 39.7670235, -104.9746241 39.767039, -104.974947 39.7672866, -104.975288 39.7675481, -104.9753009 39.767558, -104.9753772 39.7676165) 16984744 - False + residential 35th Street - residential + False True - 106.07100000000001 - LINESTRING (-104.9745143 39.7669548, -104.9744274 39.7668882, -104.9744029 39.7668694, -104.9740837 39.7666246, -104.9737542 39.7663719, -104.9737289 39.7663525, -104.9736357 39.7662811) + 106.05698722400354 + LINESTRING (-104.9745143 39.7669548, -104.9744274 39.7668882, -104.9744029 39.7668694, -104.9740837 39.7666246, -104.9737542 39.7663719, -104.9737289 39.7663525, -104.9736358 39.7662812) 230983600 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 145.446 + 145.44524165492618 LINESTRING (-104.9745143 39.7669548, -104.9746003 39.7668866, -104.9749093 39.7666438, -104.9752014 39.7664169, -104.9756268 39.7660863, -104.9757084 39.7660229) 278136619 - False + unclassified 2 27th Street - tertiary + False True - 105.01999999999998 + 105.01997633784416 LINESTRING (-104.9858854 39.7608225, -104.9858014 39.760758, -104.9856358 39.7606308, -104.9854689 39.7605027, -104.9853588 39.760418, -104.9851255 39.7602385, -104.9851164 39.7602315, -104.9850162 39.760155) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False True - 147.568 - LINESTRING (-104.9858854 39.7608225, -104.9858002 39.7608885, -104.9851882 39.761362, -104.9847249 39.7617205, -104.9846687 39.761764) + 147.56730637472535 + LINESTRING (-104.9858854 39.7608225, -104.9858002 39.7608885, -104.9852486 39.7613153, -104.9851882 39.761362, -104.9847249 39.7617205, -104.9846687 39.761764) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False False - 147.568 - LINESTRING (-104.9846687 39.761764, -104.9847249 39.7617205, -104.9851882 39.761362, -104.9858002 39.7608885, -104.9858854 39.7608225) + 147.56730637472535 + LINESTRING (-104.9846687 39.761764, -104.9847249 39.7617205, -104.9851882 39.761362, -104.9852486 39.7613153, -104.9858002 39.7608885, -104.9858854 39.7608225) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False True - 146.686 + 146.68481890081753 LINESTRING (-104.9846687 39.761764, -104.9841567 39.7621598, -104.983798 39.7624375, -104.9835526 39.7626274, -104.9834593 39.7626999) 805899089 - False + residential 28th Street - residential + False True - 105.06799999999998 + 105.06761519064992 LINESTRING (-104.9846687 39.761764, -104.9846165 39.7617239, -104.9845997 39.7617109, -104.9844246 39.7615761, -104.9842599 39.7614494, -104.9839152 39.761184, -104.9839011 39.7611732, -104.9838 39.7610955) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False False - 146.686 + 146.68481890081753 LINESTRING (-104.9834593 39.7626999, -104.9835526 39.7626274, -104.983798 39.7624375, -104.9841567 39.7621598, -104.9846687 39.761764) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False True - 146.17 - LINESTRING (-104.9834593 39.7626999, -104.9833917 39.7627522, -104.9833137 39.7628126, -104.9823216 39.7635803, -104.9822541 39.7636325) + 146.1706998376419 + LINESTRING (-104.9834593 39.7626999, -104.9833917 39.7627522, -104.9833137 39.7628126, -104.9823288 39.7635755, -104.9822541 39.7636325) 1182413373 - False + residential 29th Street - residential + False True - 105.11699999999999 + 105.11675191382373 LINESTRING (-104.9834593 39.7626999, -104.9833887 39.7626454, -104.983364 39.7626263, -104.983049 39.7623831, -104.9827078 39.7621197, -104.9826938 39.7621089, -104.9825916 39.76203) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False False - 146.17000000000002 - LINESTRING (-104.9822541 39.7636325, -104.9823216 39.7635803, -104.9833137 39.7628126, -104.9833917 39.7627522, -104.9834593 39.7626999) + 146.1706998376419 + LINESTRING (-104.9822541 39.7636325, -104.9823288 39.7635755, -104.9833137 39.7628126, -104.9833917 39.7627522, -104.9834593 39.7626999) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False True - 145.671 + 145.67008635675782 LINESTRING (-104.9822541 39.7636325, -104.9821776 39.7636915, -104.9817421 39.7640285, -104.9810759 39.7645441, -104.981053 39.7645619) 819744387 - False + residential 30th Street - residential + False True - 105.165 + 105.16536303593828 LINESTRING (-104.9822541 39.7636325, -104.9821838 39.7635784, -104.9821617 39.7635614, -104.9820451 39.7634716, -104.9818412 39.7633146, -104.9815739 39.7631087, -104.9815062 39.7630567, -104.9814949 39.763048, -104.9813848 39.7629632) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False False - 145.396 + 145.39643940263224 LINESTRING (-104.9798542 39.7654896, -104.980378 39.7650842, -104.9804798 39.7650055, -104.9809684 39.7646273, -104.981053 39.7645619) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False True - 146.092 + 146.09193988799038 LINESTRING (-104.9798542 39.7654896, -104.9797689 39.7655556, -104.9795822 39.7657, -104.9791425 39.7660403, -104.9787271 39.7663618, -104.9786496 39.7664217) 505662289 - False + residential 32nd Street - residential + False True - 105.298 + 105.29777535112778 LINESTRING (-104.9798542 39.7654896, -104.9797779 39.7654312, -104.9797626 39.7654195, -104.9794359 39.7651694, -104.9790755 39.7648934, -104.978981 39.7648216) 66805017 + tertiary + 30 mph Blake Street - tertiary - 30 mph - False + False False - 145.6 + 145.60064384694417 LINESTRING (-104.9774521 39.767353, -104.9775461 39.7672798, -104.9781644 39.766799, -104.9785659 39.7664867, -104.9786496 39.7664217) 66805017 + tertiary + 30 mph Blake Street - tertiary - 30 mph - False + False True - 145.997 + 145.99564874030688 LINESTRING (-104.9774521 39.767353, -104.9773709 39.7674162, -104.977326 39.7674511, -104.9767639 39.7678882, -104.9766127 39.7680058, -104.9765287 39.7680711, -104.976336 39.768221, -104.9762513 39.7682868) 231108460 - False + residential 34th Street - residential + False True - 105.42 + 105.42002957875445 LINESTRING (-104.9774521 39.767353, -104.9773935 39.7673083, -104.9773749 39.7672941, -104.9770258 39.7670278, -104.9766896 39.7667714, -104.9766777 39.7667623, -104.9765766 39.7666852) 16984781 + residential 2 Clarkson Street - residential - False + False True - 138.716 + 138.7159786626551 LINESTRING (-104.9769624 39.7494919, -104.9769623 39.7495813, -104.9769623 39.7496066, -104.9769606 39.7506139, -104.9769606 39.7506438, -104.9769604 39.7507394) 131612982 + tertiary 2 + 30 mph East 22nd Avenue - tertiary - 30 mph - False + False True - 101.39799999999998 + 101.39838048012095 LINESTRING (-104.9769624 39.7494919, -104.9770741 39.7494915, -104.9775628 39.7494901, -104.9780167 39.7494893, -104.9780608 39.7494892, -104.9781474 39.7494788) 131612988 + tertiary 2 + 30 mph East 22nd Avenue - tertiary - 30 mph - False + False True - 102.04400000000001 + 102.04455982926821 LINESTRING (-104.9769624 39.7494919, -104.9768653 39.7494915, -104.9763744 39.7494897, -104.9758848 39.7494879, -104.9757688 39.7494874) 131612990 + residential 2 Clarkson Street - residential - False + False False - 223.22600000000003 + 223.22523498965174 LINESTRING (-104.9769624 39.7494919, -104.9769628 39.7493983, -104.9769629 39.7493819, -104.9769631 39.7493379, -104.9769659 39.7486361, -104.976968 39.7481329, -104.9769701 39.7476137, -104.9769702 39.7475834, -104.9769706 39.7474844) 16984781 + residential 2 Clarkson Street - residential - False + False False - 138.716 + 138.7159786626551 LINESTRING (-104.9769604 39.7507394, -104.9769606 39.7506438, -104.9769606 39.7506139, -104.9769623 39.7496066, -104.9769623 39.7495813, -104.9769624 39.7494919) 16984781 + residential 2 Clarkson Street - residential - False + False True - 139.307 + 139.30531472215316 LINESTRING (-104.9769604 39.7507394, -104.9769603 39.7508345, -104.9769602 39.7508603, -104.97696 39.7509857, -104.9769585 39.7518697, -104.9769585 39.7518986, -104.9769584 39.7519922) 446229412 - False + tertiary 2 East 23rd Avenue - tertiary + False False - 101.956 + 101.95621022191844 LINESTRING (-104.9769604 39.7507394, -104.9768626 39.7507393, -104.9763722 39.7507385, -104.9758822 39.7507377, -104.9757678 39.7507375) 446229412 - False + tertiary 2 East 23rd Avenue - tertiary + False True - 101.358 + 101.3577774672599 LINESTRING (-104.9769604 39.7507394, -104.9770767 39.7507396, -104.9775602 39.7507403, -104.9780125 39.7507411, -104.9780562 39.7507412, -104.978146 39.7507413) 16984781 + residential 2 Clarkson Street - residential - False + False False - 139.307 + 139.30531472215316 LINESTRING (-104.9769584 39.7519922, -104.9769585 39.7518986, -104.9769585 39.7518697, -104.97696 39.7509857, -104.9769602 39.7508603, -104.9769603 39.7508345, -104.9769604 39.7507394) 16984781 + residential 2 Clarkson Street - residential - False + False True - 140.785 + 140.7842149642672 LINESTRING (-104.9769584 39.7519922, -104.9769582 39.752094, -104.9769582 39.7521203, -104.9769565 39.7531324, -104.9769565 39.7531549, -104.9769563 39.7532583) 278136618 - False + residential 2 East 24th Avenue - residential + False False - 101.86899999999999 + 101.86865903446014 LINESTRING (-104.9769584 39.7519922, -104.9768559 39.7519921, -104.97637 39.751992, -104.9758822 39.7519918, -104.9757668 39.7519918) 278136618 - False + residential 2 East 24th Avenue - residential + False True - 101.41499999999999 + 101.41556462332363 LINESTRING (-104.9769584 39.7519922, -104.9770767 39.7519922, -104.9775645 39.7519924, -104.9780277 39.7519926, -104.9780529 39.7519926, -104.9781447 39.7519926) [600545920, 600546002, 600545974] - False - ['4', '5'] - I 70 Bus;US 40;US 287 + primary + ['5', '4'] + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 97.86899999999999 + 97.86855020439937 LINESTRING (-104.9776068 39.7400152, -104.9777048 39.740015, -104.9780247 39.7400161, -104.9782403 39.7400168, -104.9783745 39.7400172, -104.9786702 39.7400182, -104.9787514 39.7400185) [600545937, 628643767] - False + primary 5 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 96.943 + 96.9442835386595 LINESTRING (-104.9776068 39.7400152, -104.9775246 39.7400153, -104.9772285 39.7400155, -104.9771678 39.7400155, -104.976947 39.7400156, -104.9769086 39.7400157, -104.9767721 39.7400157, -104.9765003 39.7400159, -104.976473 39.7400159) [335726354, 628643773] - True + tertiary 2 + 30 mph Clarkson Street - tertiary - 30 mph + True False - 184.76200000000003 + 184.76171496438778 LINESTRING (-104.9776068 39.7400152, -104.9775774 39.7401256, -104.9775761 39.7404118, -104.9775747 39.7407479, -104.9775735 39.7410223, -104.9775731 39.7411037, -104.9775723 39.741282, -104.9775713 39.7415753, -104.9775707 39.7416745) 335726354 - True + tertiary 2 + 30 mph Clarkson Street - tertiary - 30 mph + True False - 148.15699999999998 + 148.15716013128434 LINESTRING (-104.9775567 39.7448491, -104.9775563 39.7449493, -104.9775552 39.7452037, -104.9775514 39.7460735, -104.9775509 39.7461815) 1184891759 - True + secondary 3 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 101.02600000000001 + 101.02563748782073 LINESTRING (-104.9775567 39.7448491, -104.9776735 39.7448496, -104.9778846 39.7448504, -104.97822 39.7448518, -104.9783715 39.7448524, -104.9786591 39.7448536, -104.9787383 39.7448539) 131612986 - True + tertiary 3 Clarkson Street - tertiary + True False - 87.839 + 87.83835589291519 LINESTRING (-104.9775509 39.7461815, -104.977553 39.7462655, -104.9775664 39.7467972, -104.9775708 39.7469713) 131612987 + tertiary 3 East 19th Avenue - tertiary - False + False False - 87.53999999999999 + 87.53969096176804 LINESTRING (-104.9775509 39.7461815, -104.9774571 39.7461814, -104.9767605 39.7461803, -104.976527 39.74618) 596723425 - False + tertiary 2 East 19th Avenue - tertiary + False True - 100.99600000000001 + 100.99669247309022 LINESTRING (-104.9775509 39.7461815, -104.9776704 39.7461812, -104.9782194 39.7461815, -104.978651 39.7461815, -104.9787322 39.7461815) 52959213 + tertiary 3 Clarkson Street - tertiary - False + False True - 58.257 + 58.25693619463234 LINESTRING (-104.9775708 39.7469713, -104.977569 39.7471497, -104.9775675 39.7472902, -104.9775667 39.7473701, -104.9775664 39.7473962, -104.9775654 39.7474952) 131612983 - False + secondary 4 + 30 mph Park Avenue - secondary - 30 mph + False False - 83.146 + 83.1465949962137 LINESTRING (-104.9775708 39.7469713, -104.9776689 39.7470503, -104.9781146 39.7474093, -104.9782423 39.7475122) 781383478 + secondary 4 + 30 mph Park Avenue - secondary - 30 mph - False + False True - 125.326 + 125.32540678445675 LINESTRING (-104.9775708 39.7469713, -104.9774569 39.746885, -104.9773724 39.7468209, -104.9770175 39.7465519, -104.9766444 39.7462719, -104.976527 39.74618) 608365242 - True + tertiary 2 + 25 mph California Street - tertiary - 25 mph + True False - 148.091 + 148.09008703212504 LINESTRING (-104.986157 39.7498629, -104.9862523 39.7497892, -104.9863183 39.7497382, -104.9865925 39.7495262, -104.9869036 39.7492857, -104.9872011 39.7490557, -104.9873785 39.7489186) 650079086 + unclassified 2 21st Street - tertiary - False + False False - 104.739 + 104.73868724250832 LINESTRING (-104.986157 39.7498629, -104.9860602 39.7497887, -104.9860315 39.7497667, -104.9857139 39.749523, -104.9853866 39.749272, -104.9853624 39.7492535, -104.9852896 39.7491977) 650079086 + unclassified 2 21st Street - tertiary - False + False True - 103.15099999999998 - LINESTRING (-104.986157 39.7498629, -104.9862339 39.7499219, -104.9862564 39.7499392, -104.9865875 39.750193, -104.9869058 39.7504371, -104.9869375 39.7504612, -104.9870113 39.750518) + 103.15219290225544 + LINESTRING (-104.986157 39.7498629, -104.9862339 39.7499219, -104.9862564 39.7499392, -104.9865875 39.750193, -104.9869058 39.7504371, -104.9869375 39.7504612, -104.9869869 39.7504992, -104.9870113 39.750518) 278136621 - False + residential 26th Street - residential + False False - 104.693 - LINESTRING (-104.9801134 39.7545346, -104.9802019 39.7546025, -104.9802217 39.7546177, -104.9805447 39.7548653, -104.9808697 39.755115, -104.9808948 39.7551342, -104.9809805 39.7551995) + 104.68502981755056 + LINESTRING (-104.9801183 39.7545309, -104.9802067 39.7545988, -104.9802264 39.7546141, -104.9805489 39.7548621, -104.9808738 39.7551119, -104.9808988 39.7551311, -104.9809841 39.7551967) 278136621 - False + residential 26th Street - residential + False True - 103.65499999999999 - LINESTRING (-104.9801134 39.7545346, -104.9800245 39.7544655, -104.9800075 39.7544525, -104.9796898 39.7542097, -104.9796671 39.7541923, -104.9793426 39.7539435, -104.9793216 39.7539274, -104.9792549 39.7538763) + 103.66063107314737 + LINESTRING (-104.9801183 39.7545309, -104.9800289 39.7544621, -104.9800119 39.7544491, -104.9796952 39.7542055, -104.9796726 39.7541881, -104.9793485 39.7539389, -104.9793276 39.7539228, -104.979261 39.7538716) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 146.845 - LINESTRING (-104.9801134 39.7545346, -104.9802075 39.7544619, -104.9803146 39.7543791, -104.9812152 39.753683, -104.9812482 39.7536575, -104.9813248 39.7535983) + 146.25840817952678 + LINESTRING (-104.9801183 39.7545309, -104.9802075 39.7544619, -104.9803146 39.7543791, -104.9812152 39.753683, -104.9812482 39.7536575, -104.9813248 39.7535983) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 145.991 - LINESTRING (-104.9801134 39.7545346, -104.9800272 39.7546, -104.9793872 39.7550958, -104.9792414 39.7552087, -104.979089 39.7553265, -104.9789992 39.7553959, -104.9789091 39.7554655) - - - 278136619 - False - 2 - 27th Street - tertiary - False - 104.883 - LINESTRING (-104.9789091 39.7554655, -104.9790008 39.7555359, -104.979345 39.7558, -104.9796796 39.7560569, -104.9797001 39.7560725, -104.9797774 39.7561319) + 146.57840905118363 + LINESTRING (-104.9801183 39.7545309, -104.9800272 39.7546, -104.9793872 39.7550958, -104.9792414 39.7552087, -104.979089 39.7553265, -104.9789992 39.7553959, -104.9789091 39.7554655) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 145.991 - LINESTRING (-104.9789091 39.7554655, -104.9789992 39.7553959, -104.979089 39.7553265, -104.9792414 39.7552087, -104.9793872 39.7550958, -104.9800272 39.7546, -104.9801134 39.7545346) + 146.57840905118363 + LINESTRING (-104.9789091 39.7554655, -104.9789992 39.7553959, -104.979089 39.7553265, -104.9792414 39.7552087, -104.9793872 39.7550958, -104.9800272 39.7546, -104.9801183 39.7545309) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 146.67999999999998 + 146.68028987719225 LINESTRING (-104.9789091 39.7554655, -104.9788266 39.7555293, -104.9784808 39.7557966, -104.9777879 39.7563322, -104.9776991 39.7564008) + + 1223344070 + tertiary + 2 + 27th Street + False + False + 104.88264177591948 + LINESTRING (-104.9789091 39.7554655, -104.9790008 39.7555359, -104.979345 39.7558, -104.9796796 39.7560569, -104.9797001 39.7560725, -104.9797774 39.7561319) + 674354857 - False + residential 28th Street - residential + False False - 105.071 + 105.07118171396111 LINESTRING (-104.9776991 39.7564008, -104.9777938 39.7564737, -104.9778137 39.756489, -104.9781392 39.7567393, -104.9784878 39.7570078, -104.9785678 39.7570693) 674354857 - False + residential 28th Street - residential + False True - 103.21799999999999 + 103.21905818744906 LINESTRING (-104.9776991 39.7564008, -104.9776176 39.7563381, -104.9775965 39.7563219, -104.9772724 39.7560724, -104.9769401 39.7558168, -104.9769128 39.7557958, -104.9768457 39.7557441) 781164692 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 146.583 + 146.58377108677755 LINESTRING (-104.9776991 39.7564008, -104.9776167 39.7564645, -104.9772857 39.7567203, -104.9765818 39.7572645, -104.9764899 39.7573355) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 146.68 + 146.68028987719222 LINESTRING (-104.9776991 39.7564008, -104.9777879 39.7563322, -104.9784808 39.7557966, -104.9788266 39.7555293, -104.9789091 39.7554655) 781164692 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 146.583 + 146.58377108677752 LINESTRING (-104.9764899 39.7573355, -104.9765818 39.7572645, -104.9772857 39.7567203, -104.9776167 39.7564645, -104.9776991 39.7564008) 781164692 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 145.932 + 145.9321792292316 LINESTRING (-104.9764899 39.7573355, -104.976407 39.7573996, -104.976345 39.7574475, -104.9757995 39.7578692, -104.9756538 39.7579817, -104.975377 39.7581958, -104.975286 39.758266) [781164694, 16985783] + residential + 25 mph 29th Street - residential - 25 mph - False + False True - 103.001 + 103.001441234296 LINESTRING (-104.9764899 39.7573355, -104.976409 39.757273, -104.9760619 39.757005, -104.9758958 39.7568776, -104.9757135 39.7567378, -104.9757039 39.7567304, -104.9756384 39.7566801) 781164692 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 145.932 + 145.9321792292316 LINESTRING (-104.975286 39.758266, -104.975377 39.7581958, -104.9756538 39.7579817, -104.9757995 39.7578692, -104.976345 39.7574475, -104.976407 39.7573996, -104.9764899 39.7573355) - - [278138236, 781164692] - False + + [278138236, 788043282, 781164692] + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 120.356 - LINESTRING (-104.975286 39.758266, -104.9751972 39.7583355, -104.9748378 39.7586168, -104.9742995 39.7590383) + 146.74297728814832 + LINESTRING (-104.975286 39.758266, -104.9751972 39.7583355, -104.9748378 39.7586168, -104.9742995 39.7590383, -104.9741759 39.759135, -104.9740832 39.7592076) 781164695 + residential 2 + 25 mph 30th Street - residential - 25 mph - False + False False - 105.453 + 105.45341066352536 LINESTRING (-104.975286 39.758266, -104.9753823 39.7583406, -104.9756908 39.7585794, -104.9757293 39.7586092, -104.9758445 39.7586983, -104.9760613 39.7588648, -104.9760752 39.7588755, -104.9761553 39.7589389) [819744385, 781164695] + residential 2 + 25 mph 30th Street - residential - 25 mph - False + False True - 102.788 + 102.78671464100476 LINESTRING (-104.975286 39.758266, -104.9752102 39.7582077, -104.9748567 39.7579336, -104.9745384 39.7576873, -104.9745023 39.7576593, -104.9744387 39.7576101) - + 16984945 - False + residential + 25 mph 28th Street - residential - 25 mph + False True - 50.190000000000005 - LINESTRING (-104.9759271 39.7550372, -104.9758692 39.7549902, -104.9758519 39.7549751, -104.9758258 39.7549486, -104.9758175 39.7549388, -104.9758011 39.7549163, -104.9757896 39.7548926, -104.9757786 39.7548645, -104.9757704 39.7548382, -104.9757651 39.7548147, -104.9757625 39.7547931, -104.9757606 39.7547591, -104.9757589 39.7547301, -104.9757573 39.7546246) + 48.87901632094376 + LINESTRING (-104.9759271 39.7550372, -104.9758692 39.7549902, -104.9758519 39.7549751, -104.9758258 39.7549486, -104.9758175 39.7549388, -104.9758011 39.7549163, -104.9757896 39.7548926, -104.9757786 39.7548645, -104.9757704 39.7548382, -104.9757651 39.7548147, -104.9757625 39.7547931, -104.9757606 39.7547591, -104.9757589 39.7547301, -104.9757572 39.7546364) 278136620 - False + residential + 20 Glenarm Place - residential - 20 + False True - 27.119 + 27.11845111843826 LINESTRING (-104.9759271 39.7550372, -104.975888 39.7550694, -104.975853 39.7550983, -104.9757108 39.7552156) 410867828 - False + residential 28th Street - residential + False False - 25.996 + 25.996783765601666 LINESTRING (-104.9759271 39.7550372, -104.9760819 39.7551565, -104.9761419 39.7552027) 88625482 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 146.149 - LINESTRING (-104.9785678 39.7570693, -104.9784836 39.7571345, -104.978092 39.7574375, -104.977938 39.7575574, -104.9774594 39.7579283, -104.9774556 39.7579312, -104.9773637 39.7580024) + 146.14962389095683 + LINESTRING (-104.9785678 39.7570693, -104.9784836 39.7571345, -104.9780923 39.7574378, -104.977938 39.7575574, -104.9774594 39.7579283, -104.9774556 39.7579312, -104.9773637 39.7580024) 674354857 - False + residential 28th Street - residential + False False - 105.215 + 105.2154072066248 LINESTRING (-104.9785678 39.7570693, -104.9786638 39.7571428, -104.9790129 39.7574084, -104.979359 39.7576778, -104.9794377 39.7577387) 674354857 - False + residential 28th Street - residential + False True - 105.07100000000001 + 105.0711817139611 LINESTRING (-104.9785678 39.7570693, -104.9784878 39.7570078, -104.9781392 39.7567393, -104.9778137 39.756489, -104.9777938 39.7564737, -104.9776991 39.7564008) 278139935 - True + secondary 1 + 25 mph Champa Street - secondary - 25 mph + True False - 146.932 + 146.93176809292223 LINESTRING (-104.9794377 39.7577387, -104.9795293 39.7576677, -104.9804351 39.7569657, -104.9805602 39.7568687, -104.9806481 39.7568005) 674354857 - False + residential 28th Street - residential + False False - 106.69900000000001 + 106.69783107262982 LINESTRING (-104.9794377 39.7577387, -104.979536 39.7578144, -104.9798829 39.7580813, -104.9802149 39.7583369, -104.9802332 39.758351, -104.9803198 39.7584176) 674354857 - False + residential 28th Street - residential + False True - 105.215 + 105.2154072066248 LINESTRING (-104.9794377 39.7577387, -104.979359 39.7576778, -104.9790129 39.7574084, -104.9786638 39.7571428, -104.9785678 39.7570693) [461904630, 317983174] - True + primary 4 + ['30 mph', '20 mph'] Lincoln Street - primary - ['20 mph', '30 mph'] + True False - 144.20999999999998 + 144.20922056350472 LINESTRING (-104.9861139 39.7448844, -104.9861141 39.7449705, -104.9861144 39.7450652, -104.9861145 39.7451253, -104.9861149 39.7452415, -104.9861155 39.7454847, -104.9861172 39.7460993, -104.9861174 39.7461813) [628378960, 317983179] - True - ['4', '5'] + secondary + ['5', '4'] + 30 mph East 18th Avenue - secondary - 30 mph + True False - 97.357 + 97.35714434885793 LINESTRING (-104.9861139 39.7448844, -104.9862622 39.7448849, -104.9865143 39.7448857, -104.9867571 39.7448864, -104.9872526 39.744888) 16987763 + residential 2 + 25 mph Sherman Street - residential - 25 mph - False + False False - 144.799 + 144.79897850298335 LINESTRING (-104.9848531 39.7448792, -104.9848532 39.7449694, -104.9848527 39.7450827, -104.9848516 39.7453385, -104.9848497 39.7457664, -104.9848496 39.7458002, -104.9848483 39.746099, -104.984848 39.7461814) 628588222 + residential 3 + 25 mph Sherman Street - residential - 25 mph - False + False True - 179.146 + 179.14702505712327 LINESTRING (-104.9848531 39.7448792, -104.9848528 39.7447822, -104.9848511 39.7443051, -104.9848503 39.744089, -104.9848478 39.7433703, -104.9848476 39.7432681) [1121982496, 1121982495] - True + secondary 4 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 107.79700000000001 + 107.79716687491013 LINESTRING (-104.9848531 39.7448792, -104.9849925 39.7448797, -104.9851156 39.7448803, -104.9853208 39.7448811, -104.9854872 39.7448818, -104.9857355 39.7448828, -104.9859843 39.7448839, -104.9861139 39.7448844) 798188480 + residential 2 Pearl Street - residential - False + False False - 147.09 + 147.0893175396569 LINESTRING (-104.979895 39.7448587, -104.9798946 39.7449556, -104.9798946 39.7449688, -104.979892 39.7456866, -104.9798929 39.746053, -104.979893 39.746083, -104.9798932 39.7461815) 798188480 + residential 2 Pearl Street - residential - False + False True - 178.12599999999998 - LINESTRING (-104.979895 39.7448587, -104.9798955 39.7447652, -104.9798956 39.7447475, -104.9798992 39.7440685, -104.9799018 39.7435862, -104.9799018 39.7435782, -104.9799024 39.7434478, -104.9799028 39.7433778, -104.9799029 39.7433613, -104.9799034 39.7432568) + 178.1248664437245 + LINESTRING (-104.979895 39.7448587, -104.9798955 39.7447652, -104.9798956 39.7447475, -104.9798992 39.7440685, -104.9799018 39.7435862, -104.9799018 39.7435782, -104.9799023 39.7434623, -104.9799024 39.7434478, -104.9799028 39.7433778, -104.9799029 39.7433613, -104.9799034 39.7432568) 1184891759 - True + secondary 3 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 102.855 + 102.85531252553885 LINESTRING (-104.979895 39.7448587, -104.979995 39.7448591, -104.9801024 39.7448596, -104.9803169 39.7448604, -104.9804808 39.7448611, -104.980993 39.7448632, -104.981098 39.7448636) 39471712 - True + tertiary 2 Washington Street - tertiary + True False - 177.89 - LINESTRING (-104.9787383 39.7448539, -104.9787382 39.744762, -104.9787377 39.7441527, -104.9787372 39.7435849, -104.9787371 39.7435143, -104.978737 39.7433814, -104.9787369 39.7432541) + 177.88993959525155 + LINESTRING (-104.9787383 39.7448539, -104.9787382 39.744762, -104.9787377 39.7441527, -104.9787372 39.7435849, -104.9787371 39.7435143, -104.9787369 39.7433589, -104.9787369 39.7432541) 1184891759 - True + secondary 3 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 98.896 + 98.89676825719368 LINESTRING (-104.9787383 39.7448539, -104.9788393 39.7448544, -104.9793326 39.7448564, -104.9795005 39.7448571, -104.9797184 39.744858, -104.979816 39.7448584, -104.979895 39.7448587) [16985355, 1173823087] - False + residential 2 Emerson Street - residential + False False - 116.59 + 116.58920756436125 LINESTRING (-104.9761689 39.7448434, -104.9761684 39.7449465, -104.9761683 39.7449679, -104.9761672 39.7451869, -104.9761649 39.745669, -104.976164 39.7457199, -104.9761639 39.7458919) 16985355 - False + residential 2 Emerson Street - residential + False True - 177.37800000000001 + 177.37891941990603 LINESTRING (-104.9761689 39.7448434, -104.9761692 39.7447538, -104.9761693 39.7447302, -104.9761696 39.7446205, -104.9761721 39.7438221, -104.9761727 39.7436127, -104.9761733 39.7433996, -104.9761734 39.7433783, -104.9761739 39.7432482) 1184891759 - True + secondary 3 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 118.655 + 118.65557778981241 LINESTRING (-104.9761689 39.7448434, -104.976333 39.7448441, -104.9768959 39.7448464, -104.9774611 39.7448487, -104.9775567 39.7448491) 628591245 - False + secondary 4 + 30 mph Park Avenue - secondary - 30 mph + False False - 25.016 + 25.015557084832867 [1184891760, 128948475] - True + tertiary 1 + 30 mph Ogden Street - tertiary - 30 mph + True False - 177.09199999999998 + 177.093054266331 LINESTRING (-104.9747635 39.7448376, -104.9747651 39.7446454, -104.9747654 39.7446067, -104.9747678 39.744336, -104.9747722 39.7438179, -104.9747729 39.7437328, -104.9747759 39.7433763, -104.974777 39.743245) [130919107, 1184891759] - True + secondary 3 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 120.16099999999999 + 120.16039794094898 LINESTRING (-104.9747635 39.7448376, -104.9750152 39.7448386, -104.9750925 39.744839, -104.97546 39.7448405, -104.9756262 39.7448411, -104.97601 39.7448427, -104.9761689 39.7448434) 461520534 - False + tertiary 2 Ogden Street - tertiary + False True - 40.575 + 40.57556538779585 LINESTRING (-104.9747635 39.7448376, -104.9747645 39.7449825, -104.9747658 39.7452025) [646050152, 628378964] - True + secondary 5 17th Street - secondary + True False - 116.14999999999999 + 116.15032980176169 LINESTRING (-104.9883539 39.7441042, -104.98828 39.7440484, -104.9879301 39.7437761, -104.9875895 39.7435119, -104.9875473 39.7434816, -104.9873953 39.7433641) - - 131613000 + + 524280872 + tertiary 2 Glenarm Place - tertiary - False + False False - 145.33599999999998 - LINESTRING (-104.9892287 39.7447764, -104.9891425 39.744842, -104.9888264 39.7450874, -104.9886925 39.7451913, -104.9882021 39.7455707, -104.9881052 39.7456464, -104.9880305 39.7457035) + 5.237861433248683 - - 524280872 + + 131613000 + tertiary 2 Glenarm Place - tertiary - False + False False - 144.893 - LINESTRING (-104.9892287 39.7447764, -104.989314 39.7447104, -104.9896352 39.7444618, -104.990364 39.7438976, -104.9904235 39.7438523) + 145.33442919267802 + LINESTRING (-104.9892287 39.7447764, -104.9891425 39.744842, -104.9888264 39.7450874, -104.9886925 39.7451913, -104.9882021 39.7455707, -104.9881052 39.7456464, -104.9880305 39.7457035) [628378965, 131612999] - True - ['4', '5'] + secondary + 3 17th Street - secondary + True False - 105.741 + 105.74098984031201 LINESTRING (-104.9892287 39.7447764, -104.9891515 39.7447163, -104.9887912 39.7444394, -104.988439 39.7441706, -104.9883539 39.7441042) 132261616 - True + secondary 2 + 25 mph Stout Street - secondary - 25 mph + True False - 145.64999999999998 + 145.65004107040335 LINESTRING (-104.9918336 39.7467834, -104.9917545 39.7468441, -104.9911751 39.7472891, -104.9907076 39.7476482, -104.9906283 39.7477091) [628378966, 628378967] - True - ['4', '5'] + secondary + 3 17th Street - secondary + True False - 102.12099999999998 + 102.12156196884891 LINESTRING (-104.9918336 39.7467834, -104.9917615 39.7467288, -104.9914081 39.7464556, -104.9912323 39.7463197, -104.9910729 39.7461965, -104.9909899 39.7461333) 130885095 - True - 4 + secondary + 3 17th Street - secondary + True False - 107.03 + 107.029666747305 LINESTRING (-104.9927179 39.7474647, -104.9926347 39.7474009, -104.9922884 39.7471343, -104.9919332 39.7468618, -104.9918872 39.7468247, -104.9918336 39.7467834) [1122234084, 130911262] - True - 5 + secondary + 4 17th Street - secondary + True False - 106.03200000000001 + 106.03240009250612 LINESTRING (-104.9953312 39.7494694, -104.9952584 39.7494136, -104.994778 39.7490454, -104.994559 39.7488774, -104.9944532 39.7487959) [700245928, 700245929, 700245930] - True + tertiary 3 + 25 mph Lawrence Street - tertiary - 25 mph + True False - 145.884 + 145.88393613508285 LINESTRING (-104.9953312 39.7494694, -104.9952543 39.7495287, -104.9944038 39.750185, -104.9943686 39.7502122, -104.9942059 39.7503378, -104.9941268 39.7503988) 16988363 - True + secondary 2 + 25 mph Market Street - secondary - 25 mph + True False - 146.419 + 146.41929620825448 LINESTRING (-104.9970843 39.7508067, -104.9970022 39.7508701, -104.996484 39.7512732, -104.9960619 39.7516009, -104.9959559 39.7516839, -104.9958799 39.7517429) [1124103995, 130888022] - True - ['4', '5'] + secondary + ['3', '4'] 17th Street - secondary + True False - 105.77300000000001 + 105.77233391202674 LINESTRING (-104.9970843 39.7508067, -104.9970142 39.7507536, -104.9966494 39.7504768, -104.9965042 39.7503671, -104.9963057 39.7502161, -104.9962036 39.7501386) [628643778, 628643779, 130919109] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 98.637 + 98.63810947430922 LINESTRING (-104.979905 39.7400223, -104.9798371 39.7400221, -104.9795607 39.7400212, -104.9794346 39.7400208, -104.9793421 39.7400205, -104.9790376 39.7400194, -104.9788463 39.7400188, -104.9787514 39.7400185) [628643784, 628643780, 628643781] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 103.041 + 103.0408049873165 LINESTRING (-104.979905 39.7400223, -104.9800128 39.7400227, -104.980254 39.7400229, -104.9804929 39.7400231, -104.9806577 39.7400232, -104.9810125 39.7400235, -104.9811101 39.7400236) 798188480 + residential 2 Pearl Street - residential - False + False False - 183.964 - LINESTRING (-104.979905 39.7400223, -104.9799053 39.7401271, -104.979906 39.7403737, -104.9799066 39.74055, -104.9799076 39.7408831, -104.9799084 39.7411407, -104.9799097 39.7415592, -104.979908 39.7416018, -104.9799073 39.7416767) + 183.96406725919562 + LINESTRING (-104.979905 39.7400223, -104.9799053 39.7401271, -104.979906 39.7403737, -104.9799061 39.7404029, -104.9799064 39.740505, -104.9799066 39.74055, -104.9799076 39.7408831, -104.9799084 39.7411407, -104.9799097 39.7415592, -104.979908 39.7416018, -104.9799073 39.7416767) 596723425 - False + tertiary 2 East 19th Avenue - tertiary + False False - 99.26 + 99.26113401193402 LINESTRING (-104.9798932 39.7461815, -104.9798029 39.7461812, -104.9791661 39.7461814, -104.9789556 39.7461815, -104.978838 39.7461815, -104.9787322 39.7461815) 596723425 - False + tertiary 2 East 19th Avenue - tertiary + False True - 102.72399999999999 + 102.72436286003568 LINESTRING (-104.9798932 39.7461815, -104.9800028 39.7461822, -104.9809766 39.7461822, -104.9810947 39.7461814) 798188480 + residential 2 Pearl Street - residential - False + False False - 148.771 + 148.77072107201406 LINESTRING (-104.9798932 39.7461815, -104.9798925 39.746273, -104.9798923 39.7462923, -104.979888 39.7468321, -104.9798867 39.7469885, -104.9798832 39.7474314, -104.9798829 39.7474654, -104.9798825 39.7475194) 798188480 + residential 2 Pearl Street - residential - False + False True - 147.09 + 147.0893175396569 LINESTRING (-104.9798932 39.7461815, -104.979893 39.746083, -104.9798929 39.746053, -104.979892 39.7456866, -104.9798946 39.7449688, -104.9798946 39.7449556, -104.979895 39.7448587) 16985352 + residential 2 Emerson Street - residential - False + False False - 139.005 + 139.0050013362834 LINESTRING (-104.9757688 39.7494874, -104.9757687 39.7495802, -104.9757679 39.7506142, -104.9757679 39.7506376, -104.9757678 39.7507375) 16985352 + residential 2 Emerson Street - residential - False + False True - 223.291 + 223.29089076371625 LINESTRING (-104.9757688 39.7494874, -104.9757689 39.7493894, -104.975769 39.7492195, -104.9757703 39.7476176, -104.9757703 39.7475828, -104.9757704 39.7474793) 131612988 + tertiary 2 + 30 mph East 22nd Avenue - tertiary - 30 mph - False + False False - 102.044 + 102.04455982926821 LINESTRING (-104.9757688 39.7494874, -104.9758848 39.7494879, -104.9763744 39.7494897, -104.9768653 39.7494915, -104.9769624 39.7494919) 131612988 + tertiary 2 + 30 mph East 22nd Avenue - tertiary - 30 mph - False + False True - 102.32700000000001 + 102.32669004457097 LINESTRING (-104.9757688 39.7494874, -104.9756707 39.7494871, -104.9751764 39.7494852, -104.9746862 39.7494834, -104.9745719 39.7494829) 16985352 + residential 2 Emerson Street - residential - False + False False - 139.47299999999998 + 139.47202290858402 LINESTRING (-104.9757678 39.7507375, -104.9757678 39.7508325, -104.9757678 39.7508535, -104.9757669 39.7518811, -104.9757669 39.7518976, -104.9757668 39.7519918) 16985352 + residential 2 Emerson Street - residential - False + False True - 139.005 + 139.00500133628339 LINESTRING (-104.9757678 39.7507375, -104.9757679 39.7506376, -104.9757679 39.7506142, -104.9757687 39.7495802, -104.9757688 39.7494874) 446229412 - False + tertiary 2 East 23rd Avenue - tertiary + False False - 102.289 + 102.2896250185652 LINESTRING (-104.9757678 39.7507375, -104.9756721 39.7507374, -104.9751729 39.7507366, -104.9746915 39.7507358, -104.9745713 39.7507356) 446229412 - False + tertiary 2 East 23rd Avenue - tertiary + False True - 101.956 + 101.95621022191845 LINESTRING (-104.9757678 39.7507375, -104.9758822 39.7507377, -104.9763722 39.7507385, -104.9768626 39.7507393, -104.9769604 39.7507394) 16985352 + residential 2 Emerson Street - residential - False + False True - 139.47299999999998 + 139.47202290858405 LINESTRING (-104.9757668 39.7519918, -104.9757669 39.7518976, -104.9757669 39.7518811, -104.9757678 39.7508535, -104.9757678 39.7508325, -104.9757678 39.7507375) 278136618 - False + residential 2 East 24th Avenue - residential + False True - 101.869 + 101.86865903446012 LINESTRING (-104.9757668 39.7519918, -104.9758822 39.7519918, -104.97637 39.751992, -104.9768559 39.7519921, -104.9769584 39.7519922) 1176299730 - False + residential 2 East 24th Avenue - residential + False False - 102.253 + 102.25336704921804 LINESTRING (-104.9757668 39.7519918, -104.9756681 39.7519917, -104.9753505 39.7519916, -104.9751694 39.7519915, -104.9747498 39.7519914, -104.9746875 39.7519914, -104.9745707 39.7519913) 1176299731 + residential 2 Emerson Street - residential - False + False False - 140.49499999999998 + 140.4950169701106 LINESTRING (-104.9757668 39.7519918, -104.9757668 39.7520899, -104.9757668 39.7521048, -104.9757662 39.7528311, -104.9757659 39.7531513, -104.9757658 39.7532553) 628643766 - False + primary 5 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 25.13 + 25.12958267232596 [600545968, 628643765] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 73.577 + 73.57665349760785 LINESTRING (-104.9761791 39.7400161, -104.9759158 39.7400165, -104.9755641 39.7400171, -104.9754635 39.7400176, -104.9753186 39.7400184) - [16985355, 1173823085] - False + [1225455420, 1173823085] + residential 2 Emerson Street - residential + False False - 183.53400000000002 - LINESTRING (-104.9761791 39.7400161, -104.9761794 39.7401174, -104.9761794 39.7401459, -104.9761684 39.7407534, -104.9761684 39.7407747, -104.9761677 39.7415473, -104.9761677 39.7415711, -104.976166 39.7416666) + 183.53132832456168 + LINESTRING (-104.9761791 39.7400161, -104.9761794 39.7401174, -104.9761792 39.7401459, -104.9761739 39.7407534, -104.9761737 39.7407747, -104.976167 39.7415473, -104.9761668 39.7415711, -104.976166 39.7416666) 707489809 - True + residential 2 Emerson Street - residential + True False - 31.79 + 31.791047539210226 LINESTRING (-104.9761639 39.7458919, -104.9761629 39.7460502, -104.9761628 39.7460689, -104.9761621 39.7461778) 781383478 + secondary 4 + 30 mph Park Avenue - secondary - 30 mph - False + False False - 44.608999999999995 + 44.6091197885067 LINESTRING (-104.9761639 39.7458919, -104.9763879 39.7460696, -104.976527 39.74618) 781383478 + secondary 4 + 30 mph Park Avenue - secondary - 30 mph - False + False True - 102.416 + 102.41552061352353 LINESTRING (-104.9761639 39.7458919, -104.9760045 39.7457722, -104.975307 39.7452483) [16985355, 1173823087] - False + residential 2 Emerson Street - residential + False True - 116.59 + 116.58920756436126 LINESTRING (-104.9761639 39.7458919, -104.976164 39.7457199, -104.9761649 39.745669, -104.9761672 39.7451869, -104.9761683 39.7449679, -104.9761684 39.7449465, -104.9761689 39.7448434) 128948321 - False + residential 2 East 19th Avenue - residential + False False - 119.11599999999999 + 119.11703278532764 LINESTRING (-104.9761621 39.7461778, -104.9760092 39.7461768, -104.9757007 39.746175, -104.975683 39.7461749, -104.9748881 39.74617, -104.9747689 39.7461693) 1039146329 - False + residential 2 East 19th Avenue - residential + False True - 31.199 + 31.198513453193453 LINESTRING (-104.9761621 39.7461778, -104.9763068 39.7461787, -104.976527 39.74618) [231105090, 1173823095] + residential Emerson Street - residential - False + False False - 144.9 + 144.90023703424478 LINESTRING (-104.9761621 39.7461778, -104.976161 39.7462665, -104.9761617 39.7462895, -104.9761568 39.7473905, -104.9761564 39.7474809) 628643766 - False + primary 5 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 25.13 + 25.12958267232596 [600545937, 628643767] - False + primary 5 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 96.943 + 96.9442835386595 LINESTRING (-104.976473 39.7400159, -104.9765003 39.7400159, -104.9767721 39.7400157, -104.9769086 39.7400157, -104.976947 39.7400156, -104.9771678 39.7400155, -104.9772285 39.7400155, -104.9775246 39.7400153, -104.9776068 39.7400152) [330579569, 334259980] - True + secondary 2 Logan Street - secondary + True False - 182.733 + 182.73344213026462 LINESTRING (-104.9823408 39.7400375, -104.9823404 39.740141, -104.9823268 39.7404878, -104.9823273 39.7408451, -104.9823281 39.7413045, -104.9823285 39.7415801, -104.9823287 39.7416807) [600546003, 600545988, 600545934] - False - ['4', '5'] - I 70 Bus;US 40;US 287 + primary + ['5', '4'] + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 106.956 - LINESTRING (-104.9823408 39.7400375, -104.9824432 39.7400378, -104.9828248 39.7400405, -104.9829659 39.7400417, -104.9834824 39.7400494, -104.9835915 39.7400524) + 106.95593397791662 + LINESTRING (-104.9823408 39.7400375, -104.9824432 39.7400378, -104.9828248 39.7400405, -104.9829659 39.7400417, -104.9834798 39.7400494, -104.9835915 39.7400524) [130886458, 628643782, 628643783] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 105.24499999999999 + 105.2439532564015 LINESTRING (-104.9823408 39.7400375, -104.9822443 39.7400345, -104.9818687 39.7400315, -104.981728 39.74003, -104.9815321 39.740028, -104.9812174 39.7400247, -104.9811101 39.7400236) 505660819 - False + tertiary 2 Logan Street - tertiary + False False - 149.936 + 149.9361463508386 LINESTRING (-104.9823328 39.7461815, -104.982331 39.7462793, -104.9823118 39.7474713, -104.9823108 39.7475298) 505660819 - False + tertiary 2 Logan Street - tertiary + False True - 145.97799999999998 + 145.97745151498012 LINESTRING (-104.9823328 39.7461815, -104.982334 39.746093, -104.9823341 39.7459678, -104.9823336 39.7449637, -104.9823336 39.7448687) 1039146327 - False + tertiary 2 East 19th Avenue - tertiary + False False - 105.853 + 105.85293374444849 LINESTRING (-104.9823328 39.7461815, -104.982225 39.7461814, -104.9817079 39.7461814, -104.9812165 39.7461818, -104.9810947 39.7461814) 1039146327 - False + tertiary 2 East 19th Avenue - tertiary + False True - 108.00899999999999 + 108.00731837650916 LINESTRING (-104.9823328 39.7461815, -104.982449 39.7461814, -104.98266 39.7461814, -104.9829472 39.7461814, -104.983463 39.7461814, -104.9835961 39.7461814) 325699884 - False + residential 32nd Street - residential - False - 18.452 - - - 409342461 - False - 2 - Lawrence Street - residential + False False - 146.764 - LINESTRING (-104.9772427 39.7634899, -104.9771642 39.7635506, -104.9761317 39.7643496, -104.9761123 39.7643646, -104.9760326 39.7644263) + 18.452338660548488 409342461 - False + tertiary 2 Lawrence Street - residential + False True - 147.169 + 147.16950695663408 LINESTRING (-104.9772427 39.7634899, -104.9773079 39.7634391, -104.9783691 39.7626182, -104.9784561 39.7625509) 505662289 - False + residential 32nd Street - residential + False False - 105.292 + 105.29199549670165 LINESTRING (-104.9772427 39.7634899, -104.9773328 39.7635588, -104.9773503 39.7635723, -104.97769 39.7638325, -104.9778841 39.7639811, -104.9780393 39.7641, -104.9781154 39.7641582) + + 1201623837 + tertiary + 2 + Lawrence Street + True + False + 146.76460771242904 + LINESTRING (-104.9772427 39.7634899, -104.9771642 39.7635506, -104.9761317 39.7643496, -104.9761035 39.7643716, -104.9760326 39.7644263) + - 505662289 - False + 1201623838 + residential 32nd Street - residential + False True - 106.25900000000001 + 106.25933956060959 LINESTRING (-104.9772427 39.7634899, -104.9771799 39.7634419, -104.9771688 39.7634334, -104.9768006 39.7631515, -104.9764566 39.7628872, -104.9764437 39.7628773, -104.9763622 39.7628153) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 146.358 + 146.35825896208573 LINESTRING (-104.9781154 39.7641582, -104.9782015 39.7640915, -104.9782841 39.7640275, -104.9784943 39.7638648, -104.9790498 39.7634344, -104.9792334 39.7632921, -104.9793215 39.7632239) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 146.632 + 146.6317960182629 LINESTRING (-104.9781154 39.7641582, -104.9780219 39.7642307, -104.9777094 39.7644728, -104.9769899 39.7650301, -104.9769071 39.7650943) 505662289 - False + residential 32nd Street - residential + False False - 104.47800000000001 + 104.47719745681887 LINESTRING (-104.9781154 39.7641582, -104.978211 39.7642319, -104.9785656 39.764503, -104.9787597 39.7646515, -104.9789085 39.7647655, -104.978981 39.7648216) 505662289 - False + residential 32nd Street - residential + False True - 105.292 + 105.29199549670163 LINESTRING (-104.9781154 39.7641582, -104.9780393 39.7641, -104.9778841 39.7639811, -104.97769 39.7638325, -104.9773503 39.7635723, -104.9773328 39.7635588, -104.9772427 39.7634899) 89783817 - True + primary 5 + 30 mph 20th Street - primary - 30 mph + True False - 41.198 + 41.19771335043144 LINESTRING (-104.9861098 39.7479555, -104.9862526 39.7480609, -104.9864126 39.7481791, -104.9864574 39.7482121) 131620780 - True + secondary 3 + 30 mph 20th Street - secondary - 30 mph + True False - 106.847 + 106.84815468116298 LINESTRING (-104.9882254 39.7495753, -104.9883221 39.7496499, -104.9886737 39.7499229, -104.9890237 39.7501916, -104.9891054 39.7502576) 131620804 - True + secondary 2 + 25 mph Stout Street - secondary - 25 mph + True False - 103.47699999999999 + 103.47620609163619 LINESTRING (-104.9882254 39.7495753, -104.9881384 39.7496428, -104.9880434 39.7497166, -104.9879166 39.749815, -104.9878087 39.7498991, -104.9875688 39.7500862, -104.9873737 39.7502365) [1049911211, 1053558789] - True + secondary ['3', '4'] + 30 mph 20th Street - secondary - 30 mph + True False - 105.77 + 105.7700058706522 LINESTRING (-104.9891054 39.7502576, -104.9891962 39.7503252, -104.9896711 39.7506932, -104.9899002 39.7508706, -104.9899765 39.750933) 1049911212 - True + secondary 2 + 30 mph Champa Street - secondary - 30 mph + True False - 146.57299999999998 - LINESTRING (-104.9891054 39.7502576, -104.9891824 39.7501983, -104.9902171 39.7493978, -104.9903143 39.7493229) + 146.5732157033357 + LINESTRING (-104.9891054 39.7502576, -104.9891824 39.7501983, -104.9902171 39.7493978, -104.9902629 39.7493625, -104.9903143 39.7493229) 25653807 + secondary 3 + 30 mph 20th Street - secondary - 30 mph - False + False True - 103.911 - LINESTRING (-104.9917152 39.7522655, -104.991635 39.7522055, -104.991289 39.7519439, -104.9912188 39.7518907, -104.9911493 39.751838, -104.9909452 39.751683, -104.9908493 39.7516097) + 103.91026589295335 + LINESTRING (-104.9917152 39.7522655, -104.991635 39.7522055, -104.991289 39.7519439, -104.9912188 39.7518907, -104.9911493 39.751838, -104.9909452 39.751683, -104.9909075 39.7516542, -104.9908493 39.7516097) [427711459, 132732230, 1163298583] + secondary 5 + 30 mph 20th Street - secondary - 30 mph - False + False False - 106.00000000000001 + 106.00180312769896 LINESTRING (-104.9917152 39.7522655, -104.9918199 39.7523439, -104.9921603 39.7526032, -104.9923247 39.7527274, -104.9925137 39.7528703, -104.9925975 39.7529353) 132732235 - True + tertiary 3 Lawrence Street - tertiary + True False - 146.823 + 146.82297785019588 LINESTRING (-104.9917152 39.7522655, -104.9916215 39.7523381, -104.9914081 39.7525012, -104.9912073 39.7526587, -104.9906922 39.7530574, -104.9905785 39.7531455, -104.990505 39.7532024) 132732231 + secondary 4 + 30 mph 20th Street - secondary - 30 mph - False + False False - 106.464 - LINESTRING (-104.9925975 39.7529353, -104.9926981 39.7530136, -104.9930299 39.7532817, -104.9933827 39.7535636, -104.9934602 39.7536258) + 106.46413764034365 + LINESTRING (-104.9925975 39.7529353, -104.9926981 39.7530136, -104.9930299 39.7532817, -104.9933827 39.7535636, -104.9934332 39.7536041, -104.9934602 39.7536258) [132732233, 700246020, 700246021, 804487777] - True + tertiary 4 Larimer Street - tertiary + True False - 145.142 - LINESTRING (-104.9925975 39.7529353, -104.9926722 39.7528763, -104.9929345 39.752675, -104.9931422 39.7525156, -104.9931808 39.752486, -104.9933397 39.752364, -104.9933776 39.752335, -104.9937093 39.7520804, -104.993798 39.7520123) + 145.1429351738532 + LINESTRING (-104.9925975 39.7529353, -104.9926722 39.7528763, -104.9929345 39.752675, -104.9931422 39.7525156, -104.9931808 39.752486, -104.9933397 39.752364, -104.9933776 39.752335, -104.9937093 39.7520804, -104.993728 39.752066, -104.993798 39.7520123) [427711459, 132732230, 1163298583] + secondary 5 + 30 mph 20th Street - secondary - 30 mph - False + False True - 106.0 + 106.00180312769895 LINESTRING (-104.9925975 39.7529353, -104.9925137 39.7528703, -104.9923247 39.7527274, -104.9921603 39.7526032, -104.9918199 39.7523439, -104.9917152 39.7522655) 132732231 + secondary 4 + 30 mph 20th Street - secondary - 30 mph - False + False True - 106.464 - LINESTRING (-104.9934602 39.7536258, -104.9933827 39.7535636, -104.9930299 39.7532817, -104.9926981 39.7530136, -104.9925975 39.7529353) + 106.46413764034367 + LINESTRING (-104.9934602 39.7536258, -104.9934332 39.7536041, -104.9933827 39.7535636, -104.9930299 39.7532817, -104.9926981 39.7530136, -104.9925975 39.7529353) 317253253 - True + secondary 2 + 25 mph Market Street - secondary - 25 mph + True False - 145.628 + 145.62894176309496 LINESTRING (-104.9934602 39.7536258, -104.9933223 39.753732, -104.9932225 39.7538088, -104.9923363 39.7544908, -104.9922563 39.7545524) 16985694 - False + residential 24th Street - residential + False False - 58.93599999999999 + 58.93626423436255 LINESTRING (-104.9790396 39.7499769, -104.9791248 39.7500425, -104.979145 39.750058, -104.9794778 39.7503144, -104.9795273 39.7503515) 52957554 + residential 2 Court Place - residential - False + False False - 77.23 + 77.2297577811494 LINESTRING (-104.9790396 39.7499769, -104.9789455 39.7500487, -104.9783986 39.7504663) 52957554 + residential 2 Court Place - residential - False + False True - 146.577 + 146.5772223068376 LINESTRING (-104.9790396 39.7499769, -104.9791337 39.7499046, -104.979636 39.7495215, -104.9801432 39.7491342, -104.9801633 39.7491189, -104.9802561 39.749048) 16985694 - False + residential 24th Street - residential + False True - 45.644999999999996 + 45.64546328742762 LINESTRING (-104.9799098 39.7506379, -104.9798226 39.7505725, -104.9798045 39.7505593, -104.9795273 39.7503515) 231028122 - False + residential 2 Tremont Place - tertiary + False False - 147.048 + 147.04759260635046 LINESTRING (-104.9799098 39.7506379, -104.9798252 39.7507028, -104.9788069 39.7514844, -104.9787852 39.751501, -104.9786925 39.7515722) 231028124 - False + residential 24th Street - residential + False False - 106.08699999999999 + 106.08612307710239 LINESTRING (-104.9799098 39.7506379, -104.9800034 39.7507095, -104.9800169 39.7507198, -104.9803556 39.7509792, -104.9806855 39.7512318, -104.9806997 39.7512426, -104.9807891 39.7513111) 781314132 + residential 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False True - 79.11200000000001 + 79.11172087479883 LINESTRING (-104.9799098 39.7506379, -104.979998 39.7505697, -104.9805649 39.7501354) 231028124 - False + residential 24th Street - residential + False False - 107.71799999999999 - LINESTRING (-104.9807891 39.7513111, -104.9808786 39.7513796, -104.9808999 39.7513959, -104.9812291 39.7516479, -104.9815417 39.7518873, -104.9815784 39.7519154, -104.9816075 39.7519377, -104.9816458 39.7519671, -104.9816819 39.7519947) + 107.71938034963432 + LINESTRING (-104.9807891 39.7513111, -104.9808786 39.7513796, -104.9808999 39.7513959, -104.9812291 39.7516479, -104.9813276 39.7517234, -104.9815417 39.7518873, -104.9815784 39.7519154, -104.9816075 39.7519377, -104.9816458 39.7519671, -104.9816819 39.7519947) 231028124 - False + residential 24th Street - residential + False True - 106.087 + 106.0861230771024 LINESTRING (-104.9807891 39.7513111, -104.9806997 39.7512426, -104.9806855 39.7512318, -104.9803556 39.7509792, -104.9800169 39.7507198, -104.9800034 39.7507095, -104.9799098 39.7506379) 781314137 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False False - 147.327 + 147.3275886514043 LINESTRING (-104.9807891 39.7513111, -104.9807028 39.751378, -104.9796693 39.7521791, -104.9795755 39.7522518) [781314136, 781314137] + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False True - 146.57100000000003 + 146.57035723183967 LINESTRING (-104.9807891 39.7513111, -104.9808745 39.7512449, -104.9814625 39.7507891, -104.9816957 39.7506083, -104.9818992 39.7504505, -104.9819111 39.7504413, -104.9819964 39.7503752) 25676408 - False + residential 2 24th Street - residential + False False - 105.17900000000002 + 105.17871582288099 LINESTRING (-104.983396 39.7533275, -104.9834911 39.7534006, -104.9835163 39.7534199, -104.9838381 39.7536668, -104.9841683 39.7539203, -104.984185 39.7539331, -104.9842667 39.7539958) 25676408 - False + residential 2 24th Street - residential + False True - 104.31299999999999 + 104.31185758642879 LINESTRING (-104.983396 39.7533275, -104.9833148 39.7532653, -104.9832901 39.7532463, -104.9831424 39.7531329, -104.9829653 39.752997, -104.982635 39.752745, -104.9826164 39.7527307, -104.9825312 39.7526657) 1039922862 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 146.54899999999998 + 146.54957786835772 LINESTRING (-104.983396 39.7533275, -104.9833099 39.7533942, -104.9822823 39.7541905, -104.9821886 39.7542631) 25676408 - False + residential 2 24th Street - residential + False True - 105.17899999999999 + 105.178715822881 LINESTRING (-104.9842667 39.7539958, -104.984185 39.7539331, -104.9841683 39.7539203, -104.9838381 39.7536668, -104.9835163 39.7534199, -104.9834911 39.7534006, -104.983396 39.7533275) 808959125 - False + residential 2 24th Street - residential + False False - 106.01899999999999 + 106.01806023405877 LINESTRING (-104.9842667 39.7539958, -104.9843672 39.7540729, -104.9843858 39.7540872, -104.9847106 39.7543365, -104.9850346 39.7545852, -104.9850629 39.7546069, -104.9851444 39.7546694) 1123333182 - True + secondary 2 + 25 mph Champa Street - secondary - 25 mph + True False - 147.07299999999998 + 147.07300305480297 LINESTRING (-104.9842667 39.7539958, -104.9843589 39.7539244, -104.9846621 39.7536894, -104.9853956 39.7531208, -104.9854782 39.7530567) 132364784 - True + tertiary 3 + 30 mph Larimer Street - tertiary - 30 mph + True False - 146.312 + 146.31151156028227 LINESTRING (-104.9877614 39.7566841, -104.9884028 39.7561876, -104.988877 39.7558192, -104.9889675 39.7557505) 701725177 - False + residential 2 24th Street - residential + False False - 105.773 - LINESTRING (-104.9877614 39.7566841, -104.9878686 39.7567675, -104.9878947 39.7567878, -104.9882105 39.7570336, -104.9885258 39.757279, -104.9885709 39.7573059, -104.9886304 39.7573604) + 105.77255234297212 + LINESTRING (-104.9877614 39.7566841, -104.9878686 39.7567675, -104.9878947 39.7567878, -104.9882105 39.7570336, -104.9885258 39.757279, -104.9885709 39.7573059, -104.9885973 39.7573301, -104.9886304 39.7573604) 701725177 - False + residential 2 24th Street - residential + False True - 43.498 + 43.49808503027489 LINESTRING (-104.9877614 39.7566841, -104.987685 39.7566247, -104.9876614 39.7566063, -104.9875635 39.7565301, -104.9875381 39.7565103, -104.9874038 39.7564058) [781164697, 16985780] - False + residential + 25 mph 29th Street - residential - 25 mph + False False - 105.22600000000001 + 105.22469798072663 LINESTRING (-104.9773637 39.7580024, -104.977462 39.7580764, -104.9774764 39.7580872, -104.9778136 39.758341, -104.9781432 39.7585954, -104.9781578 39.7586067, -104.9782379 39.7586686) 88625482 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 146.67899999999997 - LINESTRING (-104.9773637 39.7580024, -104.977274 39.7580719, -104.9765913 39.7585989, -104.9764889 39.7586783, -104.9762463 39.7588665, -104.9761553 39.7589389) + 146.67589289427485 + LINESTRING (-104.9773637 39.7580024, -104.977274 39.7580719, -104.9765927 39.7585999, -104.9764902 39.7586793, -104.9762475 39.7588674, -104.9761553 39.7589389) 278139935 - True + secondary 1 + 25 mph Champa Street - secondary - 25 mph + True False - 145.637 + 145.6374281606021 LINESTRING (-104.9782379 39.7586686, -104.9783244 39.7586016, -104.9793564 39.7578017, -104.9794377 39.7577387) 781164697 - False + residential 29th Street - residential + False False - 106.857 + 106.85642173657254 LINESTRING (-104.9782379 39.7586686, -104.9783343 39.758743, -104.9783509 39.7587558, -104.9786795 39.7590096, -104.9790357 39.7592845, -104.9791199 39.7593496) [781164697, 16985780] - False + residential 29th Street - residential + False True - 105.226 - 25 mph + 105.22469798072663 + 25 mph LINESTRING (-104.9782379 39.7586686, -104.9781578 39.7586067, -104.9781432 39.7585954, -104.9778136 39.758341, -104.9774764 39.7580872, -104.977462 39.7580764, -104.9773637 39.7580024) 781164697 - False + residential 29th Street - residential + False True - 106.51299999999999 + 106.51315688223876 LINESTRING (-104.9808584 39.7606918, -104.9807898 39.7606389, -104.9804198 39.7603532, -104.9800659 39.76008, -104.9799792 39.760013) 1182413372 - False + tertiary 2 Lawrence Street - residential + False True - 146.16 + 146.15965610575577 LINESTRING (-104.9808584 39.7606918, -104.9809328 39.7606343, -104.9812955 39.7603537, -104.9813439 39.7603162, -104.9817498 39.7600021, -104.9819814 39.7598229, -104.9820635 39.7597593) - 1182413373 - False + 1254814424 + residential 29th Street - residential + False False - 105.063 + 105.06397525498731 LINESTRING (-104.9808584 39.7606918, -104.9809515 39.7607637, -104.9813029 39.7610351, -104.9816167 39.7612773, -104.9816469 39.7613006, -104.9817256 39.7613614) 819744386 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 146.34300000000002 + 146.34223275958513 LINESTRING (-104.9817256 39.7613614, -104.9818212 39.7612874, -104.9822737 39.7609368, -104.9825395 39.7607332, -104.9828491 39.760491, -104.9829315 39.7604272) - - 819744386 - False - 2 - Larimer Street - tertiary - 30 mph - True - 146.449 - LINESTRING (-104.9817256 39.7613614, -104.9816408 39.7614271, -104.9806049 39.7622296, -104.9805188 39.7622963) - 1182413373 - False + residential 29th Street - residential + False False - 104.91199999999999 + 104.9123149430457 LINESTRING (-104.9817256 39.7613614, -104.9818267 39.7614395, -104.9818516 39.7614586, -104.9821646 39.7617003, -104.9823862 39.7618714, -104.9825281 39.761981, -104.9825433 39.7619927, -104.9825916 39.76203) - 1182413373 - False + 1254814424 + residential 29th Street - residential + False True - 105.063 + 105.0639752549873 LINESTRING (-104.9817256 39.7613614, -104.9816469 39.7613006, -104.9816167 39.7612773, -104.9813029 39.7610351, -104.9809515 39.7607637, -104.9808584 39.7606918) 16985783 - False + residential 29th Street - residential + False False - 109.145 + 109.14499485246085 LINESTRING (-104.974736 39.7559857, -104.9748352 39.756062, -104.975076 39.7562474, -104.9751825 39.7563294, -104.9755209 39.75659, -104.9755356 39.7566013, -104.9755623 39.7566219, -104.9756384 39.7566801) 781164903 - False + residential 2 + 20 Glenarm Place - residential - 20 + False False - 119.486 + 119.48498140536483 LINESTRING (-104.974736 39.7559857, -104.9748284 39.7559127, -104.9750345 39.7557499, -104.9751501 39.7556586, -104.9752191 39.7556041, -104.9752485 39.7555808, -104.9757108 39.7552156) 1181902746 - False + residential 29th Street - residential + False True - 108.009 + 108.00933399116713 LINESTRING (-104.974736 39.7559857, -104.9746537 39.7559224, -104.9743086 39.7556568, -104.9739706 39.7553967, -104.9739443 39.7553764, -104.973842 39.7552993) + + 130886835 + secondary + 2 + 25 mph + Stout Street + True + False + 2.7859129145570347 + [628378956, 130885101] - True + secondary 3 + 25 mph 18th Street - secondary - 25 mph + True False - 107.526 + 107.52484664497284 LINESTRING (-104.9906283 39.7477091, -104.9906971 39.7477618, -104.9907329 39.7477892, -104.9910875 39.7480608, -104.9912937 39.7482187, -104.9913707 39.7482774, -104.9914355 39.7483267, -104.991519 39.7483918) - - [130886835, 1049978118] - True - ['3', '2'] - Stout Street - secondary - 25 mph - False - 145.31300000000002 - LINESTRING (-104.9906283 39.7477091, -104.9905486 39.7477716, -104.9896879 39.748439, -104.9895126 39.7485755, -104.989471 39.7486078, -104.9894316 39.7486371) - [628378955, 124661430] - True + secondary ['3', '4'] 18th Street - secondary + True False - 106.08899999999998 + 106.08943756936964 LINESTRING (-104.991519 39.7483918, -104.9916068 39.7484594, -104.9919654 39.7487386, -104.9923127 39.7490083, -104.9923918 39.74907) 589989822 - True + secondary 2 + 25 mph Champa Street - secondary - 25 mph + True False - 145.375 + 145.37476801277762 LINESTRING (-104.991519 39.7483918, -104.9915955 39.7483308, -104.9921582 39.7478972, -104.9926417 39.7475247, -104.9927179 39.7474647) + + 1102890682 + tertiary + 3 + 25 mph + Lawrence Street + True + False + 3.5899269853485616 + 1053553372 - True + secondary 3 18th Street - secondary + True False - 105.68 + 105.67924216473396 LINESTRING (-104.9941268 39.7503988, -104.9942263 39.7504751, -104.9945878 39.7507522, -104.9949218 39.7510083, -104.9950021 39.7510699) - - [1102890681, 1102890682] - True - 3 - Lawrence Street - tertiary - 25 mph - False - 146.44 - LINESTRING (-104.9941268 39.7503988, -104.9940458 39.7504615, -104.9936683 39.7507537, -104.9934947 39.7508881, -104.9934627 39.7509129, -104.9933343 39.7510122, -104.9931864 39.7511267, -104.9930071 39.7512655, -104.9929197 39.7513332) - [130888020, 1053553374] - True + secondary ['3', '4'] 18th Street - secondary + True False - 105.978 + 105.97924679638105 LINESTRING (-104.9950021 39.7510699, -104.995104 39.751148, -104.9954454 39.7514098, -104.9955744 39.7515086, -104.9956838 39.7515925, -104.9958075 39.7516874, -104.9958799 39.7517429) 1053553373 - True + tertiary 4 Larimer Street - tertiary + True False - 145.85899999999998 + 145.85917434845499 LINESTRING (-104.9950021 39.7510699, -104.9950796 39.7510097, -104.9961258 39.7501973, -104.9962036 39.7501386) - + 317964610 - True + secondary 2 + 25 mph Market Street - secondary - 25 mph + True False - 146.23499999999999 - LINESTRING (-104.9958799 39.7517429, -104.9957979 39.7518074, -104.9956953 39.7518883, -104.9952601 39.7522315, -104.9947674 39.75262, -104.9946844 39.7526835) + 2.964917592753374 52957554 + residential 2 Court Place - residential - False + False True - 30.423000000000002 + 30.423325895889427 LINESTRING (-104.9781461 39.7506591, -104.9782149 39.7506066, -104.9782989 39.7505425, -104.9783986 39.7504663) 329980805 - False + tertiary 2 Washington Street - tertiary + False False - 9.141 + 9.140241139871527 LINESTRING (-104.9781461 39.7506591, -104.9781461 39.7506788, -104.978146 39.7507413) 329980805 - False + tertiary 2 Washington Street - tertiary + False True - 28.911 + 28.91073706422415 LINESTRING (-104.9781461 39.7506591, -104.9781462 39.7505664, -104.9781463 39.7505309, -104.9781464 39.7503991) 16989076 - False + residential 2 Ogden Street - residential + False False - 225.769 + 225.76964557722607 LINESTRING (-104.9745719 39.7494829, -104.974572 39.7493832, -104.974572 39.7493521, -104.9745728 39.7477107, -104.9745755 39.7476749, -104.9745919 39.7476295, -104.974624 39.7475806, -104.9746567 39.747535, -104.9746986 39.7474747) 16989076 - False + residential 2 Ogden Street - residential + False True - 139.294 + 139.29409422368764 LINESTRING (-104.9745719 39.7494829, -104.9745719 39.7495782, -104.9745719 39.7496078, -104.9745717 39.7498506, -104.9745717 39.7498697, -104.9745714 39.7505988, -104.9745714 39.7506381, -104.9745713 39.7507356) 131612988 + tertiary 2 + 30 mph East 22nd Avenue - tertiary - 30 mph - False + False False - 102.327 + 102.32669004457095 LINESTRING (-104.9745719 39.7494829, -104.9746862 39.7494834, -104.9751764 39.7494852, -104.9756707 39.7494871, -104.9757688 39.7494874) 16986119 - True + residential 2 Glenarm Place - residential + True False - 144.23 + 144.22885042889357 LINESTRING (-104.9735559 39.7569126, -104.9736338 39.7568565, -104.9746303 39.7560692, -104.9746518 39.7560522, -104.974736 39.7559857) 231105088 - False + residential 2 30th Street - residential + False False - 108.26199999999999 + 108.26292864553605 LINESTRING (-104.9735559 39.7569126, -104.9736326 39.7569856, -104.9739842 39.7572583, -104.9742979 39.757502, -104.9743324 39.7575288, -104.9743607 39.7575508, -104.9744387 39.7576101) - + 524280872 + tertiary 2 Glenarm Place - tertiary - False + False True - 144.89300000000003 - LINESTRING (-104.9904235 39.7438523, -104.990364 39.7438976, -104.9896352 39.7444618, -104.989314 39.7447104, -104.9892287 39.7447764) + 139.65552058825588 + LINESTRING (-104.9904235 39.7438523, -104.990364 39.7438976, -104.9896352 39.7444618, -104.989314 39.7447104, -104.9892719 39.744743) 650079086 + unclassified 2 21st Street - tertiary - False + False False - 103.81500000000001 + 103.81637192683446 LINESTRING (-104.9843978 39.7485137, -104.9843198 39.7484539, -104.9839621 39.7481796, -104.9837327 39.7480037, -104.9836474 39.7479383, -104.9836182 39.7479159, -104.983538 39.7478544) 650079086 + unclassified 2 21st Street - tertiary - False + False True - 107.69300000000001 + 107.69242361048725 LINESTRING (-104.9843978 39.7485137, -104.9844925 39.7485864, -104.9847408 39.7487768, -104.9848411 39.7488537, -104.9849464 39.7489344, -104.9849675 39.7489506, -104.9851691 39.7491052, -104.9851862 39.7491183, -104.9852143 39.7491399, -104.9852546 39.7491708, -104.9852896 39.7491977) [781314136, 834146466] + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False False - 145.737 + 145.7366198437863 LINESTRING (-104.9843978 39.7485137, -104.9843239 39.748571, -104.9843121 39.7485801, -104.9842025 39.7486651, -104.9838019 39.7489757, -104.9832908 39.7493718, -104.9831973 39.7494442) 834146466 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False True - 110.96999999999998 + 110.97012321062309 LINESTRING (-104.9843978 39.7485137, -104.9845002 39.7484343, -104.9845104 39.7484264, -104.9846964 39.7482821, -104.9848245 39.7481829, -104.984948 39.7480871, -104.9852808 39.7478291, -104.9853118 39.7478051) 781314135 + residential 2 + 25 mph 22nd Street - tertiary - 25 mph - False + False False - 104.561 + 104.56014735689874 LINESTRING (-104.9831973 39.7494442, -104.9831161 39.7493816, -104.9829822 39.7492783, -104.9828182 39.7491518, -104.982767 39.7491123, -104.9824087 39.7488359, -104.9823339 39.7487782) [526024436, 781314135] + residential 2 + 25 mph 22nd Street - tertiary - 25 mph - False + False True - 107.71799999999999 + 107.71783207522489 LINESTRING (-104.9831973 39.7494442, -104.9832891 39.749515, -104.9834401 39.7496314, -104.9836382 39.7497843, -104.9839535 39.7500274, -104.9839829 39.7500501, -104.9840113 39.750072, -104.9840501 39.750102, -104.9840868 39.7501303) 781314136 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False False - 145.79899999999998 + 145.79919596681216 LINESTRING (-104.9831973 39.7494442, -104.9831155 39.7495077, -104.9821003 39.7502947, -104.9820871 39.7503049, -104.9819964 39.7503752) [781314136, 834146466] + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False True - 145.73700000000002 + 145.7366198437863 LINESTRING (-104.9831973 39.7494442, -104.9832908 39.7493718, -104.9838019 39.7489757, -104.9842025 39.7486651, -104.9843121 39.7485801, -104.9843239 39.748571, -104.9843978 39.7485137) 52867686 - False + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph + False False - 107.784 + 107.78273385497043 LINESTRING (-104.9819964 39.7503752, -104.9820872 39.7504447, -104.9823494 39.7506457, -104.9824375 39.7507132, -104.982784 39.7509788, -104.9828127 39.7510008, -104.9828531 39.7510317, -104.9828888 39.7510599) 781314131 + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph - False + False True - 105.315 + 105.31585267921481 LINESTRING (-104.9819964 39.7503752, -104.9819174 39.7503149, -104.9815666 39.7500474, -104.9812222 39.7497848, -104.9811218 39.7497082) [781314136, 781314137] + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False False - 146.571 + 146.5703572318397 LINESTRING (-104.9819964 39.7503752, -104.9819111 39.7504413, -104.9818992 39.7504505, -104.9816957 39.7506083, -104.9814625 39.7507891, -104.9808745 39.7512449, -104.9807891 39.7513111) 781314136 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False True - 145.79899999999998 + 145.79919596681216 LINESTRING (-104.9819964 39.7503752, -104.9820871 39.7503049, -104.9821003 39.7502947, -104.9831155 39.7495077, -104.9831973 39.7494442) 278136621 - False + residential 26th Street - residential + False False - 107.742 - LINESTRING (-104.9783626 39.753192, -104.9784463 39.7532562, -104.9784815 39.753283, -104.9788003 39.753527, -104.9791278 39.7537787, -104.9791527 39.7537979, -104.9791804 39.7538191, -104.9792549 39.7538763) + 107.29086244746175 + LINESTRING (-104.9783737 39.7531892, -104.9784535 39.7532506, -104.9784886 39.7532776, -104.9788066 39.7535222, -104.979134 39.7537739, -104.9791589 39.7537931, -104.9791866 39.7538144, -104.979261 39.7538716) 325699005 + residential 2 Glenarm Place - tertiary - False + False False - 20.572000000000003 - LINESTRING (-104.9783626 39.753192, -104.978299 39.7532272, -104.9782299 39.7532468, -104.9781433 39.7532613) + 22.62567952396558 + LINESTRING (-104.9783737 39.7531892, -104.9783158 39.7532344, -104.9782303 39.7532663, -104.9781432 39.7532651) 781314137 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False True - 147.24499999999998 - LINESTRING (-104.9783626 39.753192, -104.9784603 39.7531163, -104.9794913 39.7523171, -104.9795755 39.7522518) + 146.3564513831473 + LINESTRING (-104.9783737 39.7531892, -104.9784638 39.7531189, -104.9794913 39.7523171, -104.9795755 39.7522518) 132260224 - True + primary 3 + 25 mph 22nd Street - secondary - 25 mph + True False - 105.566 - LINESTRING (-104.9893089 39.7541402, -104.9892317 39.7540807, -104.9888762 39.7538072, -104.9885288 39.75354, -104.9884361 39.7534686) + 105.56499081982986 + LINESTRING (-104.9893089 39.7541402, -104.9892317 39.7540807, -104.9888762 39.7538072, -104.9885288 39.75354, -104.9884983 39.7535165, -104.9884361 39.7534686) [1121690180, 231105095] - True + tertiary 3 Lawrence Street - tertiary + True False - 147.046 + 147.04355593676365 LINESTRING (-104.9893089 39.7541402, -104.9892185 39.7542111, -104.9891188 39.7542892, -104.9889593 39.7544143, -104.9888479 39.7545016, -104.9888088 39.7545322, -104.9887115 39.7546082, -104.9886804 39.7546329, -104.9885012 39.7547734, -104.9881878 39.7550192, -104.9881046 39.7550844) [1121632109, 124661423] - True - ['3', '2'] + tertiary + ['2', '3'] Lawrence Street - tertiary + True False - 85.74 + 85.73929561669848 LINESTRING (-104.9881046 39.7550844, -104.9880102 39.755157, -104.9878817 39.7552565, -104.987574 39.7554952, -104.9873977 39.7556314) 1122597045 - True + primary 3 + 30 mph Park Avenue West - secondary - 30 mph + True False - 104.536 + 104.53444521762997 LINESTRING (-104.9881046 39.7550844, -104.9881897 39.7551485, -104.9885319 39.7554142, -104.9888884 39.7556884, -104.9889675 39.7557505) 231105078 - False + residential 26th Street - residential + False False - 104.81700000000001 + 104.816758979597 LINESTRING (-104.9844841 39.7578861, -104.9845746 39.7579558, -104.9849276 39.7582277, -104.9852477 39.7584744, -104.9852658 39.7584883, -104.9853503 39.7585533) - - 278136621 - False - 26th Street - residential - True - 106.78800000000001 - LINESTRING (-104.9844841 39.7578861, -104.9844174 39.7578349, -104.9838876 39.7574289, -104.983682 39.757271, -104.9835996 39.7572079) - 1182413372 - False + tertiary 2 Lawrence Street - residential + False False - 146.34699999999998 - LINESTRING (-104.9844841 39.7578861, -104.9844061 39.7579465, -104.9840794 39.758199, -104.9838966 39.7583408, -104.9833548 39.7587601, -104.9832775 39.7588198) + 146.34670365080703 + LINESTRING (-104.9844841 39.7578861, -104.9843961 39.7579539, -104.9840794 39.758199, -104.9838966 39.7583408, -104.9833554 39.7587594, -104.9832775 39.7588198) 1182413372 - False + tertiary 2 Lawrence Street - residential + False True - 146.292 + 146.29199557418912 LINESTRING (-104.9844841 39.7578861, -104.9845622 39.7578257, -104.9855999 39.7570226, -104.9856903 39.7569528) + + 1297796973 + residential + 26th Street + False + True + 99.18817541305317 + LINESTRING (-104.9844841 39.7578861, -104.9844072 39.7578271, -104.9838876 39.7574289, -104.9836898 39.7572763, -104.9836629 39.7572559) + 278136619 - False + unclassified 2 27th Street - tertiary + False False - 104.89699999999999 + 104.89758421231419 LINESTRING (-104.9832775 39.7588198, -104.9833707 39.7588914, -104.9833858 39.758903, -104.9836211 39.7590838, -104.9837226 39.7591617, -104.9840643 39.759424, -104.9841457 39.7594865) 278136619 - False + unclassified 2 27th Street - tertiary + False True - 106.69500000000001 - LINESTRING (-104.9832775 39.7588198, -104.9832142 39.7587708, -104.9831942 39.7587555, -104.9828421 39.7584854, -104.9824783 39.7582061, -104.9823944 39.7581417) + 106.69519866255132 + LINESTRING (-104.9832775 39.7588198, -104.9832102 39.7587678, -104.9831942 39.7587555, -104.9828421 39.7584854, -104.982484 39.758211, -104.9823944 39.7581417) 1182413372 - False + tertiary 2 Lawrence Street - residential + False False - 147.24900000000002 + 147.24901119096987 LINESTRING (-104.9832775 39.7588198, -104.9832045 39.7588763, -104.9825737 39.7593644, -104.9821551 39.7596885, -104.9820635 39.7597593) 1182413372 - False + tertiary 2 Lawrence Street - residential + False True - 146.34699999999998 - LINESTRING (-104.9832775 39.7588198, -104.9833548 39.7587601, -104.9838966 39.7583408, -104.9840794 39.758199, -104.9844061 39.7579465, -104.9844841 39.7578861) + 146.34670365080703 + LINESTRING (-104.9832775 39.7588198, -104.9833554 39.7587594, -104.9838966 39.7583408, -104.9840794 39.758199, -104.9843961 39.7579539, -104.9844841 39.7578861) 231105077 - False + residential 30th Street - residential + False False - 105.133 + 105.13253141989905 LINESTRING (-104.9796498 39.7616272, -104.9797412 39.7616977, -104.9800953 39.7619703, -104.980428 39.7622265, -104.9804412 39.7622366, -104.9805188 39.7622963) 231105077 - False + residential 30th Street - residential + False True - 106.43100000000001 + 106.43053784641235 LINESTRING (-104.9796498 39.7616272, -104.9795811 39.7615744, -104.9792089 39.7612878, -104.9788642 39.7610224, -104.97877 39.7609499) 409342461 - False + tertiary 2 Lawrence Street - residential + False False - 144.776 + 144.77674867265506 LINESTRING (-104.9796498 39.7616272, -104.9795663 39.7616917, -104.9791096 39.7620453, -104.9788379 39.7622555, -104.9785397 39.7624862, -104.9784561 39.7625509) 409342461 - False + tertiary 2 Lawrence Street - residential + False True - 118.24900000000001 + 118.24920517177142 LINESTRING (-104.9796498 39.7616272, -104.9797266 39.7615678, -104.9798381 39.7614815, -104.9806247 39.7608727) 132260224 - True + primary 3 + 25 mph 22nd Street - secondary - 25 mph + True False - 104.86600000000001 + 104.86609806052044 LINESTRING (-104.990176 39.7548073, -104.9900987 39.7547478, -104.9897442 39.754475, -104.989402 39.7542118, -104.9893089 39.7541402) 132260225 - True + tertiary 3 Larimer Street - tertiary + True False - 145.845 + 145.84475507254626 LINESTRING (-104.990176 39.7548073, -104.9902508 39.7547492, -104.9903297 39.7546878, -104.9905791 39.7544939, -104.9909571 39.7542, -104.9910852 39.7541004, -104.9912966 39.7539355, -104.9913755 39.7538746) 647950269 - True + primary 3 + 30 mph Park Avenue West - secondary - 30 mph + True False - 105.77099999999999 - LINESTRING (-104.9889675 39.7557505, -104.9890644 39.7558257, -104.9894065 39.7560894, -104.9897568 39.7563606, -104.9898406 39.7564245) + 105.77058073472303 + LINESTRING (-104.9889675 39.7557505, -104.9890644 39.7558257, -104.9894065 39.7560894, -104.9897568 39.7563606, -104.9898088 39.7564003, -104.9898406 39.7564245) 1122597044 - True + tertiary 3 + 30 mph Larimer Street - tertiary - 30 mph + True False - 147.21599999999998 + 147.21597562891475 LINESTRING (-104.9889675 39.7557505, -104.9890493 39.7556856, -104.9891458 39.7556113, -104.9893015 39.7554898, -104.9895199 39.7553194, -104.9898906 39.7550301, -104.9900839 39.75488, -104.990176 39.7548073) 231105078 - False + residential 26th Street - residential + False True - 104.81700000000001 + 104.81675897959698 LINESTRING (-104.9853503 39.7585533, -104.9852658 39.7584883, -104.9852477 39.7584744, -104.9849276 39.7582277, -104.9845746 39.7579558, -104.9844841 39.7578861) 719091071 - False + tertiary_link 2 + 30 mph Larimer Street - tertiary_link - 30 mph + False False - 146.03099999999998 + 146.03169821865333 LINESTRING (-104.9853503 39.7585533, -104.9854307 39.7584909, -104.9864798 39.7576781, -104.9865535 39.757621) 719091072 - False + residential 26th Street - residential + False False - 105.30799999999999 + 105.30812721822599 LINESTRING (-104.9853503 39.7585533, -104.9854403 39.7586226, -104.9854564 39.758635, -104.9857869 39.7588896, -104.9861228 39.7591483, -104.9861695 39.7591837, -104.9862206 39.7592236) 819744386 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 146.186 + 146.18604360870822 LINESTRING (-104.9853503 39.7585533, -104.9852624 39.7586214, -104.9847003 39.7590569, -104.9842278 39.7594229, -104.9841457 39.7594865) 278136619 - False + unclassified 2 27th Street - tertiary + False False - 105.178 + 105.1776306181433 LINESTRING (-104.9841457 39.7594865, -104.9842376 39.7595571, -104.9845895 39.7598273, -104.9849269 39.7600866, -104.9849419 39.7600981, -104.9850162 39.760155) 278136619 - False + unclassified 2 27th Street - tertiary + False True - 104.897 + 104.89758421231419 LINESTRING (-104.9841457 39.7594865, -104.9840643 39.759424, -104.9837226 39.7591617, -104.9836211 39.7590838, -104.9833858 39.758903, -104.9833707 39.7588914, -104.9832775 39.7588198) 819744386 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 146.186 + 146.18604360870822 LINESTRING (-104.9841457 39.7594865, -104.9842278 39.7594229, -104.9847003 39.7590569, -104.9852624 39.7586214, -104.9853503 39.7585533) 819744386 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 147.356 + 147.3550400831453 LINESTRING (-104.9841457 39.7594865, -104.9840637 39.7595501, -104.9836036 39.7599066, -104.9834664 39.7600128, -104.9830208 39.760358, -104.9829315 39.7604272) 231105077 - False + residential 30th Street - residential + False True - 105.133 + 105.13253141989905 LINESTRING (-104.9805188 39.7622963, -104.9804412 39.7622366, -104.980428 39.7622265, -104.9800953 39.7619703, -104.9797412 39.7616977, -104.9796498 39.7616272) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 145.30200000000002 + 145.30062049922716 LINESTRING (-104.9805188 39.7622963, -104.9804351 39.7623612, -104.979972 39.7627199, -104.9798968 39.7627782, -104.9796978 39.762932, -104.9794041 39.7631599, -104.9793215 39.7632239) - - 819744386 - False - 2 - Larimer Street - tertiary - 30 mph - False - 146.44899999999998 - LINESTRING (-104.9805188 39.7622963, -104.9806049 39.7622296, -104.9816408 39.7614271, -104.9817256 39.7613614) - 819744387 - False + residential 30th Street - residential + False False - 104.77799999999999 + 104.77772993588657 LINESTRING (-104.9805188 39.7622963, -104.9806156 39.7623709, -104.9806397 39.7623894, -104.9809576 39.7626343, -104.9813052 39.7629019, -104.9813207 39.7629139, -104.9813848 39.7629632) 230983600 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 145.446 + 145.44524165492618 LINESTRING (-104.9757084 39.7660229, -104.9756268 39.7660863, -104.9752014 39.7664169, -104.9749093 39.7666438, -104.9746003 39.7668866, -104.9745143 39.7669548) 278444497 - False + residential 34th Street - residential + False False - 105.45100000000001 + 105.45125880310566 LINESTRING (-104.9757084 39.7660229, -104.9756277 39.7659609, -104.9756146 39.7659508, -104.975283 39.765696, -104.9749382 39.7654309, -104.9749257 39.7654213, -104.9748359 39.7653524) 278457834 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 145.46 - LINESTRING (-104.9757084 39.7660229, -104.975795 39.7659558, -104.9760121 39.7657876, -104.9762378 39.7656128, -104.9762546 39.7655998, -104.9765292 39.7653871, -104.9768229 39.7651595, -104.9769071 39.7650943) + 145.46087650559642 + LINESTRING (-104.9757084 39.7660229, -104.975795 39.7659558, -104.9760121 39.7657876, -104.9762378 39.7656128, -104.9762546 39.7655998, -104.9768229 39.7651595, -104.9769071 39.7650943) 959622560 - False + residential 34th Street - residential + False False - 104.547 + 104.54687661849786 LINESTRING (-104.9757084 39.7660229, -104.9758016 39.766094, -104.9758135 39.7661031, -104.9761472 39.7663576, -104.9763424 39.7665065, -104.9764981 39.7666253, -104.9765082 39.766633, -104.9765766 39.7666852) [130808957, 600545919] - True + primary ['3', '4'] - I 70 Business;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + True + I 70 Business;US 40;US 287 False - 108.95400000000001 + 108.95347317603154 LINESTRING (-104.9861268 39.7401379, -104.9862662 39.7401391, -104.9866582 39.7401426, -104.9872581 39.740144, -104.987401 39.7401457) [647582785, 132915795] - True + primary 4 + 30 mph Lincoln Street - primary - 30 mph + True False - 171.604 + 171.6038824392991 LINESTRING (-104.9861268 39.7401379, -104.9861275 39.7402056, -104.9861223 39.7406238, -104.9861216 39.7406846, -104.9861106 39.7415888, -104.9861093 39.7416811) [600545920, 600546002, 600545974] - False - ['4', '5'] - I 70 Bus;US 40;US 287 + primary + ['5', '4'] + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 97.86900000000001 + 97.86855020439936 LINESTRING (-104.9787514 39.7400185, -104.9786702 39.7400182, -104.9783745 39.7400172, -104.9782403 39.7400168, -104.9780247 39.7400161, -104.9777048 39.740015, -104.9776068 39.7400152) [628643778, 628643779, 130919109] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 98.637 + 98.63810947430922 LINESTRING (-104.9787514 39.7400185, -104.9788463 39.7400188, -104.9790376 39.7400194, -104.9793421 39.7400205, -104.9794346 39.7400208, -104.9795607 39.7400212, -104.9798371 39.7400221, -104.979905 39.7400223) [600545968, 628643764] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 44.463 + 44.46299990914987 LINESTRING (-104.9753186 39.7400184, -104.9751927 39.7400191, -104.9749015 39.7400206, -104.9747986 39.7400211) [600545968, 628643765] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 73.577 + 73.57665349760785 LINESTRING (-104.9753186 39.7400184, -104.9754635 39.7400176, -104.9755641 39.7400171, -104.9759158 39.7400165, -104.9761791 39.7400161) [600545968, 628643764] - False + primary 4 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 True - 44.463 + 44.462999909149865 LINESTRING (-104.9747986 39.7400211, -104.9749015 39.7400206, -104.9751927 39.7400191, -104.9753186 39.7400184) [907325132, 907325133, 628643759] - False + primary 5 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 54.553000000000004 + 54.55274245049495 LINESTRING (-104.9747986 39.7400211, -104.9746341 39.740022, -104.9745214 39.7400226, -104.9741606 39.7400245) [231028123, 781314134] + residential + 25 mph 22nd Street - tertiary - 25 mph - False + False False - 103.58000000000001 + 103.57914987448336 LINESTRING (-104.9823339 39.7487782, -104.9822356 39.7487026, -104.9818854 39.7484332, -104.981548 39.7481732, -104.9814775 39.7481193) 781314133 + tertiary 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False False - 146.398 + 146.39715491135655 LINESTRING (-104.9823339 39.7487782, -104.9822498 39.7488427, -104.9812272 39.7496273, -104.9811218 39.7497082) [319178360, 1176005216, 781314133] + tertiary 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False True - 145.427 + 145.42705627992356 LINESTRING (-104.9823339 39.7487782, -104.9824166 39.748715, -104.9829411 39.7483125, -104.9834656 39.74791, -104.983538 39.7478544) 781314135 + residential 2 + 25 mph 22nd Street - tertiary - 25 mph - False + False True - 104.561 + 104.56014735689874 LINESTRING (-104.9823339 39.7487782, -104.9824087 39.7488359, -104.982767 39.7491123, -104.9828182 39.7491518, -104.9829822 39.7492783, -104.9831161 39.7493816, -104.9831973 39.7494442) 39876727 - True + secondary 2 + 25 mph 22nd Street - secondary - 25 mph + True False - 66.001 + 66.0012812727066 LINESTRING (-104.9866817 39.7521238, -104.9866171 39.7520746, -104.9862531 39.7517971, -104.9861687 39.7517347, -104.9861335 39.7517059) 808959126 - True + secondary 2 + 25 mph Champa Street - secondary - 25 mph + True False - 84.87599999999999 + 84.87523974344629 LINESTRING (-104.9866817 39.7521238, -104.986765 39.7520594, -104.9868534 39.7519907, -104.9872623 39.7516733, -104.9873809 39.7515819) 231105089 - True + secondary 2 + 25 mph Market Street - secondary - 25 mph + True False - 146.59199999999998 + 146.59159049249797 LINESTRING (-104.991044 39.7554853, -104.9909554 39.7555545, -104.9908201 39.75566, -104.9899223 39.7563608, -104.9898406 39.7564245) 738121821 - True + primary 3 + 25 mph 22nd Street - secondary - 25 mph + True False - 105.78 - LINESTRING (-104.991044 39.7554853, -104.9909682 39.7554261, -104.9906167 39.7551516, -104.9902778 39.7548868, -104.990176 39.7548073) + 105.78035698941825 + LINESTRING (-104.991044 39.7554853, -104.9910231 39.755469, -104.9909682 39.7554261, -104.9906167 39.7551516, -104.9902778 39.7548868, -104.990176 39.7548073) 231105084 - False + tertiary 3 East 19th Avenue - tertiary + False False - 108.528 + 108.52884036819947 LINESTRING (-104.9861174 39.7461813, -104.9859825 39.7461813, -104.9858167 39.7461813, -104.9854844 39.7461813, -104.9849886 39.7461814, -104.984848 39.7461814) 231105084 - False + tertiary 3 East 19th Avenue - tertiary + False True - 108.529 - LINESTRING (-104.9861174 39.7461813, -104.9862599 39.7461813, -104.9863791 39.7461813, -104.986561 39.7461813, -104.9865864 39.7461813, -104.9867475 39.7461813, -104.9872407 39.7461813, -104.9873868 39.7461813) + 109.09755421949176 + LINESTRING (-104.9861174 39.7461813, -104.9862599 39.7461813, -104.9863791 39.7461813, -104.986561 39.7461813, -104.9865864 39.7461813, -104.9867475 39.7461813, -104.9872495 39.7461813, -104.9873867 39.7461478) 461904630 - True + primary 4 + 30 mph Lincoln Street - primary - 30 mph - False - 149.24699999999999 - LINESTRING (-104.9861174 39.7461813, -104.9861169 39.74629, -104.9861147 39.7467841, -104.9861146 39.7468109, -104.9861115 39.7474823, -104.9861113 39.7475235) - - - [1176005225, 16987763] - 2 - Sherman Street - residential - 25 mph - False + True False - 151.00599999999997 - LINESTRING (-104.984848 39.7461814, -104.9848474 39.746287, -104.9848462 39.7464931, -104.9848438 39.7468571, -104.9848429 39.7470016, -104.9848401 39.7474314, -104.984839 39.747478, -104.9848394 39.7475394) + 149.2469537438678 + LINESTRING (-104.9861174 39.7461813, -104.9861169 39.74629, -104.9861147 39.7467841, -104.9861146 39.7468109, -104.9861116 39.7474538, -104.9861113 39.7475235) 16987763 + residential 2 + 25 mph Sherman Street - residential - 25 mph - False + False True - 144.799 + 144.79897850298335 LINESTRING (-104.984848 39.7461814, -104.9848483 39.746099, -104.9848496 39.7458002, -104.9848497 39.7457664, -104.9848516 39.7453385, -104.9848527 39.7450827, -104.9848532 39.7449694, -104.9848531 39.7448792) - - [1039146328, 231105084] - False - 3 - East 19th Avenue - tertiary - False - 107.032 - LINESTRING (-104.984848 39.7461814, -104.9847364 39.7461814, -104.9842213 39.7461814, -104.98374 39.7461814, -104.9835961 39.7461814) - 231105084 - False + tertiary 3 East 19th Avenue - tertiary + False True - 108.528 + 108.52884036819948 LINESTRING (-104.984848 39.7461814, -104.9849886 39.7461814, -104.9854844 39.7461813, -104.9858167 39.7461813, -104.9859825 39.7461813, -104.9861174 39.7461813) + + [1039146328, 1222109785] + tertiary + 3 + East 19th Avenue + False + False + 107.03265581771535 + LINESTRING (-104.984848 39.7461814, -104.9847364 39.7461814, -104.9842213 39.7461814, -104.98374 39.7461814, -104.9835961 39.7461814) + + + [1176005225, 1222109786] + residential + 2 + 25 mph + Sherman Street + False + False + 151.00550826036297 + LINESTRING (-104.984848 39.7461814, -104.9848474 39.746287, -104.9848462 39.7464931, -104.9848438 39.7468571, -104.9848429 39.7470016, -104.9848401 39.7474314, -104.984839 39.747478, -104.9848394 39.7475394) + 39471712 - True + tertiary 2 Washington Street - tertiary + True False - 147.624 + 147.62351880886794 LINESTRING (-104.9787322 39.7461815, -104.9787327 39.7460782, -104.9787353 39.7455177, -104.9787362 39.7453069, -104.9787378 39.7449518, -104.9787381 39.7449015, -104.9787383 39.7448539) 119422847 + tertiary 2 Washington Street - tertiary - False + False True - 148.201 + 148.2008292623952 LINESTRING (-104.9787322 39.7461815, -104.9787321 39.7462692, -104.9787321 39.7462893, -104.9787313 39.7474627, -104.9787313 39.7475143) 596723425 - False + tertiary 2 East 19th Avenue - tertiary + False False - 100.996 + 100.99669247309022 LINESTRING (-104.9787322 39.7461815, -104.978651 39.7461815, -104.9782194 39.7461815, -104.9776704 39.7461812, -104.9775509 39.7461815) 596723425 - False + tertiary 2 East 19th Avenue - tertiary + False True - 99.26 + 99.26113401193402 LINESTRING (-104.9787322 39.7461815, -104.978838 39.7461815, -104.9789556 39.7461815, -104.9791661 39.7461814, -104.9798029 39.7461812, -104.9798932 39.7461815) 131612987 + tertiary 3 East 19th Avenue - tertiary - False + False True - 87.54 + 87.53969096176803 LINESTRING (-104.976527 39.74618, -104.9767605 39.7461803, -104.9774571 39.7461814, -104.9775509 39.7461815) 781383478 + secondary 4 + 30 mph Park Avenue - secondary - 30 mph - False + False False - 125.326 + 125.32540678445676 LINESTRING (-104.976527 39.74618, -104.9766444 39.7462719, -104.9770175 39.7465519, -104.9773724 39.7468209, -104.9774569 39.746885, -104.9775708 39.7469713) 781383478 + secondary 4 + 30 mph Park Avenue - secondary - 30 mph - False + False True - 44.608999999999995 + 44.6091197885067 LINESTRING (-104.976527 39.74618, -104.9763879 39.7460696, -104.9761639 39.7458919) 1039146329 - False + residential 2 East 19th Avenue - residential + False False - 31.199 + 31.198513453193453 LINESTRING (-104.976527 39.74618, -104.9763068 39.7461787, -104.9761621 39.7461778) 128948321 - False + residential 2 East 19th Avenue - residential + False True - 119.11600000000001 + 119.11703278532764 LINESTRING (-104.9747689 39.7461693, -104.9748881 39.74617, -104.975683 39.7461749, -104.9757007 39.746175, -104.9760092 39.7461768, -104.9761621 39.7461778) [628585954, 628620751] - False - ['3', '2'] + residential + ['2', '3'] East 19th Avenue - residential + False False - 59.373 + 59.37325311927018 LINESTRING (-104.9747689 39.7461693, -104.9746748 39.7461674, -104.9744533 39.7461632, -104.9742964 39.7461549, -104.9740844 39.7461056) 691564659 - False + tertiary 2 Ogden Street - tertiary + False False - 107.50399999999999 + 107.50382302491323 LINESTRING (-104.9747689 39.7461693, -104.9747686 39.7460669, -104.9747661 39.7455234, -104.9747658 39.7452025) [691564659, 279927540] - False + tertiary 2 Ogden Street - tertiary + False True - 146.299 + 146.29788525561125 LINESTRING (-104.9747689 39.7461693, -104.9747692 39.7462568, -104.9747707 39.7467131, -104.9747711 39.7468396, -104.9747713 39.7469283, -104.9747721 39.7471524, -104.9747724 39.7472575, -104.9747704 39.7473122, -104.9747578 39.7473641, -104.9747492 39.7473865, -104.9747415 39.7474064, -104.9746986 39.7474747) 88625482 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 146.822 + 146.8211584605237 LINESTRING (-104.9797774 39.7561319, -104.9796909 39.7561989, -104.9794914 39.7563535, -104.9786557 39.7570012, -104.9785678 39.7570693) - 278136619 - False + 1223344070 + tertiary 2 27th Street - tertiary + False False - 105.20400000000001 + 105.20372731879542 LINESTRING (-104.9797774 39.7561319, -104.9798723 39.756206, -104.9798928 39.756222, -104.9802178 39.7564756, -104.9803813 39.7565991, -104.980554 39.7567295, -104.9805673 39.7567395, -104.9806481 39.7568005) - 278136619 - False + 1223344070 + tertiary 2 27th Street - tertiary + False True - 104.883 + 104.8826417759195 LINESTRING (-104.9797774 39.7561319, -104.9797001 39.7560725, -104.9796796 39.7560569, -104.979345 39.7558, -104.9790008 39.7555359, -104.9789091 39.7554655) 278136619 - False + unclassified 2 27th Street - tertiary + False False - 106.527 + 106.52680103514525 LINESTRING (-104.9806481 39.7568005, -104.9807465 39.7568761, -104.9807591 39.7568858, -104.9807975 39.7569153, -104.9810965 39.7571449, -104.9814437 39.7574115, -104.9815297 39.7574776) - - 278136619 - False - 2 - 27th Street - tertiary - True - 105.20400000000001 - LINESTRING (-104.9806481 39.7568005, -104.9805673 39.7567395, -104.980554 39.7567295, -104.9803813 39.7565991, -104.9802178 39.7564756, -104.9798928 39.756222, -104.9798723 39.756206, -104.9797774 39.7561319) - 278139935 - True + secondary 1 + 25 mph Champa Street - secondary - 25 mph + True False - 146.105 - LINESTRING (-104.9806481 39.7568005, -104.9807359 39.7567325, -104.9817641 39.7559356, -104.9818517 39.7558676) + 146.39156880312157 + LINESTRING (-104.9806481 39.7568005, -104.9807359 39.7567325, -104.9817641 39.7559356, -104.9818541 39.7558658) + + + 1223344070 + tertiary + 2 + 27th Street + False + True + 105.20372731879542 + LINESTRING (-104.9806481 39.7568005, -104.9805673 39.7567395, -104.980554 39.7567295, -104.9803813 39.7565991, -104.9802178 39.7564756, -104.9798928 39.756222, -104.9798723 39.756206, -104.9797774 39.7561319) 88625482 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 146.024 - LINESTRING (-104.9761553 39.7589389, -104.9760855 39.7589933, -104.9750265 39.7598135, -104.9749522 39.7598712) + 146.0244653309338 + LINESTRING (-104.9761553 39.7589389, -104.9760694 39.7590055, -104.9750408 39.7598033, -104.9749522 39.7598712) [781164696, 781164695] + residential 2 + 25 mph 30th Street - residential - 25 mph - False + False False - 105.714 - LINESTRING (-104.9761553 39.7589389, -104.9762424 39.7590047, -104.9762609 39.7590191, -104.9765994 39.7592819, -104.9769665 39.7595604, -104.9770306 39.7596105) + 105.71418808154398 + LINESTRING (-104.9761553 39.7589389, -104.9762499 39.7590101, -104.9762609 39.7590191, -104.9765994 39.7592819, -104.9769535 39.7595518, -104.9770306 39.7596105) 781164695 + residential 2 + 25 mph 30th Street - residential - 25 mph - False + False True - 105.453 + 105.45341066352535 LINESTRING (-104.9761553 39.7589389, -104.9760752 39.7588755, -104.9760613 39.7588648, -104.9758445 39.7586983, -104.9757293 39.7586092, -104.9756908 39.7585794, -104.9753823 39.7583406, -104.975286 39.758266) 329980805 - False + tertiary 2 Washington Street - tertiary + False False - 45.735 + 45.73455194604339 LINESTRING (-104.978146 39.7507413, -104.978146 39.7507773, -104.9781456 39.7511526) 329980805 - False + tertiary 2 Washington Street - tertiary + False True - 9.141 + 9.140241139871527 LINESTRING (-104.978146 39.7507413, -104.9781461 39.7506788, -104.9781461 39.7506591) 446229412 - False + tertiary 2 East 23rd Avenue - tertiary + False False - 101.35799999999999 + 101.35777746725991 LINESTRING (-104.978146 39.7507413, -104.9780562 39.7507412, -104.9780125 39.7507411, -104.9775602 39.7507403, -104.9770767 39.7507396, -104.9769604 39.7507394) 16989076 - False + residential 2 Ogden Street - residential + False False - 139.294 + 139.29409422368764 LINESTRING (-104.9745713 39.7507356, -104.9745714 39.7506381, -104.9745714 39.7505988, -104.9745717 39.7498697, -104.9745717 39.7498506, -104.9745719 39.7496078, -104.9745719 39.7495782, -104.9745719 39.7494829) 16989076 - False + residential 2 Ogden Street - residential + False True - 139.628 + 139.62767801353348 LINESTRING (-104.9745713 39.7507356, -104.9745713 39.7508273, -104.9745713 39.7508576, -104.9745707 39.7518971, -104.9745707 39.7519913) 446229412 - False + tertiary 2 East 23rd Avenue - tertiary + False True - 102.289 + 102.2896250185652 LINESTRING (-104.9745713 39.7507356, -104.9746915 39.7507358, -104.9751729 39.7507366, -104.9756721 39.7507374, -104.9757678 39.7507375) 16988896 + tertiary 2 21st Street - tertiary - False + False False - 106.537 - LINESTRING (-104.9922563 39.7545524, -104.9921784 39.7544925, -104.9918216 39.7542179, -104.9914808 39.7539557, -104.9913755 39.7538746) + 106.53574488267253 + LINESTRING (-104.9922563 39.7545524, -104.9922195 39.7545241, -104.9921784 39.7544925, -104.9918216 39.7542179, -104.9914808 39.7539557, -104.9913755 39.7538746) 317253253 - True + secondary 2 + 25 mph Market Street - secondary - 25 mph + True False - 146.632 + 146.63105978185325 LINESTRING (-104.9922563 39.7545524, -104.9921686 39.7546198, -104.9911329 39.7554169, -104.991044 39.7554853) 628585955 - False + tertiary 2 Tremont Place - tertiary + False False - 7.634 + 7.634062776016393 [1176005219, 51866043] + tertiary 2 Grant Street - tertiary - False + False False - 30.111 + 30.111727215090966 LINESTRING (-104.9836012 39.7478059, -104.9836011 39.7477738, -104.9836006 39.7476299, -104.9836003 39.7475351) 277742591 - True + tertiary_link 1 Tremont Place - tertiary + True False - 42.423 + 42.423079027501615 LINESTRING (-104.9836012 39.7478059, -104.9836297 39.7477841, -104.9837302 39.747707, -104.983815 39.7476418, -104.9838448 39.747619, -104.9839523 39.7475363) 781314131 + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph - False + False False - 105.315 + 105.31585267921483 LINESTRING (-104.9811218 39.7497082, -104.9812222 39.7497848, -104.9815666 39.7500474, -104.9819174 39.7503149, -104.9819964 39.7503752) [781314131, 798190173] + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph - False + False True - 104.244 + 104.24367299590858 LINESTRING (-104.9811218 39.7497082, -104.981028 39.7496367, -104.9805367 39.749262, -104.9803355 39.7491086, -104.9802561 39.749048) 781314133 + tertiary 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False True - 146.398 + 146.39715491135652 LINESTRING (-104.9811218 39.7497082, -104.9812272 39.7496273, -104.9822498 39.7488427, -104.9823339 39.7487782) 790179167 + residential 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False False - 67.256 + 67.25493062636968 LINESTRING (-104.9811218 39.7497082, -104.9810246 39.7497827, -104.9808747 39.7498977, -104.9805649 39.7501354) 231028122 - False + residential 2 Tremont Place - tertiary + False True - 66.168 + 66.16925226026247 LINESTRING (-104.9781447 39.7519926, -104.978216 39.7519379, -104.9782374 39.7519215, -104.9784551 39.7517543, -104.9785888 39.7516518, -104.9786098 39.7516357, -104.9786925 39.7515722) 278136618 - False + residential 2 East 24th Avenue - residential + False False - 101.41499999999999 + 101.41556462332363 LINESTRING (-104.9781447 39.7519926, -104.9780529 39.7519926, -104.9780277 39.7519926, -104.9775645 39.7519924, -104.9770767 39.7519922, -104.9769584 39.7519922) 329980805 - False + tertiary 2 Washington Street - tertiary + False False - 141.074 - LINESTRING (-104.9781447 39.7519926, -104.9781445 39.7520986, -104.9781445 39.7521053, -104.9781439 39.752681, -104.9781433 39.7532613) + 141.4958049002638 + LINESTRING (-104.9781447 39.7519926, -104.9781445 39.7520986, -104.9781445 39.7521053, -104.9781439 39.752681, -104.9781433 39.7531563, -104.9781432 39.7532651) 329980805 - False + tertiary 2 Washington Street - tertiary + False True - 93.404 + 93.40390280428021 LINESTRING (-104.9781447 39.7519926, -104.9781449 39.7518549, -104.9781456 39.7511526) [1123333184, 1123333183, 130921919] - False - ['4', '3'] + secondary + ['3', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False False - 105.178 + 105.17919191667096 LINESTRING (-104.9846155 39.7523823, -104.9847099 39.7524557, -104.9849201 39.7526206, -104.9850543 39.7527252, -104.9851121 39.7527705, -104.9851391 39.7527915, -104.9854255 39.7530155, -104.9854782 39.7530567) [628628013, 608365230] - False - ['4', '5'] + secondary + ['5', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False True - 103.937 + 103.93636606149416 LINESTRING (-104.9846155 39.7523823, -104.9845351 39.7523208, -104.9841853 39.7520531, -104.9840082 39.7519175, -104.9838388 39.751788, -104.9837538 39.7517229) 1039922862 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 148.036 + 148.0369085766881 LINESTRING (-104.9846155 39.7523823, -104.984525 39.7524525, -104.9841654 39.7527312, -104.9841523 39.7527414, -104.9834855 39.7532581, -104.983396 39.7533275) 808959126 - True + secondary 2 + 25 mph Champa Street - secondary - 25 mph + True False - 146.103 + 146.10291017331465 LINESTRING (-104.9854782 39.7530567, -104.985564 39.7529901, -104.9856536 39.7529207, -104.9858881 39.752739, -104.9859019 39.7527283, -104.9860555 39.7526093, -104.9862111 39.7524887, -104.9863896 39.7523503, -104.9865037 39.7522618, -104.9866063 39.7521822, -104.9866817 39.7521238) [1123333180, 1123333181] - False + secondary ['3', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False False - 105.86299999999999 + 105.8631188428348 LINESTRING (-104.9854782 39.7530567, -104.9855778 39.7531349, -104.9859182 39.7534007, -104.9860137 39.7534755, -104.9862682 39.7536743, -104.9863465 39.7537355) [1123333184, 130921919, 1123333183] - False - ['4', '3'] + secondary + ['3', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False True - 105.178 + 105.17919191667096 LINESTRING (-104.9854782 39.7530567, -104.9854255 39.7530155, -104.9851391 39.7527915, -104.9851121 39.7527705, -104.9850543 39.7527252, -104.9849201 39.7526206, -104.9847099 39.7524557, -104.9846155 39.7523823) 16989076 - False + residential 2 Ogden Street - residential + False False - 139.62800000000001 + 139.6276780135335 LINESTRING (-104.9745707 39.7519913, -104.9745707 39.7518971, -104.9745713 39.7508576, -104.9745713 39.7508273, -104.9745713 39.7507356) 16989076 - False + residential 2 Ogden Street - residential + False True - 140.21699999999998 + 140.21701221391075 LINESTRING (-104.9745707 39.7519913, -104.9745707 39.7520816, -104.9745704 39.7525406, -104.9745701 39.75311, -104.9745701 39.7531488, -104.9745701 39.7532523) 1176299730 - False + residential 2 East 24th Avenue - residential + False True - 102.253 + 102.25336704921807 LINESTRING (-104.9745707 39.7519913, -104.9746875 39.7519914, -104.9747498 39.7519914, -104.9751694 39.7519915, -104.9753505 39.7519916, -104.9756681 39.7519917, -104.9757668 39.7519918) 230983597 - True + secondary 2 + 25 mph Stout Street - secondary - 25 mph + True False - 141.491 + 141.4909432162779 LINESTRING (-104.9870113 39.750518, -104.986925 39.750585, -104.986587 39.7508475, -104.9858991 39.7513816, -104.9858468 39.7514222) 650079086 + unclassified 2 21st Street - tertiary - False + False False - 103.151 - LINESTRING (-104.9870113 39.750518, -104.9869375 39.7504612, -104.9869058 39.7504371, -104.9865875 39.750193, -104.9862564 39.7499392, -104.9862339 39.7499219, -104.986157 39.7498629) + 103.15219290225542 + LINESTRING (-104.9870113 39.750518, -104.9869869 39.7504992, -104.9869375 39.7504612, -104.9869058 39.7504371, -104.9865875 39.750193, -104.9862564 39.7499392, -104.9862339 39.7499219, -104.986157 39.7498629) 131620784 + tertiary 2 21st Street - tertiary - False + False True - 105.44800000000001 + 105.448395929721 LINESTRING (-104.9878935 39.7511945, -104.9879747 39.7512555, -104.988009 39.751282, -104.9883372 39.7515348, -104.988665 39.7517856, -104.9886921 39.7518064, -104.9887668 39.7518642) 131620805 - True + secondary 3 + 30 mph Champa Street - secondary - 30 mph + True False - 146.926 + 146.92670681981764 LINESTRING (-104.9878935 39.7511945, -104.9879613 39.7511425, -104.9880956 39.7510383, -104.9881871 39.7509675, -104.9883129 39.7508703, -104.9883978 39.7508047, -104.9884313 39.7507788, -104.988563 39.7506769, -104.9886967 39.7505735, -104.9888211 39.7504774, -104.9889127 39.7504065, -104.9889455 39.7503812, -104.9890194 39.7503245, -104.9891054 39.7502576) 278136621 - False + residential 26th Street - residential + False False - 106.365 - LINESTRING (-104.9818517 39.7558676, -104.9819514 39.7559441, -104.9819708 39.755959, -104.9822963 39.7562085, -104.9825402 39.7563955, -104.9826375 39.7564701, -104.9826489 39.7564788, -104.9827327 39.7565431) + 106.36549705648659 + LINESTRING (-104.9818541 39.7558658, -104.9819537 39.7559423, -104.9819731 39.7559572, -104.982298 39.7562072, -104.9825416 39.7563944, -104.9826387 39.7564691, -104.9826501 39.7564779, -104.9827338 39.7565423) 278136621 - False + residential 26th Street - residential + False True - 105.191 - LINESTRING (-104.9818517 39.7558676, -104.9817722 39.7558065, -104.9817556 39.7557937, -104.9814246 39.7555393, -104.9811004 39.7552912, -104.9810762 39.7552727, -104.9809805 39.7551995) + 105.19784948971191 + LINESTRING (-104.9818541 39.7558658, -104.9817746 39.7558046, -104.981758 39.7557919, -104.9814271 39.7555374, -104.9811037 39.7552887, -104.9810796 39.7552701, -104.9809841 39.7551967) 278139935 - True + secondary 1 + 25 mph Champa Street - secondary - 25 mph + True False - 146.45400000000004 - LINESTRING (-104.9818517 39.7558676, -104.9819445 39.7557957, -104.9824157 39.7554305, -104.9828869 39.7550653, -104.9829828 39.754991, -104.9830582 39.7549325) + 146.16764864071547 + LINESTRING (-104.9818541 39.7558658, -104.9819445 39.7557957, -104.9824157 39.7554305, -104.9828869 39.7550653, -104.9829828 39.754991, -104.9830582 39.7549325) 88982058 - True + secondary 1 + 30 mph Champa Street - secondary - 30 mph + True False - 85.332 + 85.33179785110985 LINESTRING (-104.9739094 39.7620227, -104.9745308 39.7615424, -104.9746134 39.7614786) 88625482 - True + secondary 2 + 30 mph Stout Street - secondary - 30 mph + True False - 146.036 - LINESTRING (-104.9809805 39.7551995, -104.9808928 39.7552656, -104.9799058 39.7560324, -104.9798644 39.7560645, -104.9797774 39.7561319) + 146.47388643174628 + LINESTRING (-104.9809841 39.7551967, -104.980894 39.7552665, -104.9799058 39.7560324, -104.9798644 39.7560645, -104.9797774 39.7561319) 278136621 - False + residential 26th Street - residential + False False - 105.191 - LINESTRING (-104.9809805 39.7551995, -104.9810762 39.7552727, -104.9811004 39.7552912, -104.9814246 39.7555393, -104.9817556 39.7557937, -104.9817722 39.7558065, -104.9818517 39.7558676) + 105.19784948971191 + LINESTRING (-104.9809841 39.7551967, -104.9810796 39.7552701, -104.9811037 39.7552887, -104.9814271 39.7555374, -104.981758 39.7557919, -104.9817746 39.7558046, -104.9818541 39.7558658) 278136621 - False + residential 26th Street - residential + False True - 104.693 - LINESTRING (-104.9809805 39.7551995, -104.9808948 39.7551342, -104.9808697 39.755115, -104.9805447 39.7548653, -104.9802217 39.7546177, -104.9802019 39.7546025, -104.9801134 39.7545346) + 104.68502981755054 + LINESTRING (-104.9809841 39.7551967, -104.9808988 39.7551311, -104.9808738 39.7551119, -104.9805489 39.7548621, -104.9802264 39.7546141, -104.9802067 39.7545988, -104.9801183 39.7545309) 16986023 + residential 2 Court Place - residential - False + False True - 146.86100000000002 + 146.8600474548911 LINESTRING (-104.9802561 39.749048, -104.9803628 39.7489669, -104.9803831 39.7489515, -104.9808298 39.7486118, -104.9813899 39.7481859, -104.9814027 39.7481762, -104.9814775 39.7481193) 52957554 + residential 2 Court Place - residential - False + False False - 146.577 + 146.5772223068376 LINESTRING (-104.9802561 39.749048, -104.9801633 39.7491189, -104.9801432 39.7491342, -104.979636 39.7495215, -104.9791337 39.7499046, -104.9790396 39.7499769) [781314131, 798190173] + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph - False + False False - 104.244 + 104.24367299590858 LINESTRING (-104.9802561 39.749048, -104.9803355 39.7491086, -104.9805367 39.749262, -104.981028 39.7496367, -104.9811218 39.7497082) 798190532 + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph - False + False True - 76.54899999999999 + 76.54863691471856 LINESTRING (-104.9802561 39.749048, -104.9801893 39.7489971, -104.9796935 39.748619, -104.9796204 39.7485632) 410867828 - False + residential 28th Street - residential + False True - 28.74 + 28.740786314559415 LINESTRING (-104.9763764 39.7553879, -104.9762381 39.7552767, -104.9761419 39.7552027) - 596239370 - False + [1211560665, 596239370] + unclassified 2 + 25 mph Clarkson Street - unclassified - 25 mph + False + True + 101.74758742854989 + LINESTRING (-104.9763764 39.7553879, -104.9764217 39.7553277, -104.9764414 39.7553121, -104.976886 39.7549731, -104.9769036 39.7549566, -104.9769174 39.7549407, -104.9769344 39.7549176, -104.9769413 39.7549058, -104.9769455 39.7548953, -104.9769512 39.7548737, -104.9769532 39.754861, -104.9769553 39.754834, -104.9769581 39.7547407, -104.9769587 39.7547191, -104.9769607 39.7546445) + + + 674354859 + residential + 28th Street + False True - 103.71499999999997 - LINESTRING (-104.9763764 39.7553879, -104.976431 39.7553412, -104.9764544 39.7553222, -104.976886 39.7549731, -104.9769036 39.7549566, -104.9769174 39.7549407, -104.9769344 39.7549176, -104.9769413 39.7549058, -104.9769455 39.7548953, -104.9769512 39.7548737, -104.9769532 39.754861, -104.9769553 39.754834, -104.9769581 39.7547407, -104.9769587 39.7547191, -104.9769609 39.7546247) + 56.37662455543874 + LINESTRING (-104.9763764 39.7553879, -104.9766525 39.7555954, -104.9767439 39.7556657, -104.9767703 39.755686, -104.9768457 39.7557441) [325699147, 182890053] + residential 2 Cleveland Place - residential - False + False False - 146.00599999999997 + 146.0056547162706 LINESTRING (-104.9796204 39.7485632, -104.9797321 39.7484767, -104.9797503 39.7484626, -104.9801381 39.7481623, -104.9801949 39.7481183, -104.9802499 39.7480757, -104.9804367 39.7479311, -104.9804562 39.7479156, -104.9804723 39.747898, -104.9804846 39.7478786, -104.9804927 39.747858, -104.9804966 39.7478367, -104.9804969 39.7476439, -104.9804969 39.7476248, -104.9804969 39.7475221) [461520698, 468725678] + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph - False + False True - 76.445 + 76.44553501548963 LINESTRING (-104.9796204 39.7485632, -104.9795478 39.7485079, -104.9792934 39.7483139, -104.9789855 39.7480791) 486538738 + residential 2 + 25 mph Cleveland Place - residential - 25 mph - False + False True - 165.97400000000002 + 165.9750590583168 LINESTRING (-104.9796204 39.7485632, -104.9795318 39.7486317, -104.9795123 39.7486468, -104.978968 39.7490683, -104.9785576 39.7493818, -104.9785066 39.7494107, -104.9784543 39.7494344, -104.978398 39.7494488, -104.9782665 39.7494644, -104.9782461 39.7494668, -104.9781474 39.7494788) 798190532 + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph - False + False False - 76.549 + 76.54863691471856 LINESTRING (-104.9796204 39.7485632, -104.9796935 39.748619, -104.9801893 39.7489971, -104.9802561 39.749048) 278136613 - False + tertiary 2 East 26th Avenue - tertiary + False False - 21.97 - LINESTRING (-104.9748264 39.7546245, -104.9746801 39.7546245, -104.9745694 39.7546245) + 21.9620917961436 + LINESTRING (-104.9748263 39.7546301, -104.97468 39.7546292, -104.9745694 39.7546284) - + 278136613 - False + tertiary 2 East 26th Avenue - tertiary + False True - 79.578 - LINESTRING (-104.9748264 39.7546245, -104.9751619 39.7546245, -104.9756466 39.7546246, -104.9757573 39.7546246) + 79.58170740798508 + LINESTRING (-104.9748263 39.7546301, -104.9751618 39.7546324, -104.9756465 39.7546356, -104.9757572 39.7546364) 88982058 - True + secondary 1 + 30 mph Champa Street - secondary - 30 mph + True False - 146.044 + 146.0442519004696 LINESTRING (-104.9746134 39.7614786, -104.9747068 39.7614065, -104.97574 39.7606079, -104.9758183 39.7605474) [1175102784, 1175102787] - False + residential 32nd Street - residential + False False - 106.756 + 106.7565557000373 LINESTRING (-104.9746134 39.7614786, -104.9747142 39.7615554, -104.9747325 39.7615693, -104.9750586 39.7618176, -104.975411 39.7620876, -104.9754995 39.7621552) 1175102784 - False + residential 32nd Street - residential + False True - 93.23799999999999 + 93.23909242672448 LINESTRING (-104.9746134 39.7614786, -104.9745474 39.7614278, -104.9745349 39.7614181, -104.9741917 39.7611523, -104.9738733 39.7609057, -104.9738448 39.7608836) - - 505662289 - False - 32nd Street - residential - False - 106.25899999999999 - LINESTRING (-104.9763622 39.7628153, -104.9764437 39.7628773, -104.9764566 39.7628872, -104.9768006 39.7631515, -104.9771688 39.7634334, -104.9771799 39.7634419, -104.9772427 39.7634899) - - - [1175102785, 505662289] - False - 32nd Street - residential - True - 104.044 - LINESTRING (-104.9763622 39.7628153, -104.9762893 39.7627589, -104.9762797 39.7627516, -104.9758983 39.7624601, -104.9755908 39.762225, -104.9754995 39.7621552) - 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False False - 146.935 + 146.9355720050961 LINESTRING (-104.9763622 39.7628153, -104.9762795 39.7628795, -104.9759039 39.7631705, -104.9752396 39.7636852, -104.9751515 39.7637534) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False True - 146.97600000000003 + 146.97661162559837 LINESTRING (-104.9763622 39.7628153, -104.976453 39.7627449, -104.977487 39.7619431, -104.9775733 39.761877) + + 1201623838 + residential + 32nd Street + False + False + 106.2593395606096 + LINESTRING (-104.9763622 39.7628153, -104.9764437 39.7628773, -104.9764566 39.7628872, -104.9768006 39.7631515, -104.9771688 39.7634334, -104.9771799 39.7634419, -104.9772427 39.7634899) + + + [1175102785, 1201623838] + residential + 32nd Street + False + True + 104.04409717645096 + LINESTRING (-104.9763622 39.7628153, -104.9762893 39.7627589, -104.9762797 39.7627516, -104.9758983 39.7624601, -104.9755908 39.762225, -104.9754995 39.7621552) + 16986023 + residential 2 Court Place - residential - False + False False - 146.861 + 146.8600474548911 LINESTRING (-104.9814775 39.7481193, -104.9814027 39.7481762, -104.9813899 39.7481859, -104.9808298 39.7486118, -104.9803831 39.7489515, -104.9803628 39.7489669, -104.9802561 39.749048) 781314134 + residential + 25 mph 22nd Street - tertiary - 25 mph - False + False False - 77.69599999999998 + 77.69517164913557 LINESTRING (-104.9814775 39.7481193, -104.9813981 39.7480614, -104.981336 39.7480173, -104.9812621 39.7479604, -104.9812083 39.7479108, -104.9811785 39.7478782, -104.9811424 39.7478258, -104.9811211 39.74778, -104.9811041 39.7477113, -104.9810995 39.7476595, -104.9810966 39.7476266, -104.9810956 39.7476147, -104.9810913 39.7475247) [231028123, 781314134] + residential + 25 mph 22nd Street - tertiary - 25 mph - False + False True - 103.58000000000001 + 103.57914987448335 LINESTRING (-104.9814775 39.7481193, -104.981548 39.7481732, -104.9818854 39.7484332, -104.9822356 39.7487026, -104.9823339 39.7487782) 25676408 - False + residential 2 24th Street - residential + False False - 104.31299999999999 + 104.31185758642879 LINESTRING (-104.9825312 39.7526657, -104.9826164 39.7527307, -104.982635 39.752745, -104.9829653 39.752997, -104.9831424 39.7531329, -104.9832901 39.7532463, -104.9833148 39.7532653, -104.983396 39.7533275) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False False - 148.035 + 148.0355155695375 LINESTRING (-104.9825312 39.7526657, -104.9826238 39.7525946, -104.9831557 39.7521859, -104.9832989 39.752075, -104.9836625 39.7517935, -104.9837538 39.7517229) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 146.254 + 146.2533664428783 LINESTRING (-104.9825312 39.7526657, -104.9824563 39.7527236, -104.9819659 39.7531027, -104.9814399 39.7535093, -104.9814198 39.7535248, -104.9813248 39.7535983) 132261610 - True - 4 + secondary + 3 17th Street - secondary + True False - 107.065 - LINESTRING (-104.9909899 39.7461333, -104.9909407 39.7460962, -104.9909139 39.7460754, -104.9905456 39.7457911, -104.9901857 39.7455125, -104.9901053 39.7454518) + 107.06406774326867 + LINESTRING (-104.9909899 39.7461333, -104.9909407 39.7460962, -104.9909139 39.7460754, -104.9907804 39.745973, -104.9905456 39.7457911, -104.9901857 39.7455125, -104.9901053 39.7454518) [132239712, 427849108] - True + primary 5 + 30 mph 20th Street - primary - 30 mph + True False - 111.231 + 111.2332343124242 LINESTRING (-104.9864574 39.7482121, -104.9864985 39.7482436, -104.986546 39.7482801, -104.9865739 39.7483014, -104.9867408 39.7484295, -104.9867603 39.7484444, -104.9869294 39.7485742, -104.9872211 39.748797, -104.9873785 39.7489186) [325698648, 132239715] - True + tertiary 2 Welton Street - tertiary + True False - 148.73700000000002 - 30 mph + 148.73707054249962 + 30 mph LINESTRING (-104.9864574 39.7482121, -104.9863882 39.7482949, -104.986368 39.748319, -104.9862975 39.7484033, -104.9862404 39.7484605, -104.9858371 39.7487732, -104.9853896 39.7491202, -104.9852896 39.7491977) 318915713 - True + tertiary 3 + 25 mph 19th Street - tertiary - 25 mph + True False - 88.58 + 88.57990016710777 LINESTRING (-104.9886094 39.7479695, -104.988532 39.7479066, -104.9884779 39.7478626, -104.9881836 39.7476237, -104.9879171 39.7474073, -104.9878971 39.747391) - + [628389313, 628389316] - True - ['3', '2'] + tertiary + ['2', '3'] California Street - tertiary + True False - 142.583 - LINESTRING (-104.9886094 39.7479695, -104.9886522 39.7479362, -104.9886669 39.7479238, -104.9887491 39.7478605, -104.9895 39.747282, -104.9897054 39.7471238, -104.9897867 39.7470613) + 140.56719991496956 + LINESTRING (-104.9886094 39.7479695, -104.9886522 39.7479362, -104.9886669 39.7479238, -104.9887491 39.7478605, -104.9895 39.747282, -104.9897054 39.7471238, -104.98977 39.7470741) 25680151 - False + residential 2 25th Street - residential + False False - 104.716 + 104.71533319688972 LINESTRING (-104.9856903 39.7569528, -104.985776 39.7570192, -104.9857998 39.7570376, -104.9861324 39.7572951, -104.986234 39.7573737, -104.9864486 39.7575398, -104.9864688 39.7575554, -104.9865535 39.757621) 52080485 + residential 1 25th Street - residential - False + False False - 106.88999999999999 + 106.88990486101639 LINESTRING (-104.9856903 39.7569528, -104.9856013 39.7568848, -104.9853666 39.7567056, -104.9851371 39.7565304, -104.9848989 39.7563486, -104.9848031 39.7562754) 1182413372 - False + tertiary 2 Lawrence Street - residential + False False - 146.292 + 146.29199557418912 LINESTRING (-104.9856903 39.7569528, -104.9855999 39.7570226, -104.9845622 39.7578257, -104.9844841 39.7578861) 1182413372 - False + tertiary 2 Lawrence Street - residential + False True - 146.57800000000003 + 146.5772735076563 LINESTRING (-104.9856903 39.7569528, -104.9857716 39.7568897, -104.9865862 39.7562593, -104.986806 39.7560892, -104.9868986 39.7560175) - + 52087403 - True + tertiary_link 1 - tertiary_link + True False - 44.72 - LINESTRING (-104.9878971 39.747391, -104.9877761 39.7473657, -104.9877298 39.747359, -104.9876596 39.7473528, -104.9876237 39.7473515, -104.9875776 39.7473528, -104.9875121 39.747357, -104.9874448 39.7473637, -104.9873832 39.7473777) + 34.19307480806602 + LINESTRING (-104.9878971 39.747391, -104.9877761 39.7473657, -104.9877298 39.747359, -104.9876596 39.7473528, -104.9876237 39.7473515, -104.9875776 39.7473528, -104.9875121 39.747357, -104.9875032 39.7473579) 318915713 - True + tertiary 3 + 25 mph 19th Street - tertiary - 25 mph + True False - 30.531 + 30.53109906905066 LINESTRING (-104.9878971 39.747391, -104.9877074 39.747237, -104.9876516 39.7471916) 466247383 - True + tertiary 2 Welton Street - tertiary + True False - 19.574 + 19.573884774133717 LINESTRING (-104.9873319 39.7473958, -104.9872932 39.7474263, -104.9871707 39.7475208) 26295985 - False + residential 2 + 20 mph Clarkson Street - residential - 20 mph + False True - 151.93800000000002 - LINESTRING (-104.9769609 39.7546247, -104.9769606 39.7545437, -104.9769605 39.7545253, -104.9769602 39.7544142, -104.9769596 39.7542265, -104.9769567 39.7533716, -104.9769566 39.7533492, -104.9769563 39.7532583) + 154.1391062952843 + LINESTRING (-104.9769607 39.7546445, -104.9769606 39.7545437, -104.9769605 39.7545253, -104.9769602 39.7544142, -104.9769596 39.7542265, -104.9769567 39.7533716, -104.9769566 39.7533492, -104.9769563 39.7532583) - + 278136613 - False + tertiary 2 East 26th Avenue - tertiary + False False - 102.889 - LINESTRING (-104.9769609 39.7546247, -104.9768619 39.7546247, -104.9765058 39.7546247, -104.9763654 39.7546247, -104.9758795 39.7546246, -104.9757573 39.7546246) + 102.88595213973882 + LINESTRING (-104.9769607 39.7546445, -104.9768617 39.7546438, -104.9765056 39.7546414, -104.9763652 39.7546405, -104.9758794 39.7546372, -104.9757572 39.7546364) - - 278136613 - False + + [16987012, 278136613, 325150446] + tertiary 2 - East 26th Avenue - tertiary - True - 71.016 - LINESTRING (-104.9769609 39.7546247, -104.9770779 39.7546244, -104.9771677 39.7546241, -104.9774159 39.7546234, -104.9775596 39.754623, -104.9777916 39.7546201) + ['East 26th Avenue', '27th Street'] + False + [False, True] + 99.9024588927082 + LINESTRING (-104.9769607 39.7546445, -104.9770777 39.7546452, -104.9771675 39.7546458, -104.9774156 39.7546475, -104.9775593 39.7546485, -104.9777889 39.75465, -104.9778602 39.7546682, -104.9779298 39.7547173, -104.9779773 39.7547503, -104.9780529 39.7548083) - 596239370 - False + [1211560665, 596239370] + unclassified 2 + 25 mph Clarkson Street - unclassified - 25 mph + False False - 103.715 - LINESTRING (-104.9769609 39.7546247, -104.9769587 39.7547191, -104.9769581 39.7547407, -104.9769553 39.754834, -104.9769532 39.754861, -104.9769512 39.7548737, -104.9769455 39.7548953, -104.9769413 39.7549058, -104.9769344 39.7549176, -104.9769174 39.7549407, -104.9769036 39.7549566, -104.976886 39.7549731, -104.9764544 39.7553222, -104.976431 39.7553412, -104.9763764 39.7553879) + 101.74758742854988 + LINESTRING (-104.9769607 39.7546445, -104.9769587 39.7547191, -104.9769581 39.7547407, -104.9769553 39.754834, -104.9769532 39.754861, -104.9769512 39.7548737, -104.9769455 39.7548953, -104.9769413 39.7549058, -104.9769344 39.7549176, -104.9769174 39.7549407, -104.9769036 39.7549566, -104.976886 39.7549731, -104.9764414 39.7553121, -104.9764217 39.7553277, -104.9763764 39.7553879) [628378961, 628378962, 42244092] - True + secondary ['3', '4'] + 30 mph East 17th Avenue - secondary - 30 mph + True False - 112.922 + 112.92300084267173 LINESTRING (-104.9873953 39.7433641, -104.987256 39.7432882, -104.9872256 39.7432777, -104.987209 39.7432744, -104.9871848 39.7432734, -104.986633 39.7432722, -104.9862541 39.7432713, -104.9861095 39.7432709) 130886459 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 37.962 + 37.96239937863409 LINESTRING (-104.9873953 39.7433641, -104.987394 39.7432068, -104.9873945 39.7430227) [628378957, 628378959] - True + secondary 3 + 25 mph 18th Street - secondary - 25 mph + True False - 101.812 + 101.81264705404533 LINESTRING (-104.9897867 39.7470613, -104.9898717 39.7471275, -104.989937 39.7471778, -104.9903549 39.7474991, -104.990557 39.7476545, -104.9906283 39.7477091) 628389309 - True + tertiary 2 California Street - tertiary + True False - 145.70499999999998 + 145.70524397745635 LINESTRING (-104.9897867 39.7470613, -104.9898664 39.747001, -104.9903261 39.7466459, -104.9909087 39.7461959, -104.9909899 39.7461333) 89637457 - False + secondary 5 + 30 mph Broadway - primary - 30 mph + False False - 66.435 + 66.4352444883961 LINESTRING (-104.9874389 39.7579628, -104.9874301 39.7576753, -104.9874282 39.7576119, -104.9874206 39.7573655) 89637457 - False + secondary 5 + 30 mph Broadway - primary - 30 mph + False True - 34.146 - LINESTRING (-104.9874389 39.7579628, -104.9874435 39.7581277, -104.9874483 39.7582698) + 34.146433805919806 + LINESTRING (-104.9874389 39.7579628, -104.9874435 39.7581277, -104.987446 39.7582008, -104.9874483 39.7582698) [525746699, 231105086] + residential 25th Street - residential - False + False True - 91.49900000000001 + 91.49777806592479 2 LINESTRING (-104.9874389 39.7579628, -104.9872673 39.7579626, -104.9872394 39.7579626, -104.9869941 39.7579624, -104.9866634 39.7577062, -104.9866407 39.7576886, -104.9865535 39.757621) 325699884 - False + residential 32nd Street - residential + False True - 18.452 + 18.452338660548488 1175102784 - False + residential 32nd Street - residential + False False - 93.238 + 93.23909242672448 LINESTRING (-104.9738448 39.7608836, -104.9738733 39.7609057, -104.9741917 39.7611523, -104.9745349 39.7614181, -104.9745474 39.7614278, -104.9746134 39.7614786) 100225137 - True + secondary_link 1 - secondary_link + True False - 54.096999999999994 + 54.09659249861449 LINESTRING (-104.9878972 39.7431235, -104.9878246 39.7431571, -104.9877696 39.7431736, -104.9877173 39.7431849, -104.9876771 39.7431901, -104.9876409 39.7431922, -104.9876114 39.7431922, -104.9875872 39.7431891, -104.987558 39.7431814, -104.9875363 39.7431726, -104.9874937 39.74315, -104.9874613 39.7431262, -104.9874319 39.7430947, -104.9874088 39.7430581, -104.9873945 39.7430227) 131232826 - True + tertiary 3 Court Place - tertiary + True False - 51.291000000000004 + 51.29111295846948 LINESTRING (-104.9878972 39.7431235, -104.9878135 39.7431897, -104.9877633 39.7432245, -104.9877299 39.743246, -104.987695 39.7432625, -104.9876521 39.74328, -104.9875771 39.7433058, -104.9873953 39.7433641) 131232828 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 91.00200000000001 + 91.00217283245348 LINESTRING (-104.9873945 39.7430227, -104.9873935 39.7425465, -104.9873933 39.7424588, -104.9873928 39.7422043) [600545938, 100397028] - True + primary ['3', '4'] - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + True + I 70 Business;US 40;US 287 False - 108.703 + 108.70390011890282 LINESTRING (-104.9874014 39.7400083, -104.9872582 39.7400084, -104.9868556 39.7400054, -104.9862646 39.7400086, -104.9861301 39.7400087) [702462464, 42244097] - True + primary 3 - I 70 Business;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + True + I 70 Business;US 40;US 287 False - 66.314 + 66.31424312780413 LINESTRING (-104.9853678 39.7400594, -104.9854966 39.7401094, -104.9859981 39.7401321, -104.9861268 39.7401379) 100397027 - False + primary 7 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + False + I 70 Business;US 40;US 287 False - 43.128 + 43.12810184766481 LINESTRING (-104.9853678 39.7400594, -104.984993 39.7400593, -104.9848634 39.7400593) [16983323, 1175102788, 26296015] - False - ['Curtis Street', '31st Street'] - tertiary + ['tertiary', 'residential'] + ['31st Street', 'Curtis Street'] + False [False, True] - 246.78700000000003 + 246.78589744726332 2 LINESTRING (-104.9775733 39.761877, -104.9774977 39.7618193, -104.9768411 39.761318, -104.9767982 39.7612853, -104.9767571 39.7612536, -104.9767458 39.7612378, -104.9767416 39.7612201, -104.9767451 39.7612022, -104.9767558 39.7611862, -104.976794 39.7611561, -104.9771732 39.760862, -104.9778285 39.7603528, -104.9779113 39.7602886) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False False - 146.976 + 146.97661162559837 LINESTRING (-104.9775733 39.761877, -104.977487 39.7619431, -104.976453 39.7627449, -104.9763622 39.7628153) 700343605 - False + tertiary 2 Arapahoe Street - tertiary + False True - 145.226 + 145.22641018009978 LINESTRING (-104.9775733 39.761877, -104.9776519 39.7618161, -104.9780278 39.7615249, -104.9782671 39.7613395, -104.9786889 39.7610127, -104.97877 39.7609499) 707959687 - False + residential 31st Street - residential + False False - 106.34299999999999 + 106.34443018101248 LINESTRING (-104.9775733 39.761877, -104.977672 39.7619523, -104.9780159 39.7622148, -104.9783873 39.7624984, -104.9784561 39.7625509) - - [16987012, 325150446] - True - 2 - 27th Street - tertiary - False - 30.615000000000002 - LINESTRING (-104.9777916 39.7546201, -104.9779288 39.7547163, -104.9779773 39.7547503, -104.9780529 39.7548083) - - - 278136613 - False - 2 - East 26th Avenue - tertiary - False - 71.016 - LINESTRING (-104.9777916 39.7546201, -104.9775596 39.754623, -104.9774159 39.7546234, -104.9771677 39.7546241, -104.9770779 39.7546244, -104.9769609 39.7546247) - 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False False - 50.818999999999996 + 50.81875631650374 LINESTRING (-104.9804969 39.7475221, -104.980975 39.7475242, -104.9810913 39.7475247) 128948318 - False + tertiary 2 East 20th Avenue - tertiary + False True - 52.528999999999996 + 52.52868418115331 LINESTRING (-104.9804969 39.7475221, -104.980158 39.7475206, -104.9799998 39.7475199, -104.9798825 39.7475194) [325699147, 182890053] + residential 2 Cleveland Place - residential - False + False True - 146.006 + 146.0056547162706 LINESTRING (-104.9804969 39.7475221, -104.9804969 39.7476248, -104.9804969 39.7476439, -104.9804966 39.7478367, -104.9804927 39.747858, -104.9804846 39.7478786, -104.9804723 39.747898, -104.9804562 39.7479156, -104.9804367 39.7479311, -104.9802499 39.7480757, -104.9801949 39.7481183, -104.9801381 39.7481623, -104.9797503 39.7484626, -104.9797321 39.7484767, -104.9796204 39.7485632) 236790149 - False + residential 25th Street - residential + False True - 66.054 + 66.05456331343485 LINESTRING (-104.9781456 39.7511526, -104.9782285 39.751214, -104.9782554 39.7512341, -104.9782704 39.7512454, -104.9784544 39.7513878, -104.9786112 39.7515092, -104.9786925 39.7515722) 329980805 - False + tertiary 2 Washington Street - tertiary + False False - 93.404 + 93.40390280428021 LINESTRING (-104.9781456 39.7511526, -104.9781449 39.7518549, -104.9781447 39.7519926) 329980805 - False + tertiary 2 Washington Street - tertiary + False True - 45.735 + 45.73455194604339 LINESTRING (-104.9781456 39.7511526, -104.978146 39.7507773, -104.978146 39.7507413) 231028122 - False + residential 2 Tremont Place - tertiary + False False - 66.168 + 66.16925226026247 LINESTRING (-104.9786925 39.7515722, -104.9786098 39.7516357, -104.9785888 39.7516518, -104.9784551 39.7517543, -104.9782374 39.7519215, -104.978216 39.7519379, -104.9781447 39.7519926) 231028122 - False + residential 2 Tremont Place - tertiary + False True - 147.048 + 147.04759260635046 LINESTRING (-104.9786925 39.7515722, -104.9787852 39.751501, -104.9788069 39.7514844, -104.9798252 39.7507028, -104.9799098 39.7506379) 236790149 - False + residential 25th Street - residential + False False - 66.054 + 66.05456331343484 LINESTRING (-104.9786925 39.7515722, -104.9786112 39.7515092, -104.9784544 39.7513878, -104.9782704 39.7512454, -104.9782554 39.7512341, -104.9782285 39.751214, -104.9781456 39.7511526) 236790149 - False + residential 25th Street - residential + False True - 106.81199999999998 + 106.81214301521325 LINESTRING (-104.9786925 39.7515722, -104.9787936 39.75165, -104.9791386 39.7519156, -104.9794652 39.7521665, -104.9794865 39.7521828, -104.9795755 39.7522518) 231028124 - False + residential 24th Street - residential + False True - 107.71799999999999 - LINESTRING (-104.9816819 39.7519947, -104.9816458 39.7519671, -104.9816075 39.7519377, -104.9815784 39.7519154, -104.9815417 39.7518873, -104.9812291 39.7516479, -104.9808999 39.7513959, -104.9808786 39.7513796, -104.9807891 39.7513111) + 107.71938034963432 + LINESTRING (-104.9816819 39.7519947, -104.9816458 39.7519671, -104.9816075 39.7519377, -104.9815784 39.7519154, -104.9815417 39.7518873, -104.9813276 39.7517234, -104.9812291 39.7516479, -104.9808999 39.7513959, -104.9808786 39.7513796, -104.9807891 39.7513111) 325698648 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 147.60899999999998 + 147.60935693827065 LINESTRING (-104.9816819 39.7519947, -104.9815908 39.7520654, -104.9811079 39.7524398, -104.9808788 39.7526174, -104.9805598 39.7528643, -104.9804661 39.7529373) 52957554 + residential 2 Court Place - residential - False + False False - 30.423000000000002 + 30.42332589588943 LINESTRING (-104.9783986 39.7504663, -104.9782989 39.7505425, -104.9782149 39.7506066, -104.9781461 39.7506591) 52957554 + residential 2 Court Place - residential - False + False True - 77.23 + 77.2297577811494 LINESTRING (-104.9783986 39.7504663, -104.9789455 39.7500487, -104.9790396 39.7499769) 278136611 - True + residential Court Place - residential + True False - 24.769 + 24.770123129268 LINESTRING (-104.9783986 39.7504663, -104.9783349 39.7504731, -104.9782839 39.7504731, -104.9782612 39.7504688, -104.978233 39.7504634, -104.9782008 39.7504483, -104.9781713 39.7504257, -104.9781464 39.7503991) 410867828 - False + residential 28th Street - residential + False False - 28.74 + 28.740786314559415 LINESTRING (-104.9761419 39.7552027, -104.9762381 39.7552767, -104.9763764 39.7553879) 410867828 - False + residential 28th Street - residential + False True - 25.996 + 25.996783765601666 LINESTRING (-104.9761419 39.7552027, -104.9760819 39.7551565, -104.9759271 39.7550372) 278136614 - True - unclassified + unclassified + True False - 36.881 + 36.880475691284154 LINESTRING (-104.9757108 39.7552156, -104.976054 39.7552053, -104.9761419 39.7552027) 278136620 - False + residential + 20 Glenarm Place - residential - 20 + False False - 27.118999999999996 + 27.11845111843826 LINESTRING (-104.9757108 39.7552156, -104.975853 39.7550983, -104.975888 39.7550694, -104.9759271 39.7550372) 781164903 - False + residential 2 + 20 Glenarm Place - residential - 20 + False True - 119.48599999999999 + 119.4849814053648 LINESTRING (-104.9757108 39.7552156, -104.9752485 39.7555808, -104.9752191 39.7556041, -104.9751501 39.7556586, -104.9750345 39.7557499, -104.9748284 39.7559127, -104.974736 39.7559857) 329980805 - False + tertiary 2 Washington Street - tertiary + False False - 28.911 + 28.91073706422415 LINESTRING (-104.9781464 39.7503991, -104.9781463 39.7505309, -104.9781462 39.7505664, -104.9781461 39.7506591) 329980805 - False + tertiary 2 Washington Street - tertiary + False True - 102.333 + 102.3328713485672 LINESTRING (-104.9781464 39.7503991, -104.9781469 39.749919, -104.9781473 39.7495725, -104.9781474 39.7494788) - - 25676726 - True - busway - no - False - 151.569 - LINESTRING (-104.9742995 39.7590383, -104.9742171 39.7589735, -104.973865 39.7586977, -104.9738233 39.7586862, -104.9737804 39.7586821, -104.9737375 39.7586862, -104.9737038 39.7587002, -104.973677 39.7587229, -104.9736624 39.7587584, -104.9736597 39.7588058, -104.9736597 39.7588697, -104.973664 39.7589069, -104.9736951 39.7591334, -104.9737225 39.7593327, -104.9737378 39.7594434) - - - [781164692, 278138236] - False - 2 - California Street - tertiary - 25 mph - False - 120.356 - LINESTRING (-104.9742995 39.7590383, -104.9748378 39.7586168, -104.9751972 39.7583355, -104.975286 39.758266) - - - 788043282 - False - 2 - California Street - tertiary - 25 mph - True - 26.387 - LINESTRING (-104.9742995 39.7590383, -104.9741759 39.759135, -104.9740832 39.7592076) - 389063559 - False + tertiary 2 Arapahoe Street - tertiary + False True - 38.592 + 38.59210861379577 LINESTRING (-104.9736515 39.764933, -104.973882 39.7647516, -104.9739671 39.7646848) [89637457, 906473023] - False + secondary 5 + 30 mph Broadway - primary - 30 mph + False False - 45.003 + 45.0020166879215 LINESTRING (-104.9874206 39.7573655, -104.9874149 39.7571789, -104.9874126 39.7571032, -104.9874082 39.7569609) 89637457 - False + secondary 5 + 30 mph Broadway - primary - 30 mph + False True - 66.435 + 66.4352444883961 LINESTRING (-104.9874206 39.7573655, -104.9874282 39.7576119, -104.9874301 39.7576753, -104.9874389 39.7579628) 230983595 - False + tertiary_link 2 + 30 mph Larimer Street - tertiary_link - 30 mph + False False - 46.989000000000004 + 46.98955694147595 LINESTRING (-104.9870204 39.7572604, -104.9872574 39.7570772, -104.9874082 39.7569609) [1103188739, 230983595] - False + tertiary_link 2 + 30 mph Larimer Street - tertiary_link - 30 mph + False True - 56.575 + 56.57476576130042 LINESTRING (-104.9870204 39.7572604, -104.9868563 39.7573872, -104.9866369 39.7575566, -104.9865535 39.757621) 278452014 - True + tertiary_link 1 - tertiary_link + True False - 38.341 + 38.34163107861056 LINESTRING (-104.9870204 39.7572604, -104.9870854 39.7572548, -104.9871405 39.7572511, -104.9871941 39.7572531, -104.987234 39.7572598, -104.9872934 39.757282, -104.9874206 39.7573655) - - [788043282, 646050014] - False - 2 - California Street - tertiary - 25 mph - False - 39.558 - LINESTRING (-104.9737378 39.7594434, -104.9738172 39.7593991, -104.9739091 39.759338, -104.9739982 39.7592749, -104.9740218 39.7592562, -104.9740832 39.7592076) - 1131095158 - True + primary 5 + 30 mph Lincoln Street - primary - 30 mph + True False - 14.369 + 14.369175445583991 [600546000, 702462465] - True + primary 3 - I 70 Bus;US 40;US 287 + 30 mph East Colfax Avenue - primary - 30 mph + True + I 70 Business;US 40;US 287 False - 66.16 + 66.1602115313709 LINESTRING (-104.9861301 39.7400087, -104.9860075 39.7400087, -104.9854966 39.7400169, -104.9853678 39.7400594) 279927539 - True + secondary_link 1 - secondary_link + True False - 29.176000000000002 + 29.17540290335471 LINESTRING (-104.9747658 39.7452025, -104.9747918 39.7451463, -104.9748239 39.7451071, -104.9748642 39.7450761, -104.9748796 39.7450689, -104.9749044 39.7450596, -104.974946 39.745054, -104.9749848 39.7450555, -104.9750045 39.7450561) 461520534 - False + tertiary 2 Ogden Street - tertiary + False False - 40.575 + 40.57556538779585 LINESTRING (-104.9747658 39.7452025, -104.9747645 39.7449825, -104.9747635 39.7448376) 691564659 - False + tertiary 2 Ogden Street - tertiary + False True - 107.50399999999999 + 107.50382302491323 LINESTRING (-104.9747658 39.7452025, -104.9747661 39.7455234, -104.9747686 39.7460669, -104.9747689 39.7461693) 66805017 + tertiary + 30 mph Blake Street - tertiary - 30 mph - False + False True - 145.60000000000002 + 145.60064384694414 LINESTRING (-104.9786496 39.7664217, -104.9785659 39.7664867, -104.9781644 39.766799, -104.9775461 39.7672798, -104.9774521 39.767353) 325121350 + tertiary 2 + 30 mph Blake Street - tertiary - 30 mph - False + False False - 146.092 + 146.09193988799038 LINESTRING (-104.9786496 39.7664217, -104.9787271 39.7663618, -104.9791425 39.7660403, -104.9795822 39.7657, -104.9797689 39.7655556, -104.9798542 39.7654896) 325121351 - False + residential 33rd Street - residential + False False - 105.313 + 105.31286036858472 LINESTRING (-104.9786496 39.7664217, -104.9785668 39.7663588, -104.9785501 39.7663461, -104.9782276 39.7661011, -104.9778733 39.7658318, -104.9778596 39.7658215, -104.9777733 39.7657559) 473688601 - True + tertiary 1 Cleveland Place - tertiary + True False - 41.503 + 41.50320808470718 LINESTRING (-104.9873928 39.7422043, -104.9874456 39.742159, -104.9875629 39.7420583, -104.9877167 39.7419263) 1049857917 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 41.835 + 41.834452747857355 LINESTRING (-104.9873928 39.7422043, -104.9873923 39.742141, -104.9873872 39.7418281) 769415493 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 15.535 + 15.534984360408135 LINESTRING (-104.9873872 39.7418281, -104.987386 39.7417777, -104.9873865 39.7416884) [1122234082, 1122234085] - True - ['4', '5'] + secondary + ['3', '4'] 17th Street - secondary + True False - 105.356 - LINESTRING (-104.9962036 39.7501386, -104.9961249 39.7500783, -104.9956599 39.7497221, -104.9954268 39.7495427, -104.9953312 39.7494694) + 105.35562073305283 + LINESTRING (-104.9962036 39.7501386, -104.9961249 39.7500783, -104.9959986 39.7499823, -104.9956599 39.7497221, -104.9955072 39.7496052, -104.9954268 39.7495427, -104.9953312 39.7494694) 131612993 - False - 4 + tertiary + 3 East 20th Avenue - tertiary + False False - 75.843 + 75.84294398225975 LINESTRING (-104.9839523 39.7475363, -104.9842158 39.7475372, -104.9842935 39.7475375, -104.9847843 39.7475392, -104.9848394 39.7475394) 131612993 - False - 4 + tertiary + 3 East 20th Avenue - tertiary + False True - 30.094 + 30.094356742507504 LINESTRING (-104.9839523 39.7475363, -104.9837243 39.7475355, -104.9836003 39.7475351) 628585955 - False + tertiary 2 Tremont Place - tertiary + False True - 7.634 + 7.634062776016393 650079086 + unclassified 2 21st Street - tertiary - False + False True - 103.815 + 103.81637192683446 LINESTRING (-104.983538 39.7478544, -104.9836182 39.7479159, -104.9836474 39.7479383, -104.9837327 39.7480037, -104.9839621 39.7481796, -104.9843198 39.7484539, -104.9843978 39.7485137) [1176005216, 319178360, 781314133] + tertiary 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False False - 145.427 + 145.4270562799236 LINESTRING (-104.983538 39.7478544, -104.9834656 39.74791, -104.9829411 39.7483125, -104.9824166 39.748715, -104.9823339 39.7487782) 466246651 - True + tertiary_link 1 - tertiary_link + True False - 4.826 + 4.825619031788888 472436314 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 2.446 + 2.4462918424096443 330568565 - True + tertiary 3 + 30 mph East 18th Avenue - tertiary - 30 mph + True False - 15.78 + 15.779579765766831 - + 442674601 - True + secondary 3 East 18th Avenue - secondary + True False - 23.231 + 10.794932668262964 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False False - 146.51500000000001 + 146.5148232589242 LINESTRING (-104.9838 39.7610955, -104.9837214 39.7611563, -104.9833789 39.7614212, -104.9829204 39.7617758, -104.9826701 39.7619692, -104.9825916 39.76203) 325696452 + tertiary 2 + 30 mph Walnut Street - tertiary - 30 mph - False + False True - 147.46 + 147.45928686593308 LINESTRING (-104.9838 39.7610955, -104.9838938 39.761022, -104.9845882 39.7604856, -104.9849265 39.7602243, -104.9850162 39.760155) 805899089 - False + residential 28th Street - residential + False False - 105.06799999999998 + 105.06761519064992 LINESTRING (-104.9838 39.7610955, -104.9839011 39.7611732, -104.9839152 39.761184, -104.9842599 39.7614494, -104.9844246 39.7615761, -104.9845997 39.7617109, -104.9846165 39.7617239, -104.9846687 39.761764) 805899089 - False + residential 28th Street - residential + False True - 105.041 + 105.0403566071141 LINESTRING (-104.9838 39.7610955, -104.9837333 39.7610444, -104.9837181 39.7610327, -104.9833721 39.7607662, -104.9830457 39.7605147, -104.9830323 39.7605044, -104.9829315 39.7604272) 466247383 - True + tertiary 2 Welton Street - tertiary + True False - 6.254 + 6.2544315992408785 472436313 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 42.464999999999996 + 42.46552875751396 LINESTRING (-104.9873832 39.7473557, -104.9873833 39.7473062, -104.9873844 39.7469738) 805899089 - False + residential 28th Street - residential + False False - 104.97900000000001 + 104.97912885868979 LINESTRING (-104.9820635 39.7597593, -104.9821565 39.7598308, -104.9825085 39.7601017, -104.9828401 39.7603568, -104.9828518 39.7603658, -104.9829315 39.7604272) [805899089, 674354857] - False + residential 28th Street - residential + False True - 106.606 + 106.60557597828522 LINESTRING (-104.9820635 39.7597593, -104.9819815 39.7596957, -104.9816257 39.7594224, -104.9813011 39.7591726, -104.9812695 39.7591483, -104.981182 39.7590811) 1182413372 - False + tertiary 2 Lawrence Street - residential + False False - 146.16 + 146.15965610575574 LINESTRING (-104.9820635 39.7597593, -104.9819814 39.7598229, -104.9817498 39.7600021, -104.9813439 39.7603162, -104.9812955 39.7603537, -104.9809328 39.7606343, -104.9808584 39.7606918) 1182413372 - False + tertiary 2 Lawrence Street - residential + False True - 147.249 + 147.24901119096987 LINESTRING (-104.9820635 39.7597593, -104.9821551 39.7596885, -104.9825737 39.7593644, -104.9832045 39.7588763, -104.9832775 39.7588198) 805899089 - False + residential 28th Street - residential + False False - 105.041 + 105.04035660711412 LINESTRING (-104.9829315 39.7604272, -104.9830323 39.7605044, -104.9830457 39.7605147, -104.9833721 39.7607662, -104.9837181 39.7610327, -104.9837333 39.7610444, -104.9838 39.7610955) 805899089 - False + residential 28th Street - residential + False True - 104.97899999999998 + 104.97912885868979 LINESTRING (-104.9829315 39.7604272, -104.9828518 39.7603658, -104.9828401 39.7603568, -104.9825085 39.7601017, -104.9821565 39.7598308, -104.9820635 39.7597593) 819744386 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False False - 147.356 + 147.3550400831453 LINESTRING (-104.9829315 39.7604272, -104.9830208 39.760358, -104.9834664 39.7600128, -104.9836036 39.7599066, -104.9840637 39.7595501, -104.9841457 39.7594865) 819744386 - False + tertiary 2 + 30 mph Larimer Street - tertiary - 30 mph + False True - 146.34300000000002 + 146.3422327595851 LINESTRING (-104.9829315 39.7604272, -104.9828491 39.760491, -104.9825395 39.7607332, -104.9822737 39.7609368, -104.9818212 39.7612874, -104.9817256 39.7613614) 231105077 - False + residential 30th Street - residential + False False - 106.54999999999998 + 106.54887696918813 LINESTRING (-104.9770306 39.7596105, -104.97712 39.7596794, -104.9774637 39.759944, -104.9777994 39.7602025, -104.9778277 39.7602243, -104.9779113 39.7602886) 278139935 - True + secondary 1 + 25 mph Champa Street - secondary - 25 mph + True False - 147.036 + 147.03616286063118 LINESTRING (-104.9770306 39.7596105, -104.9771207 39.7595397, -104.9781516 39.7587358, -104.9782379 39.7586686) [781164696, 781164695] - False + residential 2 30th Street - residential + False True - 105.714 - 25 mph - LINESTRING (-104.9770306 39.7596105, -104.9769665 39.7595604, -104.9765994 39.7592819, -104.9762609 39.7590191, -104.9762424 39.7590047, -104.9761553 39.7589389) + 105.71418808154397 + 25 mph + LINESTRING (-104.9770306 39.7596105, -104.9769535 39.7595518, -104.9765994 39.7592819, -104.9762609 39.7590191, -104.9762499 39.7590101, -104.9761553 39.7589389) 26296015 - False + residential 2 Curtis Street - tertiary + False False - 146.88399999999996 + 146.8839894068887 LINESTRING (-104.9779113 39.7602886, -104.9779993 39.7602202, -104.978304 39.7599835, -104.9790153 39.7594309, -104.9790299 39.7594196, -104.9791199 39.7593496) [16983323, 1175102788, 26296015] - False + ['tertiary', 'residential'] 2 ['Curtis Street', '31st Street'] - tertiary + False [False, True] - 246.78699999999998 + 246.78589744726332 LINESTRING (-104.9779113 39.7602886, -104.9778285 39.7603528, -104.9771732 39.760862, -104.976794 39.7611561, -104.9767558 39.7611862, -104.9767451 39.7612022, -104.9767416 39.7612201, -104.9767458 39.7612378, -104.9767571 39.7612536, -104.9767982 39.7612853, -104.9768411 39.761318, -104.9774977 39.7618193, -104.9775733 39.761877) 231105077 - False + residential 30th Street - residential + False False - 103.898 + 103.89771096296131 LINESTRING (-104.9779113 39.7602886, -104.9779986 39.7603558, -104.9780265 39.7603773, -104.9783437 39.7606216, -104.9786934 39.7608908, -104.97877 39.7609499) 231105077 - False + residential 30th Street - residential + False True - 106.55 + 106.54887696918813 LINESTRING (-104.9779113 39.7602886, -104.9778277 39.7602243, -104.9777994 39.7602025, -104.9774637 39.759944, -104.97712 39.7596794, -104.9770306 39.7596105) [701725179, 1178149438] - False + residential 2 24th Street - residential + False True - 105.889 + 105.88888844910127 LINESTRING (-104.9868986 39.7560175, -104.98681 39.7559495, -104.986786 39.755931, -104.9864583 39.7556792, -104.9861131 39.7554139, -104.9860697 39.7553808, -104.9860225 39.7553443) 1178149436 - False + residential 2 24th Street - residential + False False - 61.068999999999996 + 61.06816971755521 LINESTRING (-104.9868986 39.7560175, -104.9869664 39.7560696, -104.9869956 39.7560921, -104.9872554 39.7562917, -104.9873489 39.7563636, -104.9874038 39.7564058) 1182413372 - False + tertiary 2 Lawrence Street - residential + False False - 146.578 + 146.57727350765626 LINESTRING (-104.9868986 39.7560175, -104.986806 39.7560892, -104.9865862 39.7562593, -104.9857716 39.7568897, -104.9856903 39.7569528) 52867686 - False + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph + False True - 107.78399999999999 + 107.78273385497045 LINESTRING (-104.9828888 39.7510599, -104.9828531 39.7510317, -104.9828127 39.7510008, -104.982784 39.7509788, -104.9824375 39.7507132, -104.9823494 39.7506457, -104.9820872 39.7504447, -104.9819964 39.7503752) 325698648 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 146.458 + 146.4587438617913 LINESTRING (-104.9828888 39.7510599, -104.982806 39.751124, -104.9817629 39.7519317, -104.9816819 39.7519947) [628628011, 628628012] - False + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph + False False - 104.42 + 104.41935285078526 LINESTRING (-104.9828888 39.7510599, -104.9829647 39.7511179, -104.9831312 39.7512452, -104.9833215 39.7513906, -104.9836771 39.751664, -104.9837538 39.7517229) 608365222 - True + tertiary 2 + 25 mph California Street - tertiary - 25 mph + True False - 145.185 + 145.18511859532714 LINESTRING (-104.9837538 39.7517229, -104.9838416 39.7516549, -104.9840538 39.7514905, -104.9845389 39.7511145, -104.9848687 39.7508589, -104.9849499 39.750796) [628628013, 608365230] - False - ['4', '5'] + secondary + ['5', '4'] + 30 mph Park Avenue West - secondary - 30 mph + False False - 103.937 + 103.93636606149414 LINESTRING (-104.9837538 39.7517229, -104.9838388 39.751788, -104.9840082 39.7519175, -104.9841853 39.7520531, -104.9845351 39.7523208, -104.9846155 39.7523823) [628628011, 628628012] - False + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph + False True - 104.42 + 104.41935285078526 LINESTRING (-104.9837538 39.7517229, -104.9836771 39.751664, -104.9833215 39.7513906, -104.9831312 39.7512452, -104.9829647 39.7511179, -104.9828888 39.7510599) 781164693 - False + tertiary 2 + 25 mph California Street - tertiary - 25 mph + False True - 148.03499999999997 + 148.0355155695375 LINESTRING (-104.9837538 39.7517229, -104.9836625 39.7517935, -104.9832989 39.752075, -104.9831557 39.7521859, -104.9826238 39.7525946, -104.9825312 39.7526657) 650348885 - True + residential 2 24th Street - residential + True False - 52.132 + 52.13240286921177 LINESTRING (-104.9821001 39.7523341, -104.9824276 39.7525858, -104.9824434 39.7525979, -104.9825312 39.7526657) 834146466 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False False - 110.97 + 110.97012321062307 LINESTRING (-104.9853118 39.7478051, -104.9852808 39.7478291, -104.984948 39.7480871, -104.9848245 39.7481829, -104.9846964 39.7482821, -104.9845104 39.7484264, -104.9845002 39.7484343, -104.9843978 39.7485137) 834146466 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False True - 32.278999999999996 + 32.27985903187084 LINESTRING (-104.9853118 39.7478051, -104.9854454 39.7477015, -104.9854636 39.7476874, -104.9854811 39.7476738, -104.9855777 39.747599) 329189301 - unclassified - False + unclassified + False False - 122.921 + 122.91928720534352 LINESTRING (-104.9805649 39.7501354, -104.9804737 39.7500676, -104.9803389 39.7499664, -104.9803024 39.7499396, -104.9802174 39.7498755, -104.9801799 39.7498662, -104.9801437 39.7498724, -104.9801044 39.7499027, -104.9797488 39.7501793, -104.97962 39.7502788, -104.9795273 39.7503515) 781314132 + residential 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False False - 79.11200000000001 + 79.11172087479883 LINESTRING (-104.9805649 39.7501354, -104.979998 39.7505697, -104.9799098 39.7506379) 790179167 + residential 2 + 25 mph Tremont Place - tertiary - 25 mph - False + False True - 67.256 + 67.25493062636968 LINESTRING (-104.9805649 39.7501354, -104.9808747 39.7498977, -104.9810246 39.7497827, -104.9811218 39.7497082) 16985694 - False + residential 24th Street - residential + False False - 45.645 + 45.64546328742762 LINESTRING (-104.9795273 39.7503515, -104.9798045 39.7505593, -104.9798226 39.7505725, -104.9799098 39.7506379) 16985694 - False + residential 24th Street - residential + False True - 58.936 + 58.93626423436254 LINESTRING (-104.9795273 39.7503515, -104.9794778 39.7503144, -104.979145 39.750058, -104.9791248 39.7500425, -104.9790396 39.7499769) 329189301 - unclassified - False + unclassified + False True - 122.92099999999999 + 122.91928720534352 LINESTRING (-104.9795273 39.7503515, -104.97962 39.7502788, -104.9797488 39.7501793, -104.9801044 39.7499027, -104.9801437 39.7498724, -104.9801799 39.7498662, -104.9802174 39.7498755, -104.9803024 39.7499396, -104.9803389 39.7499664, -104.9804737 39.7500676, -104.9805649 39.7501354) 442674600 - True + primary 4 + 30 mph Broadway - primary - 30 mph + True False - 29.044 + 29.0442011709763 - [628407080, 16986014] - True + [628407080, 1222072828] + secondary 3 + 25 mph 18th Street - secondary - 25 mph + True False - 89.53 + 89.53082340626214 LINESTRING (-104.9873994 39.7450638, -104.9875481 39.7452418, -104.9876284 39.7453379, -104.9877528 39.7454634, -104.9878309 39.7455395, -104.987949 39.7456397, -104.9880305 39.7457035) [628407081, 130897931] - True + primary 4 + 30 mph Broadway - primary - 30 mph + True False - 159.95700000000002 + 159.95618053878908 LINESTRING (-104.9874 39.7448026, -104.9874015 39.7447346, -104.9873994 39.7443068, -104.9873956 39.7435261, -104.9873953 39.7433641) [628398056, 700245795, 330568564] - True + tertiary 2 + 30 mph Tremont Place - tertiary - 30 mph + True False - 112.79299999999999 + 112.79248543154917 LINESTRING (-104.9874 39.7448026, -104.9875195 39.7447394, -104.9880097 39.7443667, -104.9880553 39.744332, -104.9880713 39.7443198, -104.9882714 39.744165, -104.9883539 39.7441042) 628591245 - False + secondary 4 + 30 mph Park Avenue - secondary - 30 mph + False True - 25.016 + 25.015557084832867 781383480 - True + secondary 2 + 30 mph Park Avenue - secondary - 30 mph + True False - 7.941 + 7.94084489094869 16982257 + tertiary 2 East 16th Avenue - tertiary - False + False True - 11.201 + 11.201083015177042 330615234 - True + tertiary 1 East 16th Avenue - tertiary + True False - 56.548 + 56.547562112334546 LINESTRING (-104.9862403 39.7416819, -104.9867772 39.7417186, -104.9867914 39.7417179, -104.986806 39.7417143, -104.9868923 39.7416881) 473686850 - True + tertiary 1 East 16th Avenue - tertiary + True False - 56.663000000000004 + 56.66275351975689 LINESTRING (-104.9868923 39.7416881, -104.986808 39.7416582, -104.9867923 39.7416542, -104.9867784 39.7416533, -104.9862403 39.7416819) 330668996 - unclassified - False + unclassified + False False - 63.649 + 63.64894694963959 LINESTRING (-104.9740844 39.7461056, -104.9740842 39.7460137, -104.974083 39.7457291, -104.9741743 39.7455795, -104.9741911 39.7455517) [628585954, 628620751] - False - ['3', '2'] + residential + ['2', '3'] East 19th Avenue - residential + False True - 59.373000000000005 + 59.37325311927018 LINESTRING (-104.9740844 39.7461056, -104.9742964 39.7461549, -104.9744533 39.7461632, -104.9746748 39.7461674, -104.9747689 39.7461693) 330668996 - unclassified - False + unclassified + False True - 63.649 + 63.64894694963958 LINESTRING (-104.9741911 39.7455517, -104.9741743 39.7455795, -104.974083 39.7457291, -104.9740842 39.7460137, -104.9740844 39.7461056) - - 130921920 - 3 - Curtis Street - tertiary - False - True - 84.257 - LINESTRING (-104.9870424 39.7531989, -104.9868879 39.753318, -104.9866294 39.7535173, -104.9865096 39.7536097, -104.9864346 39.7536676, -104.9863465 39.7537355) - 389066415 - True + tertiary_link 1 - tertiary_link + True False - 32.863 + 32.86227670492977 LINESTRING (-104.9870424 39.7531989, -104.98713 39.7531705, -104.9871807 39.7531618, -104.9872326 39.7531622, -104.9872727 39.7531692, -104.9872831 39.7531717, -104.9873293 39.7531898, -104.987369 39.7532156, -104.9873863 39.7532341) - - [130897913, 427711370] - 6 - Broadway - primary - 30 mph - False - False - 116.14399999999999 - LINESTRING (-104.9873863 39.7532341, -104.9873863 39.753284, -104.9873861 39.7534371, -104.9873859 39.7536031, -104.9873854 39.7538855, -104.9873848 39.7542786) + + [130921920, 1242506703] + tertiary + 3 + Curtis Street + False + True + 84.25736577310494 + LINESTRING (-104.9870424 39.7531989, -104.9868879 39.753318, -104.9866294 39.7535173, -104.9865096 39.7536097, -104.9864346 39.7536676, -104.9863465 39.7537355) 130897913 + primary 6 + 30 mph Broadway - primary - 30 mph - False + False True - 33.448 + 33.4476221834294 LINESTRING (-104.9873863 39.7532341, -104.9873865 39.752955, -104.9873868 39.7529333) + + [427711370, 1242506702] + primary + 6 + 30 mph + Broadway + False + False + 116.14334063886406 + LINESTRING (-104.9873863 39.7532341, -104.9873863 39.753284, -104.9873861 39.7534371, -104.9873859 39.7536031, -104.9873854 39.7538855, -104.9873848 39.7542786) + 122079301 - True + primary 5 + 30 mph Broadway - primary - 30 mph + True False - 32.324 + 32.3245087573809 LINESTRING (-104.9873823 39.7476684, -104.9873825 39.7475835, -104.9873828 39.7475147, -104.987383 39.747435, -104.9873832 39.7473777) 466246338 - True - secondary_link + primary_link + True False - 27.741000000000003 + 27.740465626900402 LINESTRING (-104.9873823 39.7476684, -104.9873774 39.7476273, -104.9873618 39.7475972, -104.9873592 39.7475921, -104.987327 39.7475601, -104.9872946 39.7475415, -104.9872798 39.7475349, -104.9872633 39.74753, -104.987222 39.747523, -104.9871707 39.7475208) 468725061 - False + secondary 4 + 30 mph Park Avenue West - secondary - 30 mph + False False - 41.967 + 41.96734373287963 52867702 - False + secondary 4 + 30 mph Park Avenue West - secondary - 30 mph + False True - 47.536 + 47.53597805541413 LINESTRING (-104.978637 39.7478133, -104.9784244 39.7476515, -104.9782423 39.7475122) 468725061 - False + secondary 4 + 30 mph Park Avenue West - secondary - 30 mph + False True - 41.967 + 41.96734373287963 [461520698, 468725678] - False + secondary 5 + 30 mph Park Avenue West - secondary - 30 mph + False False - 76.445 + 76.44553501548963 LINESTRING (-104.9789855 39.7480791, -104.9792934 39.7483139, -104.9795478 39.7485079, -104.9796204 39.7485632) 467193897 - True + tertiary 1 Washington Street - tertiary + True False - 66.877 + 66.87701508259707 LINESTRING (-104.9789855 39.7480791, -104.9788834 39.7479206, -104.9788445 39.7478474, -104.9788069 39.74777, -104.9787841 39.7477143, -104.9787755 39.7476906, -104.9787597 39.7476469, -104.9787479 39.7476081, -104.9787313 39.7475143) [317983173, 935725118] - True - ['6', '5'] + primary + ['5', '6'] + 30 mph Broadway - primary - 30 mph + True False - 88.12299999999999 - LINESTRING (-104.9873844 39.7469738, -104.9873845 39.7469439, -104.987385 39.746782, -104.9873853 39.7466758, -104.9873857 39.7465316, -104.9873859 39.7464841, -104.9873866 39.746266, -104.9873868 39.7461813) + 91.8473695275243 + LINESTRING (-104.9873844 39.7469738, -104.9873845 39.7469439, -104.987385 39.746782, -104.9873853 39.7466758, -104.9873857 39.7465316, -104.9873859 39.7464841, -104.9873866 39.746266, -104.9873867 39.7461478) 51866006 - True + tertiary East 20th Avenue - residential + True False - 90.57400000000001 + 90.57338345631008 LINESTRING (-104.9871707 39.7475208, -104.9871126 39.7475209, -104.9867509 39.7475219, -104.9864681 39.7475226, -104.986255 39.7475231, -104.9861113 39.7475235) 472434958 - True + tertiary 2 Welton Street - tertiary + True False - 98.121 - LINESTRING (-104.9871707 39.7475208, -104.9865193 39.748152, -104.9864574 39.7482121) + 98.12131003724915 + LINESTRING (-104.9871707 39.7475208, -104.9868902 39.7477921, -104.9865193 39.748152, -104.9864574 39.7482121) 131612981 - False + tertiary 2 Washington Street - tertiary + False True - 47.442 + 47.4419547254401 LINESTRING (-104.9781588 39.7479227, -104.9781622 39.7476216, -104.9782423 39.7475122) 472437048 - True + tertiary_link 1 - tertiary_link + True False - 54.474000000000004 + 54.47484405702555 LINESTRING (-104.9781588 39.7479227, -104.9781863 39.7478371, -104.9782161 39.7477948, -104.9782684 39.7477629, -104.97833 39.7477474, -104.978436 39.7477422, -104.9785326 39.747768, -104.978637 39.7478133) 472437049 - False + tertiary 2 Washington Street - tertiary + False False - 173.035 + 173.0345051855088 LINESTRING (-104.9781588 39.7479227, -104.978151 39.748571, -104.97815 39.7486401, -104.9781499 39.7486739, -104.9781479 39.7492641, -104.9781475 39.7493993, -104.9781474 39.7494788) + + [648929100, 648929101] + secondary + 3 + Market Street + True + False + 149.15869075084396 + LINESTRING (-104.9983166 39.7498571, -104.9982484 39.7499092, -104.9981138 39.7500126, -104.9979583 39.7501324, -104.9971667 39.7507421, -104.9970843 39.7508067) + 305098999 - True + tertiary_link 1 - tertiary_link + True False - 36.78 + 36.7807416846007 LINESTRING (-104.9877167 39.7419263, -104.9876544 39.7419586, -104.9876074 39.7419673, -104.987564 39.7419687, -104.9875283 39.741958, -104.987472 39.7419302, -104.9874385 39.7418982, -104.9873872 39.7418281) 16984744 - False + residential 35th Street - residential + False True - 105.53099999999999 + 105.53071401726521 LINESTRING (-104.9762513 39.7682868, -104.9761677 39.768223, -104.9761475 39.7682072, -104.975821 39.7679568, -104.9756455 39.7678223, -104.9754817 39.7676967, -104.9754713 39.7676887, -104.9753772 39.7676165) 66805017 + tertiary + 30 mph Blake Street - tertiary - 30 mph - False + False False - 145.997 + 145.99564874030688 LINESTRING (-104.9762513 39.7682868, -104.976336 39.768221, -104.9765287 39.7680711, -104.9766127 39.7680058, -104.9767639 39.7678882, -104.977326 39.7674511, -104.9773709 39.7674162, -104.9774521 39.767353) 131612982 + tertiary 2 + 30 mph East 22nd Avenue - tertiary - 30 mph - False + False False - 101.398 + 101.39838048012095 LINESTRING (-104.9781474 39.7494788, -104.9780608 39.7494892, -104.9780167 39.7494893, -104.9775628 39.7494901, -104.9770741 39.7494915, -104.9769624 39.7494919) 329980805 - False + tertiary 2 Washington Street - tertiary + False False - 102.333 + 102.3328713485672 LINESTRING (-104.9781474 39.7494788, -104.9781473 39.7495725, -104.9781469 39.749919, -104.9781464 39.7503991) 472437049 - False + tertiary 2 Washington Street - tertiary + False True - 173.035 + 173.0345051855088 LINESTRING (-104.9781474 39.7494788, -104.9781475 39.7493993, -104.9781479 39.7492641, -104.9781499 39.7486739, -104.97815 39.7486401, -104.978151 39.748571, -104.9781588 39.7479227) 486538738 + residential 2 + 25 mph Cleveland Place - residential - 25 mph - False + False False - 165.97400000000002 + 165.9750590583168 LINESTRING (-104.9781474 39.7494788, -104.9782461 39.7494668, -104.9782665 39.7494644, -104.978398 39.7494488, -104.9784543 39.7494344, -104.9785066 39.7494107, -104.9785576 39.7493818, -104.978968 39.7490683, -104.9795123 39.7486468, -104.9795318 39.7486317, -104.9796204 39.7485632) 16988896 + tertiary 2 21st Street - tertiary - False + False True - 106.53699999999999 - LINESTRING (-104.9913755 39.7538746, -104.9914808 39.7539557, -104.9918216 39.7542179, -104.9921784 39.7544925, -104.9922563 39.7545524) + 106.53574488267252 + LINESTRING (-104.9913755 39.7538746, -104.9914808 39.7539557, -104.9918216 39.7542179, -104.9921784 39.7544925, -104.9922195 39.7545241, -104.9922563 39.7545524) 231105094 - True + tertiary 3 Larimer Street - tertiary + True False - 147.72299999999998 + 147.7231779721526 LINESTRING (-104.9913755 39.7538746, -104.9914529 39.7538147, -104.9916066 39.7536965, -104.9919167 39.7534575, -104.9923848 39.7530966, -104.9924028 39.7530827, -104.992495 39.7530131, -104.9925975 39.7529353) 501887279 + tertiary 2 21st Street - tertiary - False + False False - 105.474 + 105.47358102774731 LINESTRING (-104.9913755 39.7538746, -104.9912984 39.7538151, -104.9909466 39.7535435, -104.9906068 39.753281, -104.990505 39.7532024) 231105095 - True + tertiary 3 Lawrence Street - tertiary + True False - 146.046 + 146.0455239848275 LINESTRING (-104.990505 39.7532024, -104.9904335 39.7532584, -104.9895894 39.7539203, -104.9893841 39.7540812, -104.9893089 39.7541402) 501887279 + tertiary 2 21st Street - tertiary - False + False True - 105.47399999999999 + 105.47358102774731 LINESTRING (-104.990505 39.7532024, -104.9906068 39.753281, -104.9909466 39.7535435, -104.9912984 39.7538151, -104.9913755 39.7538746) 501887283 + tertiary 2 21st Street - tertiary - False + False False - 104.27 - LINESTRING (-104.990505 39.7532024, -104.9904306 39.7531451, -104.9900841 39.7528784, -104.9899528 39.7527773, -104.989815 39.7526712, -104.9897372 39.7526113, -104.9896431 39.7525389) + 104.26994549038434 + LINESTRING (-104.990505 39.7532024, -104.9904306 39.7531451, -104.9900841 39.7528784, -104.9899528 39.7527773, -104.989815 39.7526712, -104.9897372 39.7526113, -104.9897006 39.7525832, -104.9896431 39.7525389) 16985689 - False + tertiary 3 + 30 mph East 20th Avenue - tertiary - 30 mph + False False - 10.336 + 10.336498638273572 131612993 - False - 4 + tertiary + 3 East 20th Avenue - tertiary + False True - 75.84299999999999 + 75.84294398225975 LINESTRING (-104.9848394 39.7475394, -104.9847843 39.7475392, -104.9842935 39.7475375, -104.9842158 39.7475372, -104.9839523 39.7475363) - [1176005225, 16987763] + [1176005225, 1222109786] + residential 2 + 25 mph Sherman Street - residential - 25 mph - False + False True - 151.006 + 151.00550826036297 LINESTRING (-104.9848394 39.7475394, -104.984839 39.747478, -104.9848401 39.7474314, -104.9848429 39.7470016, -104.9848438 39.7468571, -104.9848462 39.7464931, -104.9848474 39.746287, -104.984848 39.7461814) 16985689 - False + tertiary 3 + 30 mph East 20th Avenue - tertiary - 30 mph + False True - 10.336 + 10.336498638273572 52867928 - True + tertiary_link 1 - tertiary_link + True False - 42.189 + 42.18891968854406 LINESTRING (-104.9849603 39.7475388, -104.9850689 39.7476211, -104.9851427 39.7476769, -104.9852189 39.7477346, -104.9852337 39.7477458, -104.9853118 39.7478051) 724130068 - True + tertiary 3 + 30 mph East 20th Avenue - tertiary - 30 mph + True False - 53.354 + 53.35313319249033 LINESTRING (-104.9849603 39.7475388, -104.9850374 39.7475448, -104.9851261 39.747549, -104.9852408 39.7475559, -104.9854017 39.7475719, -104.9854813 39.7475792, -104.9855439 39.7475884, -104.9855777 39.747599) 834146466 + residential 2 + 25 mph Glenarm Place - tertiary - 25 mph - False + False False - 32.278999999999996 + 32.27985903187084 LINESTRING (-104.9855777 39.747599, -104.9854811 39.7476738, -104.9854636 39.7476874, -104.9854454 39.7477015, -104.9853118 39.7478051) 834146467 - True + tertiary 3 + 30 mph East 20th Avenue - tertiary - 30 mph + True False - 60.69 + 60.68961304944866 LINESTRING (-104.9855777 39.747599, -104.9856441 39.747623, -104.985673 39.7476389, -104.9857289 39.7476709, -104.9858416 39.7477493, -104.9859565 39.7478383, -104.9860556 39.7479142, -104.9861098 39.7479555) 505660819 - False + tertiary 2 Logan Street - tertiary + False False - 145.978 + 145.9774515149801 LINESTRING (-104.9823336 39.7448687, -104.9823336 39.7449637, -104.9823341 39.7459678, -104.982334 39.746093, -104.9823328 39.7461815) 1184891759 - True + secondary 3 + 30 mph East 18th Avenue - secondary - 30 mph + True False - 107.61 + 107.60908118108736 LINESTRING (-104.9823336 39.7448687, -104.9824522 39.7448692, -104.9829513 39.7448713, -104.9834539 39.7448733, -104.9835922 39.7448739) 519191087 - True + tertiary 1 22nd Street - tertiary + True False - 28.929 + 28.92847511785429 LINESTRING (-104.985172 39.7509673, -104.9851014 39.7508646, -104.9850737 39.7508258, -104.9849499 39.750796) 566102885 + tertiary 2 22nd Street - tertiary - False + False True - 41.449 + 41.449768753550515 LINESTRING (-104.985172 39.7509673, -104.9853802 39.7511279, -104.9855143 39.7512313) 519191085 - True + tertiary 1 22nd Street - tertiary + True False - 27.551000000000002 + 27.551891286927628 LINESTRING (-104.9849499 39.750796, -104.9850076 39.7508773, -104.985172 39.7509673) 519191086 + tertiary 2 + 25 mph 22nd Street - tertiary - 25 mph - False + False False - 104.51800000000001 + 104.51740528889849 LINESTRING (-104.9849499 39.750796, -104.984858 39.7507251, -104.9848217 39.7506971, -104.9845139 39.7504597, -104.9842058 39.7502222, -104.984161 39.7501877, -104.9840868 39.7501303) 608365242 - True + tertiary 2 + 25 mph California Street - tertiary - 25 mph + True False - 146.33799999999997 + 146.33794721441814 LINESTRING (-104.9849499 39.750796, -104.9850423 39.7507245, -104.9853436 39.7504917, -104.9854941 39.7503753, -104.9855007 39.7503702, -104.9855916 39.7502999, -104.9857143 39.7502051, -104.9860715 39.749929, -104.986157 39.7498629) + + 628393624 + tertiary + 4 + Glenarm Place + False + True + 2.4436787358737164 + 16986014 - True + secondary 3 + 25 mph 18th Street - secondary - 25 mph + True False - 106.352 + 106.35325611987261 LINESTRING (-104.9880305 39.7457035, -104.9881098 39.7457653, -104.9882683 39.7458886, -104.9884787 39.7460525, -104.9888235 39.746321, -104.9889045 39.7463841) 131613000 + tertiary 2 Glenarm Place - tertiary - False + False True - 145.33599999999998 + 145.334429192678 LINESTRING (-104.9880305 39.7457035, -104.9881052 39.7456464, -104.9882021 39.7455707, -104.9886925 39.7451913, -104.9888264 39.7450874, -104.9891425 39.744842, -104.9892287 39.7447764) - - [628393624, 16986121] - ['4', '3'] - Glenarm Place - tertiary - False - True - 76.59299999999999 - LINESTRING (-104.9880305 39.7457035, -104.9879452 39.7457704, -104.987775 39.7459031, -104.987645 39.7460045, -104.9875376 39.7460893, -104.9873868 39.7461813) - 325698648 - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 145.514 + 145.51337584929124 LINESTRING (-104.9840868 39.7501303, -104.9840081 39.7501914, -104.983419 39.7506485, -104.9829758 39.7509924, -104.9828888 39.7510599) 519191086 + tertiary 2 + 25 mph 22nd Street - tertiary - 25 mph - False + False True - 104.518 + 104.51740528889847 LINESTRING (-104.9840868 39.7501303, -104.984161 39.7501877, -104.9842058 39.7502222, -104.9845139 39.7504597, -104.9848217 39.7506971, -104.984858 39.7507251, -104.9849499 39.750796) [526024436, 781314135] + residential 2 + 25 mph 22nd Street - tertiary - 25 mph - False + False False - 107.718 + 107.71783207522489 LINESTRING (-104.9840868 39.7501303, -104.9840501 39.750102, -104.9840113 39.750072, -104.9839829 39.7500501, -104.9839535 39.7500274, -104.9836382 39.7497843, -104.9834401 39.7496314, -104.9832891 39.749515, -104.9831973 39.7494442) 566102885 + tertiary 2 22nd Street - tertiary - False + False False - 41.449 + 41.449768753550515 LINESTRING (-104.9855143 39.7512313, -104.9853802 39.7511279, -104.985172 39.7509673) [566102889, 566102906] - True + tertiary 1 22nd Street - tertiary + True False - 35.477000000000004 - LINESTRING (-104.9855143 39.7512313, -104.9855437 39.7512621, -104.9855672 39.7512867, -104.9856959 39.7514223, -104.985772 39.7514804) + 35.4761233848154 + LINESTRING (-104.9855143 39.7512313, -104.9855437 39.7512621, -104.9855672 39.7512867, -104.9856959 39.7514223, -104.9857427 39.751458, -104.985772 39.7514804) [427711563, 1039922863] - True + secondary 3 + 25 mph Stout Street - secondary - 25 mph + True False - 140.82600000000002 + 140.82739496443395 LINESTRING (-104.985772 39.7514804, -104.9857256 39.7515165, -104.9853894 39.7517787, -104.9852048 39.7519223, -104.9847037 39.7523135, -104.9846155 39.7523823) [566102892, 566102903] - True + secondary 1 22nd Street - secondary + True False - 39.882999999999996 + 39.8827733211578 LINESTRING (-104.9861335 39.7517059, -104.9858707 39.7515558, -104.985772 39.7514804) [566102898, 566102901] - True + secondary 1 + 25 mph 22nd Street - secondary - 25 mph + True False - 40.057 + 40.0575949289499 LINESTRING (-104.9861335 39.7517059, -104.9859442 39.7514988, -104.9858468 39.7514222) 427711563 - True + secondary 3 + 25 mph Stout Street - secondary - 25 mph + True False - 9.098 + 9.097924520324849 [566102910, 566102895] - True + tertiary 1 + 25 mph 22nd Street - tertiary - 25 mph + True False - 35.629 - LINESTRING (-104.9858468 39.7514222, -104.9857722 39.7513632, -104.9855143 39.7512313) + 35.6299880627381 + LINESTRING (-104.9858468 39.7514222, -104.9858162 39.751398, -104.9857722 39.7513632, -104.9855143 39.7512313) [278136617, 1176383636] + residential 2 Tremont Place - residential - False + False True - 72.907 + 72.90680934729117 LINESTRING (-104.973842 39.7552993, -104.9738818 39.7552877, -104.973914 39.7552753, -104.9739445 39.7552607, -104.9742641 39.7550199, -104.9744721 39.7548636) 1181902746 - False + residential 29th Street - residential + False False - 108.009 + 108.0093339911671 LINESTRING (-104.973842 39.7552993, -104.9739443 39.7553764, -104.9739706 39.7553967, -104.9743086 39.7556568, -104.9746537 39.7559224, -104.974736 39.7559857) - - 44959616 - True + + 16988400 + residential 1 - Tremont Place - residential - False - 40.302 - LINESTRING (-104.9744721 39.7548636, -104.9746661 39.7547334, -104.9746781 39.7547254, -104.9747223 39.7546953, -104.9748264 39.7546245) + Ogden Street + False + True + 27.44395500640882 + LINESTRING (-104.9744721 39.7548636, -104.974529 39.7547254, -104.9745694 39.7546284) [278136617, 1176383636] + residential 2 Tremont Place - residential - False + False False - 72.90699999999998 + 72.90680934729116 LINESTRING (-104.9744721 39.7548636, -104.9742641 39.7550199, -104.9739445 39.7552607, -104.973914 39.7552753, -104.9738818 39.7552877, -104.973842 39.7552993) + + [44959616, 1301447224, 1301447223] + residential + 1 + Tremont Place + True + False + 39.89174178626021 + LINESTRING (-104.9744721 39.7548636, -104.9745691 39.7547985, -104.9746661 39.7547334, -104.9746781 39.7547254, -104.9747223 39.7546953, -104.9747411 39.7546835, -104.9747599 39.7546717, -104.9748263 39.7546301) + 278444497 - False + residential 34th Street - residential + False True - 105.451 + 105.45125880310566 LINESTRING (-104.9748359 39.7653524, -104.9749257 39.7654213, -104.9749382 39.7654309, -104.975283 39.765696, -104.9756146 39.7659508, -104.9756277 39.7659609, -104.9757084 39.7660229) + + 572419638 + residential + 34th Street + False + False + 105.00013459591148 + LINESTRING (-104.9748359 39.7653524, -104.9747653 39.7652982, -104.9747517 39.7652877, -104.974405 39.7650213, -104.9740656 39.7647604, -104.9740485 39.7647473, -104.9739671 39.7646848) + - [409342461, 1175102775] - False + [1201623835, 1175102775] + tertiary 2 Lawrence Street - residential + False False - 145.559 - LINESTRING (-104.9748359 39.7653524, -104.9747498 39.7654189, -104.9737207 39.7662153, -104.9736357 39.7662811) + 145.5607074391553 + LINESTRING (-104.9748359 39.7653524, -104.9747498 39.7654189, -104.9737207 39.7662153, -104.9736358 39.7662812) - 409342461 - False + 1201623835 + tertiary 2 Lawrence Street - residential + False True - 145.143 + 145.1438646289247 LINESTRING (-104.9748359 39.7653524, -104.9749069 39.7652974, -104.9754311 39.7648918, -104.9756019 39.7647596, -104.975959 39.7644833, -104.9759711 39.7644739, -104.9760326 39.7644263) - - 572419638 - False - 34th Street - residential - False - 105.00200000000001 - LINESTRING (-104.9748359 39.7653524, -104.9747653 39.7652982, -104.9747517 39.7652877, -104.974405 39.7650213, -104.9740656 39.7647604, -104.9740485 39.7647473, -104.9739671 39.7646848) - [628398048, 647582786, 970104138] - True - ['4', '5', '6'] + primary + ['5', '6', '4'] + 30 mph Broadway - primary - 30 mph + True False - 63.339 + 63.33822191767647 LINESTRING (-104.9873959 39.7407153, -104.9873967 39.7406295, -104.9873981 39.7404768, -104.9874004 39.7402155, -104.987401 39.7401457) - - [549942085, 329980805] - False - 2 - Washington Street - tertiary - True - 148.435 - LINESTRING (-104.978144 39.7545962, -104.9781419 39.7544874, -104.9781422 39.7541719, -104.9781424 39.7540365, -104.9781424 39.7540152, -104.9781427 39.7537763, -104.9781428 39.7536815, -104.9781431 39.7534559, -104.9781432 39.7533534, -104.9781433 39.7532613) + + 16984945 + residential + 25 mph + 28th Street + False + False + 48.87901632094375 + LINESTRING (-104.9757572 39.7546364, -104.9757589 39.7547301, -104.9757606 39.7547591, -104.9757625 39.7547931, -104.9757651 39.7548147, -104.9757704 39.7548382, -104.9757786 39.7548645, -104.9757896 39.7548926, -104.9758011 39.7549163, -104.9758175 39.7549388, -104.9758258 39.7549486, -104.9758519 39.7549751, -104.9758692 39.7549902, -104.9759271 39.7550372) - - [570128136, 769456732] - True - 1 + + 278136613 + tertiary + 2 East 26th Avenue - tertiary + False False - 30.241999999999997 - LINESTRING (-104.978144 39.7545962, -104.978012 39.7546051, -104.9777916 39.7546201) + 79.58170740798508 + LINESTRING (-104.9757572 39.7546364, -104.9756465 39.7546356, -104.9751618 39.7546324, -104.9748263 39.7546301) - - 769456733 - False + + 278136613 + tertiary 2 - Washington Street - tertiary - False - 11.075 - LINESTRING (-104.978144 39.7545962, -104.9781587 39.754607, -104.9782389 39.754664) + East 26th Avenue + False + True + 102.8859521397388 + LINESTRING (-104.9757572 39.7546364, -104.9758794 39.7546372, -104.9763652 39.7546405, -104.9765056 39.7546414, -104.9768617 39.7546438, -104.9769607 39.7546445) + + + [1173823101, 550013301] + residential + 2 + Emerson Street + False + True + 153.57352132571603 + LINESTRING (-104.9757572 39.7546364, -104.9757573 39.7545406, -104.9757658 39.7533462, -104.9757658 39.7532553) [570128140, 570128143] - True + tertiary 2 + 30 mph Welton Street - tertiary - 30 mph + True False - 22.59 + 22.589299249810328 LINESTRING (-104.9782389 39.754664, -104.9781506 39.7547325, -104.9780529 39.7548083) - - 769456733 - False + + [549942085, 769456733, 329980805] + tertiary 2 Washington Street - tertiary + False True - 11.075 - LINESTRING (-104.9782389 39.754664, -104.9781587 39.754607, -104.978144 39.7545962) + 159.0881539287534 + LINESTRING (-104.9782389 39.754664, -104.9781587 39.754607, -104.978144 39.7545962, -104.9781419 39.7544874, -104.9781422 39.7541719, -104.9781424 39.7540365, -104.9781424 39.7540152, -104.9781427 39.7537763, -104.9781428 39.7536815, -104.9781431 39.7534559, -104.9781432 39.7533534, -104.9781432 39.7532651) 781383478 + secondary 4 + 30 mph Park Avenue - secondary - 30 mph - False + False False - 102.416 + 102.41552061352353 LINESTRING (-104.975307 39.7452483, -104.9760045 39.7457722, -104.9761639 39.7458919) 781383479 - True + secondary 2 + 30 mph Park Avenue - secondary - 30 mph + True False - 42.624 + 42.62485189853224 LINESTRING (-104.975307 39.7452483, -104.9753068 39.7451936, -104.9750691 39.7450125, -104.9749826 39.7449867) 781695841 - True + secondary 2 + 30 mph Park Avenue - secondary - 30 mph + True False - 34.311 + 34.31120561857652 LINESTRING (-104.9750045 39.7450561, -104.9752435 39.7452382, -104.975307 39.7452483) 409342461 - False + tertiary 2 Lawrence Street - residential + False False - 118.24900000000001 + 118.24920517177141 LINESTRING (-104.9806247 39.7608727, -104.9798381 39.7614815, -104.9797266 39.7615678, -104.9796498 39.7616272) 1182413374 - True + tertiary 2 Lawrence Street - residential + True False - 28.349000000000004 + 28.34908235893183 LINESTRING (-104.9806247 39.7608727, -104.9807881 39.7607463, -104.9808584 39.7606918) - 2023-08-11 13:22:23 - OSMnx 1.6.0 + + 700343605 + tertiary + 2 + Arapahoe Street + False + False + 139.94393282334855 + LINESTRING (-104.9835527 39.7572523, -104.9835181 39.7572788, -104.982478 39.7580775, -104.9823944 39.7581417) + + + 1297796971 + tertiary + roundabout + True + False + 10.54393916448658 + LINESTRING (-104.9835527 39.7572523, -104.9835703 39.757264, -104.983593 39.7572712, -104.9836175 39.7572724, -104.9836412 39.7572675, -104.9836629 39.7572559) + + + 1297796971 + tertiary + roundabout + True + False + 9.793471695103026 + LINESTRING (-104.9836596 39.7571704, -104.9836377 39.7571602, -104.983613 39.7571562, -104.983588 39.7571587, -104.9835654 39.7571673, -104.9835561 39.7571746) + + + [1297796972, 25680149] + tertiary + 2 + Arapahoe Street + False + True + 139.4962239673895 + 20 mph + LINESTRING (-104.9836596 39.7571704, -104.9836948 39.7571429, -104.9839497 39.7569434, -104.9847189 39.7563413, -104.9848031 39.7562754) + + + 1297796971 + tertiary + roundabout + True + False + 10.650036200846301 + LINESTRING (-104.9836629 39.7572559, -104.9836773 39.7572411, -104.983685 39.7572227, -104.9836844 39.7572033, -104.9836755 39.7571851, -104.9836596 39.7571704) + + + 1297796973 + residential + 26th Street + False + False + 99.18817541305317 + LINESTRING (-104.9836629 39.7572559, -104.9836898 39.7572763, -104.9838876 39.7574289, -104.9844072 39.7578271, -104.9844841 39.7578861) + + + 278136621 + residential + 26th Street + False + True + 99.4201092371807 + LINESTRING (-104.9835561 39.7571746, -104.9835209 39.7571475, -104.9831741 39.7568808, -104.9828476 39.7566297, -104.9828271 39.756614, -104.9827338 39.7565423) + + + 1297796971 + tertiary + roundabout + True + False + 9.51522958655023 + LINESTRING (-104.9835561 39.7571746, -104.9835477 39.7571812, -104.9835372 39.7571982, -104.9835343 39.7572169, -104.9835393 39.7572354, -104.9835527 39.7572523) + + + 1299385804 + residential + 33rd Street + False + False + 87.65929764362122 + LINESTRING (-104.9735558 39.7625345, -104.973564 39.7625408, -104.9738541 39.7627624, -104.9740539 39.7629127, -104.9741892 39.7630183, -104.9741988 39.7630257, -104.9742832 39.7630902) + + + [1310794488, 1310794489, 1310794490] + busway + ['17th Street Bus only lane', '17th Street Bus Lane'] + True + False + 835.8011612845713 + LINESTRING (-104.9970424 39.7507166, -104.9970522 39.7507242, -104.9961746 39.7500399, -104.9948749 39.7490399, -104.9935553 39.7480492, -104.9930571 39.7476653, -104.9926716 39.7473722, -104.9919689 39.7468342, -104.9911086 39.7461688, -104.9909448 39.7460517, -104.9901293 39.7454325) + + + 628389329 + tertiary + 4 + Welton Street + False + False + 2.9691770991599316 + + + 1310794490 + busway + 17th Street Bus Lane + True + False + 106.07608806652823 + LINESTRING (-104.9901293 39.7454325, -104.9893529 39.7448061, -104.9892719 39.744743) + + + 524280872 + tertiary + 2 + Glenarm Place + False + True + 5.237861433248683 + + + 524280872 + tertiary + 2 + Glenarm Place + False + False + 139.65552058825588 + LINESTRING (-104.9892719 39.744743, -104.989314 39.7447104, -104.9896352 39.7444618, -104.990364 39.7438976, -104.9904235 39.7438523) + + + 1310794490 + busway + 17th Street Bus Lane + True + False + 199.8401771703294 + LINESTRING (-104.9892719 39.744743, -104.988636 39.7442772, -104.9882538 39.7439466, -104.9879941 39.7437349, -104.9876366 39.7434603) + + + 1311397367 + busway + True + False + 147.37820627734504 + LINESTRING (-104.9875029 39.7486833, -104.9875031 39.7485153, -104.987504 39.7477245, -104.9875029 39.7475041, -104.987503 39.7474503, -104.9875031 39.7474016, -104.9875032 39.7473579) + + + 16986121 + tertiary + 3 + Glenarm Place + False + True + 11.97065790409549 + + + [628393624, 16986121] + tertiary + ['3', '4'] + Glenarm Place + False + False + 60.16933705185544 + LINESTRING (-104.9875117 39.7460993, -104.9875376 39.7460893, -104.987645 39.7460045, -104.987775 39.7459031, -104.9879452 39.7457704, -104.9880105 39.7457192) + + + 1311397367 + busway + True + False + 74.478507062455 + LINESTRING (-104.9875117 39.7460993, -104.9875118 39.7460071, -104.9875126 39.7454295) + + + 1093130021 + tertiary + 3 + 25 mph + 19th Street + True + False + 14.896941564349325 + + + 1311397367 + busway + True + False + 108.08708806909488 + LINESTRING (-104.9875039 39.7470713, -104.9875041 39.7469457, -104.9875047 39.7466773, -104.9875052 39.7464771, -104.9875115 39.7462338, -104.9875117 39.7460993) + + + 1093130022 + tertiary + 2 + Welton Street + True + False + 13.13016099408166 + + + 1311397367 + busway + True + False + 23.451082386028432 + LINESTRING (-104.9875034 39.7472822, -104.9875035 39.7472326, -104.9875039 39.7470713) + + + 1311397367 + busway + True + False + 8.417485204483032 + + + 52087403 + tertiary_link + 1 + True + False + 10.52610632927562 + LINESTRING (-104.9875032 39.7473579, -104.9874448 39.7473637, -104.9873832 39.7473777) + + + 1311397368 + busway + 1 + True + False + 91.80885369252546 + LINESTRING (-104.9862621 39.7449285, -104.9865153 39.7449296, -104.9867575 39.7449307, -104.9872525 39.7449329, -104.9873208 39.7449697) + + + 442674601 + secondary + 3 + East 18th Avenue + True + False + 12.435588185843653 + + + 1311397368 + busway + 1 + True + False + 13.758661367112355 + + + 628389295 + secondary + 3 + 25 mph + Champa Street + True + False + 2.692621964977508 + + + 1311397368 + busway + 1 + True + False + 106.10175492155572 + LINESTRING (-104.9914967 39.7484089, -104.9915838 39.748477, -104.9922876 39.7490276, -104.9923672 39.749089) + + + 317964610 + secondary + 2 + 25 mph + Market Street + True + False + 143.2697971463884 + LINESTRING (-104.9958557 39.751762, -104.9957979 39.7518074, -104.9956953 39.7518883, -104.9952601 39.7522315, -104.9947674 39.75262, -104.9946844 39.7526835) + + + 935725119 + primary + 5 + 30 mph + Broadway + True + False + 1.5569424608678297 + + + 1311397368 + busway + 1 + True + False + 88.98964999830993 + LINESTRING (-104.9873991 39.7450778, -104.9875477 39.7452831, -104.9876016 39.7453576, -104.9877279 39.7454909, -104.9879302 39.7456543, -104.9880105 39.7457192) + + + 628393624 + tertiary + 4 + Glenarm Place + False + False + 2.4436787358737164 + + + [628393624, 16986121] + tertiary + ['3', '4'] + Glenarm Place + False + True + 60.169337051855436 + LINESTRING (-104.9880105 39.7457192, -104.9879452 39.7457704, -104.987775 39.7459031, -104.987645 39.7460045, -104.9875376 39.7460893, -104.9875117 39.7460993) + + + 1311397368 + busway + 1 + True + False + 106.23515403769572 + LINESTRING (-104.9880105 39.7457192, -104.9880882 39.745782, -104.9882251 39.7458926, -104.9884539 39.746071, -104.988799 39.74634, -104.9888781 39.7464031) + + + [472434857, 1093130020, 130885103] + tertiary + ['2', '3'] + Welton Street + True + False + 136.7409223975972 + LINESTRING (-104.9888781 39.7464031, -104.9888211 39.7464441, -104.9885097 39.7466592, -104.9883055 39.746792, -104.9881913 39.7468618, -104.9877077 39.7471574, -104.9876516 39.7471916) + + + 1311397368 + busway + 1 + True + False + 106.69573059274202 + LINESTRING (-104.9888781 39.7464031, -104.9889538 39.7464634, -104.9893216 39.746735, -104.9894334 39.7468175, -104.9895881 39.7469317, -104.989693 39.7470139, -104.9897212 39.747036, -104.98977 39.7470741) + + + 628389313 + tertiary + 3 + California Street + True + False + 2.0160096991895373 + + + 1311397368 + busway + 1 + True + False + 101.84842471093708 + LINESTRING (-104.98977 39.7470741, -104.9898549 39.7471406, -104.990534 39.7476722, -104.9906055 39.747727) + + + [130886835, 1049978118] + secondary + ['2', '3'] + 25 mph + Stout Street + True + False + 142.52662298074407 + LINESTRING (-104.9906055 39.747727, -104.9905486 39.7477716, -104.9896879 39.748439, -104.9895126 39.7485755, -104.989471 39.7486078, -104.9894316 39.7486371) + + + 1311397368 + busway + 1 + True + False + 107.49188464992666 + LINESTRING (-104.9906055 39.747727, -104.9906743 39.7477796, -104.9907102 39.747807, -104.9913477 39.7482949, -104.9914129 39.7483448, -104.9914967 39.7484089) + + + [700245968, 700245969, 466867211] + tertiary + 3 + Curtis Street + True + False + 142.46639850654287 + LINESTRING (-104.9923672 39.749089, -104.992314 39.7491301, -104.9918175 39.7495138, -104.9916837 39.7496172, -104.9916351 39.7496548, -104.9912752 39.7499329, -104.9911919 39.7499973) + + + 1311397368 + busway + 1 + True + False + 103.39963395637007 + LINESTRING (-104.9923672 39.749089, -104.9924687 39.7491674, -104.9931473 39.7496913, -104.9932209 39.7497477) + + + 231028999 + tertiary + 3 + Arapahoe Street + True + False + 4.264550153059039 + + + 1311397368 + busway + 1 + True + False + 105.96932789153587 + LINESTRING (-104.9932209 39.7497477, -104.9932987 39.7498074, -104.9933228 39.7498259, -104.9936774 39.7500979, -104.994024 39.7503636, -104.9940972 39.7504217) + + + [1102890681, 1102890682] + tertiary + 3 + 25 mph + Lawrence Street + True + False + 142.8499796241736 + LINESTRING (-104.9940972 39.7504217, -104.9940458 39.7504615, -104.9936683 39.7507537, -104.9934947 39.7508881, -104.9934627 39.7509129, -104.9933343 39.7510122, -104.9931864 39.7511267, -104.9930071 39.7512655, -104.9929197 39.7513332) + + + 1311397368 + busway + 1 + True + False + 105.66468854790176 + LINESTRING (-104.9940972 39.7504217, -104.9941953 39.7504996, -104.9945585 39.7507747, -104.9948946 39.7510293, -104.9949762 39.7510897) + + + 130911264 + tertiary + 4 + Larimer Street + True + False + 3.1224943205172573 + + + 1311397368 + busway + 1 + True + False + 106.02910962416226 + LINESTRING (-104.9949762 39.7510897, -104.9950801 39.7511666, -104.9954213 39.7514285, -104.9957831 39.7517063, -104.9958557 39.751762) + + 2024-11-27 10:26:34 + OSMnx 2.0.0 epsg:4326 True diff --git a/tests/test_assets/pull_osm_map.py b/tests/test_assets/pull_osm_map.py new file mode 100644 index 0000000..95466f4 --- /dev/null +++ b/tests/test_assets/pull_osm_map.py @@ -0,0 +1,14 @@ +# %% +import osmnx as ox + +from mappymatch.constructs.geofence import Geofence + +# %% +geofence = Geofence.from_geojson("downtown_denver.geojson") +g = ox.graph_from_polygon( + geofence.geometry, + network_type="drive", +) + +ox.save_graphml(g, "osmnx_drive_graph.graphml") +# %% diff --git a/tests/test_lcss_add_match_for_stationary.py b/tests/test_lcss_add_match_for_stationary.py index 29825a0..616007f 100644 --- a/tests/test_lcss_add_match_for_stationary.py +++ b/tests/test_lcss_add_match_for_stationary.py @@ -44,9 +44,7 @@ def test_add_matches_no_stationary_points(self): stationary_index: list[StationaryIndex] = [] - resulting_matches = add_matches_for_stationary_points( - matches, stationary_index - ) + resulting_matches = add_matches_for_stationary_points(matches, stationary_index) self.assertListEqual(expected_matches, resulting_matches) @@ -77,17 +75,13 @@ def test_add_matches_one_stationary_point_at_beginning(self): expected_matches = deepcopy(matches) # now, add the expected points m = expected_matches[0] - new_m = m.set_coordinate( - Coordinate("new", m.coordinate.geom, m.coordinate.crs) - ) + new_m = m.set_coordinate(Coordinate("new", m.coordinate.geom, m.coordinate.crs)) expected_matches.insert(0, new_m) # StationaryIndex( i_index: List[int], c_index: List[Any]) stationary_index = [StationaryIndex([0, 0], [None, "new"])] - resulting_matches = add_matches_for_stationary_points( - matches, stationary_index - ) + resulting_matches = add_matches_for_stationary_points(matches, stationary_index) self.assertListEqual(expected_matches, resulting_matches) @@ -119,17 +113,13 @@ def test_add_matches_one_stationary_point_at_end(self): expected_matches = deepcopy(matches) # now, add the expected points m = expected_matches[-1] - new_m = m.set_coordinate( - Coordinate("new", m.coordinate.geom, m.coordinate.crs) - ) + new_m = m.set_coordinate(Coordinate("new", m.coordinate.geom, m.coordinate.crs)) expected_matches.append(new_m) # StationaryIndex( i_index: List[int], c_index: List[Any]) stationary_index = [StationaryIndex([-1, len(matches)], [None, "new"])] - resulting_matches = add_matches_for_stationary_points( - matches, stationary_index - ) + resulting_matches = add_matches_for_stationary_points(matches, stationary_index) self.assertListEqual(expected_matches, resulting_matches) @@ -161,32 +151,24 @@ def test_add_matches_one_stationary_point_in_middle(self): expected_matches = deepcopy(matches) # now, add the expected points m = expected_matches[-1] - new_m = m.set_coordinate( - Coordinate("new", m.coordinate.geom, m.coordinate.crs) - ) + new_m = m.set_coordinate(Coordinate("new", m.coordinate.geom, m.coordinate.crs)) expected_matches[-1:-1] = [new_m] # StationaryIndex( i_index: List[int], c_index: List[Any]) stationary_index = [StationaryIndex([-1, -1], [None, "new"])] - resulting_matches = add_matches_for_stationary_points( - matches, stationary_index - ) + resulting_matches = add_matches_for_stationary_points(matches, stationary_index) self.assertListEqual(expected_matches, resulting_matches) expected_matches = deepcopy(matches) indx = len(matches) // 2 m = expected_matches[indx] - new_m = m.set_coordinate( - Coordinate("new", m.coordinate.geom, m.coordinate.crs) - ) + new_m = m.set_coordinate(Coordinate("new", m.coordinate.geom, m.coordinate.crs)) expected_matches.insert(indx, new_m) stationary_index = [StationaryIndex([indx, indx], [None, "new"])] - resulting_matches = add_matches_for_stationary_points( - matches, stationary_index - ) + resulting_matches = add_matches_for_stationary_points(matches, stationary_index) self.assertListEqual(expected_matches, resulting_matches) @@ -212,9 +194,7 @@ def test_add_matches_multiple_stationary_points(self): ] coords = [Coordinate.from_lat_lon(lat, lon) for lat, lon in lat_longs] # Match(road, coordinate, distance) - matches: list[Match] = [ - Match(r, c, 0.1) for r, c in zip(roads, coords) - ] + matches: list[Match] = [Match(r, c, 0.1) for r, c in zip(roads, coords)] # ensure that the expected matches are different from the matches that will be passed in expected_matches = deepcopy(matches) @@ -223,20 +203,14 @@ def test_add_matches_multiple_stationary_points(self): m = expected_matches[indx] coord_ids = ["alpha", "beta", "gamma"] new_matches = [ - m.set_coordinate( - Coordinate(id, m.coordinate.geom, m.coordinate.crs) - ) + m.set_coordinate(Coordinate(id, m.coordinate.geom, m.coordinate.crs)) for id in coord_ids ] expected_matches[indx + 1 : indx + 1] = new_matches # StationaryIndex( i_index: List[int], c_index: List[Any]) - stationary_index = [ - StationaryIndex([indx, indx + 1], [None] + coord_ids) - ] + stationary_index = [StationaryIndex([indx, indx + 1], [None] + coord_ids)] - resulting_matches = add_matches_for_stationary_points( - matches, stationary_index - ) + resulting_matches = add_matches_for_stationary_points(matches, stationary_index) self.assertListEqual(expected_matches, resulting_matches) diff --git a/tests/test_lcss_drop_stationary_points.py b/tests/test_lcss_drop_stationary_points.py index 85f9c37..026ec07 100644 --- a/tests/test_lcss_drop_stationary_points.py +++ b/tests/test_lcss_drop_stationary_points.py @@ -46,9 +46,7 @@ def test_drop_stationary_points_matching_points_beginning(self): ) resulting_trace = drop_stationary_points(trace, stationary_index) - self.assertEqual( - len(expected_trace.coords), len(resulting_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulting_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulting_trace.coords ): @@ -90,9 +88,7 @@ def test_drop_stationary_points_matching_points_ending(self): ) resulting_trace = drop_stationary_points(trace, stationary_index) - self.assertEqual( - len(expected_trace.coords), len(resulting_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulting_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulting_trace.coords ): @@ -134,9 +130,7 @@ def test_drop_stationary_points_matching_points_middle(self): ) resulting_trace = drop_stationary_points(trace, stationary_index) - self.assertEqual( - len(expected_trace.coords), len(resulting_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulting_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulting_trace.coords ): @@ -208,9 +202,7 @@ def test_drop_stationary_points_matching_points_multiple(self): ) resulting_trace = drop_stationary_points(trace, stationary_index) - self.assertEqual( - len(expected_trace.coords), len(resulting_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulting_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulting_trace.coords ): @@ -257,9 +249,7 @@ def test_drop_stationary_points_matching_points_slightly_different(self): ) resulting_trace = drop_stationary_points(trace, stationary_index) - self.assertEqual( - len(expected_trace.coords), len(resulting_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulting_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulting_trace.coords ): @@ -307,9 +297,7 @@ def test_drop_stationary_points_mathing_points_just_under_limit(self): ) resulting_trace = drop_stationary_points(trace, stationary_index) - self.assertEqual( - len(expected_trace.coords), len(resulting_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulting_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulting_trace.coords ): @@ -362,9 +350,7 @@ def test_drop_stationary_points_mathing_points_just_over_limit(self): ) resulting_trace = drop_stationary_points(trace, stationary_index) - self.assertEqual( - len(expected_trace.coords), len(resulting_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulting_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulting_trace.coords ): diff --git a/tests/test_lcss_forward_merge.py b/tests/test_lcss_forward_merge.py index 5d41e99..1508610 100644 --- a/tests/test_lcss_forward_merge.py +++ b/tests/test_lcss_forward_merge.py @@ -232,15 +232,9 @@ def _merge_condition(ts: TrajectorySegment): ), ] - expected_segment_1 = TrajectorySegment( - expected_trace_1, expected_road_1 - ) - expected_segment_2 = TrajectorySegment( - expected_trace_2, expected_road_2 - ) - expected_segment_3 = TrajectorySegment( - expected_trace_3, expected_road_3 - ) + expected_segment_1 = TrajectorySegment(expected_trace_1, expected_road_1) + expected_segment_2 = TrajectorySegment(expected_trace_2, expected_road_2) + expected_segment_3 = TrajectorySegment(expected_trace_3, expected_road_3) expected_list = [ expected_segment_1, @@ -262,15 +256,11 @@ def _merge_condition(ts: TrajectorySegment): for expected_trace, resulted_trace in zip( expected_trajectory.trace, resulted_trajectory.trace ): - self.assertEqual( - len(expected_trace.coords), len(resulted_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulted_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulted_trace.coords ): self.assertEqual(expected_coord.geom, resulted_coord.geom) # confirm that the paths are the same - self.assertListEqual( - expected_trajectory.path, resulted_trajectory.path - ) + self.assertListEqual(expected_trajectory.path, resulted_trajectory.path) diff --git a/tests/test_lcss_merge.py b/tests/test_lcss_merge.py index a5fcd7c..12554a7 100644 --- a/tests/test_lcss_merge.py +++ b/tests/test_lcss_merge.py @@ -208,12 +208,8 @@ def _merge_condition(ts: TrajectorySegment): Road("second str", LineString()), ] - expected_segment_1 = TrajectorySegment( - expected_trace_1, expected_road_1 - ) - expected_segment_2 = TrajectorySegment( - expected_trace_2, expected_road_2 - ) + expected_segment_1 = TrajectorySegment(expected_trace_1, expected_road_1) + expected_segment_2 = TrajectorySegment(expected_trace_2, expected_road_2) expected_list = [ expected_segment_1, @@ -234,15 +230,11 @@ def _merge_condition(ts: TrajectorySegment): for expected_trace, resulted_trace in zip( expected_trajectory.trace, resulted_trajectory.trace ): - self.assertEqual( - len(expected_trace.coords), len(resulted_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulted_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulted_trace.coords ): self.assertEqual(expected_coord.geom, resulted_coord.geom) # confirm that the paths are the same - self.assertListEqual( - expected_trajectory.path, resulted_trajectory.path - ) + self.assertListEqual(expected_trajectory.path, resulted_trajectory.path) diff --git a/tests/test_lcss_reverse_merge.py b/tests/test_lcss_reverse_merge.py index 01543da..722f767 100644 --- a/tests/test_lcss_reverse_merge.py +++ b/tests/test_lcss_reverse_merge.py @@ -240,18 +240,10 @@ def _merge_condition(ts: TrajectorySegment): ), ] - expected_segment_1 = TrajectorySegment( - expected_trace_1, expected_road_1 - ) - expected_segment_2 = TrajectorySegment( - expected_trace_2, expected_road_2 - ) - expected_segment_3 = TrajectorySegment( - expected_trace_3, expected_road_3 - ) - expected_segment_4 = TrajectorySegment( - expected_trace_4, expected_road_4 - ) + expected_segment_1 = TrajectorySegment(expected_trace_1, expected_road_1) + expected_segment_2 = TrajectorySegment(expected_trace_2, expected_road_2) + expected_segment_3 = TrajectorySegment(expected_trace_3, expected_road_3) + expected_segment_4 = TrajectorySegment(expected_trace_4, expected_road_4) expected_list = [ expected_segment_1, @@ -274,15 +266,11 @@ def _merge_condition(ts: TrajectorySegment): for expected_trace, resulted_trace in zip( expected_trajectory.trace, resulted_trajectory.trace ): - self.assertEqual( - len(expected_trace.coords), len(resulted_trace.coords) - ) + self.assertEqual(len(expected_trace.coords), len(resulted_trace.coords)) for expected_coord, resulted_coord in zip( expected_trace.coords, resulted_trace.coords ): self.assertEqual(expected_coord.geom, resulted_coord.geom) # confirm that the paths are the same - self.assertListEqual( - expected_trajectory.path, resulted_trajectory.path - ) + self.assertListEqual(expected_trajectory.path, resulted_trajectory.path) diff --git a/tests/test_lcss_same_trajectory_scheme.py b/tests/test_lcss_same_trajectory_scheme.py index aca054c..1b08659 100644 --- a/tests/test_lcss_same_trajectory_scheme.py +++ b/tests/test_lcss_same_trajectory_scheme.py @@ -16,9 +16,7 @@ def test_same_trajectory_scheme_equal(self): """ # setup inputted trajectory segments trace_1_a = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_a = Trace.from_dataframe( pd.DataFrame( @@ -38,9 +36,7 @@ def test_same_trajectory_scheme_equal(self): list_a = [segment_1_a, segment_2_a] trace_1_b = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_b = Trace.from_dataframe( pd.DataFrame( @@ -67,9 +63,7 @@ def test_same_trajectory_scheme_not_equal_paths(self): """ # setup inputted trajectory segments trace_1_a = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_a = Trace.from_dataframe( pd.DataFrame( @@ -89,9 +83,7 @@ def test_same_trajectory_scheme_not_equal_paths(self): list_a = [segment_1_a, segment_2_a] trace_1_b = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_b = Trace.from_dataframe( pd.DataFrame( @@ -118,9 +110,7 @@ def test_same_trajectory_scheme_not_equal_coords(self): """ # setup inputted trajectory segments trace_1_a = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_a = Trace.from_dataframe( pd.DataFrame( @@ -140,9 +130,7 @@ def test_same_trajectory_scheme_not_equal_coords(self): list_a = [segment_1_a, segment_2_a] trace_1_b = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_b = Trace.from_dataframe( pd.DataFrame( @@ -169,9 +157,7 @@ def test_same_trajectory_scheme_not_equal_coords_nor_paths(self): """ # setup inputted trajectory segments trace_1_a = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_a = Trace.from_dataframe( pd.DataFrame( @@ -191,9 +177,7 @@ def test_same_trajectory_scheme_not_equal_coords_nor_paths(self): list_a = [segment_1_a, segment_2_a] trace_1_b = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_b = Trace.from_dataframe( pd.DataFrame( @@ -220,9 +204,7 @@ def test_same_trajectory_scheme_same_trace_equal(self): """ # setup inputted trajectory segments trace_1_a = Trace.from_dataframe( - pd.DataFrame( - data={"latitude": [39.655193], "longitude": [-104.919294]} - ) + pd.DataFrame(data={"latitude": [39.655193], "longitude": [-104.919294]}) ) trace_2_a = Trace.from_dataframe( pd.DataFrame( diff --git a/tests/test_osm.py b/tests/test_osm.py index a5cd80f..f79406b 100644 --- a/tests/test_osm.py +++ b/tests/test_osm.py @@ -12,15 +12,15 @@ class TestOSMap(TestCase): def test_osm_networkx_graph_drive(self): + # This is just a raw osmnx graph pull using the script: + # tests/test_assets/pull_osm_map.py gfile = get_test_dir() / "test_assets" / "osmnx_drive_graph.graphml" osmnx_graph = ox.load_graphml(gfile) cleaned_graph = parse_osmnx_graph(osmnx_graph, NetworkType.DRIVE) - self.assertEqual( - cleaned_graph.graph["network_type"], NetworkType.DRIVE.value - ) + self.assertEqual(cleaned_graph.graph["network_type"], NetworkType.DRIVE.value) self.assertTrue( nx.is_strongly_connected(cleaned_graph), @@ -33,20 +33,27 @@ def test_osm_networkx_graph_drive(self): for _, _, d in cleaned_graph.edges(data=True) ] ) + self.assertTrue(has_geom, "All edges should have geometry") - # Make sure the graph contains this road segment - # TODO: this might be a bit unstable since OSM node ids might change - e23_ave_node1 = cleaned_graph.nodes[1321042414] - e23_ave_node2 = cleaned_graph.nodes[3323569423] - self.assertAlmostEqual(e23_ave_node1["lat"], 39.761877, 5) - self.assertAlmostEqual(e23_ave_node1["lon"], -104.9775733, 5) - self.assertAlmostEqual(e23_ave_node2["lat"], 39.7602886, 5) - self.assertAlmostEqual(e23_ave_node2["lon"], -104.9779113, 5) - self.assertAlmostEqual( - cleaned_graph.get_edge_data(1321042414, 3323569423, 0)[ - "kilometers" - ], - 0.246787, - 5, + # check to make sure we don't have any extra data stored in the edges + expected_edge_keys = ["geometry", "travel_time", "kilometers"] + expected_node_keys = [] + + edges_have_right_keys = all( + [ + set(d.keys()) == set(expected_edge_keys) + for _, _, d in cleaned_graph.edges(data=True) + ] + ) + + self.assertTrue(edges_have_right_keys, "Edges have unexpected keys") + + nodes_have_right_keys = all( + [ + set(d.keys()) == set(expected_node_keys) + for _, d in cleaned_graph.nodes(data=True) + ] ) + + self.assertTrue(nodes_have_right_keys, "Nodes have unexpected keys") diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 390d449..0000000 --- a/tox.ini +++ /dev/null @@ -1,4 +0,0 @@ -[flake8] -ignore = E501,E203 -max-line-length = 79 -exclude = tests/* docs/* \ No newline at end of file