abrensch / brouter

configurable OSM offline router with elevation awareness, Java + Android
MIT License
477 stars 114 forks source link

Smaller segment files #509

Open FaFre opened 1 year ago

FaFre commented 1 year ago

I plan to integrate brouter into my App. The segments will be pulled accordingly on demand from a hosted source. Some of the segments for very dense regions do have a pretty big filesize, that will be both taking up (probably) unnecessary space on the device and are also costly in terms of time and size to transfer over the network.

I was thinking about reducing the resolution to 1x1 lat/lon, which would be more suitable for my use case.

Yet, I havent looked deeply into the file structure and checked the code in detail. There might be some good arguments why 5x5 has been chosen :)

Will it be suitable for brouter to consume smaller lon/lat files, or will this result worse/unoptimized performance when computing routes?

Would this work well considering possible internal compressions for the rd5 files which will result in inefficient storage usage, or bad loading times?

abrensch commented 1 year ago

Actually the RD5 Files do contain 25 "logical 1dx1d files" so switching to 1dx1d is straight forward.

Watch out for the number of open file-handles the Router is holding ( see NodesCache.fileCache )

There's no concept for closing them before the RoutingEngine instance is closed, so you might touch a file-handle limit for long-distance routings. Or add some LRU-Caching logic for these file-handles (nasty stuff)

So yes 5x5 is a natural choice, first because SRTM data comes in that format, and because the Preprocessor can cut the Planet into 5x5 Tiles in 2 Runs ( 360x180 ---> 45x30 ---> 5x5 ) with no more then 54 parallel open files at a time.