2018-03-13 18:04:21 +03:00
#!/bin/bash
set -e
2019-07-02 17:43:28 +03:00
only_map = ""
2019-08-26 21:22:21 +03:00
release = "--release"
2019-07-02 17:43:28 +03:00
for arg in " $@ " ; do
2019-08-26 21:22:21 +03:00
if [ " $arg " = = "--debug" ] ; then
release = "" ;
else
only_map = $arg ;
fi
2019-07-02 17:43:28 +03:00
done
2018-10-04 08:26:56 +03:00
# First prepare input.
2018-10-03 17:47:59 +03:00
function get_if_needed {
if [ ! -f $2 ] ; then
wget $1 -O $2 ;
fi
}
2018-10-20 05:20:42 +03:00
mkdir -p data/input data/raw_maps
2018-10-04 08:26:56 +03:00
# TODO refactor a variant for .zips?
if [ ! -d data/input/google_transit_2018_18_08/ ] ; then
2018-11-08 21:43:42 +03:00
get_if_needed \
https://metro.kingcounty.gov/GTFS/google_transit_2018_18_08.zip \
data/input/google_transit_2018_18_08.zip;
2018-10-04 08:26:56 +03:00
unzip -d data/input/google_transit_2018_18_08 data/input/google_transit_2018_18_08.zip;
rm -f data/input/google_transit_2018_18_08.zip;
fi
2018-10-15 05:06:57 +03:00
if [ ! -f data/input/neighborhoods.geojson ] ; then
# https://data.seattle.gov/dataset/Neighborhoods/2mbt-aqqx in GeoJSON, not SHP
2018-11-08 21:43:42 +03:00
get_if_needed \
https://github.com/seattleio/seattle-boundaries-data/raw/master/data/neighborhoods.geojson \
data/input/neighborhoods.geojson;
2018-10-15 05:06:57 +03:00
fi
2018-10-04 08:26:56 +03:00
if [ ! -f data/input/Seattle.osm ] ; then
2018-11-08 21:43:42 +03:00
get_if_needed \
http://download.bbbike.org/osm/bbbike/Seattle/Seattle.osm.gz \
data/input/Seattle.osm.gz;
2018-10-04 08:26:56 +03:00
gunzip data/input/Seattle.osm.gz;
fi
2018-10-30 01:12:45 +03:00
for poly in ` ls data/polygons/` ; do
name = ` basename -s .poly $poly ` ;
if [ ! -f data/input/$name .osm ] ; then
2018-11-08 21:43:42 +03:00
osmosis \
--read-xml enableDateParsing = no file = data/input/Seattle.osm \
--bounding-polygon file = data/polygons/$name .poly completeWays = true \
--write-xml data/input/$name .osm
2018-10-30 01:12:45 +03:00
fi
done
2019-06-11 23:47:12 +03:00
if [ ! -f data/shapes/blockface.bin ] ; then
2018-11-22 04:18:31 +03:00
# From http://data-seattlecitygis.opendata.arcgis.com/datasets/blockface
get_if_needed https://opendata.arcgis.com/datasets/a1458ad1abca41869b81f7c0db0cd777_0.kml data/input/blockface.kml;
cd kml
time cargo run --release -- \
--input= ../data/input/blockface.kml \
2019-06-11 23:47:12 +03:00
--output= ../data/shapes/blockface.bin
2018-11-22 04:18:31 +03:00
cd ..
fi
2019-05-20 17:06:52 +03:00
if [ ! -f data/input/household_vehicles.kml ] ; then
# From https://gis-kingcounty.opendata.arcgis.com/datasets/acs-household-size-by-vehicles-available-acs-b08201-householdvehicles
get_if_needed https://opendata.arcgis.com/datasets/7842d815523c4f1b9564e0301e2eafa4_2372.kml data/input/household_vehicles.kml;
get_if_needed https://www.arcgis.com/sharing/rest/content/items/7842d815523c4f1b9564e0301e2eafa4/info/metadata/metadata.xml data/input/household_vehicles.xml;
fi
if [ ! -f data/input/commute_time.kml ] ; then
# From https://gis-kingcounty.opendata.arcgis.com/datasets/acs-travel-time-to-work-acs-b08303-traveltime
get_if_needed https://opendata.arcgis.com/datasets/9b5fd85861a04c5ab8b7407c7b58da7c_2375.kml data/input/commute_time.kml;
get_if_needed https://www.arcgis.com/sharing/rest/content/items/9b5fd85861a04c5ab8b7407c7b58da7c/info/metadata/metadata.xml data/input/commute_time.xml;
fi
if [ ! -f data/input/commute_mode.kml ] ; then
# From https://gis-kingcounty.opendata.arcgis.com/datasets/acs-means-of-transportation-to-work-acs-b08301-transportation
get_if_needed https://opendata.arcgis.com/datasets/1da9717ca5ff4505826aba40a7ac0a58_2374.kml data/input/commute_mode.kml;
get_if_needed https://www.arcgis.com/sharing/rest/content/items/1da9717ca5ff4505826aba40a7ac0a58/info/metadata/metadata.xml data/input/commute_mode.xml;
fi
2019-08-25 04:41:28 +03:00
if [ ! -f data/input/offstreet_parking.kml ] ; then
# From https://data.seattle.gov/Transportation/Public-Garages-or-Parking-Lots/xefx-khzm
get_if_needed http://data-seattlecitygis.opendata.arcgis.com/datasets/8e52dfde6d5d45948f7a90654c8d50cd_0.kml data/input/offstreet_parking.kml;
fi
2018-03-13 18:04:21 +03:00
cd convert_osm
2018-10-31 01:00:32 +03:00
for poly in ` ls ../data/polygons/` ; do
name = ` basename -s .poly $poly ` ;
2019-07-02 17:43:28 +03:00
if [ " $only_map " != "" ] && [ " $only_map " != " $name " ] ; then
continue ;
fi
2019-06-11 23:47:12 +03:00
rm -rf ../data/neighborhoods/$name ../data/maps/${ name } .bin;
2019-08-26 21:22:21 +03:00
RUST_BACKTRACE = 1 cargo run $release -- \
2018-11-08 21:43:42 +03:00
--osm= ../data/input/$name .osm \
2019-06-11 23:47:12 +03:00
--parking_shapes= ../data/shapes/blockface.bin \
2019-08-25 23:19:35 +03:00
--offstreet_parking= ../data/input/offstreet_parking.kml \
2018-11-08 21:43:42 +03:00
--gtfs= ../data/input/google_transit_2018_18_08 \
--neighborhoods= ../data/input/neighborhoods.geojson \
2019-02-12 04:55:47 +03:00
--clip= ../data/polygons/$name .poly \
2019-06-11 23:47:12 +03:00
--output= ../data/raw_maps/$name .bin
2018-10-30 01:12:45 +03:00
done
2019-01-17 00:43:16 +03:00
2019-08-25 23:19:35 +03:00
# To run manually: cargo run -- --osm=../data/input/montlake.osm --parking_shapes=../data/shapes/blockface.bin --offstreet_parking=../data/input/offstreet_parking.kml --gtfs=../data/input/google_transit_2018_18_08 --neighborhoods=../data/input/neighborhoods.geojson --clip=../data/polygons/montlake.poly --output=../data/raw_maps/montlake.bin --fast_dev