Shortest Path Navigation Application on GIS Supervisor: Dr. Damitha Karunaratne Thilani Imalka 2007/MCS/023 Road Map Introduction Motivation Architecture/Design Implementation Problems encountered and solutions Testing Future enhancements Introduction Geographical Information Systems (GIS) Information system Store, capture, analyze, manage and present all forms of geographically referenced data. Currently there are many number of GISs are available such as Google Earth, Yahoo Map etc... Shortest Path Navigation is a main application in location based systems. Shortest path analyses - commonly based on vector maps. Used to calculate the shortest path between two points in a network or route. Shortest Path Algorithms In graph theory, It’s the problem of finding a path between two vertices (or nodes) such that the sum of the weights of its constituent edges is minimized. Ex: On a road map; vertices locations & edges roads. Dijkstra's algorithm – Solves the single-source shortest path problem, with non negative edge path costs, common in routing. Bellman-Ford algorithm Label correcting algorithm, computes single-source shortest paths in a weighted digraph A* search algorithm, Floyd Warshall algorithm and Johnson's algorithm. GIS Navigation related Applications MapQuest Its a map publisher and a free online Web mapping service owned by AOL. Lets users automatically find their locations and locate nearby points of interest; ex: airports, hotels, banks and ATM Google Maps Free web mapping service application and technology provided by Google. Google street view is a new feature of Google Maps which provides 360 panoramic street-level views of various U.S. cities. Yahoo Maps Motivation The road network is much more complex. It’s very difficult to find and navigate through an optimal path between two locations without any guidance. There’re some commercially available GIS navigation applications exists, but they are very expensive and cant utilize them into public. Some freely available web navigation systems exits, But can’t applicable to Sri Lankan road network. Goals and Objectives Goals Design a user friendly; web based application to calculate the shortest path or route between user given locations. Returns a map with the shortest route being highlighted. To calculate the shortest path, Use the famous shortest path algorithm, Dijkstra’s. Objectives Minimize Cost. Operates in an easy manner. Save time. Applicable to Sri Lankan road network. Manage resources. Scope User should enter the exact starting location and end location in the given GUI (text boxes). Locations should be given as coordinates (longitudes, latitudes). Two ways of doing that. User should be able to enter the exact starting location and end location in the given GUI (text boxes), or By using the pointing device. System supports only for a single end location, not for multiple destinations at a time. Output will highlight the shortest path on the map. But not display directions, estimated time for the journey etc… If the given locations are not located exactly on the road, the system will calculate the nearest road for those locations first. Related Technology PostGIS MapServer PostGIS is a database which is supporting for Geographic Information Systems. Extension for well known PostgreSQL object-relational database Open Source development environment for building spatiallyenabled internet applications. OpenLayers Pure JavaScript library for displaying map data in most modern web browsers No server-side dependencies. Architecture/Design Architecture/Design The system deployed on Tomcat, which is a servlet container. All the applications are running on top of the Tomcat. Using Spring MVC Java application framework. Very flexible Entirely based on interfaces. Easier to test Using JSP to design user interfaces. More powerful Portable to other operating systems Contains dynamic information Implementation –Class Diagram Implementation – Dijkstra’s algorithm Initialize single source Iterate all the vertexes. Set the distance of those vertexes to infinity The distance of the source vertex is set to zero. Iterate all the vertexes. Extract the minimum distance node Get the adjacent node for minimum distance vertex Perform the relaxation Relaxing and edge (u,v) consists of testing whether the shortest path to v found so far can be improved by going through u. Perform the resulted shortest path Problems encountered and solutions Extracting x,y coordinates of roads from the table Geometry information stored in the_geom column as MultiLine strings. Those consists of Line strings. Line strings are collection of point vectors. Point vectors are consists of points. Point contains x,y coordinates. Have to go far to obtain x,y inorder to perform shortest path. All the roads are isolated. Each record in the roads table contain information about 1 particular road. Can’t identify whether there’re joins with other roads by looking at the_geom column. Had to perform a computation to check x,y coordinates of each road using the_geom value, and had to check joins of roads using separate x,y coordinates of each road. Problems encountered and solutions Find out adjacent nodes per each and every vertex In order to perform Dijkstra’s need to deal with adjacent nodes per vertexes. No any information about adjacent nodes available with data. It was provided by implementing a static table which is a simplified version of the roads table. Even though it generates only once, no matter since the road network is static. It contains all the point vice information The table consists of adjacent node information of each and every node. Problems encountered and solutions Find out adjacent nodes when roads are intersecting Problems encountered and solutions Identify x,y coordinates of the mouse on click event and the way to get the nearest road for a point which is not on the road Used the openlayers click function to get the longitudes and latitudes of the clicked position. Created a circle (zone) for the point with radius = 100 and find whether there any near roads to the point. If not found increase the radius of the circle by radius * 2 and find near roads. All the roads resulted as near to the point is stored in an array. Sort the array according to the distance and results the 1st element in the array as the nearest road for the point. Problems encountered and solutions Displaying the shortest path on the map The result should be seen on the map as a highlighted path Two ways of generating a dynamic layer. Generate with OpenLayers – Bit harder as it’s fully deal with OpenLayer’s java script library. Generating the layer with dynamically created database table If so, the resulted graph is represented as vertexes, This table consists of only one row, which represents the shortest path for given two locations. Shortest path information will project on to the dynamically generated layer. For every shortest path calculation, this table will delete the existing record and insert the new record with new geometry including shortest path information. Testing Testing started while implementing the system and after implementing the system. Testing the algorithm implementation Dynamic layer generation to display the highlighted shortest path Dijkstra’s algorithm divided into sub functionalities. Sub functionalities were tested using junit test cases. After implementing the algorithm if the success rate of jUnit test cases is 100% the algorithm is correct. Loading resulted shortest path into the dynamictable and display the shortest path on a dynamically generated layer and highlight the path tested manually with samples. Overall functionality testing GUI testing Future enhancements Provide the main functionality as SOAP web services which is align to OGC standards. Any one can use. Reduce the processing area of the map by cropping down the map only into the needed points. Display more than 1 shortest path, if there are. Provide a facility to input text based locations rather than giving longitudes and latitudes. Can provide more information as driving directions, estimated time for the journey and road conditions etc. Traffic conditions of roads can be considered as a weight here, there should be some mechanism or a specific person to update the traffic condition accordingly. Thank You !!! QUESTIONS???