Como también se señaló en los comentarios, intentaría dibujar una imagen similar aquí usando Java. Suponiendo que el nombre de su base de datos db
y el nombre de la colección como col
y el tipo de documento como GeoData
que podría modelarse como :
public class GeoData {
String tracerId;
Location loc;
Date date;
Integer speed;
...getters, setters and other overrides
}
public class Location {
String type;
Coordinate coordinates;
}
public class Coordinate {
double x;
double y;
}
Se procedería de la siguiente manera:
-
Ordenar elementos por campo de fecha (digamos en orden ascendente)
MongoDatabase database = getDatabase("db"); MongoCollection<GeoData> collection = database.getCollection("col", GeoData.class); Bson sortFilter = Filters.eq("date", "1"); //sort ascending List<GeoData> geoData = Lists.newArrayList(collection.find().sort(sortFilter));
-
Calcula la distancia entre puntos usando
c = square root of [(xA-xB)^2+(yA-yB)^2]
private static double distanceBetweenCoordinates(Coordinate a, Coordinate b) { return Math.sqrt(Math.pow(b.getX() - a.getX(), 2) + Math.pow(b.getY() - a.getY(),2)); }
-
Súmelos todos para calcular la distancia de la ruta
double routeDist = 0.0; for (int i = 0; i < geoData.size()-1; i++) { routeDist += distanceBetweenCoordinates(geoData.get(i+1).getLoc().getCoordinates(), geoData.get(i+1).getLoc().getCoordinates()); }