搜索JTS STR树

时间:2015-05-06 18:38:08

标签: java android jts

您好我一直在关注本教程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英里的圆圈内的所有点。

感谢您的时间

1 个答案:

答案 0 :(得分:1)

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