Как искать восток и север (EPSG: 27000) в Lucene - PullRequest
0 голосов
/ 16 марта 2020

У нас есть требование, где мы должны хранить координаты на восток и север, а затем искать координаты как пространственные данные. Координаты можно искать с помощью радиуса или ограничительной рамки. До сих пор я могу найти справочные документы или примеры только для Lat / Long. Ниже приведен код, который я использую для загрузки координат в Lucene

    SpatialContextFactory spatialContextFactory = null;
    SpatialContext ctx = null;
    SpatialPrefixTree grid = null;
    SpatialStrategy strategy = null; 
    spatialContextFactory = new SpatialContextFactory();
    spatialContextFactory.geo = false;
    this.ctx = new SpatialContext(spatialContextFactory);
    //EPSG:27700 Projected Bounds: 1393.0196, 13494.9764, 671196.3657, 1230275.0454
    Rectangle rectangle = new RectangleImpl(1393.0196, 671196.3657, 13494.9764, 1230275.0454, this.ctx);
    this.grid = new QuadPrefixTree(this.ctx, rectangle, 11);
    this.strategy = new RecursivePrefixTreeStrategy(grid, "location");

, а затем для загрузки координат, как показано ниже.

Shape pointXY = ctx.readShapeFromWkt(String.format("POINT(%s %s)", rs.getString("X"), rs.getString("Y")));
Point pt = (Point) pointXY;

for(IndexableField f:
     strategy.createIndexableFields(pointXY)) 
         {
                d.add(f);
         }
d.add(new StoredField(strategy.getFieldName(), pt.getX()+" "+pt.getY()));

Для получения результатов я использую приведенный ниже код упоминания .

    Directory directory = FSDirectory.open(indexDir.toPath());
    IndexReader reader = DirectoryReader.open(directory);
    IndexSearcher searcher = new IndexSearcher(reader);
    Point p = ctx.getShapeFactory().pointXY(x, y);
    SpatialArgs args = new SpatialArgs(SpatialOperation.IsWithin, ctx.getShapeFactory().pointXY(x, y));
    Query query = strategy.makeQuery(args);

    int limit = 1000;
    TopDocs topDocs = searcher.search(query, limit);
    ScoreDoc[] scoreDocs = topDocs.scoreDocs;

С приведенным выше кодом я не получаю желаемых результатов. Может кто-нибудь сказать мне, что мне нужно изменить здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...