Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 5 additions & 15 deletions examples/development.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,16 @@
fbn.settings.export_file_format = 'gpkg'
fbn.constants._ROUTING_PENALTY = {0: 1.5, 1: 1}


fbn.settings.import_path = '/Users/mszell/Tresorit/bikenetkitshare/'
city_id = "frederiksberg_dk"

fbn.fixbikenet(
city_query="Frederiksberg",
city_query="Fb",
radius = 1000,
maxgap = 500,
numgaps = 20,
import_files={
'city_boundary': "./tests/test_data/frederiksberg_boundary.geojson",
'street_network': "./tests/test_data/frederiksberg_streetbike_network.gpkg",
'city_boundary': 'boundaries/'+city_id+'.geojson',
'street_network': 'streetbike_networks/'+city_id+'.gpkg',
},
)

# city = "frederiksberg_dk"
# gaps = fbn.fixbikenet(
# city_query = city,
# import_files = {
# 'city_boundary': 'boundaries/'+city+'.geojson',
# 'street_network': 'streetbike_networks/'+city+'.gpkg',
# },
# )

# data is saved in directory ./results
87 changes: 45 additions & 42 deletions fixbikenet/fixbikenet.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import numpy as np
import osmnx as ox
import pandas as pd
import warnings

from . import constants, settings

Expand Down Expand Up @@ -226,50 +227,52 @@ def fixbikenet(
if p not in keepgapdata:
del gaps_ordered[p]

# Generate export data filename
if export_data:
os.makedirs(settings.export_path, exist_ok=True)
if city_id is None:
city_string = city_query
if len(gaps_ordered)<1:
warnings.warn("No gaps found. No data was exported.")
else:
city_string = city_id
export_data_filename = (
slugify(city_string) + "-fixbikenet-gaps" + "." + settings.export_file_format
)

if export_data:
edges_gdf.drop(["osmid"], axis=1, inplace=True)
city_boundary.to_crs(epsg=4326, inplace=True)
if settings.export_file_format == "geojson":
progress_bar = initialize_progress_bar("Exporting data", 4, "file")
gaps_ordered.to_file(settings.export_path + export_data_filename, driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
edges_pbi_gdf.to_file(settings.export_path + slugify(city_string) + "-fixbikenet-existing_bike_network.geojson", driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
edges_gdf.to_file(settings.export_path + slugify(city_string) + "-fixbikenet-existing_street_network.geojson", driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
city_boundary.to_file(settings.export_path + slugify(city_string) + "-fixbikenet-city_boundary.geojson", driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
elif settings.export_file_format == "gpkg":
f = settings.export_path + export_data_filename
if os.path.exists(f):
os.remove(f) # mode="w" does not work for to_file with gpkg. It always appends. Therefore, existing file needs to be deleted.
progress_bar = initialize_progress_bar("Exporting data", 1, "file")
gaps_ordered.to_file(f, driver="GPKG", layer="Identified gaps")
edges_pbi_gdf.to_file(f, driver="GPKG", layer="Existing bike network", append=True)
edges_gdf.to_file(f, driver="GPKG", layer="Existing street network", append=True)
city_boundary.to_file(f, driver="GPKG", layer="City boundary", append=True)
progress_bar.update(1)
progress_bar.close()

if export_plot:
os.makedirs("./results/plots/", exist_ok=True)
fig, ax = plt.subplots(1, 1, figsize=(10, 10))
edges_pbi_gdf.plot(ax=ax, color="grey")
gaps_ordered.plot(ax=ax, color="red")
ax.set_axis_off()
fig.savefig("./results/plots/"+export_data_filename+".png", dpi=150, bbox_inches='tight')
plt.close()
# Generate export data filename
os.makedirs(settings.export_path, exist_ok=True)
if city_id is None:
city_string = city_query
else:
city_string = city_id
export_data_filename = (
slugify(city_string) + "-fixbikenet-gaps" + "." + settings.export_file_format
)

edges_gdf.drop(["osmid"], axis=1, inplace=True)
city_boundary.to_crs(epsg=4326, inplace=True)
if settings.export_file_format == "geojson":
progress_bar = initialize_progress_bar("Exporting data", 4, "file")
gaps_ordered.to_file(settings.export_path + export_data_filename, driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
edges_pbi_gdf.to_file(settings.export_path + slugify(city_string) + "-fixbikenet-existing_bike_network.geojson", driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
edges_gdf.to_file(settings.export_path + slugify(city_string) + "-fixbikenet-existing_street_network.geojson", driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
city_boundary.to_file(settings.export_path + slugify(city_string) + "-fixbikenet-city_boundary.geojson", driver="GeoJSON", RFC7946="YES")
progress_bar.update(1)
elif settings.export_file_format == "gpkg":
f = settings.export_path + export_data_filename
if os.path.exists(f):
os.remove(f) # mode="w" does not work for to_file with gpkg. It always appends. Therefore, existing file needs to be deleted.
progress_bar = initialize_progress_bar("Exporting data", 1, "file")
gaps_ordered.to_file(f, driver="GPKG", layer="Identified gaps")
edges_pbi_gdf.to_file(f, driver="GPKG", layer="Existing bike network", append=True)
edges_gdf.to_file(f, driver="GPKG", layer="Existing street network", append=True)
city_boundary.to_file(f, driver="GPKG", layer="City boundary", append=True)
progress_bar.update(1)
progress_bar.close()

if export_plot:
os.makedirs("./results/plots/", exist_ok=True)
fig, ax = plt.subplots(1, 1, figsize=(10, 10))
edges_pbi_gdf.plot(ax=ax, color="grey")
gaps_ordered.plot(ax=ax, color="red")
ax.set_axis_off()
fig.savefig("./results/plots/"+export_data_filename+".png", dpi=150, bbox_inches='tight')
plt.close()

# Cleanup, finalize
endtime = time.time()
Expand Down
Loading