Latitude and Longitude of Path from A to B
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi all,
Is there a premade function in Matlab that can gives sets of latitude and longitude of the shortest possible routes (like GPS) from one place to another (represented also as latitude longtitude)
So the input is:
Latitude and Longitude of a place A
Latitude and Longitude of a place B
The output is:
set of latitudes and longitudes of route 1 from A to B in a matrix
set of latitudes and longitudes of route 2 from A to B in a matrix
set of latitudes and longitudes of route 3 from A to B in a matrix
etc.....
The number of points of latitudes and longitudes in the output would depend on another input that describe how details the output would be.
Might be very complex things to do.
Thanks a lot in advance for any suggestion.
1 commentaire
Edoardo
le 24 Juil 2024
I've been doing something similar using https://openrouteservice.org/, you may also find https://open-elevation.com/ useful. They are both open source and provide free docker images for self hosting without any imposed usage limits, open elevation doesn't even require an API key but the free version sometimes rejects requests pretty often and you'll have to wait a minute.
You can use something like a https://curlconverter.com/matlab/ to automatically generate the matlab HTTP or POST requests generating the code from the API playground.
You can request more than one possible route between two sets of coordinates which seems to be what you want to do and also calculate distance matrices between several points
Réponses (1)
Walter Roberson
le 21 Déc 2017
No, there is no such premade function.
However, you can use the Mapping Toolbox function distance() which can calculate distances between points on a reference spheroid (though it does not appear to know anything about elevation.) Once you have those distances, you can use the MATLAB function graph() to create a graph object, after which you can use shortestpath() to find shortest path along the graph.
2 commentaires
New to matlab
le 24 Avr 2021
Thank you for the answer.
so after finding the shortest path using graph displays. do do you have a way to extract latitude/longitude data (of that path) ?
Edoardo
le 24 Juil 2024
Or without having to use the mapping toolbox you could make a custom haversine formula function.
trueDistance = 6371000 * 2 * asin(sqrt(sin(dLat / 2)^2 + sin(dLon / 2)^2 * cos(lat1) * cos(lat2)));
where dLat and dLon are the difference in Lat and Lon between the two points, 6371000 is the radius of the earth in m. Not entirely sure but looks like dLat and dLon might not need to be absolute values so dLat = Lat1 - Lat2 or dLat = Lat2 - Lat1 should work as . Remember to convert to radians first.
As Walter (the goat) mentioned this doesn't account for distance but instead assumes points on a circle, but at least for my application, is good enough.
Voir également
Catégories
En savoir plus sur Construction dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!