├── .gitignore ├── LICENSE.txt ├── MANIFEST.in ├── README.md ├── apls ├── __init__.py ├── apls.py ├── apls_plots.py ├── apls_utils.py ├── create_spacenet_masks.py ├── data │ ├── __init__.py │ ├── _sample_outputs │ │ ├── all_pairs_paths_diffs_gt_to_prop.png │ │ ├── all_pairs_paths_diffs_hist_gt_to_prop.png │ │ ├── all_pairs_paths_diffs_hist_prop_to_gt.png │ │ ├── all_pairs_paths_diffs_prop_to_gt.png │ │ ├── gt_graph.png │ │ ├── gt_graph_midpoints.png │ │ ├── gt_graph_plus_prop_buff.png │ │ ├── gt_graph_prop_control_points.png │ │ ├── gt_without_geom.png │ │ ├── output__max_snap=4m_hole=4m.txt │ │ ├── overlaid.png │ │ ├── prop_cp_without_geom.png │ │ ├── prop_graph.png │ │ ├── prop_graph_midpoints.png │ │ ├── prop_graph_midpoints_gt_control_points.png │ │ ├── prop_graph_plus_gt_buff.png │ │ ├── prop_without_geom.png │ │ ├── single_source_route_ground_truth.png │ │ └── single_source_route_prop.png │ ├── gt_json_prop_json │ │ └── AOI_2_Vegas_Train │ │ │ ├── osm │ │ │ ├── AOI_2_Vegas_img99.geojson │ │ │ ├── AOI_2_Vegas_img990.geojson │ │ │ ├── AOI_2_Vegas_img991.geojson │ │ │ ├── AOI_2_Vegas_img995.geojson │ │ │ ├── AOI_2_Vegas_img997.geojson │ │ │ ├── AOI_2_Vegas_img998.geojson │ │ │ └── AOI_2_Vegas_img999.geojson │ │ │ └── spacenetroads │ │ │ ├── AOI_2_Vegas_img99.geojson │ │ │ ├── AOI_2_Vegas_img990.geojson │ │ │ ├── AOI_2_Vegas_img991.geojson │ │ │ ├── AOI_2_Vegas_img995.geojson │ │ │ ├── AOI_2_Vegas_img997.geojson │ │ │ ├── AOI_2_Vegas_img998.geojson │ │ │ └── AOI_2_Vegas_img999.geojson │ ├── gt_json_prop_pkl │ │ ├── ground_truth_randomized │ │ │ └── AOI_2_Vegas_img0.geojson │ │ └── proposal │ │ │ └── RGB-PanSharpen_AOI_2_Vegas_img0.gpickle │ ├── gt_json_prop_wkt │ │ ├── ground_truth_randomized │ │ │ └── AOI_2_Vegas_img0.geojson │ │ └── proposal │ │ │ └── sn3_sample_submission_albu.csv │ ├── gt_pkl_prop_pkl │ │ ├── ground_truth_randomized │ │ │ └── RGB-PanSharpen_AOI_2_Vegas_img0.gpickle │ │ └── proposal │ │ │ └── RGB-PanSharpen_AOI_2_Vegas_img0.gpickle │ └── images │ │ └── RGB-PanSharpen_AOI_2_Vegas_img0.tif ├── graphTools.py ├── gt_graph_to_wkt.py ├── osmnx_funcs.py ├── road_speed.py ├── sp_metric.py ├── topo_metric.py └── wkt_to_G.py ├── environment.yml └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | # APLS specific 2 | _backup/ 3 | _extras/ 4 | 5 | 6 | # Byte-compiled / optimized / DLL files 7 | __pycache__/ 8 | *.py[cod] 9 | *$py.class 10 | 11 | # MacOS stuff: 12 | .DS_Store 13 | 14 | # C extensions 15 | *.so 16 | 17 | # Distribution / packaging 18 | .Python 19 | build/ 20 | develop-eggs/ 21 | dist/ 22 | downloads/ 23 | eggs/ 24 | .eggs/ 25 | lib/ 26 | lib64/ 27 | parts/ 28 | sdist/ 29 | var/ 30 | wheels/ 31 | pip-wheel-metadata/ 32 | share/python-wheels/ 33 | *.egg-info/ 34 | .installed.cfg 35 | *.egg 36 | MANIFEST 37 | 38 | # PyInstaller 39 | # Usually these files are written by a python script from a template 40 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 41 | *.manifest 42 | *.spec 43 | 44 | # Installer logs 45 | pip-log.txt 46 | pip-delete-this-directory.txt 47 | 48 | # Unit test / coverage reports 49 | htmlcov/ 50 | .tox/ 51 | .nox/ 52 | .coverage 53 | .coverage.* 54 | .cache 55 | nosetests.xml 56 | coverage.xml 57 | *.cover 58 | .hypothesis/ 59 | .pytest_cache/ 60 | 61 | # Translations 62 | *.mo 63 | *.pot 64 | 65 | # Django stuff: 66 | *.log 67 | local_settings.py 68 | db.sqlite3 69 | 70 | # Flask stuff: 71 | instance/ 72 | .webassets-cache 73 | 74 | # Scrapy stuff: 75 | .scrapy 76 | 77 | # Sphinx documentation 78 | docs/_build/ 79 | 80 | # PyBuilder 81 | target/ 82 | 83 | # Jupyter Notebook 84 | .ipynb_checkpoints 85 | 86 | # IPython 87 | profile_default/ 88 | ipython_config.py 89 | 90 | # pyenv 91 | .python-version 92 | 93 | # celery beat schedule file 94 | celerybeat-schedule 95 | 96 | # SageMath parsed files 97 | *.sage.py 98 | 99 | # Environments 100 | .env 101 | .venv 102 | env/ 103 | venv/ 104 | ENV/ 105 | env.bak/ 106 | venv.bak/ 107 | 108 | # Spyder project settings 109 | .spyderproject 110 | .spyproject 111 | 112 | # Rope project settings 113 | .ropeproject 114 | 115 | # mkdocs documentation 116 | /site 117 | 118 | # mypy 119 | .mypy_cache/ 120 | .dmypy.json 121 | dmypy.json 122 | 123 | # Pyre type checker 124 | .pyre/ 125 | 126 | # Project-specific 127 | sandbox.ipynb 128 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2019 CosmiQ Works, an IQT Lab 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.txt 2 | include *.md 3 | recursive-include sample_data * 4 | include sample_data/* 5 | include sample_data/*.geojson 6 | include sample_data/*.csv 7 | include sample_data/*.png 8 | include sample_data/*.gpickle -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

APLS Metric

2 |

3 | CosmiQ Works 4 |
5 |
6 |

7 | 8 | - [Installation Instructions](#installation-instructions) 9 | - [Dependencies](#dependencies) 10 | - [License](#license) 11 | - [Useage](#usage) 12 | 13 | ____ 14 | 15 | This package evaluates the Average Path Length Similarity (APLS) metric to measure the difference between ground truth and proposal graphs. The metric sums the differences in optimal path lengths between all nodes in the ground truth graph G and the proposal graph G’. This metric was used to score the SpaceNet 3 challenge. For further details, see [Blog1](https://medium.com/the-downlinq/spacenet-road-detection-and-routing-challenge-part-i-d4f59d55bfce) and [Blog2](https://medium.com/the-downlinq/spacenet-road-detection-and-routing-challenge-part-ii-apls-implementation-92acd86f4094). 16 | 17 | ____ 18 | 19 | ## Installation Instructions 20 | 21 | #### pip 22 | 23 | ``` 24 | pip install apls 25 | ``` 26 | 27 | ____ 28 | 29 | ## Dependencies 30 | All dependencies can be found in [environment.yml](./environment.yml) 31 | 32 | ____ 33 | 34 | ## License 35 | See [LICENSE](./LICENSE.txt). 36 | 37 | ____ 38 | 39 | ## Usage 40 | 41 | apls.py compares ground truth and proposal graphs. The actual metric takes up a relatively small portion of this code (functions: _single\_path\_metric_, _path\_sim\_metric__, and _compute\_metric_). Much of the code (e.g. _cut\_linestring_, _get\_closest_edge_, _insert\_point_into\_G_, _insert\_control\_points_, _create\_graph\_midpoints_) is concerned with injecting nodes into graphs. We inject nodes (i.e. control points) into the graph at a predetermined distance along edges, and at the location nearest proposal nodes. Injecting nodes is essential to properly compare graphs, though it unfortunately requires quite a bit of code. graphTools.py parses geojson labels into networkx graphs for analysis. Examples for running apls.py are shown below with the attached sample data 42 | 43 | # for further details: python apls.py --help 44 | 45 | # 1. Compare a ground truth SpaceNet geojson with a submission csv 46 | python apls.py --test_method=gt_json_prop_wkt --output_name=gt_json_prop_wkt \ 47 | --truth_dir=data/gt_json_prop_wkt/ground_truth_randomized \ 48 | --wkt_file=data/gt_json_prop_wkt/proposal/sn3_sample_submission_albu.csv \ 49 | --im_dir=data/images 50 | 51 | # 2. Compare a ground truth geojson with a proposal json 52 | python apls.py --test_method=gt_json_prop_json --output_name=gt_json_prop_json \ 53 | --truth_dir=data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads \ 54 | --prop_dir=data/gt_json_prop_json/AOI_2_Vegas_Train/osm 55 | 56 | # 3. Compare a ground truth geojson with a pickled proposal graph 57 | python apls.py --test_method=gt_json_prop_pkl --output_name=gt_json_prop_pkl \ 58 | --truth_dir=data/gt_json_prop_pkl/ground_truth_randomized \ 59 | --prop_dir=data/gt_json_prop_pkl/proposal \ 60 | --im_dir=data/images 61 | 62 | # 4. Compare a pickled ground truth graph with a pickled proposal graph 63 | python apls.py --test_method=gt_pkl_prop_pkl --output_name=gt_pkl_prop_pkl \ 64 | --truth_dir=data/gt_pkl_prop_pkl/ground_truth_randomized \ 65 | --prop_dir=data/gt_pkl_prop_pkl/proposal \ 66 | --im_dir=data/images 67 | 68 | 69 | ### Outputs 70 | 71 | Running apls.py yields a number of plots in the _outputs_ directory, along with the APLS score 72 | 73 | ![Alt text](/apls/data/_sample_outputs/single_source_route_ground_truth.png?raw=true "Figure 1") 74 | 75 | ![Alt text](/apls/data/_sample_outputs/all_pairs_paths_diffs_gt_to_prop.png?raw=true "Figure 2") 76 | 77 | ____ 78 | 79 | ### SpaceNet Training Masks 80 | 81 | Run the _create\_spacenet\_masks.py_ script to create training masks with spacenet geojsons 82 | -------------------------------------------------------------------------------- /apls/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/__init__.py -------------------------------------------------------------------------------- /apls/apls_plots.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Mon May 6 15:34:07 2019 5 | 6 | @author: avanetten 7 | """ 8 | 9 | import numpy as np 10 | import matplotlib 11 | import matplotlib.pyplot as plt 12 | import cv2 13 | import shapely 14 | from shapely.geometry import MultiLineString 15 | from matplotlib.patches import PathPatch 16 | from matplotlib import collections as mpl_collections 17 | import matplotlib.path 18 | import skimage.io 19 | 20 | 21 | ############################################################################### 22 | def plot_metric(C, diffs, routes_str=[], 23 | figsize=(10, 5), scatter_png='', hist_png='', 24 | scatter_alpha=0.3, scatter_size=2, scatter_cmap='jet', 25 | dpi=300): 26 | ''' Plot output of cost metric in both scatterplot and histogram format''' 27 | 28 | # plot diffs 29 | title = 'Path Length Similarity: ' + str(np.round(C, 2)) 30 | fig, (ax0) = plt.subplots(1, 1, figsize=(1*figsize[0], figsize[1])) 31 | # ax0.plot(diffs) 32 | ax0.scatter(list(range(len(diffs))), diffs, s=scatter_size, c=diffs, 33 | alpha=scatter_alpha, 34 | cmap=scatter_cmap) 35 | if len(routes_str) > 0: 36 | xticklabel_pad = 0.1 37 | ax0.set_xticks(list(range(len(diffs)))) 38 | ax0.set_xticklabels(routes_str, rotation=50, fontsize=4) 39 | ax0.tick_params(axis='x', which='major', pad=xticklabel_pad) 40 | 41 | ax0.set_ylabel('Length Diff (Normalized)') 42 | ax0.set_xlabel('Path ID') 43 | ax0.set_title(title) 44 | # plt.tight_layout() 45 | if scatter_png: 46 | plt.savefig(scatter_png, dpi=dpi) 47 | 48 | # plot and plot diffs histo 49 | bins = np.linspace(0, 1, 30) 50 | bin_centers = np.mean(list(zip(bins, bins[1:])), axis=1) 51 | # digitized = np.digitize(diffs, bins) 52 | # bin_means = [np.array(diffs)[digitized == i].mean() for i in range(1, len(bins))] 53 | hist, bin_edges = np.histogram(diffs, bins=bins) 54 | fig, ax1 = plt.subplots(nrows=1, ncols=1, figsize=figsize) 55 | # ax1.plot(bins[1:],hist, type='bar') 56 | # ax1.bar(bin_centers, hist, width=bin_centers[1]-bin_centers[0] ) 57 | ax1.bar(bin_centers, 1.*hist/len(diffs), 58 | width=bin_centers[1]-bin_centers[0]) 59 | ax1.set_xlim([0, 1]) 60 | # ax1.set_ylabel('Num Routes') 61 | ax1.set_ylabel('Frac Num Routes') 62 | ax1.set_xlabel('Length Diff (Normalized)') 63 | ax1.set_title('Length Diff Histogram - Score: ' + str(np.round(C, 2))) 64 | ax1.grid(True) 65 | # plt.tight_layout() 66 | if hist_png: 67 | plt.savefig(hist_png, dpi=dpi) 68 | 69 | return 70 | 71 | 72 | ############################################################################### 73 | ############################################################################### 74 | # For plotting the buffer... 75 | # https://sgillies.net/2010/04/06/painting-punctured-polygons-with-matplotlib.html 76 | def _ring_coding(ob): 77 | # The codes will be all "LINETO" commands, except for "MOVETO"s at the 78 | # beginning of each subpath 79 | n = len(ob.coords) 80 | codes = np.ones(n, dtype=matplotlib.path.Path.code_type) * \ 81 | matplotlib.path.Path.LINETO 82 | codes[0] = matplotlib.path.Path.MOVETO 83 | return codes 84 | 85 | 86 | ############################################################################### 87 | # https://sgillies.net/2010/04/06/painting-punctured-polygons-with-matplotlib.html 88 | def _pathify(polygon): 89 | # Convert coordinates to path vertices. Objects produced by Shapely's 90 | # analytic methods have the proper coordinate order, no need to sort. 91 | vertices = np.concatenate( 92 | [np.asarray(polygon.exterior)] 93 | + [np.asarray(r) for r in polygon.interiors]) 94 | codes = np.concatenate( 95 | [_ring_coding(polygon.exterior)] 96 | + [_ring_coding(r) for r in polygon.interiors]) 97 | return matplotlib.path.Path(vertices, codes) 98 | ############################################################################### 99 | 100 | 101 | ############################################################################### 102 | def _plot_buff(G_, ax, buff=20, color='yellow', alpha=0.3, 103 | title='Proposal Snapping', 104 | title_fontsize=8, outfile='', 105 | dpi=200, 106 | verbose=False): 107 | '''plot buffer around graph using shapely buffer''' 108 | 109 | # get lines 110 | line_list = [] 111 | for u, v, key, data in G_.edges(keys=True, data=True): 112 | if verbose: 113 | print(("u, v, key:", u, v, key)) 114 | print((" data:", data)) 115 | geom = data['geometry'] 116 | line_list.append(geom) 117 | 118 | mls = MultiLineString(line_list) 119 | mls_buff = mls.buffer(buff) 120 | 121 | if verbose: 122 | print(("type(mls_buff) == MultiPolygon:", type( 123 | mls_buff) == shapely.geometry.MultiPolygon)) 124 | 125 | if type(mls_buff) == shapely.geometry.Polygon: 126 | mls_buff_list = [mls_buff] 127 | else: 128 | mls_buff_list = mls_buff 129 | 130 | for poly in mls_buff_list: 131 | x, y = poly.exterior.xy 132 | coords = np.stack((x, y), axis=1) 133 | interiors = poly.interiors 134 | # coords_inner = np.stack((x_inner,y_inner), axis=1) 135 | 136 | if len(interiors) == 0: 137 | # ax.plot(x, y, color='#6699cc', alpha=0.0, linewidth=3, 138 | # solid_capstyle='round', zorder=2) 139 | ax.add_patch(matplotlib.patches.Polygon( 140 | coords, alpha=alpha, color=color)) 141 | else: 142 | path = _pathify(poly) 143 | patch = PathPatch(path, facecolor=color, 144 | edgecolor=color, alpha=alpha) 145 | ax.add_patch(patch) 146 | 147 | ax.axis('off') 148 | if len(title) > 0: 149 | ax.set_title(title, fontsize=title_fontsize) 150 | if outfile: 151 | plt.savefig(outfile, dpi=dpi) 152 | return ax 153 | 154 | 155 | ############################################################################### 156 | def _plot_node_ids(G, ax, node_list=[], alpha=0.8, fontsize=8, 157 | plot_node=False, node_size=15, 158 | node_color='orange'): 159 | ''' 160 | for label, x, y in zip(labels, data[:, 0], data[:, 1]): 161 | plt.annotate( 162 | label, 163 | xy=(x, y), xytext=(-20, 20), 164 | textcoords='offset points', ha='right', va='bottom', 165 | bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5), 166 | arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0')) 167 | ''' 168 | Gnodes = set(G.nodes()) 169 | 170 | if len(node_list) == 0: 171 | nodes = G.nodes() 172 | else: 173 | nodes = node_list 174 | for n in nodes: # G.nodes(): 175 | if n not in Gnodes: 176 | continue 177 | x, y = G.node[n]['x'], G.node[n]['y'] 178 | if plot_node: 179 | ax.scatter(x, y, s=node_size, color=node_color) 180 | ax.annotate(str(n), xy=(x, y), alpha=alpha, fontsize=fontsize) 181 | 182 | return ax 183 | 184 | 185 | ############################################################################### 186 | def plot_graph_on_im(G_, im_test_file, figsize=(8, 8), show_endnodes=False, 187 | width_key='speed_m/s', width_mult=0.125, 188 | color='lime', title='', figname='', 189 | default_node_size=15, 190 | max_speeds_per_line=12, dpi=300, plt_save_quality=75, 191 | ax=None, verbose=False): 192 | ''' 193 | Overlay graph on image, 194 | if width_key == int, use a constant width''' 195 | 196 | try: 197 | im_cv2 = cv2.imread(im_test_file, 1) 198 | img_mpl = cv2.cvtColor(im_cv2, cv2.COLOR_BGR2RGB) 199 | except: 200 | img_sk = skimage.io.imread(im_test_file) 201 | # make sure image is h,w,channels (assume less than 20 channels) 202 | if (len(img_sk.shape) == 3) and (img_sk.shape[0] < 20): 203 | img_mpl = np.moveaxis(img_sk, 0, -1) 204 | else: 205 | img_mpl = img_sk 206 | h, w = img_mpl.shape[:2] 207 | 208 | node_x, node_y, lines, widths, title_vals = [], [], [], [], [] 209 | # get edge data 210 | for i, (u, v, edge_data) in enumerate(G_.edges(data=True)): 211 | # if type(edge_data['geometry_pix']) 212 | if type(edge_data['geometry_pix']) == str: 213 | coords = list(shapely.wkt.loads(edge_data['geometry_pix']).coords) 214 | else: 215 | coords = list(edge_data['geometry_pix'].coords) 216 | if verbose: # (i % 100) == 0: 217 | print("\n", i, u, v, edge_data) 218 | print("edge_data:", edge_data) 219 | print(" coords:", coords) 220 | lines.append(coords) 221 | node_x.append(coords[0][0]) 222 | node_x.append(coords[-1][0]) 223 | node_y.append(coords[0][1]) 224 | node_y.append(coords[-1][1]) 225 | if type(width_key) == str: 226 | if verbose: 227 | print("edge_data[width_key]:", edge_data[width_key]) 228 | width = int(np.rint(edge_data[width_key] * width_mult)) 229 | title_vals.append(int(np.rint(edge_data[width_key]))) 230 | else: 231 | width = width_key 232 | widths.append(width) 233 | 234 | if not ax: 235 | fig, ax = plt.subplots(1, 1, figsize=figsize) 236 | 237 | ax.imshow(img_mpl) 238 | # plot nodes? 239 | if show_endnodes: 240 | ax.scatter(node_x, node_y, color=color, s=default_node_size, alpha=0.5) 241 | # plot segments 242 | # print (lines) 243 | lc = mpl_collections.LineCollection(lines, colors=color, 244 | linewidths=widths, alpha=0.4, 245 | zorder=2) 246 | ax.add_collection(lc) 247 | ax.axis('off') 248 | 249 | # title 250 | if len(title_vals) > 0: 251 | if verbose: 252 | print("title_vals:", title_vals) 253 | title_strs = np.sort(np.unique(title_vals)).astype(str) 254 | # split title str if it's too long 255 | if len(title_strs) > max_speeds_per_line: 256 | # construct new title str 257 | n, b = max_speeds_per_line, title_strs 258 | title_strs = np.insert(b, range(n, len(b), n), "\n") 259 | # title_strs = '\n'.join(s[i:i+ds] for i in range(0, len(s), ds)) 260 | if verbose: 261 | print("title_strs:", title_strs) 262 | title = title + '\n' \ 263 | + width_key + " = " + " ".join(title_strs) 264 | if title: 265 | # plt.suptitle(title) 266 | ax.set_title(title) 267 | 268 | plt.tight_layout() 269 | print("title:", title) 270 | if title: 271 | plt.subplots_adjust(top=0.96) 272 | # plt.subplots_adjust(left=1, bottom=1, right=1, top=1, wspace=5, hspace=5) 273 | 274 | # set dpi to approximate native resolution 275 | if verbose: 276 | print("img_mpl.shape:", img_mpl.shape) 277 | desired_dpi = int(np.max(img_mpl.shape) / np.max(figsize)) 278 | if verbose: 279 | print("desired dpi:", desired_dpi) 280 | # max out dpi at 3500 281 | dpi = int(np.min([3500, desired_dpi])) 282 | if verbose: 283 | print("plot dpi:", dpi) 284 | 285 | if figname: 286 | plt.savefig(figname, dpi=dpi, quality=plt_save_quality) 287 | 288 | return ax 289 | 290 | 291 | ############################################################################### 292 | def _plot_gt_prop_graphs(G_gt, G_prop, im_test_file, 293 | figsize=(16, 8), show_endnodes=False, 294 | width_key='Inferred Speed (mph)', width_mult=0.125, 295 | gt_color='cyan', prop_color='lime', 296 | default_node_size=15, 297 | title='', figname='', adjust=True, verbose=False): 298 | '''Plot the ground truth, and prediction mask Overlay graph on image, 299 | if width_key == int, use a constant width''' 300 | 301 | fig, (ax0, ax1) = plt.subplots(1, 2, figsize=figsize) 302 | 303 | print("Plotting ground truth...") 304 | _ = plot_graph_on_im(G_gt, im_test_file, figsize=figsize, 305 | show_endnodes=show_endnodes, 306 | width_key=width_key, width_mult=width_mult, 307 | color=gt_color, 308 | default_node_size=default_node_size, 309 | title='Ground Truth: ' + title, 310 | figname='', 311 | ax=ax0, verbose=verbose) 312 | print("Plotting proposal...") 313 | _ = plot_graph_on_im(G_prop, im_test_file, figsize=figsize, 314 | show_endnodes=show_endnodes, 315 | width_key=width_key, width_mult=width_mult, 316 | color=prop_color, 317 | default_node_size=default_node_size, 318 | title='Proposal: ' + title, figname='', 319 | ax=ax1, verbose=verbose) 320 | 321 | # if title: 322 | # plt.suptitle(title) 323 | # ax1.set_title(im_test_root) 324 | plt.tight_layout() 325 | if adjust: 326 | plt.subplots_adjust(top=0.96) 327 | # plt.subplots_adjust(left=1, bottom=1, right=1, top=1, wspace=5, hspace=5) 328 | 329 | if figname: 330 | plt.savefig(figname, dpi=300) 331 | 332 | return fig 333 | 334 | 335 | ############################################################################### 336 | def plot_node_ids(G, ax, node_list=[], alpha=0.8, fontsize=8, 337 | plot_node=False, node_size=15, 338 | node_color='orange'): 339 | ''' 340 | for label, x, y in zip(labels, data[:, 0], data[:, 1]): 341 | plt.annotate( 342 | label, 343 | xy=(x, y), xytext=(-20, 20), 344 | textcoords='offset points', ha='right', va='bottom', 345 | bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5), 346 | arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0')) 347 | ''' 348 | Gnodes = set(G.nodes()) 349 | 350 | if len(node_list) == 0: 351 | nodes = G.nodes() 352 | else: 353 | nodes = node_list 354 | for n in nodes: 355 | if n not in Gnodes: 356 | continue 357 | x, y = G.node[n]['x'], G.node[n]['y'] 358 | if plot_node: 359 | ax.scatter(x, y, s=node_size, color=node_color) 360 | ax.annotate(str(n), xy=(x, y), alpha=alpha, fontsize=fontsize) 361 | 362 | return ax 363 | -------------------------------------------------------------------------------- /apls/create_spacenet_masks.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Tue Dec 5 16:56:31 2017 5 | 6 | @author: avanetten 7 | """ 8 | 9 | 10 | import os 11 | import sys 12 | import time 13 | import argparse 14 | import pandas as pd 15 | 16 | # add apls path and import apls_tools 17 | path_apls_src = os.path.dirname(os.path.realpath(__file__)) 18 | sys.path.append(path_apls_src) 19 | import apls_utils 20 | 21 | 22 | ############################################################################### 23 | def create_masks(path_data, buffer_meters=2, n_bands=3, 24 | burnValue=150, make_plots=True, overwrite_ims=False, 25 | output_df_file='', 26 | header=['name', 'im_file', 'im_vis_file', 'mask_file', 27 | 'mask_vis_file']): 28 | ''' 29 | Create masks from files in path_data. 30 | Write 8bit images and masks to file. 31 | Return a dataframe of file locations with the following columns: 32 | ['name', 'im_file', 'im_vis_file', 'mask_file', 'mask_vis_file'] 33 | We record locations of im_vis_file and mask_vis_file in case im_file 34 | or mask_file is not 8-bit or has n_channels != [1,3] 35 | if using 8band data, the RGB-PanSharpen_8bit should already exist, so 36 | 3band should be run prior to 8band 37 | ''' 38 | 39 | t0 = time.time() 40 | # set paths 41 | path_labels = os.path.join(path_data, 'geojson/spacenetroads') 42 | # output directories 43 | path_masks = os.path.join(path_data, 'masks_' + str(buffer_meters) + 'm') 44 | path_masks_plot = os.path.join( 45 | path_data, 'masks_' + str(buffer_meters) + 'm_plots') 46 | # image directories 47 | path_images_vis = os.path.join(path_data, 'RGB-PanSharpen_8bit') 48 | if n_bands == 3: 49 | path_images_raw = os.path.join(path_data, 'RGB-PanSharpen') 50 | path_images_8bit = os.path.join(path_data, 'RGB-PanSharpen_8bit') 51 | else: 52 | path_images_raw = os.path.join(path_data, 'MUL-PanSharpen') 53 | path_images_8bit = os.path.join(path_data, 'MUL-PanSharpen_8bit') 54 | if not os.path.exists(path_images_vis): 55 | print("Need to run 3band prior to 8band!") 56 | return 57 | 58 | # create directories 59 | for d in [path_images_8bit, path_masks, path_masks_plot]: 60 | if not os.path.exists(d): 61 | os.mkdir(d) 62 | 63 | # iterate through images, convert to 8-bit, and create masks 64 | outfile_list = [] 65 | im_files = os.listdir(path_images_raw) 66 | nfiles = len(im_files) 67 | for i, im_name in enumerate(im_files): 68 | if not im_name.endswith('.tif'): 69 | continue 70 | 71 | # define files 72 | name_root = 'AOI' + im_name.split('AOI')[1].split('.')[0] 73 | im_file_raw = os.path.join(path_images_raw, im_name) 74 | im_file_out = os.path.join(path_images_8bit, im_name) 75 | im_file_out_vis = im_file_out.replace('MUL', 'RGB') 76 | # get visible file (if using 8band imagery we want the 3band file 77 | # for plotting purposes) 78 | # if n_bands == 3: 79 | # im_file_out_vis = im_file_out 80 | # else: 81 | # name_vis = im_name.replace('MUL', 'RGB') 82 | # im_file_out_vis = os.path.join(path_images_vis, name_vis) 83 | 84 | # convert to 8bit, if desired 85 | if not os.path.exists(im_file_out) or overwrite_ims: 86 | apls_utils.convert_to_8Bit(im_file_raw, im_file_out, 87 | outputPixType='Byte', 88 | outputFormat='GTiff', 89 | rescale_type='rescale', 90 | percentiles=[2, 98]) 91 | 92 | # determine output files 93 | # label_file = os.path.join(path_labels, 'spacenetroads_AOI_2_Vegas_' \ 94 | # + name_root + '.geojson') 95 | label_file = os.path.join(path_labels, 'spacenetroads_' + name_root 96 | + '.geojson') 97 | label_file_tot = os.path.join(path_labels, label_file) 98 | mask_file = os.path.join(path_masks, name_root + '.png') 99 | if make_plots: 100 | plot_file = os.path.join(path_masks_plot, name_root + '.png') 101 | else: 102 | plot_file = '' 103 | 104 | print("\n", i+1, "/", nfiles) 105 | print(" im_name:", im_name) 106 | print(" name_root:", name_root) 107 | print(" im_file_out:", im_file_out) 108 | print(" mask_file:", mask_file) 109 | print(" output_plot_file:", plot_file) 110 | 111 | # create masks 112 | if not os.path.exists(mask_file) or overwrite_ims: 113 | mask, gdf_buffer = apls_utils.get_road_buffer(label_file_tot, 114 | im_file_out_vis, 115 | mask_file, 116 | buffer_meters=buffer_meters, 117 | burnValue=burnValue, 118 | bufferRoundness=6, 119 | plot_file=plot_file, 120 | figsize=(6, 6), 121 | fontsize=8, 122 | dpi=500, 123 | show_plot=False, 124 | verbose=False) 125 | 126 | # resize in ingest so we don't have to save the very large arrays 127 | outfile_list.append([im_name, im_file_out, im_file_out_vis, 128 | mask_file, mask_file]) 129 | 130 | # make dataframe and save 131 | df = pd.DataFrame(outfile_list, columns=header) 132 | if len(output_df_file) > 0: 133 | df.to_csv(output_df_file, index=False) 134 | print("\ndf.ix[0]:", df.ix[0]) 135 | print("\nTotal data length:", len(df)) 136 | t4 = time.time() 137 | print("Time to run create_masks():", t4 - t0, "seconds") 138 | return df 139 | 140 | 141 | ############################################################################### 142 | def main(): 143 | 144 | parser = argparse.ArgumentParser() 145 | parser.add_argument('--path_data', default='/spacenet_data/sample_data/AOI_2_Vegas_Train', type=str, 146 | help='Folder containing imagery and geojson labels') 147 | parser.add_argument('--output_df_path', default='/spacenet_data/sample_data', type=str, 148 | help='csv of dataframe containing image and mask locations') 149 | parser.add_argument('--buffer_meters', default=2, type=float, 150 | help='Buffer distance (meters) around graph') 151 | parser.add_argument('--n_bands', default=3, type=int, 152 | help='Number of bands to use [3,8]') 153 | parser.add_argument('--burnValue', default=150, type=int, 154 | help='Value of road pixels (for plotting)') 155 | parser.add_argument('--make_plots', default=1, type=int, 156 | help='Switch to create gridded plots of geojson, image, and mask') 157 | parser.add_argument('--overwrite_ims', default=1, type=int, 158 | help='Switch to overwrite 8bit images and masks') 159 | 160 | args = parser.parse_args() 161 | 162 | data_root = 'AOI' + args.path_data.split('AOI')[-1].replace('/', '_') 163 | output_df_file = os.path.join(args.output_df_path, data_root + '_' 164 | + 'files_loc_' 165 | + str(args.buffer_meters) + 'm.csv') 166 | 167 | path_masks = create_masks(args.path_data, 168 | buffer_meters=args.buffer_meters, 169 | n_bands=args.n_bands, 170 | burnValue=args.burnValue, 171 | output_df_file=output_df_file, 172 | make_plots=bool(args.make_plots), 173 | overwrite_ims=bool(args.overwrite_ims)) 174 | print("Output_df_file:", output_df_file) 175 | 176 | return path_masks 177 | 178 | 179 | ############################################################################### 180 | if __name__ == "__main__": 181 | main() 182 | -------------------------------------------------------------------------------- /apls/data/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | # define the current directory as `data_dir` 4 | data_dir = os.path.abspath(os.path.dirname(__file__)) 5 | -------------------------------------------------------------------------------- /apls/data/_sample_outputs/all_pairs_paths_diffs_gt_to_prop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/all_pairs_paths_diffs_gt_to_prop.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/all_pairs_paths_diffs_hist_gt_to_prop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/all_pairs_paths_diffs_hist_gt_to_prop.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/all_pairs_paths_diffs_hist_prop_to_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/all_pairs_paths_diffs_hist_prop_to_gt.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/all_pairs_paths_diffs_prop_to_gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/all_pairs_paths_diffs_prop_to_gt.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/gt_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/gt_graph.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/gt_graph_midpoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/gt_graph_midpoints.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/gt_graph_plus_prop_buff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/gt_graph_plus_prop_buff.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/gt_graph_prop_control_points.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/gt_graph_prop_control_points.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/gt_without_geom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/gt_without_geom.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/output__max_snap=4m_hole=4m.txt: -------------------------------------------------------------------------------- 1 | Ground Truth Nodes Snapped Onto Proposal Score: 0.7973714316363272 2 | Proposal Nodes Snapped Onto Ground Truth Score: 0.6837488820254419 3 | Total APLS Score: 0.7362019410731921 4 | TOPO vals - topo_tp_tot, topo_fp_tot, topo_fn_tot, topo_precision, topo_recall, topo_f1: (2054, 959, 1444, 0.6817125788250913, 0.5871926815323042, 0.6309322684687453) 5 | SP: 0.47 -------------------------------------------------------------------------------- /apls/data/_sample_outputs/overlaid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/overlaid.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/prop_cp_without_geom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/prop_cp_without_geom.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/prop_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/prop_graph.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/prop_graph_midpoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/prop_graph_midpoints.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/prop_graph_midpoints_gt_control_points.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/prop_graph_midpoints_gt_control_points.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/prop_graph_plus_gt_buff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/prop_graph_plus_gt_buff.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/prop_without_geom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/prop_without_geom.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/single_source_route_ground_truth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/single_source_route_ground_truth.png -------------------------------------------------------------------------------- /apls/data/_sample_outputs/single_source_route_prop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/_sample_outputs/single_source_route_prop.png -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/osm/AOI_2_Vegas_img99.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "OBJECTID": 11472, "id": "way\/350958444", "F_id": "way\/350958444", "area": "None", "highway": "residential", "name": "Clubhouse", "lit": "None", "review": "None", "source": "None", "indoor": "None", "level": "None", "building": "None", "service": "None", "access": "None", "outdoor_se": "None", "FIXME": "None", "lanes": "None", "oneway": "yes", "ref": "None", "tiger_cfcc": "None", "tiger_coun": "None", "tiger_name": "None", "tiger_na_1": "None", "tiger_revi": "None", "surface": "None", "name_1": "None", "tiger_na_2": "None", "tiger_sepa": "None", "tiger_sour": "None", "tiger_tlid": "None", "name_prefi": "None", "source_ref": "None", "tiger_na_3": "None", "tiger_na_4": "None", "tiger_na_5": "None", "tiger_na_6": "None", "tiger_uplo": "None", "bicycle": "None", "destinatio": "None", "bridge": "None", "layer": "None", "junction": "None", "destinat_1": "None", "addr_house": "None", "addr_stree": "None", "contact_em": "None", "contact_ph": "None", "maxspeed": "None", "foot": "None", "turn_lanes": "None", "tiger_na_7": "None", "old_name": "None", "old_ref": "None", "tiger_na_8": "None", "tiger_na_9": "None", "name_2": "None", "postal_cod": "None", "hgv": "None", "lanes_back": "None", "lanes_forw": "None", "tiger_na10": "None", "tiger_zip_": "None", "tiger_zi_1": "None", "horse": "None", "turn_lan_1": "None", "loc_name": "None", "note": "None", "addr_postc": "None", "created_by": "None", "placement": "None", "NHS": "None", "hgv_nation": "None", "source_hgv": "None", "tracktype": "None", "name1": "None", "segregated": "None", "tunnel": "None", "hov": "None", "note_lanes": "None", "place_numb": "None", "cutting": "None", "constructi": "None", "alt_name": "None", "cycleway": "None", "incline": "None", "source_nam": "None", "embankment": "None", "footway": "None", "turn": "None", "motor_vehi": "None", "escalator": "None", "parking_co": "None", "parking_la": "None", "sidewalk": "None", "admin_leve": "None", "lanes_both": "None", "turn_lan_2": "None", "width_lane": "None", "width": "None", "conveying": "None", "placement_": "None", "covered": "None", "placemen_1": "None", "smoothness": "None", "crossing": "None", "bridge_nam": "None", "historic": "None", "ref_nrhp": "None", "wikidata": "None", "wikipedia": "None", "modifier": "None", "Shape_Leng": 0.0019285836424599999, "partialBuilding": 1.0, "partialDec": 0.0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295244585150073, 36.166907699806629, 0.0 ], [ -115.295236000341106, 36.166897299670723, 0.0 ], [ -115.295140600258435, 36.166797699754113, 0.0 ], [ -115.295084600373968, 36.166699300432413, 0.0 ], [ -115.295046499696184, 36.166610999597992, 0.0 ], [ -115.2949982996318, 36.166577300202277, 0.0 ] ] } }, 6 | { "type": "Feature", "properties": { "OBJECTID": 11473, "id": "way\/350958446", "F_id": "way\/350958446", "area": "None", "highway": "residential", "name": "Clubhouse", "lit": "None", "review": "None", "source": "None", "indoor": "None", "level": "None", "building": "None", "service": "None", "access": "None", "outdoor_se": "None", "FIXME": "None", "lanes": "None", "oneway": "yes", "ref": "None", "tiger_cfcc": "None", "tiger_coun": "None", "tiger_name": "None", "tiger_na_1": "None", "tiger_revi": "None", "surface": "None", "name_1": "None", "tiger_na_2": "None", "tiger_sepa": "None", "tiger_sour": "None", "tiger_tlid": "None", "name_prefi": "None", "source_ref": "None", "tiger_na_3": "None", "tiger_na_4": "None", "tiger_na_5": "None", "tiger_na_6": "None", "tiger_uplo": "None", "bicycle": "None", "destinatio": "None", "bridge": "None", "layer": "None", "junction": "None", "destinat_1": "None", "addr_house": "None", "addr_stree": "None", "contact_em": "None", "contact_ph": "None", "maxspeed": "None", "foot": "None", "turn_lanes": "None", "tiger_na_7": "None", "old_name": "None", "old_ref": "None", "tiger_na_8": "None", "tiger_na_9": "None", "name_2": "None", "postal_cod": "None", "hgv": "None", "lanes_back": "None", "lanes_forw": "None", "tiger_na10": "None", "tiger_zip_": "None", "tiger_zi_1": "None", "horse": "None", "turn_lan_1": "None", "loc_name": "None", "note": "None", "addr_postc": "None", "created_by": "None", "placement": "None", "NHS": "None", "hgv_nation": "None", "source_hgv": "None", "tracktype": "None", "name1": "None", "segregated": "None", "tunnel": "None", "hov": "None", "note_lanes": "None", "place_numb": "None", "cutting": "None", "constructi": "None", "alt_name": "None", "cycleway": "None", "incline": "None", "source_nam": "None", "embankment": "None", "footway": "None", "turn": "None", "motor_vehi": "None", "escalator": "None", "parking_co": "None", "parking_la": "None", "sidewalk": "None", "admin_leve": "None", "lanes_both": "None", "turn_lan_2": "None", "width_lane": "None", "width": "None", "conveying": "None", "placement_": "None", "covered": "None", "placemen_1": "None", "smoothness": "None", "crossing": "None", "bridge_nam": "None", "historic": "None", "ref_nrhp": "None", "wikidata": "None", "wikipedia": "None", "modifier": "None", "Shape_Leng": 0.00069238602188899997, "partialBuilding": 1.0, "partialDec": 0.0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.294835999881457, 36.166450199916824, 0.0 ], [ -115.294796700407346, 36.166472100207329, 0.0 ], [ -115.294770799932451, 36.166504500082681, 0.0 ], [ -115.294762199715706, 36.166542400211654, 0.0 ], [ -115.294772200176851, 36.166580099791815, 0.0 ], [ -115.294799300347393, 36.166611799994598, 0.0 ], [ -115.294839400218109, 36.166632800063724, 0.0 ], [ -115.294886399687584, 36.166639699662483, 0.0 ], [ -115.294933099682794, 36.166631600368135, 0.0 ], [ -115.294972400056167, 36.166609700077629, 0.0 ], [ -115.2949982996318, 36.166577300202277, 0.0 ], [ -115.295006899848488, 36.166539400073304, 0.0 ], [ -115.294996900286662, 36.166501699593823, 0.0 ], [ -115.294969800116121, 36.16647000029036, 0.0 ], [ -115.294929700245461, 36.166449100046009, 0.0 ], [ -115.294882699876666, 36.166442099723156, 0.0 ], [ -115.294835999881457, 36.166450199916824, 0.0 ] ] } }, 7 | { "type": "Feature", "properties": { "OBJECTID": 11474, "id": "way\/350958449", "F_id": "way\/350958449", "area": "None", "highway": "residential", "name": "Clubhouse", "lit": "None", "review": "None", "source": "None", "indoor": "None", "level": "None", "building": "None", "service": "None", "access": "None", "outdoor_se": "None", "FIXME": "None", "lanes": "None", "oneway": "None", "ref": "None", "tiger_cfcc": "None", "tiger_coun": "None", "tiger_name": "None", "tiger_na_1": "None", "tiger_revi": "None", "surface": "None", "name_1": "None", "tiger_na_2": "None", "tiger_sepa": "None", "tiger_sour": "None", "tiger_tlid": "None", "name_prefi": "None", "source_ref": "None", "tiger_na_3": "None", "tiger_na_4": "None", "tiger_na_5": "None", "tiger_na_6": "None", "tiger_uplo": "None", "bicycle": "None", "destinatio": "None", "bridge": "None", "layer": "None", "junction": "None", "destinat_1": "None", "addr_house": "None", "addr_stree": "None", "contact_em": "None", "contact_ph": "None", "maxspeed": "None", "foot": "None", "turn_lanes": "None", "tiger_na_7": "None", "old_name": "None", "old_ref": "None", "tiger_na_8": "None", "tiger_na_9": "None", "name_2": "None", "postal_cod": "None", "hgv": "None", "lanes_back": "None", "lanes_forw": "None", "tiger_na10": "None", "tiger_zip_": "None", "tiger_zi_1": "None", "horse": "None", "turn_lan_1": "None", "loc_name": "None", "note": "None", "addr_postc": "None", "created_by": "None", "placement": "None", "NHS": "None", "hgv_nation": "None", "source_hgv": "None", "tracktype": "None", "name1": "None", "segregated": "None", "tunnel": "None", "hov": "None", "note_lanes": "None", "place_numb": "None", "cutting": "None", "constructi": "None", "alt_name": "None", "cycleway": "None", "incline": "None", "source_nam": "None", "embankment": "None", "footway": "None", "turn": "None", "motor_vehi": "None", "escalator": "None", "parking_co": "None", "parking_la": "None", "sidewalk": "None", "admin_leve": "None", "lanes_both": "None", "turn_lan_2": "None", "width_lane": "None", "width": "None", "conveying": "None", "placement_": "None", "covered": "None", "placemen_1": "None", "smoothness": "None", "crossing": "None", "bridge_nam": "None", "historic": "None", "ref_nrhp": "None", "wikidata": "None", "wikipedia": "None", "modifier": "None", "Shape_Leng": 0.00069672387734099998, "partialBuilding": 1.0, "partialDec": 0.0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295446929966531, 36.166907699806629, 0.0 ], [ -115.295336600303813, 36.166707100252552, 0.0 ], [ -115.295277600280997, 36.166600400188372, 0.0 ] ] } }, 8 | { "type": "Feature", "properties": { "OBJECTID": 11475, "id": "way\/350958450", "F_id": "way\/350958450", "area": "None", "highway": "residential", "name": "Clubhouse", "lit": "None", "review": "None", "source": "None", "indoor": "None", "level": "None", "building": "None", "service": "None", "access": "None", "outdoor_se": "None", "FIXME": "None", "lanes": "None", "oneway": "None", "ref": "None", "tiger_cfcc": "None", "tiger_coun": "None", "tiger_name": "None", "tiger_na_1": "None", "tiger_revi": "None", "surface": "None", "name_1": "None", "tiger_na_2": "None", "tiger_sepa": "None", "tiger_sour": "None", "tiger_tlid": "None", "name_prefi": "None", "source_ref": "None", "tiger_na_3": "None", "tiger_na_4": "None", "tiger_na_5": "None", "tiger_na_6": "None", "tiger_uplo": "None", "bicycle": "None", "destinatio": "None", "bridge": "None", "layer": "None", "junction": "None", "destinat_1": "None", "addr_house": "None", "addr_stree": "None", "contact_em": "None", "contact_ph": "None", "maxspeed": "None", "foot": "None", "turn_lanes": "None", "tiger_na_7": "None", "old_name": "None", "old_ref": "None", "tiger_na_8": "None", "tiger_na_9": "None", "name_2": "None", "postal_cod": "None", "hgv": "None", "lanes_back": "None", "lanes_forw": "None", "tiger_na10": "None", "tiger_zip_": "None", "tiger_zi_1": "None", "horse": "None", "turn_lan_1": "None", "loc_name": "None", "note": "None", "addr_postc": "None", "created_by": "None", "placement": "None", "NHS": "None", "hgv_nation": "None", "source_hgv": "None", "tracktype": "None", "name1": "None", "segregated": "None", "tunnel": "None", "hov": "None", "note_lanes": "None", "place_numb": "None", "cutting": "None", "constructi": "None", "alt_name": "None", "cycleway": "None", "incline": "None", "source_nam": "None", "embankment": "None", "footway": "None", "turn": "None", "motor_vehi": "None", "escalator": "None", "parking_co": "None", "parking_la": "None", "sidewalk": "None", "admin_leve": "None", "lanes_both": "None", "turn_lan_2": "None", "width_lane": "None", "width": "None", "conveying": "None", "placement_": "None", "covered": "None", "placemen_1": "None", "smoothness": "None", "crossing": "None", "bridge_nam": "None", "historic": "None", "ref_nrhp": "None", "wikidata": "None", "wikipedia": "None", "modifier": "None", "Shape_Leng": 0.00087862725400999998, "partialBuilding": 1.0, "partialDec": 0.0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.294799300347393, 36.166611799994598, 0.0 ], [ -115.29482629979384, 36.166816699730987, 0.0 ], [ -115.294885594055046, 36.166907699806629, 0.0 ] ] } }, 9 | { "type": "Feature", "properties": { "OBJECTID": 11476, "id": "way\/350958452", "F_id": "way\/350958452", "area": "None", "highway": "residential", "name": "Clubhouse", "lit": "None", "review": "None", "source": "None", "indoor": "None", "level": "None", "building": "None", "service": "None", "access": "None", "outdoor_se": "None", "FIXME": "None", "lanes": "None", "oneway": "yes", "ref": "None", "tiger_cfcc": "None", "tiger_coun": "None", "tiger_name": "None", "tiger_na_1": "None", "tiger_revi": "None", "surface": "None", "name_1": "None", "tiger_na_2": "None", "tiger_sepa": "None", "tiger_sour": "None", "tiger_tlid": "None", "name_prefi": "None", "source_ref": "None", "tiger_na_3": "None", "tiger_na_4": "None", "tiger_na_5": "None", "tiger_na_6": "None", "tiger_uplo": "None", "bicycle": "None", "destinatio": "None", "bridge": "None", "layer": "None", "junction": "None", "destinat_1": "None", "addr_house": "None", "addr_stree": "None", "contact_em": "None", "contact_ph": "None", "maxspeed": "None", "foot": "None", "turn_lanes": "None", "tiger_na_7": "None", "old_name": "None", "old_ref": "None", "tiger_na_8": "None", "tiger_na_9": "None", "name_2": "None", "postal_cod": "None", "hgv": "None", "lanes_back": "None", "lanes_forw": "None", "tiger_na10": "None", "tiger_zip_": "None", "tiger_zi_1": "None", "horse": "None", "turn_lan_1": "None", "loc_name": "None", "note": "None", "addr_postc": "None", "created_by": "None", "placement": "None", "NHS": "None", "hgv_nation": "None", "source_hgv": "None", "tracktype": "None", "name1": "None", "segregated": "None", "tunnel": "None", "hov": "None", "note_lanes": "None", "place_numb": "None", "cutting": "None", "constructi": "None", "alt_name": "None", "cycleway": "None", "incline": "None", "source_nam": "None", "embankment": "None", "footway": "None", "turn": "None", "motor_vehi": "None", "escalator": "None", "parking_co": "None", "parking_la": "None", "sidewalk": "None", "admin_leve": "None", "lanes_both": "None", "turn_lan_2": "None", "width_lane": "None", "width": "None", "conveying": "None", "placement_": "None", "covered": "None", "placemen_1": "None", "smoothness": "None", "crossing": "None", "bridge_nam": "None", "historic": "None", "ref_nrhp": "None", "wikidata": "None", "wikipedia": "None", "modifier": "None", "Shape_Leng": 0.00180085244081, "partialBuilding": 1.0, "partialDec": 0.0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.294933099682794, 36.166631600368135, 0.0 ], [ -115.294942600120862, 36.166669899796091, 0.0 ], [ -115.295008399917663, 36.166786899795625, 0.0 ], [ -115.295105583539154, 36.166907699806629, 0.0 ] ] } }, 10 | { "type": "Feature", "properties": { "OBJECTID": 11478, "id": "way\/350958456", "F_id": "way\/350958456", "area": "None", "highway": "residential", "name": "None", "lit": "None", "review": "None", "source": "None", "indoor": "None", "level": "None", "building": "None", "service": "None", "access": "None", "outdoor_se": "None", "FIXME": "None", "lanes": "None", "oneway": "None", "ref": "None", "tiger_cfcc": "None", "tiger_coun": "None", "tiger_name": "None", "tiger_na_1": "None", "tiger_revi": "None", "surface": "None", "name_1": "None", "tiger_na_2": "None", "tiger_sepa": "None", "tiger_sour": "None", "tiger_tlid": "None", "name_prefi": "None", "source_ref": "None", "tiger_na_3": "None", "tiger_na_4": "None", "tiger_na_5": "None", "tiger_na_6": "None", "tiger_uplo": "None", "bicycle": "None", "destinatio": "None", "bridge": "None", "layer": "None", "junction": "None", "destinat_1": "None", "addr_house": "None", "addr_stree": "None", "contact_em": "None", "contact_ph": "None", "maxspeed": "None", "foot": "None", "turn_lanes": "None", "tiger_na_7": "None", "old_name": "None", "old_ref": "None", "tiger_na_8": "None", "tiger_na_9": "None", "name_2": "None", "postal_cod": "None", "hgv": "None", "lanes_back": "None", "lanes_forw": "None", "tiger_na10": "None", "tiger_zip_": "None", "tiger_zi_1": "None", "horse": "None", "turn_lan_1": "None", "loc_name": "None", "note": "None", "addr_postc": "None", "created_by": "None", "placement": "None", "NHS": "None", "hgv_nation": "None", "source_hgv": "None", "tracktype": "None", "name1": "None", "segregated": "None", "tunnel": "None", "hov": "None", "note_lanes": "None", "place_numb": "None", "cutting": "None", "constructi": "None", "alt_name": "None", "cycleway": "None", "incline": "None", "source_nam": "None", "embankment": "None", "footway": "None", "turn": "None", "motor_vehi": "None", "escalator": "None", "parking_co": "None", "parking_la": "None", "sidewalk": "None", "admin_leve": "None", "lanes_both": "None", "turn_lan_2": "None", "width_lane": "None", "width": "None", "conveying": "None", "placement_": "None", "covered": "None", "placemen_1": "None", "smoothness": "None", "crossing": "None", "bridge_nam": "None", "historic": "None", "ref_nrhp": "None", "wikidata": "None", "wikipedia": "None", "modifier": "None", "Shape_Leng": 0.0016731334742800001, "partialBuilding": 1.0, "partialDec": 0.0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295765459052205, 36.166907699806629, 0.0 ], [ -115.295706999578329, 36.166802100136863, 0.0 ], [ -115.295535800137031, 36.166578900096226, 0.0 ], [ -115.295348099934813, 36.166613399888547, 0.0 ], [ -115.295277600280997, 36.166600400188372, 0.0 ], [ -115.295211500110611, 36.166588199985483, 0.0 ], [ -115.295006899848488, 36.166539400073304, 0.0 ] ] } } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads/AOI_2_Vegas_img99.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 20891, "road_type": "5", "origarea": 0, "origlen": 0.00088319523407689158, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295044441759998, 36.166532808120003 ], [ -115.295000388689999, 36.166447293330002 ], [ -115.294911937020004, 36.16640859572 ], [ -115.29479584421, 36.166433472759998 ], [ -115.294753000430006, 36.166490137099998 ], [ -115.294740561919994, 36.166545419389998 ], [ -115.29477096718, 36.166615904319997 ], [ -115.294849571689994, 36.166659957390003 ], [ -115.294964282440006, 36.166658575329997 ], [ -115.295043059700006, 36.166592236589999 ], [ -115.295044441759998, 36.166532808120003 ] ] } }, 6 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 12255, "road_type": "5", "origarea": 0, "origlen": 0.0010928421151008977, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295778282368246, 36.166907699799999 ], [ -115.295705065139998, 36.166773286089999 ], [ -115.295539218269994, 36.166548010749999 ], [ -115.295324999390004, 36.166600528929997 ] ] } }, 7 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16749, "road_type": "5", "origarea": 0, "origlen": 0.0011627892826477908, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295485830384166, 36.166907699799999 ], [ -115.295396866369998, 36.166752555229998 ], [ -115.295341584080006, 36.166639226530002 ], [ -115.295324999390004, 36.166600528929997 ], [ -115.295044441759998, 36.166532808120003 ] ] } }, 8 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 7797, "road_type": "5", "origarea": 0, "origlen": 0.00071868044430732029, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.294930981955858, 36.166907699799999 ], [ -115.294886887230007, 36.1668555185 ], [ -115.294839206259994, 36.166751864200002 ], [ -115.294849571689994, 36.166659957390003 ] ] } }, 9 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 97, "road_type": "5", "origarea": 0, "origlen": 0.00079439734641099772, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295278217740574, 36.166907699799999 ], [ -115.295190939829993, 36.166832714549997 ], [ -115.295120454910005, 36.166726296139998 ], [ -115.295067936730007, 36.166614349500001 ], [ -115.295043059700006, 36.166592236589999 ] ] } }, 10 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 4584, "road_type": "5", "origarea": 0, "origlen": 0.00066795186416000144, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.295133554012565, 36.166907699799999 ], [ -115.295019564729998, 36.166776050199999 ], [ -115.294964282440006, 36.166658575329997 ] ] } } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads/AOI_2_Vegas_img990.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23370, "road_type": "2", "origarea": 0, "origlen": 0.018510876416305805, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206221348497593, 36.180947699800001 ], [ -115.206221463990005, 36.180929625300003 ], [ -115.206222597959993, 36.180752159279997 ], [ -115.206221554799995, 36.180390879329998 ], [ -115.206219639750003, 36.180210808189997 ], [ -115.206216820609995, 36.180057908019997 ], [ -115.206193565820001, 36.179088548640003 ] ] } }, 6 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21510, "road_type": "2", "origarea": 0, "origlen": 0.018493949730721295, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205986139320004, 36.179115604270002 ], [ -115.205995208809995, 36.179570857389997 ], [ -115.206000632439995, 36.179843102680003 ], [ -115.206002211859996, 36.179922383419999 ], [ -115.206002211859996, 36.180242541399998 ], [ -115.206002211859996, 36.180947146580003 ], [ -115.206002211859996, 36.180947699800001 ] ] } }, 7 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 9557, "road_type": "6", "origarea": 0, "origlen": 0.00232672410751158, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205778908100001, 36.178376481779999 ], [ -115.205773384880004, 36.179107125 ], [ -115.205770228760002, 36.179430627930003 ], [ -115.2057276, 36.179439153684704 ] ] } }, 8 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 7613, "road_type": "5", "origarea": 0, "origlen": 0.00020918355579712243, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206193565820001, 36.179088548640003 ], [ -115.205986139320004, 36.179115604270002 ] ] } }, 9 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 14227, "road_type": "6", "origarea": 0, "origlen": 0.00064210555126311655, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.17957588479733 ], [ -115.205995208809995, 36.179570857389997 ] ] } }, 10 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 18750, "road_type": "6", "origarea": 0, "origlen": 0.00042856110007895949, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.179878594747521 ], [ -115.205784431319998, 36.179881164949997 ] ] } }, 11 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21031, "road_type": "6", "origarea": 0, "origlen": 0.00040882426839844666, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206000632439995, 36.179843102680003 ], [ -115.205784431319998, 36.179881164949997 ], [ -115.205762338439996, 36.179934819099998 ], [ -115.205784431319998, 36.180064220269998 ] ] } }, 12 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 208, "road_type": "6", "origarea": 0, "origlen": 0.00029509888911927548, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206395141749994, 36.180081578959999 ], [ -115.206687763199994, 36.180043420849998 ] ] } }, 13 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 4350, "road_type": "6", "origarea": 0, "origlen": 0.0015047876316934506, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.180064545951311 ], [ -115.205784431319998, 36.180064220269998 ], [ -115.205795477769996, 36.180247275589998 ] ] } }, 14 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 12025, "road_type": "6", "origarea": 0, "origlen": 0.0010073794689876299, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206567150620003, 36.180760146099999 ], [ -115.206434593319997, 36.180753833849998 ], [ -115.206390407559994, 36.180720694519998 ], [ -115.206387251430002, 36.180591293349998 ], [ -115.206384095299995, 36.180392457400004 ], [ -115.206395141749994, 36.180081578959999 ], [ -115.206306770210006, 36.180065798329998 ], [ -115.206216820609995, 36.180057908019997 ] ] } }, 15 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 22268, "road_type": "6", "origarea": 0, "origlen": 0.0009076141673111073, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205795477769996, 36.180247275589998 ], [ -115.205781275199996, 36.18076172416 ], [ -115.2057276, 36.18076280850876 ] ] } }, 16 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 22777, "road_type": "6", "origarea": 0, "origlen": 0.0015514490751744501, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206002211859996, 36.180242541399998 ], [ -115.205795477769996, 36.180247275589998 ], [ -115.2057276, 36.18024928380791 ] ] } }, 17 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16514, "road_type": "6", "origarea": 0, "origlen": 0.00098232856847632589, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206570276020003, 36.180931176290002 ], [ -115.206567150620003, 36.180760146099999 ], [ -115.206641319590005, 36.180745943529999 ], [ -115.206631851210005, 36.18042244059 ], [ -115.206552948059993, 36.180412972219997 ], [ -115.206384095299995, 36.180392457400004 ], [ -115.206221554799995, 36.180390879329998 ] ] } }, 18 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "4", "lane_number": "4", "one_way_ty": "2", "paved": "1", "road_id": 5093, "road_type": "3", "origarea": 0, "origlen": 0.0087789539535557248, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205994563455747, 36.180947699800001 ], [ -115.206002211859996, 36.180947146580003 ], [ -115.206221463990005, 36.180929625300003 ] ] } }, 19 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 4689, "road_type": "6", "origarea": 0, "origlen": 0.00015971333617408536, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206570276020003, 36.180931176290002 ], [ -115.206567481554089, 36.180947699800001 ] ] } }, 20 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "3", "lane_number": "3", "one_way_ty": "2", "paved": "1", "road_id": 22973, "road_type": "2", "origarea": 0, "origlen": 0.0050628300911160617, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206163504009993, 36.177437699800002 ], [ -115.206163504009993, 36.17778987842 ], [ -115.206193565820001, 36.179088548640003 ] ] } }, 21 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "3", "lane_number": "3", "one_way_ty": "2", "paved": "1", "road_id": 19701, "road_type": "2", "origarea": 0, "origlen": 0.0050785460273653918, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205957066722604, 36.177437699800002 ], [ -115.205964854699999, 36.177887177439999 ], [ -115.205972920259995, 36.178352675669998 ], [ -115.205986139320004, 36.179115604270002 ] ] } }, 22 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16017, "road_type": "6", "origarea": 0, "origlen": 0.0011352269080525247, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205766263749993, 36.177886052630001 ], [ -115.205771017789999, 36.177522749639998 ], [ -115.2057276, 36.177522749639998 ] ] } }, 23 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 20540, "road_type": "6", "origarea": 0, "origlen": 0.0009478982189466017, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205964854699999, 36.177887177439999 ], [ -115.205766263749993, 36.177886052630001 ], [ -115.2057276, 36.177885833641909 ] ] } }, 24 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21667, "road_type": "6", "origarea": 0, "origlen": 0.0032746227683072941, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.178376294525179 ], [ -115.205778908100001, 36.178376481779999 ], [ -115.205972920259995, 36.178352675669998 ] ] } }, 25 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 6891, "road_type": "5", "origarea": 0, "origlen": 0.0036243734566307967, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2092376, 36.177613743036964 ], [ -115.208895334100006, 36.177610548010001 ], [ -115.208478227520004, 36.177622380819997 ], [ -115.207664721780006, 36.177601673399998 ], [ -115.206848257830003, 36.177604631599998 ] ] } }, 26 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 4565, "road_type": "5", "origarea": 0, "origlen": 0.0048158181114317973, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2068441738719, 36.177437699800002 ], [ -115.206848257830003, 36.177604631599998 ], [ -115.206860090640006, 36.179092607560001 ], [ -115.206866007049996, 36.180006692200003 ], [ -115.206892630870001, 36.18093260965 ] ] } }, 27 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 77, "road_type": "5", "origarea": 0, "origlen": 0.0048008631307793143, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207706136620004, 36.180929651440003 ], [ -115.20770022021, 36.180317303480003 ], [ -115.207679512789994, 36.179083732949998 ], [ -115.207669159079998, 36.178354535990003 ], [ -115.207664721780006, 36.177601673399998 ], [ -115.207663231109763, 36.177437699800002 ] ] } }, 28 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16730, "road_type": "5", "origarea": 0, "origlen": 0.0048300650113256641, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208475697645355, 36.177437699800002 ], [ -115.208478227520004, 36.177622380819997 ], [ -115.208498934939996, 36.179098523969998 ], [ -115.208513725960003, 36.180947400660003 ] ] } }, 29 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 12239, "road_type": "5", "origarea": 0, "origlen": 0.0043146434767061884, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2092376, 36.179094063940823 ], [ -115.208900510960007, 36.179087430709998 ], [ -115.208498934939996, 36.179098523969998 ], [ -115.207679512789994, 36.179083732949998 ], [ -115.207368901509994, 36.179089649360002 ], [ -115.206860090640006, 36.179092607560001 ], [ -115.206193565820001, 36.179088548640003 ] ] } }, 30 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21739, "road_type": "5", "origarea": 0, "origlen": 0.0040870740436729563, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206892630870001, 36.18093260965 ], [ -115.20688811372645, 36.180947699800001 ] ] } }, 31 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "4", "lane_number": "4", "one_way_ty": "2", "paved": "1", "road_id": 21426, "road_type": "3", "origarea": 0, "origlen": 0.035008610794341283, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206221463990005, 36.180929625300003 ], [ -115.206570276020003, 36.180931176290002 ], [ -115.206892630870001, 36.18093260965 ], [ -115.207706136620004, 36.180929651440003 ], [ -115.208513725960003, 36.180947400660003 ], [ -115.208573180092174, 36.180947699800001 ] ] } } 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads/AOI_2_Vegas_img991.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23370, "road_type": "2", "origarea": 0, "origlen": 0.018510876416305805, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.20626846774698, 36.184457699799999 ], [ -115.206267722299998, 36.184378682419997 ], [ -115.206264012800006, 36.18398547484 ], [ -115.206261869299993, 36.183854721899998 ], [ -115.206252179979998, 36.183263673379997 ], [ -115.206246803810004, 36.182857391959999 ], [ -115.206240347169995, 36.182379170769998 ], [ -115.206216681550003, 36.181678076730002 ], [ -115.206219806259995, 36.181189059159998 ], [ -115.206221348497593, 36.180947699800001 ] ] } }, 6 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21510, "road_type": "2", "origarea": 0, "origlen": 0.018493949730721295, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206002211859996, 36.180947699800001 ], [ -115.206002211859996, 36.181292031280002 ], [ -115.206019961069998, 36.18264392991 ], [ -115.206024694860005, 36.182861684130003 ], [ -115.206046584899994, 36.183868625830002 ], [ -115.206046584899994, 36.184457699799999 ] ] } }, 7 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "4", "lane_number": "4", "one_way_ty": "2", "paved": "1", "road_id": 5093, "road_type": "3", "origarea": 0, "origlen": 0.0087789539535557248, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.180967009647844 ], [ -115.205994563455747, 36.180947699800001 ] ] } }, 8 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 4689, "road_type": "6", "origarea": 0, "origlen": 0.00015971333617408536, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206567481554089, 36.180947699800001 ], [ -115.206543643390006, 36.18108865344 ] ] } }, 9 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 22285, "road_type": "6", "origarea": 0, "origlen": 0.00078712919594836031, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206767564640003, 36.18141346422 ], [ -115.206709599540005, 36.18120074662 ], [ -115.206657192329999, 36.181109034019997 ], [ -115.206585860299995, 36.18108865344 ], [ -115.206543643390006, 36.18108865344 ], [ -115.206451930780005, 36.18108865344 ], [ -115.206219806259995, 36.181189059159998 ] ] } }, 10 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 8849, "road_type": "5", "origarea": 0, "origlen": 0.00022215041839414478, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206024694860005, 36.182861684130003 ], [ -115.206246803810004, 36.182857391959999 ] ] } }, 11 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 18117, "road_type": "6", "origarea": 0, "origlen": 0.00089029486245973571, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206267722299998, 36.184378682419997 ], [ -115.206435917470003, 36.18436119223 ], [ -115.206479590140006, 36.184300050490002 ], [ -115.206462121070004, 36.183854589249997 ], [ -115.206261869299993, 36.183854721899998 ] ] } }, 12 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 5312, "road_type": "5", "origarea": 0, "origlen": 0.00081333497482603085, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206767564640003, 36.18141346422 ], [ -115.207157689140004, 36.181429009049999 ], [ -115.207580580119995, 36.181426112540002 ] ] } }, 13 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 15087, "road_type": "5", "origarea": 0, "origlen": 0.0037019011812757709, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208210134029997, 36.181940905429997 ], [ -115.208471083760003, 36.182116491339997 ], [ -115.208710949350007, 36.182160677100001 ], [ -115.209133870260004, 36.182157520979999 ], [ -115.2092376, 36.182159092642955 ] ] } }, 14 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16738, "road_type": "5", "origarea": 0, "origlen": 0.0089770201342966299, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207624480660002, 36.182856169209998 ], [ -115.207632343219998, 36.182238791229999 ], [ -115.207684419299994, 36.182156731950002 ], [ -115.207971626789998, 36.18210149974 ], [ -115.208154682100002, 36.181997347569997 ], [ -115.208210134029997, 36.181940905429997 ], [ -115.208331425170002, 36.181817448380002 ], [ -115.208493965670002, 36.181490789320002 ], [ -115.208621788779993, 36.181462384180001 ], [ -115.208932667209993, 36.181459228050002 ], [ -115.2092376, 36.181463573886099 ] ] } }, 15 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21739, "road_type": "5", "origarea": 0, "origlen": 0.0040870740436729563, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.20688811372645, 36.180947699800001 ], [ -115.206777033020003, 36.181318780440002 ], [ -115.206767564640003, 36.18141346422 ], [ -115.206780189140005, 36.182858970029997 ], [ -115.206793595299999, 36.183564469330001 ], [ -115.206805438149999, 36.184187699159999 ], [ -115.206805178219994, 36.184254762770003 ], [ -115.206804391641697, 36.184457699799999 ] ] } }, 16 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 85, "road_type": "5", "origarea": 0, "origlen": 0.00396289066379141, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2092376, 36.182860492452058 ], [ -115.208746455769997, 36.182854235839997 ], [ -115.207869052679996, 36.182854235839997 ], [ -115.207624480660002, 36.182856169209998 ], [ -115.207070552749997, 36.182860548089998 ], [ -115.206780189140005, 36.182858970029997 ], [ -115.20651349648, 36.182855813899998 ], [ -115.206246803810004, 36.182857391959999 ] ] } }, 17 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 7569, "road_type": "5", "origarea": 0, "origlen": 0.003395878650894676, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206793595299999, 36.183564469330001 ], [ -115.207954268090006, 36.183564364230001 ], [ -115.2092376, 36.183564364230001 ] ] } }, 18 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 2270, "road_type": "5", "origarea": 0, "origlen": 0.005711839974879133, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2092376, 36.184258883107084 ], [ -115.208933456249994, 36.18426107909 ], [ -115.207431140170002, 36.184248454589998 ], [ -115.206805178219994, 36.184254762770003 ] ] } }, 19 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "4", "lane_number": "4", "one_way_ty": "2", "paved": "1", "road_id": 21426, "road_type": "3", "origarea": 0, "origlen": 0.035008610794341283, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208573180092174, 36.180947699800001 ], [ -115.2092376, 36.180951042790014 ] ] } } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads/AOI_2_Vegas_img995.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 2105, "road_type": "3", "origarea": 0, "origlen": 0.00070604804202479968, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206786701959999, 36.195551470780003 ], [ -115.206080653979996, 36.195551174839999 ] ] } }, 6 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 20925, "road_type": "3", "origarea": 0, "origlen": 0.0014971093888327368, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206080653979996, 36.195551174839999 ], [ -115.20588532024, 36.195557305569999 ], [ -115.2057276, 36.195557278043992 ] ] } }, 7 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 871, "road_type": "5", "origarea": 0, "origlen": 0.00021709671153927656, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206074687820006, 36.196738286719999 ], [ -115.205857699510005, 36.196731427019998 ] ] } }, 8 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 8243, "road_type": "6", "origarea": 0, "origlen": 0.0017039423210047583, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206227739499994, 36.197923748820003 ], [ -115.206239319459996, 36.19707905768 ], [ -115.206739471440002, 36.197081932110002 ], [ -115.206756607369996, 36.196723329729998 ] ] } }, 9 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 14659, "road_type": "5", "origarea": 0, "origlen": 0.00021612273601167054, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.20604797787, 36.19791779274 ], [ -115.205831855240007, 36.197917578670001 ] ] } }, 10 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19618, "road_type": "2", "origarea": 0, "origlen": 0.0051205472693769613, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206031968535171, 36.198497699900003 ], [ -115.20604797787, 36.19791779274 ], [ -115.206056938610004, 36.197593207300002 ] ] } }, 11 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21482, "road_type": "2", "origarea": 0, "origlen": 0.0051073662533518208, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205849864420003, 36.197605040109998 ], [ -115.205831855240007, 36.197917578670001 ], [ -115.205799200550004, 36.198484281349998 ], [ -115.20579902321245, 36.198497699900003 ] ] } }, 12 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23370, "road_type": "2", "origarea": 0, "origlen": 0.018510876416305805, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206056938610004, 36.197593207300002 ], [ -115.206074687820006, 36.196738286719999 ], [ -115.206065813210003, 36.195874491529999 ], [ -115.206080653979996, 36.195551174839999 ], [ -115.206087580230005, 36.195400281639998 ], [ -115.206106518401725, 36.194987699899997 ] ] } }, 13 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 21510, "road_type": "2", "origarea": 0, "origlen": 0.018493949730721295, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205903793936102, 36.194987699899997 ], [ -115.205900375249996, 36.195093109379997 ], [ -115.205889957940002, 36.195414309870003 ], [ -115.20588532024, 36.195557305569999 ], [ -115.205861697230006, 36.196285681699997 ], [ -115.205857699510005, 36.196731427019998 ], [ -115.205849864420003, 36.197605040109998 ] ] } }, 14 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 11466, "road_type": "6", "origarea": 0, "origlen": 0.00071747140717475573, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206757550839995, 36.195243682159997 ], [ -115.206385915729996, 36.195217859940001 ], [ -115.206348548050002, 36.195191990010002 ], [ -115.206342799180007, 36.195131626840002 ], [ -115.206335862939824, 36.194987699899997 ] ] } }, 15 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 13944, "road_type": "6", "origarea": 0, "origlen": 0.00055630359715920974, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.195095776615432 ], [ -115.205900375249996, 36.195093109379997 ] ] } }, 16 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16333, "road_type": "3", "origarea": 0, "origlen": 0.00066915977598498895, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206087580230005, 36.195400281639998 ], [ -115.206756476920006, 36.195419043939999 ] ] } }, 17 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 4854, "road_type": "3", "origarea": 0, "origlen": 0.0015327859349010219, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.195420670619882 ], [ -115.205889957940002, 36.195414309870003 ], [ -115.206087580230005, 36.195400281639998 ] ] } }, 18 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 13162, "road_type": "6", "origarea": 0, "origlen": 0.003547740214439263, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207786912362693, 36.194987699899997 ], [ -115.207783276100002, 36.195110293980001 ] ] } }, 19 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 23291, "road_type": "6", "origarea": 0, "origlen": 0.0039484328107335332, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -115.207301367970004, 36.195255333219997 ], [ -115.207308008909337, 36.194987699899997 ] ], [ [ -115.206759118474125, 36.194987699899997 ], [ -115.206757550839995, 36.195243682159997 ], [ -115.206756476920006, 36.195419043939999 ] ] ] } }, 20 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 9327, "road_type": "6", "origarea": 0, "origlen": 0.0010818557680941246, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207098558929999, 36.195250988120002 ], [ -115.207093027149995, 36.19503964487 ], [ -115.207093503706687, 36.194987699899997 ] ] } }, 21 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 14710, "road_type": "6", "origarea": 0, "origlen": 0.00048749206293637547, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206903217700003, 36.195246803010001 ], [ -115.206905476413453, 36.194987699899997 ] ] } }, 22 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 9900, "road_type": "3", "origarea": 0, "origlen": 0.00074974307805043849, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208215177050704, 36.194987699899997 ], [ -115.208216715879999, 36.195498811230003 ] ] } }, 23 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 13801, "road_type": "6", "origarea": 0, "origlen": 0.00054394192529147738, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206757550839995, 36.195243682159997 ], [ -115.206903217700003, 36.195246803010001 ], [ -115.207098558929999, 36.195250988120002 ], [ -115.207301367970004, 36.195255333219997 ] ] } }, 24 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 6218, "road_type": "6", "origarea": 0, "origlen": 0.00038251082005573536, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207783276100002, 36.195110293980001 ], [ -115.207769313219998, 36.195492549870004 ] ] } }, 25 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 17527, "road_type": "6", "origarea": 0, "origlen": 0.00023064542495808364, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207301367970004, 36.195255333219997 ], [ -115.207298453470003, 36.195485960230002 ] ] } }, 26 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 5346, "road_type": "3", "origarea": 0, "origlen": 0.00056182041883839277, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206786701959999, 36.195551470780003 ], [ -115.207044510879996, 36.195482406330001 ], [ -115.206756476920006, 36.195419043939999 ] ] } }, 27 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "4", "lane_number": "4", "one_way_ty": "2", "paved": "1", "road_id": 22363, "road_type": "3", "origarea": 0, "origlen": 0.0065966880106145022, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2092376, 36.195513098414438 ], [ -115.208216715879999, 36.195498811230003 ], [ -115.207769313219998, 36.195492549870004 ], [ -115.207298453470003, 36.195485960230002 ], [ -115.207044510879996, 36.195482406330001 ] ] } }, 28 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 17999, "road_type": "5", "origarea": 0, "origlen": 0.0088485348126274479, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206074687820006, 36.196738286719999 ], [ -115.206756607369996, 36.196723329729998 ], [ -115.206806690549996, 36.196722231220001 ], [ -115.208451466200003, 36.196756497380001 ], [ -115.2092376, 36.196768921910014 ] ] } }, 29 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 408, "road_type": "5", "origarea": 0, "origlen": 0.0088569321490807422, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.20604797787, 36.19791779274 ], [ -115.206227739499994, 36.197923748820003 ], [ -115.207627672369995, 36.197970133040002 ], [ -115.2092376, 36.197993161915058 ] ] } } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads/AOI_2_Vegas_img997.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 2395, "road_type": "6", "origarea": 0, "origlen": 0.00058323663649975362, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205857137829994, 36.204892970510002 ], [ -115.206097034850004, 36.204930581420001 ], [ -115.206104204740001, 36.205270915109999 ] ] } }, 6 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 2654, "road_type": "3", "origarea": 0, "origlen": 0.00022702645479523269, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.205271265241436 ], [ -115.20584812397, 36.205261411750001 ] ] } }, 7 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 14551, "road_type": "6", "origarea": 0, "origlen": 0.00049389937399452871, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206697012366575, 36.2055176999 ], [ -115.206703540980001, 36.205394802939999 ], [ -115.206661861650005, 36.20536605857 ], [ -115.206660413419996, 36.205274398679997 ] ] } }, 8 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 20533, "road_type": "6", "origarea": 0, "origlen": 0.0010408884184865764, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206331294329999, 36.205272337389999 ], [ -115.206328045692999, 36.2055176999 ] ] } }, 9 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 6855, "road_type": "6", "origarea": 0, "origlen": 0.0003657770008830565, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206064421108465, 36.2055176999 ], [ -115.206059667169995, 36.205442231150002 ] ] } }, 10 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23338, "road_type": "2", "origarea": 0, "origlen": 0.007707182227590109, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205937122649999, 36.202712303250003 ], [ -115.205925754489996, 36.202829767220003 ], [ -115.205896920979995, 36.203266834110003 ], [ -115.205884033030003, 36.203793629060002 ], [ -115.205876387499998, 36.20410614032 ], [ -115.205857137829994, 36.204892970510002 ], [ -115.20584812397, 36.205261411750001 ], [ -115.205841853925165, 36.2055176999 ] ] } }, 11 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19618, "road_type": "2", "origarea": 0, "origlen": 0.0051205472693769613, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205937122649999, 36.202712303250003 ], [ -115.205943698309994, 36.202362809969998 ], [ -115.205950379647916, 36.202007699900001 ] ] } }, 12 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 5242, "road_type": "6", "origarea": 0, "origlen": 0.0006269998777139943, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206257974449997, 36.202716105939999 ], [ -115.206263752170003, 36.202558452559998 ], [ -115.206148774710002, 36.202549829250003 ], [ -115.206097034850004, 36.20251246158 ], [ -115.206085537099995, 36.202457847280002 ], [ -115.20607691379, 36.202357242 ], [ -115.205943698309994, 36.202362809969998 ] ] } }, 13 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 9688, "road_type": "6", "origarea": 0, "origlen": 0.00024516889118733783, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206608708659999, 36.202720262790002 ], [ -115.20660868457, 36.202475093899999 ] ] } }, 14 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23245, "road_type": "2", "origarea": 0, "origlen": 0.0045709692046760828, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.202826695055677 ], [ -115.205925754489996, 36.202829767220003 ], [ -115.206286747670006, 36.202835117089997 ], [ -115.206783662310002, 36.202807146040001 ], [ -115.207029825030006, 36.20279036222 ], [ -115.206694148590003, 36.20271203771 ], [ -115.206608708659999, 36.202720262790002 ], [ -115.206257974449997, 36.202716105939999 ], [ -115.205937122649999, 36.202712303250003 ], [ -115.2057276, 36.202709820019656 ] ] } }, 15 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 17830, "road_type": "6", "origarea": 0, "origlen": 0.00014229187851413344, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206286747670006, 36.202835117089997 ], [ -115.206288184889999, 36.202977401710001 ] ] } }, 16 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19472, "road_type": "6", "origarea": 0, "origlen": 0.00022995942128012828, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206288184889999, 36.202977401710001 ], [ -115.206518139820005, 36.202975964490001 ] ] } }, 17 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 14788, "road_type": "6", "origarea": 0, "origlen": 0.00041929074710097744, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206512390949996, 36.203348204039997 ], [ -115.206509516509996, 36.203168551749997 ], [ -115.206532961540006, 36.203168221799999 ], [ -115.206536924, 36.202971419729998 ], [ -115.206518139820005, 36.202975964490001 ] ] } }, 18 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 1164, "road_type": "6", "origarea": 0, "origlen": 0.00045340788722906774, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206148774710002, 36.203277780340002 ], [ -115.206160272459996, 36.203174300619999 ], [ -115.206509516509996, 36.203168551749997 ] ] } }, 19 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 5642, "road_type": "6", "origarea": 0, "origlen": 0.0006466453129495924, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205896920979995, 36.203266834110003 ], [ -115.206148774710002, 36.203277780340002 ], [ -115.206157398019997, 36.203313710800003 ], [ -115.206334175869998, 36.203343892379998 ], [ -115.206512390949996, 36.203348204039997 ] ] } }, 20 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 10085, "road_type": "6", "origarea": 0, "origlen": 0.00065420085787690706, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206426157850004, 36.203838295490002 ], [ -115.206426157850004, 36.203670140939998 ], [ -115.206069727699997, 36.203660080410003 ], [ -115.206064079379999, 36.203789431350003 ] ] } }, 21 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16009, "road_type": "6", "origarea": 0, "origlen": 0.00082520850052701243, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205884033030003, 36.203793629060002 ], [ -115.206064079379999, 36.203789431350003 ], [ -115.206125779220002, 36.203787992850003 ], [ -115.206426157850004, 36.203838295490002 ], [ -115.206423283410004, 36.204117115839999 ] ] } }, 22 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 11795, "road_type": "3", "origarea": 0, "origlen": 0.004822829497513564, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.204099497500756 ], [ -115.205876387499998, 36.20410614032 ] ] } }, 23 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "4", "lane_number": "4", "one_way_ty": "2", "paved": "1", "road_id": 8957, "road_type": "2", "origarea": 0, "origlen": 0.0011469081652574218, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207029825030006, 36.20279036222 ], [ -115.208176719549996, 36.202795956819998 ] ] } }, 24 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "4", "lane_number": "4", "one_way_ty": "2", "paved": "1", "road_id": 21339, "road_type": "2", "origarea": 0, "origlen": 0.0055405206707284868, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208176719549996, 36.202795956819998 ], [ -115.2092376, 36.202814103551141 ] ] } }, 25 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "2", "road_id": 14948, "road_type": "6", "origarea": 0, "origlen": 0.0012433719556050502, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206824189480002, 36.204125282009997 ], [ -115.206850137250001, 36.203746313510003 ], [ -115.206909063210006, 36.203652894320001 ], [ -115.20706140835, 36.203654331540001 ], [ -115.207215190710002, 36.203691699220002 ], [ -115.207225251240004, 36.203753499610002 ], [ -115.207215190710002, 36.204040943270002 ], [ -115.207212283320004, 36.2041331199 ] ] } }, 26 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "2", "road_id": 10483, "road_type": "6", "origarea": 0, "origlen": 0.00054171015135952186, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207091589930002, 36.204141548560003 ], [ -115.207118897079994, 36.204268023769998 ], [ -115.207202255750005, 36.204328386939999 ], [ -115.207265493349993, 36.204334135810001 ], [ -115.207338791490002, 36.204293893699997 ], [ -115.207356038110007, 36.204262274900003 ], [ -115.207361838150007, 36.204136140289997 ] ] } }, 27 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 9856, "road_type": "5", "origarea": 0, "origlen": 0.0077898981796139799, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205876387499998, 36.20410614032 ], [ -115.206423283410004, 36.204117115839999 ], [ -115.206824189480002, 36.204125282009997 ], [ -115.207091589930002, 36.204141548560003 ], [ -115.207212283320004, 36.2041331199 ], [ -115.207361838150007, 36.204136140289997 ], [ -115.207581161319993, 36.204140569709999 ], [ -115.209058464270001, 36.204160688629997 ], [ -115.209199296649999, 36.204206674710001 ], [ -115.209202170780003, 36.204678032069999 ], [ -115.209196422519994, 36.205316088990003 ], [ -115.208696323859996, 36.205310340730001 ], [ -115.207351230889998, 36.205278725299998 ], [ -115.206864499410003, 36.205275676879999 ], [ -115.206660413419996, 36.205274398679997 ], [ -115.206331294329999, 36.205272337389999 ], [ -115.206104204740001, 36.205270915109999 ], [ -115.2059745225, 36.205270102909999 ], [ -115.20584812397, 36.205261411750001 ] ] } }, 28 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19074, "road_type": "6", "origarea": 0, "origlen": 4.6198258918946979e-05, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206862628750002, 36.205321837249997 ], [ -115.206864499410003, 36.205275676879999 ] ] } }, 29 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "2", "road_id": 19869, "road_type": "6", "origarea": 0, "origlen": 0.00096572487777047528, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.209196422519994, 36.205316088990003 ], [ -115.2092376, 36.205315843885977 ] ] } }, 30 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 3184, "road_type": "6", "origarea": 0, "origlen": 0.00037942874492637174, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206862628750002, 36.205321837249997 ], [ -115.206865596365589, 36.2055176999 ] ] } } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads/AOI_2_Vegas_img998.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 14551, "road_type": "6", "origarea": 0, "origlen": 0.00049389937399452871, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206684889460007, 36.205745905839997 ], [ -115.206697012366575, 36.2055176999 ] ] } }, 6 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 20533, "road_type": "6", "origarea": 0, "origlen": 0.0010408884184865764, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206328045692999, 36.2055176999 ], [ -115.206326989779996, 36.205597450719999 ], [ -115.206325552560003, 36.205748358649998 ], [ -115.206684889460007, 36.205745905839997 ], [ -115.206746657530005, 36.205745484209999 ], [ -115.20685588613, 36.205732549250001 ], [ -115.206868377009997, 36.205701222450003 ] ] } }, 7 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 6855, "road_type": "6", "origarea": 0, "origlen": 0.0003657770008830565, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206082662669999, 36.205807284599999 ], [ -115.206064421108465, 36.2055176999 ] ] } }, 8 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 3159, "road_type": "6", "origarea": 0, "origlen": 0.00066300384855961809, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205835199980001, 36.205789679980001 ], [ -115.206082662669999, 36.205807284599999 ], [ -115.2060539183, 36.206221203479998 ] ] } }, 9 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 7118, "road_type": "6", "origarea": 0, "origlen": 0.00022039748941618257, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205820561460001, 36.206388029339998 ], [ -115.2057276, 36.20638710988981 ] ] } }, 10 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23338, "road_type": "2", "origarea": 0, "origlen": 0.007707182227590109, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205841853925165, 36.2055176999 ], [ -115.205835199980001, 36.205789679980001 ], [ -115.205820561460001, 36.206388029339998 ], [ -115.205804948809998, 36.207026196500003 ], [ -115.205801506829999, 36.207121800419998 ], [ -115.205770753660005, 36.208178309959997 ], [ -115.205756414700005, 36.208661422619997 ], [ -115.205754565410004, 36.208723729580001 ], [ -115.205752908509993, 36.208779554380001 ], [ -115.205745543462541, 36.209027699899998 ] ] } }, 11 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 11525, "road_type": "6", "origarea": 0, "origlen": 0.00033363173157808514, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206499350420003, 36.206400742859998 ], [ -115.206503767640001, 36.206563261440003 ], [ -115.206506642069996, 36.206734290420002 ] ] } }, 12 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 6034, "road_type": "6", "origarea": 0, "origlen": 0.00058532703742760449, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206600061260005, 36.206735727640002 ], [ -115.206784025209998, 36.206724229899997 ], [ -115.206748094749997, 36.206571884749998 ], [ -115.206503767640001, 36.206563261440003 ] ] } }, 13 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 1553, "road_type": "6", "origarea": 0, "origlen": 9.3430244905981405e-05, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206600061260005, 36.206735727640002 ], [ -115.206506642069996, 36.206734290420002 ] ] } }, 14 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 11568, "road_type": "6", "origarea": 0, "origlen": 0.00053389139947532878, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205801506829999, 36.207121800419998 ], [ -115.2057276, 36.207112837460897 ] ] } }, 15 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 18410, "road_type": "6", "origarea": 0, "origlen": 0.00024505463742583935, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206132067040002, 36.207150544779999 ], [ -115.20625135617, 36.207074372210002 ], [ -115.206354835889996, 36.207071497779999 ] ] } }, 16 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 6324, "road_type": "6", "origarea": 0, "origlen": 0.001380538531864999, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205801506829999, 36.207121800419998 ], [ -115.206132067040002, 36.207150544779999 ], [ -115.206175183590005, 36.20725258729 ], [ -115.206175546210005, 36.207327285989997 ], [ -115.206176620809998, 36.207548654260002 ], [ -115.206177518730001, 36.207998490329999 ], [ -115.20617790208, 36.208190535690001 ] ] } }, 17 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 2500, "road_type": "6", "origarea": 0, "origlen": 0.00099431062208854473, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206177518730001, 36.207998490329999 ], [ -115.205973973029998, 36.207939577650002 ], [ -115.205963912499996, 36.20753715651 ], [ -115.20598115912, 36.207354629789997 ], [ -115.206123443729993, 36.20733882039 ], [ -115.206175546210005, 36.207327285989997 ] ] } }, 18 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 1738, "road_type": "6", "origarea": 0, "origlen": 0.00076899127208045702, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207009991730004, 36.208215521409997 ], [ -115.206935472089995, 36.208097671659999 ], [ -115.206780252510001, 36.208087611140002 ], [ -115.206511492679994, 36.208089048349997 ], [ -115.20645112951, 36.208091922789997 ], [ -115.206419510710006, 36.208129290469998 ], [ -115.206350385380006, 36.208195714959999 ] ] } }, 19 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16055, "road_type": "3", "origarea": 0, "origlen": 0.00019575483428484384, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205770753660005, 36.208178309959997 ], [ -115.2057276, 36.208174682017969 ] ] } }, 20 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 3743, "road_type": "5", "origarea": 0, "origlen": 0.00029677761129642881, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206511519670002, 36.2086499933 ], [ -115.206524427649995, 36.208353496530002 ] ] } }, 21 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 20578, "road_type": "5", "origarea": 0, "origlen": 0.0010735084075971879, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206274351659999, 36.208785380640002 ], [ -115.205871391640002, 36.208762955259999 ], [ -115.205754565410004, 36.208723729580001 ], [ -115.205924540409995, 36.20869302266 ], [ -115.206298111159995, 36.208710142210002 ] ] } }, 22 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 22278, "road_type": "3", "origarea": 0, "origlen": 0.0094399419178437683, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205770753660005, 36.208178309959997 ], [ -115.20617790208, 36.208190535690001 ], [ -115.206350385380006, 36.208195714959999 ], [ -115.207009991730004, 36.208215521409997 ], [ -115.207209800699999, 36.208221521200002 ], [ -115.207698096070004, 36.208236183579999 ], [ -115.207823751190006, 36.208237932259998 ], [ -115.208181001430006, 36.208241932450001 ], [ -115.208220386639994, 36.208243452040001 ], [ -115.208310312519998, 36.208244703490003 ], [ -115.2092376, 36.208257608088807 ] ] } }, 23 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 13431, "road_type": "5", "origarea": 0, "origlen": 0.0020856722657597651, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208220386639994, 36.208243452040001 ], [ -115.208228968590007, 36.208487876440003 ], [ -115.208398560350005, 36.208726454679997 ], [ -115.2092376, 36.208745567202669 ] ] } }, 24 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 20425, "road_type": "5", "origarea": 0, "origlen": 0.00038987734471466746, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207365918980003, 36.208693398660003 ], [ -115.207441372939996, 36.208571953709999 ], [ -115.207326395479996, 36.208504404449997 ], [ -115.207324958260003, 36.208390864199998 ] ] } }, 25 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 15898, "road_type": "5", "origarea": 0, "origlen": 0.00039932887859343245, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207441372939996, 36.208571953709999 ], [ -115.207477303399997, 36.208520213850001 ], [ -115.20781361249, 36.208524525510001 ] ] } }, 26 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19771, "road_type": "5", "origarea": 0, "origlen": 0.0036234200357969236, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208382978700769, 36.209027699899998 ], [ -115.208398560350005, 36.208726454679997 ] ] } }, 27 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 8959, "road_type": "5", "origarea": 0, "origlen": 0.0018073215584214675, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207823751190006, 36.208237932259998 ], [ -115.207927152739998, 36.208430387710003 ], [ -115.20794008771, 36.208723580250002 ], [ -115.207928635501119, 36.209027699899998 ] ] } }, 28 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 22979, "road_type": "5", "origarea": 0, "origlen": 0.0040478589382302093, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -115.206308844899993, 36.208676152039999 ], [ -115.206298111159995, 36.208710142210002 ], [ -115.206274351659999, 36.208785380640002 ], [ -115.206273208643282, 36.209027699899998 ] ], [ [ -115.207456096589169, 36.209027699899998 ], [ -115.207456463740002, 36.208785380640002 ], [ -115.207409754140002, 36.208738671040003 ], [ -115.207365918980003, 36.208693398660003 ], [ -115.20725597178, 36.208656030989999 ], [ -115.207064103129994, 36.208656030989999 ], [ -115.206774503640005, 36.20864884489 ], [ -115.206511519670002, 36.2086499933 ], [ -115.206445380640005, 36.20865028211 ], [ -115.206308844899993, 36.208676152039999 ] ] ] } }, 29 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 3184, "road_type": "6", "origarea": 0, "origlen": 0.00037942874492637174, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206865596365589, 36.2055176999 ], [ -115.206868377009997, 36.205701222450003 ] ] } }, 30 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "2", "road_id": 5412, "road_type": "6", "origarea": 0, "origlen": 0.006694104839982804, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205820561460001, 36.206388029339998 ], [ -115.206499350420003, 36.206400742859998 ], [ -115.207207524379996, 36.206414006750002 ], [ -115.2092376, 36.206437521137204 ] ] } }, 31 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19440, "road_type": "6", "origarea": 0, "origlen": 0.0015171735448043888, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207493133300005, 36.206930930939997 ], [ -115.205976290530003, 36.206899251670002 ] ] } }, 32 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 22065, "road_type": "5", "origarea": 0, "origlen": 0.0038453508522283656, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2092376, 36.207780792796591 ], [ -115.208816901099993, 36.20777362394 ], [ -115.208257491690006, 36.20776361851 ], [ -115.20749103048, 36.207751030650002 ], [ -115.207493133300005, 36.206930930939997 ], [ -115.207493827779999, 36.20666008221 ], [ -115.206928772439994, 36.206640501080003 ] ] } }, 33 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 2759, "road_type": "5", "origarea": 0, "origlen": 0.0024455590705785195, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208816901099993, 36.20777362394 ], [ -115.208844925459999, 36.20667966333 ], [ -115.207493827779999, 36.20666008221 ] ] } }, 34 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 12080, "road_type": "6", "origarea": 0, "origlen": 0.0024699845708800812, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207209800699999, 36.208221521200002 ], [ -115.207215572639996, 36.208007355079999 ], [ -115.20721716688, 36.207948200959997 ], [ -115.207244474030006, 36.207471044469997 ], [ -115.207240162380003, 36.207235340670003 ], [ -115.207176924769996, 36.207167791400003 ], [ -115.207092128889997, 36.207170665840003 ], [ -115.207028891280004, 36.207243963979998 ], [ -115.207036077370006, 36.207463858380002 ], [ -115.207004458569997, 36.208008564129997 ], [ -115.20680899688, 36.208020061870002 ], [ -115.206561795330003, 36.208014313 ] ] } }, 35 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 14918, "road_type": "5", "origarea": 0, "origlen": 0.00050451290905131267, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208220386639994, 36.208243452040001 ], [ -115.208281268769994, 36.208156639679999 ], [ -115.208288262029996, 36.207848936280001 ], [ -115.208257491690006, 36.20776361851 ] ] } }, 36 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 10454, "road_type": "5", "origarea": 0, "origlen": 0.00049815122561221083, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208220386639994, 36.208243452040001 ], [ -115.208197349659997, 36.208148247769998 ], [ -115.208202944269999, 36.20785173358 ], [ -115.208257491690006, 36.20776361851 ] ] } }, 37 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19178, "road_type": "6", "origarea": 0, "origlen": 0.00021111753208355195, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207215572639996, 36.208007355079999 ], [ -115.207004458569997, 36.208008564129997 ] ] } } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_json/AOI_2_Vegas_Train/spacenetroads/AOI_2_Vegas_img999.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | "features": [ 5 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 13350, "road_type": "6", "origarea": 0, "origlen": 0.0005869565527838942, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206059667169995, 36.211398063910003 ], [ -115.206056792729996, 36.211264402600001 ], [ -115.206185290990007, 36.211187775200003 ], [ -115.206213449529997, 36.21117098341 ], [ -115.206441014069995, 36.211024069339999 ] ] } }, 6 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 8877, "road_type": "6", "origarea": 0, "origlen": 0.00034349517999032741, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206056792729996, 36.211264402600001 ], [ -115.2057276, 36.211264402600001 ] ] } }, 7 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 13817, "road_type": "6", "origarea": 0, "origlen": 0.0032179726087205548, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206185290990007, 36.211187775200003 ], [ -115.2060539183, 36.211040196539997 ], [ -115.205844084419994, 36.211110620239999 ], [ -115.205737730270002, 36.211097685280002 ], [ -115.2057276, 36.211089363986368 ] ] } }, 8 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 1190, "road_type": "6", "origarea": 0, "origlen": 0.00035635907110319163, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206258003299993, 36.211691256450003 ], [ -115.206151649139997, 36.211570530110002 ], [ -115.206107095380005, 36.211488608659998 ], [ -115.206059667169995, 36.211398063910003 ] ] } }, 9 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 17857, "road_type": "6", "origarea": 0, "origlen": 0.0005675780404766303, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206059667169995, 36.211398063910003 ], [ -115.206051043860001, 36.21170419141 ], [ -115.206186142380005, 36.21188815536 ], [ -115.206213449529997, 36.211869471519996 ] ] } }, 10 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 12437, "road_type": "6", "origarea": 0, "origlen": 0.00014786595121784427, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206395976259998, 36.211744433530001 ], [ -115.206258003299993, 36.211691256450003 ] ] } }, 11 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 18327, "road_type": "6", "origarea": 0, "origlen": 0.00080758245186521868, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206697792110006, 36.212149729099998 ], [ -115.206395976259998, 36.211744433530001 ], [ -115.206651801120003, 36.211583465069999 ] ] } }, 12 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 1661, "road_type": "6", "origarea": 0, "origlen": 0.0045463756337569064, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206048206516513, 36.212537699899997 ], [ -115.20661155901, 36.212198594519997 ], [ -115.206697792110006, 36.212149729099998 ], [ -115.206982361339996, 36.212379684029997 ], [ -115.207232437330006, 36.212235962199998 ], [ -115.206651801120003, 36.211583465069999 ] ] } }, 13 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 6126, "road_type": "6", "origarea": 0, "origlen": 0.0016543633586534696, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.20725571065023, 36.212537699899997 ], [ -115.207232437330006, 36.212235962199998 ] ] } }, 14 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23338, "road_type": "2", "origarea": 0, "origlen": 0.007707182227590109, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205745543462541, 36.209027699899998 ], [ -115.205742121759997, 36.209142984990002 ], [ -115.205730221430002, 36.209543934609997 ], [ -115.205790578160006, 36.209860088939998 ], [ -115.206061426600002, 36.210338720919999 ] ] } }, 15 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 16380, "road_type": "2", "origarea": 0, "origlen": 0.00064012180563798211, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.205742121759997, 36.209142984990002 ], [ -115.2057276, 36.209191971853379 ] ] } }, 16 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 6961, "road_type": "5", "origarea": 0, "origlen": 0.00034529525499473368, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206373519720003, 36.209614655609997 ], [ -115.206346212580002, 36.209958869399998 ] ] } }, 17 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 23288, "road_type": "2", "origarea": 0, "origlen": 0.057172473190859177, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2057276, 36.210243079583051 ], [ -115.206441014069995, 36.211024069339999 ], [ -115.20709838997, 36.211743712919997 ], [ -115.207823676673712, 36.212537699899997 ] ] } }, 18 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 22813, "road_type": "2", "origarea": 0, "origlen": 0.057183527289992216, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208072157129422, 36.212537699899997 ], [ -115.207966676240005, 36.212421543010002 ], [ -115.207546834799999, 36.211961467409999 ], [ -115.207450409269995, 36.211855492289999 ], [ -115.207405750969997, 36.211806411209999 ], [ -115.206556320239997, 36.210879029940003 ], [ -115.206061426600002, 36.210338720919999 ], [ -115.2057276, 36.209974259726486 ] ] } }, 19 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19771, "road_type": "5", "origarea": 0, "origlen": 0.0036234200357969236, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.2092376, 36.209710059004472 ], [ -115.209134416140003, 36.209712386459998 ], [ -115.208395685919996, 36.209675018779997 ], [ -115.208378575899999, 36.20964792793 ], [ -115.208361192680002, 36.209620404490003 ], [ -115.208364067109997, 36.20939332399 ], [ -115.208382978700769, 36.209027699899998 ] ] } }, 20 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 8959, "road_type": "5", "origarea": 0, "origlen": 0.0018073215584214675, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207928635501119, 36.209027699899998 ], [ -115.207927152739998, 36.209067075429999 ], [ -115.207915654990003, 36.209547106350001 ], [ -115.207908468900001, 36.210018513960001 ] ] } }, 21 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 22979, "road_type": "5", "origarea": 0, "origlen": 0.0040478589382302093, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206273208643282, 36.209027699899998 ], [ -115.206272914440007, 36.209090070919999 ], [ -115.206291598280004, 36.209479557089999 ], [ -115.206373519720003, 36.209614655609997 ], [ -115.206521553209996, 36.20965777216 ], [ -115.206732824309995, 36.209675018779997 ], [ -115.207061947309995, 36.209677893219997 ], [ -115.207303399980006, 36.20965920938 ], [ -115.207389633079998, 36.209626871970002 ], [ -115.207416940230004, 36.209583036810002 ], [ -115.207447121819996, 36.209519799200002 ], [ -115.207455745130005, 36.209259662679997 ], [ -115.207456096589169, 36.209027699899998 ] ] } }, 22 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 8191, "road_type": "5", "origarea": 0, "origlen": 0.00031958040464690043, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208378575899999, 36.20964792793 ], [ -115.208228968590007, 36.209690828180001 ], [ -115.208065125700003, 36.209696577060001 ] ] } }, 23 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 4509, "road_type": "5", "origarea": 0, "origlen": 0.00029084424976142368, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208378575899999, 36.20964792793 ], [ -115.20832382499999, 36.209739693609997 ], [ -115.208326699439993, 36.20992365755 ] ] } }, 24 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 10764, "road_type": "5", "origarea": 0, "origlen": 0.00069521086173955767, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207389633079998, 36.209626871970002 ], [ -115.207480177839997, 36.209688672360002 ], [ -115.207583727080006, 36.209694655200003 ], [ -115.207803551959998, 36.209707356190002 ], [ -115.207796365869996, 36.20996892993 ] ] } }, 25 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 11416, "road_type": "5", "origarea": 0, "origlen": 0.00052459258148612601, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207796365869996, 36.20996892993 ], [ -115.207714444429996, 36.210000548730001 ], [ -115.207579345900001, 36.209996237079999 ], [ -115.207583727080006, 36.209694655200003 ] ] } }, 26 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 19849, "road_type": "6", "origarea": 0, "origlen": 0.0015158635644920973, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.206556320239997, 36.210879029940003 ], [ -115.206864478729997, 36.210722605839997 ], [ -115.206902416069994, 36.210703348499997 ], [ -115.207204231920002, 36.210519384549997 ], [ -115.207299088330004, 36.210571124410002 ], [ -115.207425563539999, 36.21077233498 ], [ -115.207051886779993, 36.210982168850002 ] ] } }, 27 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 2980, "road_type": "6", "origarea": 0, "origlen": 0.00032014798666545914, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207051886779993, 36.210982168850002 ], [ -115.206864478729997, 36.210722605839997 ] ] } }, 28 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 17935, "road_type": "5", "origarea": 0, "origlen": 0.0063625393226948972, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -115.208573900990004, 36.211684250010002 ], [ -115.208588273169994, 36.212014810230002 ], [ -115.20898207099999, 36.212009061350003 ], [ -115.2092376, 36.212020588974262 ] ], [ [ -115.2092376, 36.210145118105586 ], [ -115.208976322119995, 36.21013205421 ], [ -115.208458923519999, 36.21013205421 ], [ -115.207944399360002, 36.210140677520002 ], [ -115.207783430909998, 36.210221161749999 ], [ -115.207677076750002, 36.210324641470002 ], [ -115.207559224850002, 36.210499982100004 ], [ -115.207679951190002, 36.210637955060001 ], [ -115.207817924150007, 36.210750058089999 ] ] ] } }, 29 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 3083, "road_type": "5", "origarea": 0, "origlen": 0.0031708581412994768, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.20793721327, 36.211700778020003 ], [ -115.207886910629995, 36.211623168229998 ], [ -115.207862477920003, 36.211461481169998 ], [ -115.207685700059997, 36.210957017529999 ], [ -115.207691448930007, 36.210885156620002 ], [ -115.207817924150007, 36.210750058089999 ], [ -115.207881161749995, 36.210764430280001 ], [ -115.208016260280004, 36.210819044570002 ], [ -115.208211721970002, 36.210853537810003 ], [ -115.20855952881, 36.210833416760003 ], [ -115.208639448110006, 36.210821121480002 ], [ -115.208858470219994, 36.21078742577 ], [ -115.20909417403, 36.210775928019999 ], [ -115.2092376, 36.210790093552617 ] ] } }, 30 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "2", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 1265, "road_type": "5", "origarea": 0, "origlen": 0.0015068870318277173, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.20793721327, 36.211700778020003 ], [ -115.208300829509994, 36.211687124450002 ], [ -115.208573900990004, 36.211684250010002 ], [ -115.208599770920003, 36.211448546200003 ], [ -115.208645761910006, 36.211253084509998 ], [ -115.208639448110006, 36.210821121480002 ] ] } }, 31 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 10190, "road_type": "5", "origarea": 0, "origlen": 0.000494477407104203, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207450409269995, 36.211855492289999 ], [ -115.207886910629995, 36.211623168229998 ] ] } }, 32 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 5743, "road_type": "5", "origarea": 0, "origlen": 0.00047167595612748948, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207546834799999, 36.211961467409999 ], [ -115.207827984679994, 36.211749643440001 ], [ -115.20793721327, 36.211700778020003 ] ] } }, 33 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 7979, "road_type": "5", "origarea": 0, "origlen": 0.00051074599234496375, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207546834799999, 36.211961467409999 ], [ -115.207411307320001, 36.211937195620003 ], [ -115.207295219220001, 36.211829499419999 ], [ -115.20709838997, 36.211743712919997 ] ] } }, 34 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 10884, "road_type": "6", "origarea": 0, "origlen": 0.00086678714037977296, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.208769247822971, 36.212537699899997 ], [ -115.208567433509998, 36.212387049770001 ], [ -115.208484074840001, 36.2122950678 ], [ -115.208285738710003, 36.212277821180002 ], [ -115.208228249979996, 36.2122950678 ] ] } }, 35 | { "type": "Feature", "properties": { "bridge_typ": "2", "heading": "0", "lane_numbe": "1", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 4114, "road_type": "6", "origarea": 0, "origlen": 0.0012093760194218514, "partialDec": 1, "truncated": 0 }, "geometry": { "type": "LineString", "coordinates": [ [ -115.207966676240005, 36.212421543010002 ], [ -115.208228249979996, 36.2122950678 ], [ -115.208328855260007, 36.212404296389998 ], [ -115.208456355964259, 36.212537699899997 ] ] } } 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_pkl/ground_truth_randomized/AOI_2_Vegas_img0.geojson: -------------------------------------------------------------------------------- 1 | {"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}}, "features": [{"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 5508, "road_type": "6", "origarea": 0, "origlen": 0.001291492260434812, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16787859711, 36.23856585725], [-115.16787983205, 36.23727436558]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 1033, "road_type": "6", "origarea": 0, "origlen": 0.0013406269983547775, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16764365753, 36.23861469356], [-115.16764740524, 36.2372740718]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 13188, "road_type": "6", "origarea": 0, "origlen": 0.001365930639805964, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16723113863, 36.23863998129], [-115.16723889985, 36.237274072700004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 17696, "road_type": "6", "origarea": 0, "origlen": 0.0013698783362461084, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16745996601, 36.238643869120004], [-115.16744502643, 36.23727407225]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 5030, "road_type": "6", "origarea": 0, "origlen": 0.0008627885023188459, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17052413656, 36.23784697546], [-115.17052006049, 36.23818847794], [-115.17034391595, 36.23818696653], [-115.17036265473, 36.23784236497]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 17210, "road_type": "6", "origarea": 0, "origlen": 0.00015780425051427935, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17034391595, 36.23818696653], [-115.17036265473, 36.23821719467], [-115.17036078918, 36.2383394195]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 18462, "road_type": "6", "origarea": 0, "origlen": 0.0002635383374282831, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17054067315, 36.23860260237], [-115.17054253649, 36.23833907062]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 22930, "road_type": "6", "origarea": 0, "origlen": 0.004275447345186638, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23833892845074], [-115.17054253649, 36.23833907062], [-115.17036078918, 36.2383394195], [-115.17032142458, 36.23833949506], [-115.17014529442, 36.238339833160005], [-115.1700965694, 36.23833992669], [-115.16991856535999, 36.23834026838], [-115.16970118781, 36.23834068565], [-115.16956063436, 36.23834095545], [-115.16946975179, 36.2383411299], [-115.16933083207999, 36.23838929994], [-115.16928292669, 36.238405911], [-115.16906874186, 36.23848017895], [-115.16886702848, 36.23847509475], [-115.16883871371999, 36.238474381070006], [-115.16870895726, 36.238471110540004], [-115.16867466018999, 36.238472502380006], [-115.16845692065, 36.23846506494], [-115.16825866933, 36.23848938404], [-115.16811306401, 36.23849529296], [-115.16805267046, 36.23851346879], [-115.16787859711, 36.23856585725], [-115.16764365753, 36.23861469356], [-115.16761086466, 36.238646432930004], [-115.16745996601, 36.238643869120004], [-115.16742861991, 36.238643336550005], [-115.16723113863, 36.23863998129], [-115.1671066, 36.23863786535267]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 13946, "road_type": "6", "origarea": 0, "origlen": 0.00044339609846511533, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16870802032, 36.238655501320004], [-115.16826466695, 36.23864934588]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 12420, "road_type": "6", "origarea": 0, "origlen": 0.0003149839271086584, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16805577753, 36.23866955321], [-115.16775869832, 36.23877423758]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 21304, "road_type": "6", "origarea": 0, "origlen": 0.0008800450367042517, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17032142458, 36.23833949506], [-115.17032340408, 36.23861019454], [-115.17032450328, 36.23876051103], [-115.17032705104, 36.2391089194], [-115.17043760985, 36.23911194218]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 2553, "road_type": "6", "origarea": 0, "origlen": 0.000780091066167836, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16955313937, 36.239121010510004], [-115.16956063436, 36.23834095545]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 16145, "road_type": "6", "origarea": 0, "origlen": 0.0007684271504452178, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17009674723, 36.23873295624], [-115.17032450328, 36.23876051103], [-115.1706166, 36.238763632470196]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 5112, "road_type": "6", "origarea": 0, "origlen": 0.001305168823400494, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16933083207999, 36.23838929994], [-115.16933951726, 36.239121010510004], [-115.16955313937, 36.239121010510004], [-115.16991292397, 36.239121010510004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 3051, "road_type": "6", "origarea": 0, "origlen": 0.00030164838887360835, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16775869832, 36.23877423758], [-115.16784433014, 36.238793501260005], [-115.16805818675, 36.23879058176]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 14026, "road_type": "6", "origarea": 0, "origlen": 0.0006129963656151067, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16828163699, 36.239101949980004], [-115.16826466695, 36.23864934588], [-115.16825866933, 36.23848938404]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 22420, "road_type": "6", "origarea": 0, "origlen": 0.0012124029364645244, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16805267046, 36.23851346879], [-115.16805577753, 36.23866955321], [-115.16805818675, 36.23879058176], [-115.16806434318, 36.239099851060004], [-115.16828163699, 36.239101949980004], [-115.16869021848, 36.23910589662]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 21939, "road_type": "6", "origarea": 0, "origlen": 0.0010082309632116113, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1700970256, 36.239348157550005], [-115.17009674723, 36.23873295624], [-115.1700965694, 36.23833992669]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 23186, "road_type": "6", "origarea": 0, "origlen": 0.0012406439557037167, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23860561716786], [-115.17054067315, 36.23860260237], [-115.17032340408, 36.23861019454]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 16924, "road_type": "6", "origarea": 0, "origlen": 0.0015882158240583062, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16742861991, 36.238643336550005], [-115.16742019708, 36.23912649903], [-115.1671066, 36.23912094863925]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 9558, "road_type": "6", "origarea": 0, "origlen": 0.0009226036384111043, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16882886545, 36.239361979710004], [-115.1688682369, 36.2392570354], [-115.16887198466, 36.238525520980005], [-115.16886702848, 36.23847509475], [-115.16883871371999, 36.238474381070006]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 7014, "road_type": "6", "origarea": 0, "origlen": 0.0009114405892145717, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16882886545, 36.239361979710004], [-115.16877829075, 36.23926005818], [-115.16879328178, 36.23855574899], [-115.16883871371999, 36.238474381070006]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 11468, "road_type": "6", "origarea": 0, "origlen": 0.0007221691991154832, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16760718999, 36.239368592780004], [-115.16761086466, 36.238646432930004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "3", "one_way_ty": "2", "paved": "1", "road_id": 23285, "road_type": "2", "origarea": 0, "origlen": 0.0338087644919232, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 45, "speed_m/s": 20.1168}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23936036332363], [-115.1700970256, 36.239348157550005], [-115.16882886545, 36.239361979710004], [-115.16760718999, 36.239368592780004], [-115.16755213665, 36.239368890790004], [-115.1671066, 36.23935710883922]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 20520, "road_type": "6", "origarea": 0, "origlen": 0.00011540388200353422, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16882886545, 36.239361979710004], [-115.16883094189, 36.23947736491]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "3", "one_way_ty": "2", "paved": "1", "road_id": 21419, "road_type": "2", "origarea": 0, "origlen": 0.03379707161960037, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 45, "speed_m/s": 20.1168}, "geometry": {"type": "LineString", "coordinates": [[-115.1671066, 36.23947325627269], [-115.16883094189, 36.23947736491], [-115.1706166, 36.239481619644515]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 19314, "road_type": "6", "origarea": 0, "origlen": 0.004248090590008134, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.237348226725075], [-115.17056309554, 36.23734636961], [-115.17034756454, 36.23734911809], [-115.17013780188, 36.237351793020004], [-115.1700693928, 36.237352665390006], [-115.16991519617, 36.23733913278], [-115.16970700985, 36.23732086191], [-115.16948626287, 36.237301488700005], [-115.16934607583, 36.23728918559], [-115.16927209274, 36.23728843781], [-115.16908101066, 36.237286506450005], [-115.16887292545, 36.237284403240004], [-115.16867989935, 36.237282452230005], [-115.16847565521999, 36.23728038784], [-115.16828822639, 36.23727849341], [-115.1680672374, 36.23727625977], [-115.16787983205, 36.23727436558], [-115.16785072107, 36.23727407134], [-115.16764740524, 36.2372740718], [-115.16744502643, 36.23727407225], [-115.16723889985, 36.237274072700004], [-115.1671066, 36.23727407299418]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 9476, "road_type": "6", "origarea": 0, "origlen": 0.0012025855766966036, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23784841062], [-115.17057440296, 36.23784841062], [-115.17056309554, 36.23734636961]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 11946, "road_type": "6", "origarea": 0, "origlen": 0.0010402550636490428, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16946975179, 36.2383411299], [-115.16948005812, 36.23825195701], [-115.16948626287, 36.237301488700005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 16429, "road_type": "6", "origarea": 0, "origlen": 0.0010198403584978884, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16970118781, 36.23834068565], [-115.16970700985, 36.23732086191]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 20951, "road_type": "6", "origarea": 0, "origlen": 0.0010011412692657881, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16991856535999, 36.23834026838], [-115.16991519617, 36.23733913278]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 554, "road_type": "6", "origarea": 0, "origlen": 0.00098806854843625, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17013780188, 36.237351793020004], [-115.17014529442, 36.238339833160005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 7490, "road_type": "6", "origarea": 0, "origlen": 0.001117585196116217, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16928292669, 36.238405911], [-115.16927393152, 36.23803733709], [-115.16927209274, 36.23728843781]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 10711, "road_type": "6", "origarea": 0, "origlen": 0.0011848252256666085, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16845692065, 36.23846506494], [-115.16847565521999, 36.23728038784]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 15187, "road_type": "6", "origarea": 0, "origlen": 0.001190061682567157, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16867466018999, 36.238472502380006], [-115.16867989935, 36.237282452230005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 19719, "road_type": "6", "origarea": 0, "origlen": 0.0011907061124536073, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16886702848, 36.23847509475], [-115.16887292545, 36.237284403240004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 3026, "road_type": "6", "origarea": 0, "origlen": 0.0011937355488949356, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16906874186, 36.23848017895], [-115.16908101066, 36.237286506450005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 9954, "road_type": "6", "origarea": 0, "origlen": 0.0012372947728498268, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16805267046, 36.23851346879], [-115.1680672374, 36.23727625977]]}}]} 2 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_pkl/proposal/RGB-PanSharpen_AOI_2_Vegas_img0.gpickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/gt_json_prop_pkl/proposal/RGB-PanSharpen_AOI_2_Vegas_img0.gpickle -------------------------------------------------------------------------------- /apls/data/gt_json_prop_wkt/ground_truth_randomized/AOI_2_Vegas_img0.geojson: -------------------------------------------------------------------------------- 1 | {"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}}, "features": [{"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 5508, "road_type": "6", "origarea": 0, "origlen": 0.001291492260434812, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16787859711, 36.23856585725], [-115.16787983205, 36.23727436558]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 1033, "road_type": "6", "origarea": 0, "origlen": 0.0013406269983547775, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16764365753, 36.23861469356], [-115.16764740524, 36.2372740718]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 13188, "road_type": "6", "origarea": 0, "origlen": 0.001365930639805964, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16723113863, 36.23863998129], [-115.16723889985, 36.237274072700004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 17696, "road_type": "6", "origarea": 0, "origlen": 0.0013698783362461084, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16745996601, 36.238643869120004], [-115.16744502643, 36.23727407225]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 5030, "road_type": "6", "origarea": 0, "origlen": 0.0008627885023188459, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17052413656, 36.23784697546], [-115.17052006049, 36.23818847794], [-115.17034391595, 36.23818696653], [-115.17036265473, 36.23784236497]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 17210, "road_type": "6", "origarea": 0, "origlen": 0.00015780425051427935, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17034391595, 36.23818696653], [-115.17036265473, 36.23821719467], [-115.17036078918, 36.2383394195]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 18462, "road_type": "6", "origarea": 0, "origlen": 0.0002635383374282831, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17054067315, 36.23860260237], [-115.17054253649, 36.23833907062]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 22930, "road_type": "6", "origarea": 0, "origlen": 0.004275447345186638, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23833892845074], [-115.17054253649, 36.23833907062], [-115.17036078918, 36.2383394195], [-115.17032142458, 36.23833949506], [-115.17014529442, 36.238339833160005], [-115.1700965694, 36.23833992669], [-115.16991856535999, 36.23834026838], [-115.16970118781, 36.23834068565], [-115.16956063436, 36.23834095545], [-115.16946975179, 36.2383411299], [-115.16933083207999, 36.23838929994], [-115.16928292669, 36.238405911], [-115.16906874186, 36.23848017895], [-115.16886702848, 36.23847509475], [-115.16883871371999, 36.238474381070006], [-115.16870895726, 36.238471110540004], [-115.16867466018999, 36.238472502380006], [-115.16845692065, 36.23846506494], [-115.16825866933, 36.23848938404], [-115.16811306401, 36.23849529296], [-115.16805267046, 36.23851346879], [-115.16787859711, 36.23856585725], [-115.16764365753, 36.23861469356], [-115.16761086466, 36.238646432930004], [-115.16745996601, 36.238643869120004], [-115.16742861991, 36.238643336550005], [-115.16723113863, 36.23863998129], [-115.1671066, 36.23863786535267]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 13946, "road_type": "6", "origarea": 0, "origlen": 0.00044339609846511533, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16870802032, 36.238655501320004], [-115.16826466695, 36.23864934588]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 12420, "road_type": "6", "origarea": 0, "origlen": 0.0003149839271086584, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16805577753, 36.23866955321], [-115.16775869832, 36.23877423758]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 21304, "road_type": "6", "origarea": 0, "origlen": 0.0008800450367042517, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17032142458, 36.23833949506], [-115.17032340408, 36.23861019454], [-115.17032450328, 36.23876051103], [-115.17032705104, 36.2391089194], [-115.17043760985, 36.23911194218]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 2553, "road_type": "6", "origarea": 0, "origlen": 0.000780091066167836, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16955313937, 36.239121010510004], [-115.16956063436, 36.23834095545]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 16145, "road_type": "6", "origarea": 0, "origlen": 0.0007684271504452178, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17009674723, 36.23873295624], [-115.17032450328, 36.23876051103], [-115.1706166, 36.238763632470196]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 5112, "road_type": "6", "origarea": 0, "origlen": 0.001305168823400494, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16933083207999, 36.23838929994], [-115.16933951726, 36.239121010510004], [-115.16955313937, 36.239121010510004], [-115.16991292397, 36.239121010510004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 3051, "road_type": "6", "origarea": 0, "origlen": 0.00030164838887360835, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16775869832, 36.23877423758], [-115.16784433014, 36.238793501260005], [-115.16805818675, 36.23879058176]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 14026, "road_type": "6", "origarea": 0, "origlen": 0.0006129963656151067, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16828163699, 36.239101949980004], [-115.16826466695, 36.23864934588], [-115.16825866933, 36.23848938404]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 22420, "road_type": "6", "origarea": 0, "origlen": 0.0012124029364645244, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16805267046, 36.23851346879], [-115.16805577753, 36.23866955321], [-115.16805818675, 36.23879058176], [-115.16806434318, 36.239099851060004], [-115.16828163699, 36.239101949980004], [-115.16869021848, 36.23910589662]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 21939, "road_type": "6", "origarea": 0, "origlen": 0.0010082309632116113, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1700970256, 36.239348157550005], [-115.17009674723, 36.23873295624], [-115.1700965694, 36.23833992669]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 23186, "road_type": "6", "origarea": 0, "origlen": 0.0012406439557037167, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23860561716786], [-115.17054067315, 36.23860260237], [-115.17032340408, 36.23861019454]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 16924, "road_type": "6", "origarea": 0, "origlen": 0.0015882158240583062, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16742861991, 36.238643336550005], [-115.16742019708, 36.23912649903], [-115.1671066, 36.23912094863925]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 9558, "road_type": "6", "origarea": 0, "origlen": 0.0009226036384111043, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16882886545, 36.239361979710004], [-115.1688682369, 36.2392570354], [-115.16887198466, 36.238525520980005], [-115.16886702848, 36.23847509475], [-115.16883871371999, 36.238474381070006]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 7014, "road_type": "6", "origarea": 0, "origlen": 0.0009114405892145717, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16882886545, 36.239361979710004], [-115.16877829075, 36.23926005818], [-115.16879328178, 36.23855574899], [-115.16883871371999, 36.238474381070006]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 11468, "road_type": "6", "origarea": 0, "origlen": 0.0007221691991154832, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16760718999, 36.239368592780004], [-115.16761086466, 36.238646432930004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "3", "one_way_ty": "2", "paved": "1", "road_id": 23285, "road_type": "2", "origarea": 0, "origlen": 0.0338087644919232, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 45, "speed_m/s": 20.1168}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23936036332363], [-115.1700970256, 36.239348157550005], [-115.16882886545, 36.239361979710004], [-115.16760718999, 36.239368592780004], [-115.16755213665, 36.239368890790004], [-115.1671066, 36.23935710883922]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "2", "one_way_ty": "2", "paved": "1", "road_id": 20520, "road_type": "6", "origarea": 0, "origlen": 0.00011540388200353422, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16882886545, 36.239361979710004], [-115.16883094189, 36.23947736491]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "3", "one_way_ty": "2", "paved": "1", "road_id": 21419, "road_type": "2", "origarea": 0, "origlen": 0.03379707161960037, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 45, "speed_m/s": 20.1168}, "geometry": {"type": "LineString", "coordinates": [[-115.1671066, 36.23947325627269], [-115.16883094189, 36.23947736491], [-115.1706166, 36.239481619644515]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 19314, "road_type": "6", "origarea": 0, "origlen": 0.004248090590008134, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.237348226725075], [-115.17056309554, 36.23734636961], [-115.17034756454, 36.23734911809], [-115.17013780188, 36.237351793020004], [-115.1700693928, 36.237352665390006], [-115.16991519617, 36.23733913278], [-115.16970700985, 36.23732086191], [-115.16948626287, 36.237301488700005], [-115.16934607583, 36.23728918559], [-115.16927209274, 36.23728843781], [-115.16908101066, 36.237286506450005], [-115.16887292545, 36.237284403240004], [-115.16867989935, 36.237282452230005], [-115.16847565521999, 36.23728038784], [-115.16828822639, 36.23727849341], [-115.1680672374, 36.23727625977], [-115.16787983205, 36.23727436558], [-115.16785072107, 36.23727407134], [-115.16764740524, 36.2372740718], [-115.16744502643, 36.23727407225], [-115.16723889985, 36.237274072700004], [-115.1671066, 36.23727407299418]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 9476, "road_type": "6", "origarea": 0, "origlen": 0.0012025855766966036, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.1706166, 36.23784841062], [-115.17057440296, 36.23784841062], [-115.17056309554, 36.23734636961]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 11946, "road_type": "6", "origarea": 0, "origlen": 0.0010402550636490428, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16946975179, 36.2383411299], [-115.16948005812, 36.23825195701], [-115.16948626287, 36.237301488700005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 16429, "road_type": "6", "origarea": 0, "origlen": 0.0010198403584978884, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16970118781, 36.23834068565], [-115.16970700985, 36.23732086191]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 20951, "road_type": "6", "origarea": 0, "origlen": 0.0010011412692657881, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16991856535999, 36.23834026838], [-115.16991519617, 36.23733913278]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 554, "road_type": "6", "origarea": 0, "origlen": 0.00098806854843625, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.17013780188, 36.237351793020004], [-115.17014529442, 36.238339833160005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 7490, "road_type": "6", "origarea": 0, "origlen": 0.001117585196116217, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16928292669, 36.238405911], [-115.16927393152, 36.23803733709], [-115.16927209274, 36.23728843781]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 10711, "road_type": "6", "origarea": 0, "origlen": 0.0011848252256666085, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16845692065, 36.23846506494], [-115.16847565521999, 36.23728038784]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 15187, "road_type": "6", "origarea": 0, "origlen": 0.001190061682567157, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16867466018999, 36.238472502380006], [-115.16867989935, 36.237282452230005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 19719, "road_type": "6", "origarea": 0, "origlen": 0.0011907061124536073, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16886702848, 36.23847509475], [-115.16887292545, 36.237284403240004]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 3026, "road_type": "6", "origarea": 0, "origlen": 0.0011937355488949356, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16906874186, 36.23848017895], [-115.16908101066, 36.237286506450005]]}}, {"type": "Feature", "properties": {"heading": "0", "lane_number": "1", "one_way_ty": "2", "paved": "1", "road_id": 9954, "road_type": "6", "origarea": 0, "origlen": 0.0012372947728498268, "partialDec": 1, "truncated": 0, "bridge_type": "2", "speed_mph": 20, "speed_m/s": 8.9408}, "geometry": {"type": "LineString", "coordinates": [[-115.16805267046, 36.23851346879], [-115.1680672374, 36.23727625977]]}}]} 2 | -------------------------------------------------------------------------------- /apls/data/gt_json_prop_wkt/proposal/sn3_sample_submission_albu.csv: -------------------------------------------------------------------------------- 1 | ImageId,WKT_Pix 2 | AOI_2_Vegas_img0,"LINESTRING (3.0 405.0, 125.0 409.0, 658.0 409.0, 707.0 408.0, 737.0 413.0, 1043.0 409.0, 1296.0 410.0)" 3 | AOI_2_Vegas_img0,"LINESTRING (658.0 409.0, 657.0 470.0)" 4 | AOI_2_Vegas_img0,"LINESTRING (2.0 462.0, 189.0 470.0)" 5 | AOI_2_Vegas_img0,"LINESTRING (1296.0 468.0, 1113.0 469.0)" 6 | AOI_2_Vegas_img0,"LINESTRING (189.0 470.0, 335.0 465.0, 657.0 470.0)" 7 | AOI_2_Vegas_img0,"LINESTRING (657.0 470.0, 661.0 476.0)" 8 | AOI_2_Vegas_img0,"LINESTRING (1113.0 469.0, 728.0 466.0, 673.0 468.0, 661.0 476.0)" 9 | AOI_2_Vegas_img0,"LINESTRING (1113.0 469.0, 1116.0 612.0, 1113.0 723.0)" 10 | AOI_2_Vegas_img0,"LINESTRING (189.0 470.0, 192.0 594.0, 187.0 687.0)" 11 | AOI_2_Vegas_img0,"LINESTRING (661.0 476.0, 661.0 496.0, 650.0 507.0, 648.0 533.0, 648.0 782.0)" 12 | AOI_2_Vegas_img0,"LINESTRING (661.0 496.0, 674.0 512.0, 675.0 555.0)" 13 | AOI_2_Vegas_img0,"LINESTRING (520.0 532.0, 584.0 533.0, 595.0 536.0, 606.0 544.0)" 14 | AOI_2_Vegas_img0,"LINESTRING (480.0 539.0, 467.0 549.0)" 15 | AOI_2_Vegas_img0,"LINESTRING (252.0 544.0, 335.0 542.0, 393.0 549.0, 467.0 549.0)" 16 | AOI_2_Vegas_img0,"LINESTRING (393.0 549.0, 391.0 733.0, 397.0 832.0)" 17 | AOI_2_Vegas_img0,"LINESTRING (467.0 549.0, 470.0 679.0)" 18 | AOI_2_Vegas_img0,"LINESTRING (99.0 550.0, 103.0 572.0, 104.0 682.0)" 19 | AOI_2_Vegas_img0,"LINESTRING (1297.0 552.0, 1191.0 551.0, 1186.0 556.0, 1181.0 723.0)" 20 | AOI_2_Vegas_img0,"LINESTRING (866.0 553.0, 806.0 552.0, 723.0 557.0, 675.0 555.0)" 21 | AOI_2_Vegas_img0,"LINESTRING (866.0 553.0, 921.0 552.0, 935.0 554.0, 943.0 559.0, 946.0 567.0, 946.0 669.0)" 22 | AOI_2_Vegas_img0,"LINESTRING (866.0 553.0, 863.0 719.0)" 23 | AOI_2_Vegas_img0,"LINESTRING (675.0 555.0, 673.0 780.0)" 24 | AOI_2_Vegas_img0,"LINESTRING (946.0 669.0, 1020.0 665.0, 1027.0 667.0, 1033.0 676.0, 1029.0 687.0, 1015.0 694.0, 979.0 705.0, 946.0 707.0)" 25 | AOI_2_Vegas_img0,"LINESTRING (946.0 669.0, 946.0 707.0)" 26 | AOI_2_Vegas_img0,"LINESTRING (470.0 679.0, 582.0 681.0)" 27 | AOI_2_Vegas_img0,"LINESTRING (470.0 679.0, 469.0 752.0, 480.0 810.0)" 28 | AOI_2_Vegas_img0,"LINESTRING (2.0 681.0, 104.0 682.0, 107.0 686.0, 187.0 687.0)" 29 | AOI_2_Vegas_img0,"LINESTRING (107.0 686.0, 103.0 737.0)" 30 | AOI_2_Vegas_img0,"LINESTRING (187.0 687.0, 187.0 834.0)" 31 | AOI_2_Vegas_img0,"LINESTRING (946.0 707.0, 947.0 765.0)" 32 | AOI_2_Vegas_img0,"LINESTRING (703.0 718.0, 863.0 719.0, 866.0 783.0)" 33 | AOI_2_Vegas_img0,"LINESTRING (1113.0 723.0, 1103.0 730.0)" 34 | AOI_2_Vegas_img0,"LINESTRING (1113.0 723.0, 1175.0 726.0)" 35 | AOI_2_Vegas_img0,"LINESTRING (1181.0 723.0, 1175.0 726.0)" 36 | AOI_2_Vegas_img0,"LINESTRING (1181.0 723.0, 1251.0 726.0)" 37 | AOI_2_Vegas_img0,"LINESTRING (1297.0 723.0, 1251.0 726.0)" 38 | AOI_2_Vegas_img0,"LINESTRING (1175.0 726.0, 1172.0 764.0, 1171.0 1231.0)" 39 | AOI_2_Vegas_img0,"LINESTRING (1251.0 726.0, 1246.0 1231.0)" 40 | AOI_2_Vegas_img0,"LINESTRING (1103.0 730.0, 1074.0 732.0, 1019.0 747.0, 1008.0 756.0)" 41 | AOI_2_Vegas_img0,"LINESTRING (1103.0 730.0, 1098.0 1022.0, 1099.0 1165.0, 1104.0 1229.0)" 42 | AOI_2_Vegas_img0,"LINESTRING (2.0 736.0, 24.0 737.0)" 43 | AOI_2_Vegas_img0,"LINESTRING (24.0 737.0, 103.0 737.0)" 44 | AOI_2_Vegas_img0,"LINESTRING (103.0 737.0, 102.0 834.0)" 45 | AOI_2_Vegas_img0,"LINESTRING (24.0 737.0, 24.0 833.0)" 46 | AOI_2_Vegas_img0,"LINESTRING (1008.0 756.0, 947.0 765.0)" 47 | AOI_2_Vegas_img0,"LINESTRING (1008.0 756.0, 1013.0 798.0, 1010.0 1233.0)" 48 | AOI_2_Vegas_img0,"LINESTRING (947.0 765.0, 941.0 778.0, 866.0 783.0)" 49 | AOI_2_Vegas_img0,"LINESTRING (941.0 778.0, 940.0 1234.0)" 50 | AOI_2_Vegas_img0,"LINESTRING (648.0 782.0, 673.0 780.0)" 51 | AOI_2_Vegas_img0,"LINESTRING (648.0 782.0, 592.0 785.0, 566.0 791.0)" 52 | AOI_2_Vegas_img0,"LINESTRING (648.0 782.0, 642.0 1055.0, 643.0 1230.0)" 53 | AOI_2_Vegas_img0,"LINESTRING (673.0 780.0, 717.0 785.0)" 54 | AOI_2_Vegas_img0,"LINESTRING (866.0 783.0, 795.0 787.0)" 55 | AOI_2_Vegas_img0,"LINESTRING (866.0 783.0, 862.0 1235.0)" 56 | AOI_2_Vegas_img0,"LINESTRING (717.0 785.0, 795.0 787.0)" 57 | AOI_2_Vegas_img0,"LINESTRING (717.0 785.0, 715.0 1232.0)" 58 | AOI_2_Vegas_img0,"LINESTRING (795.0 787.0, 790.0 1234.0)" 59 | AOI_2_Vegas_img0,"LINESTRING (566.0 791.0, 539.0 793.0, 491.0 806.0, 484.0 811.0)" 60 | AOI_2_Vegas_img0,"LINESTRING (566.0 791.0, 567.0 1230.0)" 61 | AOI_2_Vegas_img0,"LINESTRING (480.0 810.0, 474.0 816.0, 412.0 835.0)" 62 | AOI_2_Vegas_img0,"LINESTRING (480.0 810.0, 484.0 811.0, 489.0 820.0, 495.0 871.0, 492.0 1225.0)" 63 | AOI_2_Vegas_img0,"LINESTRING (397.0 832.0, 337.0 839.0)" 64 | AOI_2_Vegas_img0,"LINESTRING (397.0 832.0, 412.0 835.0)" 65 | AOI_2_Vegas_img0,"LINESTRING (24.0 833.0, 2.0 836.0)" 66 | AOI_2_Vegas_img0,"LINESTRING (24.0 833.0, 95.0 838.0)" 67 | AOI_2_Vegas_img0,"LINESTRING (102.0 834.0, 95.0 838.0)" 68 | AOI_2_Vegas_img0,"LINESTRING (102.0 834.0, 178.0 838.0)" 69 | AOI_2_Vegas_img0,"LINESTRING (187.0 834.0, 178.0 838.0)" 70 | AOI_2_Vegas_img0,"LINESTRING (187.0 834.0, 259.0 839.0)" 71 | AOI_2_Vegas_img0,"LINESTRING (412.0 835.0, 416.0 884.0, 415.0 1222.0)" 72 | AOI_2_Vegas_img0,"LINESTRING (95.0 838.0, 91.0 889.0)" 73 | AOI_2_Vegas_img0,"LINESTRING (178.0 838.0, 172.0 937.0, 172.0 1196.0)" 74 | AOI_2_Vegas_img0,"LINESTRING (259.0 839.0, 337.0 839.0)" 75 | AOI_2_Vegas_img0,"LINESTRING (259.0 839.0, 255.0 1052.0, 254.0 1203.0)" 76 | AOI_2_Vegas_img0,"LINESTRING (337.0 839.0, 334.0 1216.0)" 77 | AOI_2_Vegas_img0,"LINESTRING (91.0 889.0, 44.0 891.0, 32.0 895.0)" 78 | AOI_2_Vegas_img0,"LINESTRING (91.0 889.0, 95.0 939.0, 93.0 1023.0)" 79 | AOI_2_Vegas_img0,"LINESTRING (2.0 890.0, 32.0 895.0, 31.0 1018.0, 20.0 1024.0)" 80 | AOI_2_Vegas_img0,"LINESTRING (31.0 1018.0, 93.0 1023.0)" 81 | AOI_2_Vegas_img0,"LINESTRING (2.0 1023.0, 20.0 1024.0)" 82 | AOI_2_Vegas_img0,"LINESTRING (93.0 1023.0, 94.0 1195.0)" 83 | AOI_2_Vegas_img0,"LINESTRING (20.0 1024.0, 8.0 1193.0, 46.0 1198.0, 94.0 1195.0)" 84 | AOI_2_Vegas_img0,"LINESTRING (1054.0 1193.0, 1053.0 1233.0)" 85 | AOI_2_Vegas_img0,"LINESTRING (94.0 1195.0, 172.0 1196.0, 254.0 1203.0, 270.0 1210.0, 334.0 1216.0, 352.0 1221.0, 415.0 1222.0, 437.0 1226.0, 492.0 1225.0, 567.0 1230.0)" 86 | AOI_2_Vegas_img0,"LINESTRING (1104.0 1229.0, 1053.0 1233.0)" 87 | AOI_2_Vegas_img0,"LINESTRING (1104.0 1229.0, 1171.0 1231.0)" 88 | AOI_2_Vegas_img0,"LINESTRING (567.0 1230.0, 643.0 1230.0, 715.0 1232.0)" 89 | AOI_2_Vegas_img0,"LINESTRING (1246.0 1231.0, 1171.0 1231.0)" 90 | AOI_2_Vegas_img0,"LINESTRING (1246.0 1231.0, 1297.0 1235.0)" 91 | AOI_2_Vegas_img0,"LINESTRING (715.0 1232.0, 726.0 1236.0, 790.0 1234.0)" 92 | AOI_2_Vegas_img0,"LINESTRING (1010.0 1233.0, 940.0 1234.0)" 93 | AOI_2_Vegas_img0,"LINESTRING (1010.0 1233.0, 1053.0 1233.0)" 94 | AOI_2_Vegas_img0,"LINESTRING (790.0 1234.0, 862.0 1235.0)" 95 | AOI_2_Vegas_img0,"LINESTRING (940.0 1234.0, 862.0 1235.0)" -------------------------------------------------------------------------------- /apls/data/gt_pkl_prop_pkl/ground_truth_randomized/RGB-PanSharpen_AOI_2_Vegas_img0.gpickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/gt_pkl_prop_pkl/ground_truth_randomized/RGB-PanSharpen_AOI_2_Vegas_img0.gpickle -------------------------------------------------------------------------------- /apls/data/gt_pkl_prop_pkl/proposal/RGB-PanSharpen_AOI_2_Vegas_img0.gpickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/gt_pkl_prop_pkl/proposal/RGB-PanSharpen_AOI_2_Vegas_img0.gpickle -------------------------------------------------------------------------------- /apls/data/images/RGB-PanSharpen_AOI_2_Vegas_img0.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmiQ/apls/4a78807cafde62b773e3a1190177526853c61207/apls/data/images/RGB-PanSharpen_AOI_2_Vegas_img0.tif -------------------------------------------------------------------------------- /apls/graphTools.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Tue Aug 29 13:30:14 2017 5 | 6 | @author: avanetten 7 | 8 | Heavily modified from spacenet utilities graphtools 9 | """ 10 | 11 | import shapely.geometry 12 | import fiona 13 | import numpy as np 14 | import os 15 | import sys 16 | import time 17 | import networkx as nx 18 | import geopandas as gpd 19 | from shapely.geometry import Point 20 | # from osmnx.utils import log 21 | # from osmnx import core 22 | 23 | path_apls_src = os.path.dirname(os.path.realpath(__file__)) 24 | sys.path.append(path_apls_src) 25 | import osmnx_funcs 26 | 27 | 28 | ############################################################################### 29 | def parse_OGR_nodes_paths(vectorFileName, osmidx=0, osmNodeidx=0, 30 | nodeListGpd=gpd.GeoDataFrame(), 31 | valid_road_types=set([]), 32 | roadTypeField='type', 33 | verbose=True, 34 | super_verbose=False): 35 | """ 36 | Construct dicts of nodes and paths with key=osmid and value=dict of 37 | attributes. 38 | 39 | Notes 40 | ----- 41 | valid_road_types is a set of road types to be allowed 42 | 43 | Parameters 44 | ---------- 45 | vectorFileName : str 46 | Absolute path to vector file supported by OGR that has 47 | line segments JSON response from from the Overpass API. 48 | 49 | Returns 50 | ------- 51 | nodes, paths : tuple 52 | """ 53 | 54 | # ensure valid vectorFileName 55 | try: 56 | source = fiona.open(vectorFileName, 'r') 57 | doit = True 58 | except: 59 | doit = False 60 | return {}, {} 61 | 62 | #dataSource = ogr.Open(vectorFileName, 0) 63 | # with fiona.open(vectorFileName, 'r') as source: 64 | if doit: 65 | #layer = dataSource.GetLayer() 66 | nodes = {} 67 | paths = {} 68 | for i, feature in enumerate(source): 69 | 70 | geom = feature['geometry'] 71 | properties = feature['properties'] 72 | # todo create more adjustable filter 73 | if roadTypeField in properties: 74 | road_type = properties['type'] 75 | elif 'highway' in properties: 76 | road_type = properties['highway'] 77 | elif 'road_type' in properties: 78 | road_type = properties['road_type'] 79 | else: 80 | road_type = 'None' 81 | 82 | if ((i % 100) == 0) and verbose: 83 | print("\n", i, "/", len(source)) 84 | print(" geom:", geom) 85 | print(" properties:", properties) 86 | print(" road_type:", road_type) 87 | 88 | ################## 89 | # check if road type allowable, continue if not 90 | # first check if road 91 | if (len(valid_road_types) > 0) and \ 92 | (geom['type'] == 'LineString' or geom['type'] == 'MultiLineString'): 93 | if road_type not in valid_road_types: 94 | if verbose: 95 | print("Invalid road type, skipping...") 96 | continue 97 | ################### 98 | 99 | # skip empty linestrings 100 | if 'LINESTRING EMPTY' in list(properties.values()): 101 | continue 102 | 103 | osmidx = int(osmidx + 1) 104 | # print ("geom:", geom) 105 | 106 | if geom['type'] == 'LineString': 107 | # print osmNodeidx 108 | lineString = shapely.geometry.shape(geom) 109 | if super_verbose: 110 | print("lineString.wkt:", lineString.wkt) 111 | # if len(geom['coordinates']) == 0: 112 | # continue 113 | 114 | path, nodeList, osmNodeidx, nodeListGpd = \ 115 | processLineStringFeature(lineString, osmidx, osmNodeidx, 116 | nodeListGpd, properties=properties) 117 | # print(nodeListGpd.head()) 118 | osmNodeidx = osmNodeidx+1 119 | osmidx = osmidx+1 120 | #print ("nodeList:", nodeList) 121 | nodes.update(nodeList) 122 | paths[osmidx] = path 123 | # print(geom.GetGeometryName()) 124 | 125 | elif geom['type'] == 'MultiLineString': 126 | for linestring in shapely.geometry.shape(geom): 127 | 128 | path, nodeList, osmNodeidx, nodeListGpd = \ 129 | processLineStringFeature(linestring, osmidx, osmNodeidx, 130 | nodeListGpd, properties=properties) 131 | osmNodeidx = osmNodeidx + 1 132 | osmidx = osmidx+1 133 | # print(geom.GetGeometryName()) 134 | nodes.update(nodeList) 135 | paths[osmidx] = path 136 | 137 | source.close() 138 | 139 | return nodes, paths 140 | 141 | 142 | ############################################################################### 143 | def processLineStringFeature(lineString, keyEdge, osmNodeidx, 144 | nodeListGpd=gpd.GeoDataFrame(), properties={}, 145 | roadTypeField='type'): 146 | """Iterage over points in LineString""" 147 | # print ("lineString:", lineString) 148 | 149 | osmNodeidx = osmNodeidx + 1 150 | path = {} 151 | nodes = {} 152 | # print ("keyEdge:", keyEdge) 153 | # print ("lineString:", lineString) 154 | path['osmid'] = keyEdge 155 | 156 | nodeList = [] 157 | 158 | for point in lineString.coords: 159 | 160 | pointShp = shapely.geometry.shape(Point(point)) 161 | if nodeListGpd.size == 0: 162 | nodeId = np.array([]) 163 | else: 164 | # print(nodeListGpd.head()) 165 | # print(point) 166 | nodeId = nodeListGpd[nodeListGpd.distance( 167 | pointShp) == 0.0]['osmid'].values 168 | 169 | if nodeId.size == 0: 170 | nodeId = osmNodeidx 171 | nodeListGpd = nodeListGpd.append({'geometry': pointShp, 172 | 'osmid': osmNodeidx}, 173 | ignore_index=True) 174 | osmNodeidx = osmNodeidx + 1 175 | 176 | node = {} 177 | # add properties 178 | node['x'] = point[0] 179 | node['y'] = point[1] 180 | node['osmid'] = nodeId 181 | 182 | # add properties 183 | for key, value in list(properties.items()): 184 | node[key] = value 185 | if roadTypeField in properties: 186 | node['highway'] = properties['type'] 187 | else: 188 | node['highway'] = 'unclassified' 189 | 190 | nodes[nodeId] = node 191 | 192 | else: 193 | nodeId = nodeId[0] 194 | 195 | nodeList.append(nodeId) 196 | 197 | path['nodes'] = nodeList 198 | # add properties 199 | for key, value in list(properties.items()): 200 | path[key] = value 201 | # also set 'highway' flag 202 | if roadTypeField in properties: 203 | path['highway'] = properties['type'] 204 | else: 205 | path['highway'] = 'unclassified' 206 | 207 | return path, nodes, osmNodeidx, nodeListGpd 208 | 209 | 210 | ############################################################################### 211 | def create_graphGeoJson(geoJson, name='unnamed', retain_all=True, 212 | network_type='all_private', valid_road_types=set([]), 213 | roadTypeField='type', 214 | osmidx=0, osmNodeidx=0, 215 | verbose=True, super_verbose=False): 216 | """ 217 | Create a networkx graph from OSM data. 218 | 219 | Parameters 220 | ---------- 221 | geoJson : geoJsonFile Name 222 | will support any file format supported by OGR 223 | name : string 224 | the name of the graph 225 | retain_all : bool 226 | if True, return the entire graph even if it is not connected 227 | network_type : string 228 | what type of network to create 229 | 230 | Returns 231 | ------- 232 | networkx multidigraph 233 | """ 234 | 235 | print('Creating networkx graph from downloaded OSM data...') 236 | start_time = time.time() 237 | 238 | # make sure we got data back from the server requests 239 | 240 | # create the graph as a MultiDiGraph and set the original CRS to EPSG 4326 241 | G = nx.MultiDiGraph(name=name, crs={'init': 'epsg:4326'}) 242 | 243 | # extract nodes and paths from the downloaded osm data 244 | nodes = {} 245 | paths = {} 246 | 247 | if verbose: 248 | print("Running parse_OGR_nodes_paths...") 249 | nodes_temp, paths_temp = parse_OGR_nodes_paths(geoJson, 250 | valid_road_types=valid_road_types, 251 | verbose=verbose, 252 | super_verbose=super_verbose, 253 | osmidx=osmidx, osmNodeidx=osmNodeidx, 254 | roadTypeField=roadTypeField) 255 | 256 | if len(nodes_temp) == 0: 257 | return G 258 | if verbose: 259 | print(("len(nodes_temp):", len(nodes_temp))) 260 | print(("len(paths_temp):", len(paths_temp))) 261 | 262 | # add node props 263 | for key, value in list(nodes_temp.items()): 264 | nodes[key] = value 265 | if super_verbose: 266 | print(("node key:", key)) 267 | print((" node value:", value)) 268 | 269 | # add edge props 270 | for key, value in list(paths_temp.items()): 271 | paths[key] = value 272 | if super_verbose: 273 | print(("path key:", key)) 274 | print((" path value:", value)) 275 | 276 | # add each node to the graph 277 | for node, data in list(nodes.items()): 278 | G.add_node(node, **data) 279 | 280 | # add each way (aka, path) to the graph 281 | if super_verbose: 282 | print(("paths:", paths)) 283 | G = osmnx_funcs.add_paths(G, paths, network_type) 284 | 285 | # retain only the largest connected component, if caller did not set retain_all=True 286 | if not retain_all: 287 | G = osmnx_funcs.get_largest_component(G) 288 | 289 | # add length (great circle distance between nodes) attribute to each edge to use as weight 290 | G = osmnx_funcs.add_edge_lengths(G) 291 | 292 | print('Created graph with {:,} nodes and {:,} edges in {:,.2f} seconds'.format( 293 | len(list(G.nodes())), len(list(G.edges())), time.time()-start_time)) 294 | 295 | return G 296 | 297 | 298 | ############################################################################### 299 | if __name__ == "__main__": 300 | 301 | # test 302 | truth_dir = '/raid/cosmiq/spacenet/data/spacenetv2/spacenetLabels/AOI_2_Vegas/400m/' 303 | out_pkl = '/raid/cosmiq/spacenet/data/spacenetv2/spacenetLabels/AOI_2_Vegas/spacenetroads_AOI_2_Vegas_img10_graphTools.pkl' 304 | 305 | geoJson = os.path.join( 306 | truth_dir, 'spacenetroads_AOI_2_Vegas_img10.geojson') 307 | G0 = create_graphGeoJson(geoJson, name='unnamed', 308 | retain_all=True, 309 | verbose=True) 310 | # pkl 311 | nx.write_gpickle(G0, out_pkl) 312 | -------------------------------------------------------------------------------- /apls/gt_graph_to_wkt.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Mon Aug 26 15:30:33 2019 5 | 6 | @author: avanetten 7 | 8 | Execution example: 9 | python /apls/apls/gt_graph_to_wkt.py \ 10 | --root_dir=/spacenet/competitions/SN5_roads/train/AOI_7_Moscow/ 11 | 12 | """ 13 | 14 | import os 15 | import apls 16 | import argparse 17 | import osmnx_funcs 18 | import pandas as pd 19 | # import shapely.wkt 20 | 21 | 22 | ############################################################################### 23 | def gt_geojson_to_wkt(geojson_path, im_path, 24 | weight_keys=['length', 'travel_time_s'], 25 | subgraph_filter_weight='length', min_subgraph_length=5, 26 | travel_time_key='travel_time_s', 27 | speed_key='inferred_speed_mps', 28 | use_pix_coords=False, 29 | verbose=False, 30 | simplify=False, 31 | refine=True, 32 | super_verbose=False): 33 | ''' 34 | Create wkt list of pixel coords in ground truth graph, for use in SpaceNet 35 | TopCoder competition. 36 | im_path has name like: ...SN5_roads_train_AOI_7_Moscow_PS-RGB_chip996.tif 37 | if weight == [], output list of [name_root, geom_pix_wkt] 38 | else: output list of [name_root, geom_pix_wkt, weight1, weight2] 39 | ''' 40 | 41 | # linestring = "LINESTRING {}" 42 | im_name = os.path.basename(im_path) 43 | 44 | # get name_root of image file 45 | name_root = im_name.split('.')[0].replace('PS-RGB_', '').replace('PS-MS_', '') 46 | # # v0 47 | # AOI_root = 'AOI' + im_name.split('AOI')[-1] 48 | # name_root = AOI_root.split('.')[0].replace('PS-RGB_', '').replace('PS-MS_', '') 49 | print("name_root:", name_root) 50 | print("im_path:", im_path) 51 | 52 | G_gt, _ = apls._create_gt_graph(geojson_path, im_path, 53 | subgraph_filter_weight=subgraph_filter_weight, 54 | min_subgraph_length=min_subgraph_length, 55 | travel_time_key=travel_time_key, 56 | speed_key=speed_key, 57 | use_pix_coords=use_pix_coords, 58 | refine_graph=refine, 59 | simplify_graph=simplify, 60 | verbose=verbose, 61 | super_verbose=super_verbose) 62 | 63 | # simplify and turn to undirected 64 | if simplify: 65 | try: 66 | G_gt = osmnx_funcs.simplify_graph(G_gt).to_undirected() 67 | except: 68 | G_gt = G_gt.to_undirected() 69 | else: 70 | G_gt = G_gt.to_undirected() 71 | 72 | # return [name_root, "LINESTRING EMPTY"] if no edges 73 | if (len(G_gt.nodes()) == 0) or (len(G_gt.edges()) == 0): 74 | print(" Empty graph") 75 | if len(weight_keys) > 0: 76 | return [[name_root, "LINESTRING EMPTY"] + [0] * len(weight_keys)] 77 | else: 78 | return [[name_root, "LINESTRING EMPTY"]] 79 | 80 | # extract geometry pix wkt, save to list 81 | wkt_list = [] 82 | for i, (u, v, attr_dict) in enumerate(G_gt.edges(data=True)): 83 | print("attr_dict:", attr_dict) 84 | geom_pix_wkt = attr_dict['geometry_pix'].wkt 85 | if verbose: 86 | print(i, "/", len(G_gt.edges()), "u, v:", u, v) 87 | # print(" attr_dict:", attr_dict) 88 | print(" geom_pix_wkt:", geom_pix_wkt) 89 | 90 | wkt_item_root = [name_root, geom_pix_wkt] 91 | if len(weight_keys) > 0: 92 | weights = [attr_dict[w] for w in weight_keys] 93 | if verbose: 94 | print(" weights:", weights) 95 | wkt_list.append(wkt_item_root + weights) # [name_root, geom_pix_wkt, weight]) 96 | else: 97 | wkt_list.append(wkt_item_root) 98 | 99 | if verbose: 100 | print("wkt_list:", wkt_list) 101 | 102 | return wkt_list 103 | 104 | 105 | ############################################################################### 106 | def gt_geojson_dir_to_wkt(geojson_dir, im_dir, output_csv_path, 107 | weight_keys=['length', 'travel_time_s'], 108 | subgraph_filter_weight='length', min_subgraph_length=5, 109 | travel_time_key='travel_time_s', 110 | speed_key='inferred_speed_mps', 111 | use_pix_coords=False, 112 | simplify=False, 113 | verbose=False, 114 | super_verbose=False): 115 | 116 | # make dict of image chip id to file name 117 | chipper = '' 118 | im_chip_dict = {} 119 | for im_name in [z for z in os.listdir(im_dir) if z.endswith('.tif')]: 120 | chip_id = im_name.split('chip')[-1].split('.')[0] 121 | if 'chip' in im_name: 122 | chipper = 'chip' 123 | chip_id = im_name.split(chipper)[-1].split('.')[0] 124 | elif 'img' in im_name: 125 | chipper = 'img' 126 | chip_id = im_name.split(chipper)[-1].split('.')[0] 127 | im_chip_dict[chip_id] = im_name 128 | if verbose: 129 | print("im_chip_dict:", im_chip_dict) 130 | 131 | # iterate through geojsons 132 | wkt_list_tot = [] 133 | geojson_paths = sorted([z for z in os.listdir(geojson_dir) 134 | if z.endswith('.geojson')]) 135 | for i, geojson_name in enumerate(geojson_paths): 136 | 137 | # get image name 138 | chip_id = geojson_name.split(chipper)[-1].split('.')[0] 139 | try: 140 | im_name = im_chip_dict[chip_id] 141 | except: 142 | print("im_name not in im_chip_dict:", im_name) 143 | return 144 | # continue 145 | 146 | geojson_path = os.path.join(geojson_dir, geojson_name) 147 | im_path = os.path.join(im_dir, im_name) 148 | 149 | if verbose: 150 | print(i, "/", len(geojson_paths), "geojson:", geojson_path, 151 | "im_path:", im_path) 152 | 153 | wkt_list = gt_geojson_to_wkt(geojson_path, im_path, 154 | weight_keys=weight_keys, 155 | subgraph_filter_weight=subgraph_filter_weight, 156 | min_subgraph_length=min_subgraph_length, 157 | travel_time_key=travel_time_key, 158 | speed_key=speed_key, 159 | use_pix_coords=use_pix_coords, 160 | simplify=simplify, 161 | verbose=verbose, 162 | super_verbose=super_verbose) 163 | 164 | wkt_list_tot.extend(wkt_list) 165 | 166 | # create dataframe 167 | if len(weight_keys) > 0: 168 | cols = ['ImageId', 'WKT_Pix'] + weight_keys 169 | else: 170 | cols = ['ImageId', 'WKT_Pix'] 171 | 172 | # use 'length_m' instead? 173 | cols = [z.replace('length', 'length_m') for z in cols] 174 | 175 | # print("wkt_list_tot:", wkt_list_tot) 176 | # print("\n") 177 | # for i in wkt_list_tot: 178 | # print(len(i)) 179 | print("cols:", cols) 180 | 181 | df = pd.DataFrame(wkt_list_tot, columns=cols) 182 | print("df:", df) 183 | # save 184 | df.to_csv(output_csv_path, index=False) 185 | 186 | return df 187 | 188 | 189 | ############################################################################### 190 | if __name__ == "__main__": 191 | 192 | parser = argparse.ArgumentParser() 193 | parser.add_argument('--root_dir', default='', type=str, 194 | help='Root directory of geojson data') 195 | parser.add_argument('--PSRGB_dir', default='', type=str, 196 | help='PS-RGB dir, if '', assume in root_dir') 197 | parser.add_argument('--travel_time_key', default='travel_time_s', type=str, 198 | help='key for travel time') 199 | parser.add_argument('--speed_key', default='inferred_speed_mps', type=str, 200 | help='key for road speed') 201 | parser.add_argument('--out_file_name', 202 | default='geojson_roads_speed_wkt_weighted_v0.csv', 203 | type=str, 204 | help='name for output file') 205 | parser.add_argument('--simplify_graph', default=True, type=bool, 206 | help='switch to simplify graph prior to saving') 207 | args = parser.parse_args() 208 | 209 | weight_keys = ['length', 'travel_time_s'] 210 | verbose = True 211 | 212 | root_dir = args.root_dir # '/raid/cosmiq/spacenet/competitions/SN5_roads/gt_to_topcoder_mumbai' 213 | if len(args.PSRGB_dir) > 0: 214 | im_dir = args.PSRGB_dir 215 | else: 216 | im_dir = os.path.join(root_dir, 'PS-RGB') 217 | geojson_dir = os.path.join(root_dir, 'geojson_roads_speed') 218 | # get name 219 | out_prefix = '_'.join(root_dir.split('/')[-3:]) 220 | output_csv_path = os.path.join(root_dir, out_prefix + args.out_file_name) 221 | 222 | print("output_csv_path:", output_csv_path) 223 | df = gt_geojson_dir_to_wkt(geojson_dir, im_dir, 224 | output_csv_path=output_csv_path, 225 | travel_time_key=args.travel_time_key, 226 | speed_key=args.speed_key, 227 | simplify=args.simplify_graph, 228 | weight_keys=weight_keys, 229 | verbose=verbose) 230 | -------------------------------------------------------------------------------- /apls/sp_metric.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Thu Jun 28 08:32:18 2018 5 | 6 | @author: avanetten 7 | 8 | Implement SP Metric 9 | https://www.cv-foundation.org/openaccess/content_cvpr_2013/papers/Wegner_A_Higher-Order_CRF_2013_CVPR_paper.pdf 10 | 11 | """ 12 | 13 | import apls_utils 14 | import apls 15 | import os 16 | import sys 17 | import time 18 | import numpy as np 19 | import networkx as nx 20 | import matplotlib.pyplot as plt 21 | from matplotlib.patches import Circle 22 | from matplotlib.collections import PatchCollection 23 | # import osmnx as ox 24 | 25 | path_apls_src = os.path.dirname(os.path.realpath(__file__)) 26 | path_apls = os.path.dirname(path_apls_src) 27 | sys.path.append(path_apls_src) 28 | import osmnx_funcs 29 | 30 | ############################################################################### 31 | def compute_single_sp(G_gt_, G_prop_, kd_idx_dic_prop, kdtree_prop, 32 | x_coord='x', y_coord='y', 33 | weight='length', query_radius=5, 34 | length_buffer=0.05, make_plots=False, verbose=False): 35 | '''Single SP metric 36 | return 1 if within length_buffer 37 | return 0 if path is outside length_buffer or DNE for either gt or prop 38 | return -1 if path between randomly chosen nodes DNE for both graphs''' 39 | 40 | # choose random ground truth source and target nodes 41 | [source_gt, target_gt] = np.random.choice( 42 | G_gt_.nodes(), size=2, replace=False) 43 | if verbose: 44 | print("source_gt:", source_gt, "target_gt:", target_gt) 45 | # source_gt, target_gt = 10002, 10039 46 | x_s_gt, y_s_gt = G_gt_.node[source_gt][x_coord], G_gt_.node[source_gt][y_coord] 47 | x_t_gt, y_t_gt = G_gt_.node[target_gt][x_coord], G_gt_.node[target_gt][y_coord] 48 | 49 | # if verbose: 50 | # print ("x_s_gt:", x_s_gt) 51 | # print ("y_s_gt:", y_s_gt) 52 | 53 | # get route. If it does not exists, set len = -1 54 | if not nx.has_path(G_gt_, source_gt, target_gt): 55 | len_gt = -1 56 | else: 57 | len_gt = nx.dijkstra_path_length( 58 | G_gt_, source_gt, target_gt, weight=weight) 59 | 60 | # get nodes in prop graph 61 | # see if source, target node exists in proposal 62 | source_p_l, _ = apls_utils.nodes_near_point(x_s_gt, y_s_gt, 63 | kdtree_prop, kd_idx_dic_prop, 64 | x_coord=x_coord, y_coord=y_coord, 65 | radius_m=query_radius) 66 | target_p_l, _ = apls_utils.nodes_near_point(x_t_gt, y_t_gt, 67 | kdtree_prop, kd_idx_dic_prop, 68 | x_coord=x_coord, y_coord=y_coord, 69 | radius_m=query_radius) 70 | 71 | # if either source or target does not exists, set prop_len as -1 72 | if (len(source_p_l) == 0) or (len(target_p_l) == 0): 73 | len_prop = -1 74 | 75 | else: 76 | source_p, target_p = source_p_l[0], target_p_l[0] 77 | x_s_p, y_s_p = G_prop_.node[source_p][x_coord], G_prop_.node[source_p][y_coord] 78 | x_t_p, y_t_p = G_prop_.node[target_p][x_coord], G_prop_.node[target_p][y_coord] 79 | 80 | # get route 81 | if not nx.has_path(G_prop_, source_p, target_p): 82 | len_prop = -1 83 | else: 84 | len_prop = nx.dijkstra_path_length( 85 | G_prop_, source_p, target_p, weight=weight) 86 | 87 | # path length difference, as a percentage 88 | perc_diff = np.abs((len_gt - len_prop) / len_gt) 89 | # check path lengths 90 | # if both paths do not exist, skip 91 | if (len_gt == -1) and (len_prop == -1): 92 | match = -1 93 | # if one is positive and one negative, return 0 94 | elif (np.sign(len_gt) != np.sign(len_prop)): 95 | match = 0 96 | # else, campare lengths 97 | elif perc_diff > length_buffer: 98 | match = 0 99 | else: 100 | match = 1 101 | 102 | if verbose: 103 | # print ("source_gt:", source_gt, "target_gt:", target_gt) 104 | print("len_gt:", len_gt) 105 | print("len_prop:", len_prop) 106 | print("perc_diff:", perc_diff) 107 | 108 | if make_plots: 109 | 110 | # plot G_gt_init 111 | plt.close('all') 112 | # plot initial graph 113 | if len_gt != -1: 114 | fig, ax = osmnx_funcs.plot_graph_route(G_gt_, nx.shortest_path( 115 | G_gt_, source=source_gt, target=target_gt, weight=weight)) 116 | else: 117 | fig, ax = osmnx_funcs.plot_graph(G_gt_, axis_off=True) 118 | ax.set_title("Ground Truth, L = " + str(np.round(len_gt, 2))) 119 | # draw a circle (this doesn't work unless it's a PatchCollection!) 120 | patches = [Circle((x_s_gt, y_s_gt), query_radius, alpha=0.3), 121 | Circle((x_t_gt, y_t_gt), query_radius, alpha=0.3)] 122 | p = PatchCollection(patches, alpha=0.4, color='orange') 123 | ax.add_collection(p) 124 | # also a simple point 125 | ax.scatter([x_s_gt], [y_s_gt], c='green', s=6) 126 | ax.scatter([x_t_gt], [y_t_gt], c='red', s=6) 127 | 128 | # plot proposal graph 129 | if len_prop != -1: 130 | fig, ax1 = osmnx_funcs.plot_graph_route(G_prop_, nx.shortest_path( 131 | G_prop_, source=source_p, target=target_p, weight=weight)) 132 | else: 133 | fig, ax1 = osmnx_funcs.plot_graph(G_prop_, axis_off=True) 134 | ax1.set_title("Proposal, L = " + str(np.round(len_prop, 2))) 135 | # draw patches from ground truth! 136 | patches = [Circle((x_s_gt, y_s_gt), query_radius, alpha=0.3), 137 | Circle((x_t_gt, y_t_gt), query_radius, alpha=0.3)] 138 | p = PatchCollection(patches, alpha=0.4, color='orange') 139 | ax1.add_collection(p) 140 | if len_prop != -1: 141 | # also a simple point 142 | ax1.scatter([x_s_p], [y_s_p], c='green', s=6) 143 | ax1.scatter([x_t_p], [y_t_p], c='red', s=6) 144 | 145 | return match 146 | 147 | 148 | ############################################################################### 149 | def compute_sp(G_gt_, G_prop_, 150 | x_coord='x', y_coord='y', 151 | weight='length', query_radius=5, 152 | length_buffer=0.05, n_routes=10, verbose=False, 153 | make_plots=True): 154 | '''Compute SP metric''' 155 | 156 | t0 = time.time() 157 | if len(G_prop_.nodes()) == 0: 158 | return [], 0 159 | 160 | kd_idx_dic_p, kdtree_p, pos_arr_p = apls_utils.G_to_kdtree(G_prop_) 161 | 162 | match_l = [] 163 | for i in range(n_routes): 164 | if i == 0 and make_plots: 165 | make_plots_tmp = True 166 | else: 167 | make_plots_tmp = False 168 | 169 | if (i % 100) == 0: 170 | print((i, "/", n_routes)) 171 | 172 | match_val = compute_single_sp(G_gt_, G_prop_, kd_idx_dic_p, kdtree_p, 173 | x_coord=x_coord, y_coord=y_coord, 174 | weight=weight, query_radius=query_radius, 175 | length_buffer=length_buffer, make_plots=make_plots_tmp, 176 | verbose=verbose) 177 | if match_val != -1: 178 | match_l.append(match_val) 179 | 180 | # total score is fraction of routes that match 181 | sp_tot = 1.0 * np.sum(match_l) / len(match_l) 182 | 183 | if verbose: 184 | print(("match_arr:", np.array(match_l))) 185 | # print (" sp_tot:", sp_tot) 186 | 187 | print("sp metric:") 188 | print((" total time elapsed to compute sp:", 189 | time.time() - t0, "seconds")) 190 | 191 | return match_l, sp_tot 192 | 193 | 194 | ############################################################################### 195 | ############################################################################### 196 | ############################################################################### 197 | if __name__ == "__main__": 198 | 199 | # Test 200 | ########################## 201 | n_measurement_nodes = 10 202 | x_coord = 'x' 203 | y_coord = 'y' 204 | weight = 'length' 205 | query_radius = 5 206 | length_buffer = 0.05 207 | n_routes = 500 208 | verbose = False # True 209 | run_all = True 210 | #pick_random_start_node = True 211 | 212 | truth_dir = '/raid/cosmiq/spacenet/data/spacenetv2/AOI_2_Vegas_Test/400m/gt_graph_pkls' 213 | prop_dir = 'raid/cosmiq/basiss/inference_mod_new/results/rgb_test_sn_vegas/graphs' 214 | ########################## 215 | 216 | name_list = os.listdir(truth_dir) 217 | f = name_list[np.random.randint(len(name_list))] 218 | #f = 'AOI_2_Vegas_img150.pkl' 219 | print(("f:", f)) 220 | t0 = time.time() 221 | 222 | # get original graph 223 | outroot = f.split('.')[0] 224 | print("\noutroot:", outroot) 225 | gt_file = os.path.join(truth_dir, f) 226 | prop_file = os.path.join(prop_dir, outroot + '.gpickle') 227 | 228 | # ground truth graph 229 | G_gt_init = nx.read_gpickle(gt_file) 230 | G_gt_init1 = osmnx_funcs.simplify_graph(G_gt_init.to_directed()).to_undirected() 231 | G_gt_init = osmnx_funcs.project_graph(G_gt_init1) 232 | G_gt_init = apls.create_edge_linestrings( 233 | G_gt_init, remove_redundant=True, verbose=False) 234 | 235 | print(("G_gt_init.nodes():", G_gt_init.nodes())) 236 | (u, v) = G_gt_init.edges()[0] 237 | print(("random edge props:", G_gt_init.edge[u][v])) 238 | 239 | # proposal graph 240 | G_p_init = nx.read_gpickle(prop_file) 241 | #G_p_init0 = nx.read_gpickle(prop_file) 242 | #G_p_init1 = osmnx_funcs.simplify_graph(G_p_init0.to_directed()).to_undirected() 243 | #G_p_init = osmnx_funcs.project_graph(G_p_init1) 244 | G_p_init = apls.create_edge_linestrings( 245 | G_p_init, remove_redundant=True, verbose=False) 246 | 247 | t0 = time.time() 248 | print("\nComputing score...") 249 | match_list, score = compute_sp(G_gt_init, G_p_init, 250 | x_coord=x_coord, y_coord=y_coord, 251 | weight=weight, query_radius=query_radius, 252 | length_buffer=length_buffer, n_routes=n_routes, 253 | make_plots=True, 254 | verbose=verbose) 255 | print(("score:", score)) 256 | print(("Time to compute score:", time.time() - t0, "seconds")) 257 | 258 | ############ 259 | # also compute total topo metric for entire folder 260 | if run_all: 261 | t0 = time.time() 262 | plt.close('all') 263 | score_list = [] 264 | match_list = [] 265 | for i, f in enumerate(name_list): 266 | 267 | if i == 0: 268 | make_plots = True 269 | else: 270 | make_plots = False 271 | 272 | # get original graph 273 | outroot = f.split('.')[0] 274 | print("\n", i, "/", len(name_list), "outroot:", outroot) 275 | #print ("\n", i, "/", len(name_list), "outroot:", outroot) 276 | gt_file = os.path.join(truth_dir, f) 277 | 278 | # ground truth graph 279 | G_gt_init = nx.read_gpickle(gt_file) 280 | #G_gt_init1 = osmnx_funcs.simplify_graph(G_gt_init0.to_directed()).to_undirected() 281 | #G_gt_init = osmnx_funcs.project_graph(G_gt_init1) 282 | G_gt_init = apls.create_edge_linestrings( 283 | G_gt_init, remove_redundant=True, verbose=False) 284 | if len(G_gt_init.nodes()) == 0: 285 | continue 286 | 287 | # proposal graph 288 | prop_file = os.path.join(prop_dir, outroot + '.gpickle') 289 | if not os.path.exists(prop_file): 290 | score_list.append(0) 291 | continue 292 | 293 | G_p_init0 = nx.read_gpickle(prop_file) 294 | G_p_init1 = osmnx_funcs.simplify_graph( 295 | G_p_init0.to_directed()).to_undirected() 296 | G_p_init = osmnx_funcs.project_graph(G_p_init1) 297 | G_p_init = apls.create_edge_linestrings( 298 | G_p_init, remove_redundant=True, verbose=False) 299 | 300 | match_list_tmp, score = compute_sp(G_gt_init, G_p_init, 301 | x_coord=x_coord, y_coord=y_coord, 302 | weight=weight, query_radius=query_radius, 303 | length_buffer=length_buffer, n_routes=n_routes, 304 | make_plots=make_plots, 305 | verbose=verbose) 306 | score_list.append(score) 307 | match_list.extend(match_list_tmp) 308 | 309 | # compute total score 310 | # total score is fraction of routes that match 311 | sp_tot = 1.0 * np.sum(match_list) / len(match_list) 312 | #score_tot = np.sum(score_list) 313 | 314 | print(("Total sp metric for", len(name_list), "files:")) 315 | print((" query_radius:", query_radius, "length_buffer:", length_buffer)) 316 | print((" n_measurement_nodes:", n_measurement_nodes, "n_routes:", n_routes)) 317 | print((" total time elapsed to compute sp and make plots:", 318 | time.time() - t0, "seconds")) 319 | print((" total sp:", sp_tot)) 320 | -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | name: apls 2 | channels: 3 | - conda-forge 4 | - defaults 5 | dependencies: 6 | - python=3.6 7 | - pip=19.0 8 | - shapely=1.6.4 9 | - fiona=1.8.6 10 | - pandas=0.24.2 11 | - geopandas=0.5.0 12 | - opencv=3.4.4 13 | - numpy=1.16.3 14 | - gdal=2.4.0 15 | - rtree=0.8.3 16 | - networkx=2.3 17 | - rasterio=1.0.22 18 | - scipy=1.2.1 19 | - scikit-image=0.15.0 20 | - pip: 21 | - affine==2.2.2 -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, find_packages 2 | 3 | readme = '' 4 | 5 | version = '0.1.0' 6 | 7 | # Runtime requirements. 8 | inst_reqs = ['matplotlib>=3.0.0', 9 | 'shapely>=1.6.4', 10 | 'pandas>=0.23.4', 11 | 'geopandas>=0.4.0', 12 | 'opencv-python>=4.0', 13 | 'numpy>=1.15.4', 14 | 'tqdm>=4.28.1', 15 | 'GDAL==2.4.0', 16 | 'rtree>=0.8.3', 17 | 'networkx>=2.2', 18 | 'scipy>=1.2.0', 19 | 'scikit-image>=0.14.0', 20 | 'affine>=2.2.1', 21 | 'utm>=0.4.0', 22 | ] 23 | 24 | extra_reqs = { 25 | 'test': ['mock', 'pytest', 'pytest-cov', 'codecov']} 26 | 27 | setup(name='apls', 28 | version=version, 29 | description=u"""CosmiQ Works APLS Metric Implementation""", 30 | long_description=readme, 31 | classifiers=[ 32 | 'Intended Audience :: Information Technology', 33 | 'Intended Audience :: Science/Research', 34 | 'License :: OSI Approved :: BSD License', 35 | 'Programming Language :: Python :: 3.6', 36 | 'Topic :: Scientific/Engineering :: GIS'], 37 | keywords='spacenet machinelearning iou aws', 38 | author=u"Adam Van Etten", 39 | author_email='avanetten@iqt.org', 40 | url='https://github.com/CosmiQ/apls', 41 | license='Apache-2.0', 42 | packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), 43 | zip_safe=False, 44 | include_package_data=True, 45 | install_requires=inst_reqs, 46 | extras_require=extra_reqs, 47 | ) 48 | --------------------------------------------------------------------------------