Поддержка мультиполигонов в Lucene .net

#geospatial #lucene.net #nettopologysuite

#геопространственная #lucene.net #nettopologysuite

Вопрос:

Я пытаюсь изучить пространственные возможности lucene .net.

Я хочу найти, существует ли точка внутри многоугольника или нет.

Из моих исследований в Google я понимаю, что мне нужно использовать Net topology suite для описания многополигонов.

но я не могу найти Lucene.Net.Contrib.Spatial.NTS для последней версии.

Любые предложения (я использую .net core)

Ответ №1:

Большая часть этой путаницы сосредоточена вокруг нескольких вещей:

Новый дизайн Lucene

Дизайн Lucene 4.x полностью отличается от предыдущих версий. Lucene.Net.Contrib Пакет больше не является частью этого дизайна. Вместо этого теперь есть специализированные модули для разных функций. В этом случае то, что вы ищете, — это сборка Lucene.Net.Spatial.

Spatial4n больше не дублирует типы

В Spatial4n 0.3.0 Spatial4n.Core.NTS включены копии всех типов Spatial4n.Core . Это означало, что вы не могли ссылаться на обе библиотеки одновременно, потому что у них были конфликтующие имена типов. Lucene.Net.Contrib.Spatial Для доступа к функциональности NetTopologySuite требовалось также дублировать типы (in Lucene.Net.Contrib.Spatial.NTS ).

Начиная с Spatial4n 0.4.1, Spatial4n.Типы ядра не включены в Spatial4n.Core.NTS. Вместо Spatial4n.Core.NTS этого ссылки Spatial4n.Core .

Это означает, что в Lucene.NET 4.8 нет необходимости иметь отдельную Lucene.Net.Spatial.NTS библиотеку, которая ссылается Spatial4n.Core.NTS (и ее дублирующую систему типов Spatial4n.Core ). Однако вы можете добавить функциональность NTS в свой проект, обратившись Spatial4n.Core.NTS напрямую.

 <ItemGroup>
  <PackageReference Include="Spatial4n.Core" Version="0.4.1" />
  <PackageReference Include="Spatial4n.Core.NTS" Version="0.4.1" />
</ItemGroup>
 

Примеры

Как правильно указал Рон Си, в Lucene есть несколько базовых тестов функциональности NetTopologySuite (NTS).Чистая кодовая база 4.8.0. Но, как отмечалось выше, вам необходимо ссылаться Spatial4n.Core.NTS на доступ к расширениям для NTS.

Есть также некоторые дополнительные тесты для Spatial4n с использованием NetTopologySuite, которые можно проанализировать.

Если вам нужна более конкретная информация о функциональности, я предлагаю вам поискать примеры Java, используя термины «Lucene spatial JTS», «Spatial4j» и «JavaTopologySuite». Поскольку перенос по большей части выполняется построчно, примеры Java должно быть довольно легко перевести в .NET.

Ответ №2:

Я не знаком с конкретными пространственными функциями Lucene.Пока нет, но, возможно, этот NtsPolygonTest поможет, поскольку, похоже, это проверка именно того типа функциональности, который вы ищете.

Я вижу, что большинство функций для spatial находятся в пространстве имен Lucene.Net.Spatial (и ниже).

Кроме того, похоже, что пространственные объекты используют пакет nuget Spatial4n, который является портом библиотеки Java Spacial4J.