How best simplify a road network?

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

How best simplify a road network?

Michal Kvasnička

I need to read the OSM map into R and convert it to spatstat linnet class.
In the process, I need to simplify the graph so that no edge is shorter
than several meters. At the same time, the network graph topology must
remain the same, i.e. the crossroads must be kept as they are.

So far, I've proceeded this way: 1) I use the map packed by,
2) I read it with sf::st_read(), 3) transform its CRS to Krovak projection
with st_transform(), and 4) simplify it with

roads %>%
    st_simplify(preserveTopology = TRUE, dTolerance = 20)

My questions:
1. Does st_simplify() the work, i.e. does it keep the crossroads?
2. Is st_union() in front of it necessary?
3. Isn't there a better way? st_simplify() still leaves some very short
(about 1 mm long) edges in the graph. (If necessary, crossroads, i.e.
vertices with more than two edges, can be moved and joined if they are
close to each other and connected with an edge, since all such vertices
closer than several meters may represent a bug in the map anyway. At least,
I guess so.)

One extra question: I going through, sf, sp, and
spatstat::as.linnet() safe?

Many thanks for your kind help.

Best wishes,
*Ing. Michal Kvasnička, Ph.D.*

*Masaryk University | School of Economics and Administration*
Department of Economics
A: Lipová 41a | 602 00 Brno
E: [hidden email] | W:

        [[alternative HTML version deleted]]

R-sig-Geo mailing list
[hidden email]