MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để tính toán khoảng cách tuyến đường giữa nhiều điểm GeoJSON trong MongoDB?

Như đã chỉ ra trong các bình luận, sẽ cố gắng vẽ một bức tranh tương tự ở đây bằng cách sử dụng Java. Giả sử tên cơ sở dữ liệu của bạn db và tên bộ sưu tập là col và loại tài liệu là GeoData có thể được mô hình hóa là:

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

Nó sẽ tiến hành như sau:

  1. Sắp xếp các mục theo trường ngày (giả sử theo thứ tự tăng dần)

    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. Tính khoảng cách giữa các điểm bằng cách sử dụng 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. Tính tổng tất cả chúng để tính khoảng cách tuyến đường

    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. MongoDB với C # - truy vấn với vị từ được tạo động

  2. Làm cách nào để chuyển đổi một trường boolean trong một tài liệu với phép toán nguyên tử?

  3. danh sách thanh lịch của các mục con lặp lại

  4. Docker-compos và mongoDB:Không khởi động được WiredTiger theo bất kỳ phiên bản tương thích nào?

  5. Tra cứu MongoDB khi trường ngoại là một mảng các đối tượng