We implement ODIN and the baselines based on the Spring and the MVC architecture, which eases the evaluation of various approaches that involve the same parameters and datasets.
The codes for ODIN and baselines are in the packages “src/main/java/ODIN” and “src/main/java/Baseline” respectively. The driver class of our proposal (i.e., ODIN) is “src/main/java/ODIN/ODINApplication.java”, while the driver class of each baseline is “src/main/java/Baseline/BaslinApplication.java”. At the start-up of operating a baseline, please input the baseline name (i.e., SGrid, ERkNN, SIMkNN, VTtree, or TenIndex) to start the corresponding baseline method. The parameters evaluated in experiments are in the driver class for both ODIN and baseline methods.
All datasets relied on by each algorithm have been available on data. Just download the “data” folder and put it into the root directory of the source code. Each subfolder of “data” contains the datasets corresponding to each road network. Here, we take NY as an example to explain the meanings of datasets on each sub-folder of “data”. In particular, “original-NY.txt” is the graph of the road network NY that is organized with the adjacent list, “original-NY.co” is the set of coordinates of all vertices in NY, and “METIS-‘RN’-4branches-300.txt” is the hierarchical partitioned subgraphs of NY using METIS, where the number of branches is 4 (m=4) and the size threshold of each subgraph is 300 (z=300). Other hierarchical partitioned subgraphs with different branches and size thresholds of subgrahps can be obtained by using the partitioning script of METIS, "metisforknn.py", in the folder “metis”, where the input graphs of the script are available in “metis/inputGraphs”.