I need some information about driving_distance calculation function:
1) the query point(source_id) has to be a vertex or can it be a 2D point that is mapped to the closest possible edge?
2) what happens with edges, that are partially reached? (one vertex is reached in time, the other one is not)
3) is the entire network loaded into main memory for doing such a computation?
I need some information about driving_distance calculation function:
the query point(source_id) has to be a vertex or can it be a 2D point that is mapped to the closest possible edge?
Driving Distance functions starts with a vertex. (There is a wrapper function that takes coordinates as start and searches for the nearest vertex from the given point).
what happens with edges, that are partially reached? (one vertex is reached in time, the other one is not)
Driving Distance only cares about vertices, because it works like Dijkstra algorithm. You can take the vertices and write an SQL function for example, that returns you the edges … or a polygon.
is the entire network loaded into main memory for doing such a computation?
This depends on your query. You can only select the network in your query that you think is relevant for your result. Usually you select a bounding box around your start point. It’s easy to guess how large this area is, if you cost parameter is a distance. It’s more difficult if you cost parameter is time for example. If your bounding box was too small, then your result might have the shape of a square.
Driving Distance functions starts with a vertex. (There is a wrapper
function that takes coordinates as start and searches for the nearest vertex
from the given point).
2) what happens with edges, that are partially reached? (one vertex is
reached in time, the other one is not)
Driving Distance only cares about vertices, because it works like Dijkstra
algorithm. You can take the vertices and write an SQL function for example,
that returns you the edges ... or a polygon.
ok, thanks
The algorithm uses only the cost column(or reverse_cost column) of the edges to compute the costs of the target vertex? This means there is no way to compute the cost in dependency of a passed walking speed parameter, where cost are defined as edge_length/speed.
The algorithm uses only the cost column(or reverse_cost column) of the edges to compute the costs of the target vertex? This means there is no way to compute the cost in dependency of a passed walking speed parameter, where cost are defined as edge_length/speed.
The cost is what you define as cost. Anything is OK. You select the cost column in your query, which can be a combination of several attributes.
Driving Distance functions starts with a vertex. (There is a wrapper
function that takes coordinates as start and searches for the nearest
vertex
from the given point).
2) what happens with edges, that are partially reached? (one vertex is
reached in time, the other one is not)
Driving Distance only cares about vertices, because it works like
Dijkstra
algorithm. You can take the vertices and write an SQL function for
example,
that returns you the edges ... or a polygon.
ok, thanks
The algorithm uses only the cost column(or reverse_cost column) of the
edges to compute the costs of the target vertex? This means there is no
way to compute the cost in dependency of a passed walking speed
parameter, where cost are defined as edge_length/speed.
You might be able to define a view where you add a column walking_speed and compute the value you want.
Then pass the view to the wrapper along with your new column name.
Also I would recommend reading the plpgsql of the wrapper function. It should be pretty easy to clone it and modify it to meet you needs. I have done this for some of my projects.
The algorithm uses only the cost column(or reverse_cost column) of the
edges to compute the costs of the target vertex? This means there is no way
to compute the cost in dependency of a passed walking speed parameter, where
cost are defined as edge_length/speed.
The cost is what you define as cost. Anything is OK. You select the cost
column in your query, which can be a combination of several attributes.
ok, perfect.
My last question now:
the function returns a edge_id, described by the identifier of the edge crossed. What is the benefit of this attribute? What does this edge do?
If the result contains the vertices reached in the given time from the query point, why also adding the edge identifier?
The algorithm uses only the cost column(or reverse_cost column) of the
edges to compute the costs of the target vertex? This means there is no way
to compute the cost in dependency of a passed walking speed parameter, where
cost are defined as edge_length/speed.
The cost is what you define as cost. Anything is OK. You select the cost
column in your query, which can be a combination of several attributes.
ok, perfect.
My last question now:
the function returns a edge_id, described by the identifier of the edge crossed. What is the benefit of this attribute? What does this edge do?
If the result contains the vertices reached in the given time from the query point, why also adding the edge identifier?
Nothing … it doesn’t do anything as far as I remember. (or please correct me, Anton)
It’s possible to discuss whether this is a good idea or not, but the reason is that the query result is in the same form as the core shortest path functions. You don’t need to select everything (“*”).