Package: crossroads-segmentation
crossroads segmentationCrossroads segmentationis a python tool that produces automatic segmentations of data from OpenStreetMap.InstallationWith pip, use the following command line to install crseg:pip install crossroads-segmentationDependancies:OSMnxthat includesNetworkXandpandas.argparseHow it worksThe computation uses both geometric and semantic information to identify and segment crossroads.Identify streets and classify nodesBuild elementary intersectionsMerge intersections by proximityMerge intersections using multiple connectivity^Identify branchesA paper presenting the algorithms implemented in this tool has been accepted at the AGILE 2022 conference:Favreau, J.-M. and Kalsron, J.,What are intersections for pedestrian users?, in proceedings of the 25th AGILE International Conference on Geographic Information Science, Vilnius, Lithuania, 2022. (presentation).This tool has been also be presented atSOTM-fr2022.UsageIf you installed crossroads-segmentation using pip, a console script is now available usingget_crossroad_segmentation. A slightly more complete version is available in the examples folder (PYTHONPATH=$PWD examples/get-crossroad-segmentation.py). You will find a complete segmentation of the possible parameters using the--helpparameter.This tool is using OSMnx to download OpenStreetMap data from the selected region. It uses a cache, stored incache/directory. If a region has already been asked, it will use the cached data and not download it again. You can of course delete the cache directory to download again the data.The location of the region can be choosen using coordinates (--by-coordinates LAT LNG) or using an predefined coordinate defined by a name in the example version (--by-name NAME). A radius (-r VALUE) with a default value of 150 meters can be adjusted to choose the size of the region to consider.Several outputs are possible:to display the segmentation with all the crossings in the region (--display-segmentation), or only focussing on the main crossroad (--display-main-crossroad) closest to the input coordinate. This second display gives also the branches of the crossroad.to produce a text version of the selection (--to-text,--to-text-all) in the standard outputto produce ajsonfile that contains all the detected crossroads (--to-json-all FILENAME) or only the main one (--to-json FILENAME). Branches are also contained in this output.3 parameters (C0, C1 and C2) to drive the creation and merge of the crossroads (see associated publication)a maximum number of crossroads in a ring (--max-cycle-elements NB), with default value of 10 for the last step of the segmentation.Several of these outputs (--to-json,--to-json-all,--display-main-crossroad,--to-geopackage) can be adjusted using the parameter--multiscaleto describe the small crossroad that has been merged to produce the large ones.Non regression testsA very basic non regression test is provided intestdirectory. Usage:run first./regenerate_references.shrun./test.sheach time you want to check for regressionsVisual evaluationA separated project is available to evaluate segmentation quality. Seecrossroads-evaluation.Examples./get-crossroad-segmentation.py --by-name POC1  --display-main-crossroad --multiscale./get-crossroad-segmentation.py --by-name obélisque  --display-segmentation -r 1000