1

嗨,我一直在关注本教程http://googledevelopers.blogspot.com/2014/12/building-scalable-geofencing-api-on.html,这是我的问题,

我有一个经度和纬度坐标列表,这些坐标已作为点添加到 JTS(Java 拓扑套件)STR 树中。

现在我想将一个圆形区域发送到 STR 树,以查找所有落在圆形中的点。

    Coordinate center = new Coordinate(entity.getLongitude(), entity.getLatitude());
    GeometricShapeFactory gsf = new GeometricShapeFactory();

    gsf.setCentre(center);
    gsf.setNumPoints(20);
    **gsf.setSize(320.0);**
    Polygon poly = gsf.createCircle();
    Coordinate[] coordinates = poly.getCoordinates();


    //Create polygon from the coordinates.
    GeometryFactory fact = new GeometryFactory();

    LinearRing linear_ring = new GeometryFactory().createLinearRing(coordinates);

    Polygon polygon = new Polygon(linear_ring, null, fact);

    List<STRLeaf> items = strTree.query(polygon.getEnvelopeInternal());

但是,搜索结果会发回经度和纬度点树中的所有数据。当我将圆的大小降低到 320 以下时,我不会从 STR 树的搜索中收到任何结果。有没有人有这方面的经验,理想情况下我想创建一个圆圈,找到一个~7英里的圆圈内的所有点。

谢谢你的时间

4

1 回答 1

1

事实证明,我在后端犯了一个愚蠢的错误。当我将项目添加到树中时,我混合了 x 和 y 坐标,因此 Lat Longs 被颠倒了。切换它们后,我现在可以将圆的大小设置为 0.1 左右,效果很好。

于 2015-05-14T07:36:30.933 回答