Commit Graph

27 Commits

Author SHA1 Message Date
Dustin Carlino
d98f18bb18 Create a more careful API for handling one-way roads everywhere, in
preparation for modifying them in the LTN tool.

Regenerated everything. This had some effects on overlapping road
shrinking, mostly positive. Screenshot diffs all changed, since I
switched laptops again.
2022-05-27 17:01:36 +01:00
Dustin Carlino
a5a9415de0 Avoid crashing with the previous commit; we still need to remove dangling nodes no matter what 2022-05-21 16:54:42 +01:00
Dustin Carlino
8b71885b04 Optionally skip removing disconnected streets from the graph. For osm2streets tests, often our small clipped area looks very disconnected. https://github.com/a-b-street/osm2streets/issues/8 2022-05-21 13:20:57 +01:00
Dustin Carlino
150ec77f85 Remove the osm2polygons tests from #886. Instead, we now have goldenfile
tests across larger chunks of OSM in
https://github.com/a-b-street/osm2streets/pull/15.
2022-05-21 12:47:47 +01:00
Dustin Carlino
2e590c553a Dump RawMaps to GeoJSON, for https://github.com/a-b-street/osm2streets/issues/8 2022-05-21 12:24:03 +01:00
Dustin Carlino
b4896ee450 Make untrimmed_road_geometry infalliable, in preparation for storing a
PolyLine instead of list of points.

This exposed two edge cases, fixed here:

1) While merging short roads near junctions, we sometimes create a loop.
   Filter it out immeditely.
2) If an OSM way is physically sharing geometry with another one
   invalidly, detect that and discard it much earlier.
2022-05-07 22:02:06 +01:00
Dustin Carlino
136eef3c3b Just rename center_points to osm_center_points to be more clear. https://github.com/a-b-street/osm2streets/issues/2 2022-05-01 21:33:44 +01:00
Dustin Carlino
f72dd62e56 Store lane_specs_ltr on RawRoad, instead of constantly recalculating. https://github.com/a-b-street/osm2streets/issues/2 2022-05-01 19:39:57 +01:00
Dustin Carlino
bd5d93ba84 Wire up a way to override OSM sidewalk widths in basemaps using proposals.
We need this because we have a data source for SMP that we can use with
extra attribution, but not upload to OSM.

This whole commit is gross hacks; going forward, we need a proper
process for upstreaming stuff in OSM.
2022-04-27 10:21:54 +01:00
Dustin Carlino
b64874b92c Simplify the intersection geometry interface, which also simplifies the implementation a bit. #893 2022-04-22 14:58:37 +01:00
Dustin Carlino
4d443ba4c8 Cut the intersection geometry algorithm itself over to the new API directly. #893
Verified no behavioral change. Much more cleanup is now possible inside
algorithm.rs. But most importantly, the InitialMap stuff only has 3
purposes -- all actually focused on producing final geometry.
2022-04-21 17:17:36 +01:00
Dustin Carlino
255028fd87 Remove another small use of InitialMap for saving geojson tests. #893 2022-04-21 16:27:15 +01:00
Dustin Carlino
d175652149 Refactor all intersection geometry callers to use newer API. #893
This pushes most uses of InitialMap inside raw_map.
2022-04-21 16:15:49 +01:00
Dustin Carlino
8244a900cf Refactor constructors for RawRoad and RawIntersection. #893 2022-04-21 14:32:48 +01:00
Dustin Carlino
e66cb88c5d Rearrange intersection geometry code and start goldenfile tests to pick up changes. #846 2022-04-18 08:48:07 +01:00
Dustin Carlino
9ffab3c976 Don't use assemble_ltr outside of raw_map; it's one small complication to switching to osm2lanes for https://github.com/a-b-street/osm2lanes/issues/71 2022-04-14 09:41:18 +01:00
Dustin Carlino
1ac25cc39a Find thick dual carriageway roads that overlap, and cut their width in
half.
2022-03-05 11:03:23 +00:00
Dustin Carlino
2890e6efcc Make the RawMap APIs for working with road center-lines less obnoxious 2022-02-23 15:27:27 +00:00
Dustin Carlino
cb6a628149 When the pre-trimmed endpoint for a merged intersection is inexplicably not on a road's center line, just skip instead of crashing. This allows us to roll out the dog-leg intersection merging for many more maps and see pretty much universal improvement in map geometry! #654 [rebuild] [release] 2022-02-20 18:01:30 +00:00
Dustin Carlino
efe5f76bbe Improve the dog-leg detection around dual carriageways. Enable this for
Montlake! #654
2022-02-20 16:43:15 +00:00
Dustin Carlino
d6508e9376 Work on the dog-leg heuristic. #654
Borders now seem to be skipped correctly.

Having a hard time skipping dual carriageways based on angle.

Aiming to enable first for Montlake, then gradually rollout to
individual maps, solving problems very incrementally and without
regressions.
2022-02-20 13:26:08 +00:00
Dustin Carlino
7728297f33 With fresh puppy dog eyes, detect dog-leg intersections yet again. #654 2022-02-20 12:31:36 +00:00
Dustin Carlino
4583dac399 Organize raw_map code a bit more. Let's cleanly separate the detection of short roads from transforming them. #654
And add a convenient script to diff changed maps. (Motivated by
preserving the fixpoint behavior in Montlake)
2022-02-20 12:08:52 +00:00
Dustin Carlino
58991ab041 Start to reorganize code that transforms RawMaps, particularly things that try to merge short roads #654 2022-02-20 11:31:05 +00:00
Dustin Carlino
8869365285 Fix a bug placing new buildings in the map editor, where IDs could collide if placed quickly in sequence 2022-02-20 10:43:58 +00:00
Dustin Carlino
03b6f39763 Flatten the raw_map initial module now 2022-02-19 17:48:39 +00:00
Dustin Carlino
14bea3a4be Split out a raw_map crate from map_model. RawMap is the thing we turn
OSM and other raw input into and store, before later converting to a
Map.

Why?

- build-time performance: while iterating on geometry problems, map_editor in release mode took 33s to build before, 11s now that the crate is split
- better layering: operations on a RawMap are becoming increasingly distinct from later transformations on the bigger map model
- this helps tease apart the dependencies of the intersection polygon algorithm for #846
- this will make it simpler to cutover to osm2lanes for https://github.com/a-b-street/osm2lanes/issues/71

There's further reorganization in raw_map and map_model that'll follow,
but the main work is done here.
2022-02-19 17:39:28 +00:00