@@ -102,6 +102,36 @@ function overpass_query(filters::String,
102102 return query
103103end
104104
105+ """
106+ osm_network_from_custom_filters(custom_filters::String,
107+ metadata::Bool=false,
108+ download_format::Symbol=:json,
109+ bbox::Union{Vector{AbstractFloat},Nothing}=nothing
110+ )::String
111+
112+ To pass in a custom query string, filters and bbox
113+
114+ # Arguments
115+ - `custom_filters::String`: Custom filters for the query, e.g. polygon filter, highways only, traffic lights only, etc.
116+ - `metadata::Bool=false`: Set true to return metadata.
117+ - `download_format::Symbol=:json`: Download format, either `:osm`, `:xml` or `json`.
118+ - `bbox::Union{Vector{AbstractFloat},Nothing}=nothing`: Optional bounding box filter.
119+ - `network_type::Symbol=:drive`:
120+
121+ # Return
122+ - `String`: Overpass query string.
123+ """
124+ function osm_network_from_custom_filters (;custom_filters:: String ,
125+ network_type:: Symbol = :drive ,
126+ metadata:: Bool = false ,
127+ download_format:: Symbol = :json ,
128+ bbox:: Union{Vector{<:AbstractFloat},Nothing} = nothing ):: String
129+ # return overpass_request(query)
130+ query = overpass_query (custom_filters, metadata, download_format, bbox)
131+ response = overpass_request (query)
132+ return response
133+ end
134+
105135"""
106136 overpass_polygon_network_query(geojson_polygons::Vector{Vector{Any}},
107137 network_type::Symbol=:drive,
@@ -334,6 +364,8 @@ function osm_network_downloader(download_method::Symbol)::Function
334364 return osm_network_from_point
335365 elseif download_method == :polygon
336366 return osm_network_from_polygon
367+ elseif download_method == :custom_filters
368+ return osm_network_from_custom_filters
337369 else
338370 throw (ArgumentError (" OSM network downloader $download_method does not exist" ))
339371 end
@@ -375,6 +407,12 @@ Downloads an OpenStreetMap network by querying with a place name, bounding box,
375407*`download_method=:polygon`*
376408- `polygon::AbstractVector`: Vector of longitude-latitude pairs.
377409
410+ *`download_method=:custom_filters`*
411+ - `custom_filters::String`: Filters for the query, e.g. polygon filter, highways only, traffic lights only, etc.
412+ - `metadata::Bool=false`: Set true to return metadata.
413+ - `download_format::Symbol=:json`: Download format, either `:osm`, `:xml` or `json`.
414+ - `bbox::Union{Vector{AbstractFloat},Nothing}=nothing`: Optional bounding box filter.
415+
378416# Network Types
379417- `:drive`: Motorways excluding private and service ways.
380418- `:drive_service`: Motorways including private and service ways.
0 commit comments