I wanted to know what is the basic difference between a GPX track and route file
A route is a sequence of waypoints, its the plan for your navigation. A track is the recorded path you did actually follow while trying to implement the plan (the route).
As GPX files a different XML schema is used for routes and tracks. Here are examples: http://cycleseven.org/gps-waypoints-routes-and-tracks-the-difference
Originally, a GPX route was supposed to consists of only waypoints important to navigate along them from origin to destination, still allowing differences in the actual track taken due to, for instance, traffic conditions or construction sites. Hence, the GPX track was supposed to consists of a much more dense sequence of actually recorded locations on the way from waypoint to waypoint. A pretty good scheme can be found on Wikipedia.
Since Stefan's link is broken, you will find the latest official GPX definition and documentation at topografix.com.
However, GPX tracks are sometimes used for all purposes: planning tours, navigating (particularly when cycling or hiking) or recording the actual track.
I participate in a cycling group (San Jose Bike Party) that routes a course each month which you can download as a GPX Track or GPX Route. When I upload them into my fitness app (Strava), you can see the difference between a GPX Track and a GPX Route.
Note that the GPX Track contours the roads for the exact route they recorded, but the GPX Route only notes the point-to-point linear segments between the sparse points they recorded. It's up to you or your navigation router to determine how to get from point to point in the GPX Route.
Related
Is there a (free) webservice where I can a) give it an address (either full or city, state/province and zip), and b) get the IANA timezone of that address?
Use case: I have a form where a user manages clinics. Each clinic has an address. I want to preselect that IANA timezone of that address, so that I can adjust appointment date/times associated with that clinic.
I know that the Google Maps API and Bing Maps API can give me the lat/long of an address, and that there are other services that can give me the IANA TZ based on the lat/long. That said, those api's require subscriptions and keys and contracts, and it would also require a two request approach to get the single piece of data.
Address geolocation is a hard problem. It requires deep understanding of address systems and reacting to ever-changing, real-world, messy scenarios.
For example, you could get a database of the Zip codes of the United States and their approximate locations, but it would only be a snapshot. You'd find over time that new Zip codes would be added and missing from your data, and that existing Zip codes had been expanded to include other areas. You'd also find many Zip codes that are "non-locatable", such as those used to send mail to military overseas. You could even find a single Zip code that has addresses in two different time zones.
Take international concerns into effect and you'll find all sorts of edge cases. Every country and territory has their own special rules and situations.
It is a problem worth paying a service provider for. Trying to do geolocation in an offline manner might be possible, but it isn't advised.
The second part - figuring out which time zone goes to a location, is also messy. However it's slightly easier to coordinate. The Time Zone Boundary Builder is the main open-source project that attempts this. Most libraries referenced here use that data. But even then, it has updates and relies on borders established by Open Street Map data. Some of those borders are in dispute, so a service from Google, Microsoft, or others could give different results because they have map data with different borders. If you care about such things then you might want to test some edge cases against the different providers to see if you're satisfied with the results. You may find that the TZBB data works well, or you might prefer one of the online solutions.
I am having difficulty in overcoming the situation I am facing. I have a route as follow:
StartPoint
WayPoint A-1 <--- Pickup
WayPoint A-2 <--- Dropoff
WayPoint B-1 <--- Pickup
WayPoint B-2 <--- Dropoff
WayPoint C-1 <--- Pickup
WayPoint C-2 <--- Dropoff
EndPoint
A bus is starting to drive from Start Point and it is supposed to pick 3 passengers up (A, B, C) and drop them off in different locations. The locations are not static and it changes based on passenger.
If I pass all these to google map directions api and set the OptimizeWaypoint option to true the issue that occurs is sometimes the dropoff waypoint occurs before pickup waypoint for a passenger due to route optimization.
Does anyone know a solution to force google map api route optimization to always have pickup before the dropoff for each passenger please?
I appreciate all your help in advance guys.
I have found a solution to my problem after 3 days of research. The solution is not through Google Map API and it's using a third party API called RouteXL. They are providing an API which does such this thing I am looking for. Here is the link to documentation although their documentation is not clearly documented but it has helped me to work it out.
https://www.routexl.nl/blog/api/?lang=en#post-tour
The function which I needed was the Tour Post and that does what I exactly needed.
If anyone needs any help on this I am happy to help.
I hope this helps everyone else.
Thank you all for the help.
The waypoint optimization feature in Google Maps is limited to basic travelling salesmen scenarios in which all the waypoints are re-ordered to find the optimal route. What you are looking to do falls under the category of Vehicle Routing problem, more precisely the Vehicle Routing Problem with pickup and delivery. Google doesn't provide a service for this. However, there are some open source algorithm available for this. Here are a few:
https://github.com/pgRouting/pgrouting/wiki/VRP%20Pickup%20Delivery%20Problem
https://github.com/graphhopper/jsprit
https://github.com/mck-/Open-VRP
Most of these use straight line distances to generate a distance matrix between your locations which are then used within the algorithm. For better accuracy you may want to use a distance matrix service that based on travel time. For even more accuracy you may want to take a look at the Bing Maps distance matrix service which also provides the option to generate a distance matrix over a period of time intervals for a day which would fluctuate based on predictive traffic conditions.
I am using Nokia maps (Navteq, postgis DB).
Given a "link" I want to get all the "links" which belong to a bounding-box that map-match the same highway / route.
How can I do this using DB queries / Postgis?
Just came across this open topic. Do you know that HERE is meanwhile providing an online possibility for requesting linkIds within a boundingBox?
Further information can be sound here: Fleet Telematics Custom Locations
https://developer.here.com/documentation/custom-location/topics/key-concepts.html
And here is an example for a corridor search:
https://developer.here.com/documentation/custom-location/topics/example-search-corridor.html
That might be easier than host a database and then query the needed content.
Hope this helps.
I use the Direction API to plot and save a route between A and B.
My application receives a coordinated car gps, I would like to
identify if the car is off course previously traced.
Anyone have any idea how to do this?
You may create a polyline based on the route and use google.maps.geometry.poly.isLocationOnEdge to check if the current coordinate is placed on/near the polyline.
For an approximate result create the polyline using the overview_path of the route, for higher accuracy use the lat_lngs of the steps of the route
I recently joined a team working on an application that maintains listings with addresses. The user searches, and includes their zipcode, and the application displays the distance to each listing. Currently we use the Google Maps API for this. Reading through questions here on StackOverflow seem to suggest that this is the best way of doing things:
php/mysql zip code proximity search
Search engine by distance
However, while reading through the API documentation, this seems to be expressly forbidden unless we also show a map for each result (and possibly also for each result we filter out, depending on how you read the following statement):
Use of the Distance Matrix API must relate to the display of information on a Google Map; for example, to determine origin-destination pairs that fall within a specific driving time from one another, before requesting and displaying those destinations on a map. Use of the service in an application that doesn't display a Google map is prohibited.
( https://developers.google.com/maps/documentation/distancematrix/ )
What's the best way to accomplish this without running afoul of any API terms?
do you consider the Geo::PostalCode module (perl)? It uses maxmind database to calculate distances between locations (and there is bind in different languages).