MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да изчисля разстоянието на маршрута между много GeoJSON точки в MongoDB?

Както беше посочено и в коментарите, бих се опитал да нарисувам подобна картина тук, използвайки Java. Ако приемем името на вашата база данни db и име на колекция като col и типа на документа като GeoData което може да се моделира като :

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;
}

Ще продължи по следния начин:

  1. Сортирайте елементите по поле за дата (да речем във възходящ ред)

    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));
    
  2. Изчислете разстоянието между точките, като използвате 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));
    }
    
  3. Сумирайте всички тях, за да изчислите разстоянието на маршрута

    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());
    } 
    



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да дефинирам персонализиран помощник за заявки в mongoose модел с машинопис?

  2. node.JS Express паспортно маршрутизиране

  3. Грешка на Django MongoDB Engine при изпълнение на tellsiteid

  4. Как да намерите заявки, които не използват индекси или са бавни в mongodb

  5. Позиционни $ работят върху различни части на един и същ документ?