mirror of
https://github.com/a-b-street/abstreet.git
synced 2024-10-26 10:09:22 +03:00
Upgrade to new georust, which subsumes geo-boolean-op.
Based on https://github.com/michaelkirk/abstreet/tree/mkirk/test-bools Note geojson isn't upgraded yet, due to contours. And the old version of geo is still pulled in, due to polylabel.
This commit is contained in:
parent
58a1a5e0a2
commit
34487a3322
245
Cargo.lock
generated
245
Cargo.lock
generated
@ -174,6 +174,15 @@ dependencies = [
|
||||
"system-deps",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atomic-polyfill"
|
||||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e14bf7b4f565e5e717d7a7a65b2a05c0b8c96e4db636d6f780f03b15108cdd1b"
|
||||
dependencies = [
|
||||
"critical-section",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atty"
|
||||
version = "0.2.14"
|
||||
@ -191,6 +200,21 @@ version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "bare-metal"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3"
|
||||
dependencies = [
|
||||
"rustc_version 0.2.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bare-metal"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.13.0"
|
||||
@ -248,6 +272,18 @@ dependencies = [
|
||||
"which",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bit_field"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
|
||||
|
||||
[[package]]
|
||||
name = "bitfield"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.2.1"
|
||||
@ -441,7 +477,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"csv",
|
||||
"fs-err",
|
||||
"geo",
|
||||
"geo 0.21.0",
|
||||
"geojson",
|
||||
"geom",
|
||||
"importer",
|
||||
@ -689,6 +725,18 @@ dependencies = [
|
||||
"bindgen 0.56.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cortex-m"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd20d4ac4aa86f4f75f239d59e542ef67de87cce2c282818dc6e84155d3ea126"
|
||||
dependencies = [
|
||||
"bare-metal 0.2.5",
|
||||
"bitfield",
|
||||
"embedded-hal",
|
||||
"volatile-register",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cpal"
|
||||
version = "0.13.3"
|
||||
@ -723,6 +771,18 @@ dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "critical-section"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95da181745b56d4bd339530ec393508910c909c784e8962d15d722bacf0bcbcd"
|
||||
dependencies = [
|
||||
"bare-metal 1.0.0",
|
||||
"cfg-if 1.0.0",
|
||||
"cortex-m",
|
||||
"riscv",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "csv"
|
||||
version = "1.1.6"
|
||||
@ -954,6 +1014,16 @@ version = "1.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
||||
|
||||
[[package]]
|
||||
name = "embedded-hal"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff"
|
||||
dependencies = [
|
||||
"nb 0.1.3",
|
||||
"void",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.28"
|
||||
@ -1269,7 +1339,7 @@ dependencies = [
|
||||
"enumset",
|
||||
"fs-err",
|
||||
"futures-channel",
|
||||
"geo",
|
||||
"geo 0.21.0",
|
||||
"geojson",
|
||||
"geom",
|
||||
"getrandom",
|
||||
@ -1390,29 +1460,34 @@ dependencies = [
|
||||
"log",
|
||||
"num-traits",
|
||||
"robust",
|
||||
"rstar",
|
||||
"rstar 0.8.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "geo-booleanop"
|
||||
version = "0.3.2"
|
||||
source = "git+https://github.com/21re/rust-geo-booleanop#188f016e44a3ec737ce8e279215caf558443de89"
|
||||
name = "geo"
|
||||
version = "0.21.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "20f1cd8cc66ae5c52a2b9328e3562adde921b203a10d6ea0ac24c349de4c42c4"
|
||||
dependencies = [
|
||||
"float_next_after",
|
||||
"geo-types",
|
||||
"geographiclib-rs",
|
||||
"log",
|
||||
"num-traits",
|
||||
"robust",
|
||||
"rstar 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "geo-types"
|
||||
version = "0.7.4"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9537881a3d2941ff3fe901e744c45f0fa4c142334f499f27d26be1d72299ba8"
|
||||
checksum = "5696e8138fbc44f64edc88b423afbe5a8f635df003376b3a57087e61a8ae7b66"
|
||||
dependencies = [
|
||||
"approx",
|
||||
"num-traits",
|
||||
"rstar",
|
||||
"rstar 0.8.3",
|
||||
"rstar 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1445,8 +1520,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"earcutr",
|
||||
"fs-err",
|
||||
"geo",
|
||||
"geo-booleanop",
|
||||
"geo 0.21.0",
|
||||
"geojson",
|
||||
"histogram",
|
||||
"instant",
|
||||
@ -1662,6 +1736,15 @@ dependencies = [
|
||||
"byteorder",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hash32"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.9.1"
|
||||
@ -1712,7 +1795,20 @@ checksum = "634bd4d29cbf24424d0a4bfcbf80c6960129dc24424752a7d1d1390607023422"
|
||||
dependencies = [
|
||||
"as-slice",
|
||||
"generic-array 0.14.4",
|
||||
"hash32",
|
||||
"hash32 0.1.1",
|
||||
"stable_deref_trait",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "heapless"
|
||||
version = "0.7.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a08e755adbc0ad283725b29f4a4883deee15336f372d5f61fae59efec40f983"
|
||||
dependencies = [
|
||||
"atomic-polyfill",
|
||||
"hash32 0.2.1",
|
||||
"rustc_version 0.4.0",
|
||||
"spin 0.9.3",
|
||||
"stable_deref_trait",
|
||||
]
|
||||
|
||||
@ -1876,7 +1972,7 @@ dependencies = [
|
||||
"csv",
|
||||
"fs-err",
|
||||
"gdal",
|
||||
"geo",
|
||||
"geo 0.21.0",
|
||||
"geojson",
|
||||
"geom",
|
||||
"hashbrown 0.9.1",
|
||||
@ -2130,7 +2226,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"contour",
|
||||
"flate2",
|
||||
"geo",
|
||||
"geo 0.21.0",
|
||||
"geojson",
|
||||
"geom",
|
||||
"getrandom",
|
||||
@ -2387,6 +2483,21 @@ dependencies = [
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nb"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f"
|
||||
dependencies = [
|
||||
"nb 1.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nb"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae"
|
||||
|
||||
[[package]]
|
||||
name = "ndk"
|
||||
version = "0.3.0"
|
||||
@ -2920,7 +3031,7 @@ version = "2.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9eacb1d18495675b5b9a56b92ea542e9ff6ebc98de4a166329ca9a1fbf408f88"
|
||||
dependencies = [
|
||||
"geo",
|
||||
"geo 0.20.1",
|
||||
"libc",
|
||||
"num-traits",
|
||||
"thiserror",
|
||||
@ -2935,8 +3046,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"flatgeobuf",
|
||||
"futures",
|
||||
"geo",
|
||||
"geo-booleanop",
|
||||
"geo 0.21.0",
|
||||
"geojson",
|
||||
"geom",
|
||||
"geozero",
|
||||
@ -3257,12 +3367,33 @@ dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"spin",
|
||||
"spin 0.5.2",
|
||||
"untrusted",
|
||||
"web-sys",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "riscv"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6907ccdd7a31012b70faf2af85cd9e5ba97657cc3987c4f13f8e4d2c2a088aba"
|
||||
dependencies = [
|
||||
"bare-metal 1.0.0",
|
||||
"bit_field",
|
||||
"riscv-target",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "riscv-target"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88aa938cda42a0cf62a20cfe8d139ff1af20c2e681212b5b34adb5a58333f222"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "robust"
|
||||
version = "0.2.3"
|
||||
@ -3294,18 +3425,47 @@ version = "0.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce61d743ebe516592df4dd542dfe823577b811299f7bee1106feb1bbb993dbac"
|
||||
dependencies = [
|
||||
"heapless",
|
||||
"heapless 0.6.1",
|
||||
"num-traits",
|
||||
"pdqselect",
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rstar"
|
||||
version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b40f1bfe5acdab44bc63e6699c28b74f75ec43afb59f3eda01e145aff86a25fa"
|
||||
dependencies = [
|
||||
"heapless 0.7.13",
|
||||
"num-traits",
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc-hash"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
|
||||
dependencies = [
|
||||
"semver 0.9.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
||||
dependencies = [
|
||||
"semver 1.0.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.19.1"
|
||||
@ -3399,13 +3559,22 @@ dependencies = [
|
||||
"untrusted",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||
dependencies = [
|
||||
"semver-parser 0.7.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
|
||||
dependencies = [
|
||||
"semver-parser",
|
||||
"semver-parser 0.10.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -3417,6 +3586,12 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver-parser"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||
|
||||
[[package]]
|
||||
name = "semver-parser"
|
||||
version = "0.10.2"
|
||||
@ -3609,6 +3784,15 @@ version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
||||
|
||||
[[package]]
|
||||
name = "spin"
|
||||
version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stable_deref_trait"
|
||||
version = "1.2.0"
|
||||
@ -4131,6 +4315,12 @@ dependencies = [
|
||||
"unicode-vo",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "vcell"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002"
|
||||
|
||||
[[package]]
|
||||
name = "vec_map"
|
||||
version = "0.8.2"
|
||||
@ -4149,6 +4339,21 @@ version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
|
||||
|
||||
[[package]]
|
||||
name = "void"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||
|
||||
[[package]]
|
||||
name = "volatile-register"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ee8f19f9d74293faf70901bc20ad067dc1ad390d2cbf1e3f75f721ffee908b6"
|
||||
dependencies = [
|
||||
"vcell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "walkdir"
|
||||
version = "2.3.2"
|
||||
|
@ -32,7 +32,3 @@ members = [
|
||||
# update dependencies often).
|
||||
[profile.dev.package."*"]
|
||||
opt-level = 3
|
||||
|
||||
[patch.crates-io]
|
||||
# Waiting for a release: https://github.com/21re/rust-geo-booleanop/pull/27
|
||||
geo-booleanop = { git = "https://github.com/21re/rust-geo-booleanop" }
|
||||
|
@ -28,7 +28,7 @@ downcast-rs = "1.2.0"
|
||||
enumset = "1.0.3"
|
||||
fs-err = "2.6.0"
|
||||
futures-channel = { version = "0.3.12"}
|
||||
geo = "0.20.1"
|
||||
geo = "0.21.0"
|
||||
geojson = { version = "0.22.2", features = ["geo-types"] }
|
||||
geom = { path = "../../geom" }
|
||||
getrandom = { version = "0.2.3", optional = true }
|
||||
|
@ -17,7 +17,7 @@ abstutil = { path = "../../abstutil" }
|
||||
anyhow = "1.0.38"
|
||||
contour = "0.4.0"
|
||||
flate2 = "1.0.20"
|
||||
geo = "0.20.1"
|
||||
geo = "0.21.0"
|
||||
geojson = { version = "0.22.2", features = ["geo-types"] }
|
||||
geom = { path = "../../geom" }
|
||||
getrandom = { version = "0.2.3", optional = true }
|
||||
|
@ -13,7 +13,7 @@ pub fn write_geojson_file(ctx: &EventCtx, app: &App) -> Result<String> {
|
||||
}
|
||||
|
||||
fn geojson_string(ctx: &EventCtx, app: &App) -> Result<String> {
|
||||
use geo::algorithm::map_coords::MapCoordsInplace;
|
||||
use geo::MapCoordsInPlace;
|
||||
use geojson::{Feature, FeatureCollection, GeoJson, Geometry, Value};
|
||||
|
||||
let map = &app.map;
|
||||
@ -97,9 +97,9 @@ fn geojson_string(ctx: &EventCtx, app: &App) -> Result<String> {
|
||||
// This could be a Polygon, MultiPolygon, LineString
|
||||
let mut geom: geo::Geometry<f64> = feature.geometry.take().unwrap().value.try_into()?;
|
||||
|
||||
geom.map_coords_inplace(|c| {
|
||||
let gps = Pt2D::new(c.0, c.1).to_gps(gps_bounds);
|
||||
(gps.x(), gps.y())
|
||||
geom.map_coords_in_place(|c| {
|
||||
let gps = Pt2D::new(c.x, c.y).to_gps(gps_bounds);
|
||||
(gps.x(), gps.y()).into()
|
||||
});
|
||||
|
||||
// geo to geojson
|
||||
|
@ -10,7 +10,7 @@ abstutil = { path = "../abstutil" }
|
||||
anyhow = "1.0.38"
|
||||
csv = "1.1.4"
|
||||
fs-err = "2.6.0"
|
||||
geo = "0.20.1"
|
||||
geo = "0.21.0"
|
||||
geojson = { version = "0.22.2", features = ["geo-types"] }
|
||||
geom = { path = "../geom" }
|
||||
importer = { path = "../importer" }
|
||||
|
@ -10,9 +10,8 @@ abstutil = { path = "../abstutil" }
|
||||
anyhow = "1.0.38"
|
||||
earcutr = "0.1.1"
|
||||
fs-err = "2.6.0"
|
||||
geo = "0.20.1"
|
||||
geo-booleanop = "0.3.2"
|
||||
geojson = { version = "0.22.0", features = ["geo-types"] }
|
||||
geo = "0.21.0"
|
||||
geojson = { version = "0.22.2", features = ["geo-types"] }
|
||||
histogram = "0.6.9"
|
||||
instant = "0.1.7"
|
||||
ordered-float = { version = "2.4.0", features=["serde"] }
|
||||
|
@ -2,8 +2,7 @@ use std::collections::BTreeMap;
|
||||
|
||||
use aabb_quadtree::geom::{Point, Rect};
|
||||
use aabb_quadtree::QuadTree;
|
||||
use geo::algorithm::contains::Contains;
|
||||
use geo::prelude::{ClosestPoint, EuclideanDistance};
|
||||
use geo::{ClosestPoint, Contains, EuclideanDistance};
|
||||
|
||||
use crate::conversions::pts_to_line_string;
|
||||
use crate::{Bounds, Distance, Pt2D};
|
||||
|
@ -2,11 +2,7 @@ use std::convert::TryFrom;
|
||||
use std::fmt;
|
||||
|
||||
use anyhow::Result;
|
||||
use geo::algorithm::area::Area;
|
||||
use geo::algorithm::convex_hull::ConvexHull;
|
||||
use geo::algorithm::intersects::Intersects;
|
||||
use geo::algorithm::simplifyvw::SimplifyVWPreserve;
|
||||
use geo_booleanop::boolean::BooleanOp;
|
||||
use geo::{Area, BooleanOps, ConvexHull, Intersects, SimplifyVWPreserve};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use abstutil::Tags;
|
||||
@ -349,9 +345,9 @@ impl Polygon {
|
||||
return geo::MultiPolygon(Vec::new());
|
||||
}
|
||||
|
||||
let mut result = geo::MultiPolygon(vec![to_geo(list.pop().unwrap().points())]);
|
||||
let mut result = geo::MultiPolygon(vec![list.pop().unwrap().into()]);
|
||||
for p in list {
|
||||
result = result.union(&to_geo(p.points()));
|
||||
result = result.union(&p.into());
|
||||
}
|
||||
result
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
use std::fmt;
|
||||
|
||||
use geo::algorithm::simplify::Simplify;
|
||||
use geo::Simplify;
|
||||
use ordered_float::NotNan;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -16,7 +16,7 @@ anyhow = "1.0.38"
|
||||
collisions = { path = "../collisions" }
|
||||
convert_osm = { path = "../convert_osm" }
|
||||
csv = "1.1.4"
|
||||
geo = "0.20.1"
|
||||
geo = "0.21.0"
|
||||
geojson = { version = "0.22.2", features = ["geo-types"] }
|
||||
geom = { path = "../geom" }
|
||||
gdal = { version = "0.8.0", optional = true, features = ["bindgen"] }
|
||||
|
@ -1,8 +1,7 @@
|
||||
use std::convert::TryInto;
|
||||
|
||||
use anyhow::Result;
|
||||
use geo::algorithm::area::Area;
|
||||
use geo::algorithm::contains::Contains;
|
||||
use geo::{Area, Contains};
|
||||
use geojson::GeoJson;
|
||||
|
||||
use abstutil::Timer;
|
||||
|
@ -10,7 +10,7 @@ abstutil = { path = "../abstutil" }
|
||||
anyhow = "1.0.38"
|
||||
flatgeobuf = { version = "0.5" }
|
||||
futures = "0.3.12"
|
||||
geo = "0.20.1"
|
||||
geo = "0.21.0"
|
||||
geojson = { version = "0.22.2", features = ["geo-types"] }
|
||||
geom = { path = "../geom" }
|
||||
geozero = "0.7"
|
||||
@ -19,7 +19,6 @@ map_model = { path = "../map_model" }
|
||||
rand = "0.8.3"
|
||||
rand_distr = "0.4.0"
|
||||
rand_xorshift = "0.3.0"
|
||||
geo-booleanop = "0.3.2"
|
||||
serde = "1.0.123"
|
||||
serde_json = "1.0.61"
|
||||
sim = { path = "../sim" }
|
||||
|
@ -1,4 +1,4 @@
|
||||
use geo::algorithm::{area::Area, contains::Contains};
|
||||
use geo::{Area, BooleanOps, Contains};
|
||||
use rand::Rng;
|
||||
use rand_xorshift::XorShiftRng;
|
||||
|
||||
@ -53,7 +53,6 @@ pub fn distribute_population_to_homes(
|
||||
|
||||
// If the area is partly out-of-bounds, then scale down the number of residents linearly
|
||||
// based on area of the overlapping part of the polygon.
|
||||
use geo_booleanop::boolean::BooleanOp;
|
||||
let pct_overlap = polygon.intersection(&map_boundary).unsigned_area() / polygon.unsigned_area();
|
||||
let num_residents = (pct_overlap * (population as f64)) as usize;
|
||||
debug!(
|
||||
|
@ -1,5 +1,5 @@
|
||||
use anyhow::Result;
|
||||
use geo::algorithm::intersects::Intersects;
|
||||
use geo::{BoundingRect, Intersects, MapCoordsInPlace};
|
||||
|
||||
use geom::{GPSBounds, Polygon};
|
||||
|
||||
@ -13,11 +13,10 @@ impl CensusArea {
|
||||
use flatgeobuf::HttpFgbReader;
|
||||
use geozero::geo_types::GeoWriter;
|
||||
|
||||
use geo::algorithm::{bounding_rect::BoundingRect, map_coords::MapCoordsInplace};
|
||||
let mut geo_map_area: geo::Polygon<_> = map_area.clone().into();
|
||||
geo_map_area.map_coords_inplace(|c| {
|
||||
let projected = geom::Pt2D::new(c.0, c.1).to_gps(bounds);
|
||||
(projected.x(), projected.y())
|
||||
geo_map_area.map_coords_in_place(|c| {
|
||||
let projected = geom::Pt2D::new(c.x, c.y).to_gps(bounds);
|
||||
(projected.x(), projected.y()).into()
|
||||
});
|
||||
|
||||
// See the import handbook for how to prepare this file.
|
||||
@ -76,10 +75,7 @@ impl CensusArea {
|
||||
}
|
||||
|
||||
let mut polygon = geo_polygon.clone();
|
||||
polygon.map_coords_inplace(|(x, y)| {
|
||||
let point = geom::LonLat::new(*x, *y).to_pt(bounds);
|
||||
(point.x(), point.y())
|
||||
});
|
||||
polygon.map_coords_in_place(|c| geom::LonLat::new(c.x, c.y).to_pt(bounds).into());
|
||||
results.push(CensusArea {
|
||||
polygon,
|
||||
population,
|
||||
|
@ -9,7 +9,7 @@ aabb-quadtree = "0.1.0"
|
||||
abstio = { path = "../abstio" }
|
||||
abstutil = { path = "../abstutil" }
|
||||
anyhow = "1.0.38"
|
||||
geojson = { version = "0.22.0", features = ["geo-types"] }
|
||||
geojson = { version = "0.22.2", features = ["geo-types"] }
|
||||
geom = { path = "../geom" }
|
||||
kml = { path = "../kml" }
|
||||
log = "0.4.14"
|
||||
|
Loading…
Reference in New Issue
Block a user