【问题标题】:Multipolygon support in Lucene .netLucene .net 中的多面体支持
【发布时间】:2021-05-08 10:33:45
【问题描述】:

我正在尝试学习 lucene .net 空间功能。

我想知道一个点是否存在于多边形内部。

根据我对谷歌的研究,我知道我需要使用网络拓扑套件来描述多多边形。

但我找不到最新版本的 Lucene.Net.Contrib.Spatial.NTS。

任何建议(我正在使用.net core)

【问题讨论】:

    标签: geospatial lucene.net nettopologysuite


    【解决方案1】:

    我还不熟悉 Lucene.Net 的特定空间特性,但也许这个 NtsPolygonTest 会有所帮助,因为它似乎只是对您正在寻找的功能类型的测试。

    我确实看到空间的大部分功能都存在于 Lucene.Net.Spatial 命名空间(及以下)中。

    此外,空间功能似乎使用了 Spatial4n nuget package,它是 Spacial4J Java 库的一个端口。

    【讨论】:

      【解决方案2】:

      很多困惑都集中在以下几件事上:

      新的 Lucene 设计

      Lucene 4.x+ 的设计与之前的版本完全不同。 Lucene.Net.Contrib 包不再是该设计的一部分。相反,现在有 specialized modules 用于不同的功能。在这种情况下,您要查找的是 Lucene.Net.Spatial 程序集。

      Spatial4n 不再重复类型

      在 Spatial4n 0.3.0 中,Spatial4n.Core.NTS 包含所有 Spatial4n.Core 类型的副本。这意味着您不能同时引用这两个库,因为它们的类型名称有冲突。它还需要 Lucene.Net.Contrib.Spatial 复制类型(在 Lucene.Net.Contrib.Spatial.NTS 中)才能访问 NetTopologySuite 的功能。

      自 Spatial4n 0.4.1 起,Spatial4n.Core 类型不包含在 Spatial4n.Core.NTS 中。而是 Spatial4n.Core.NTS 引用 Spatial4n.Core

      这意味着在 Lucene.NET 4.8 中,不需要单独的 Lucene.Net.Spatial.NTS 库来引用 Spatial4n.Core.NTS(及其重复的 Spatial4n.Core 类型系统)。但是,您可以通过直接引用 Spatial4n.Core.NTS 将 NTS 功能添加到您的项目中。

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

      示例

      正如 Ron C 正确指出的那样,Lucene.Net 4.8.0 代码库中有一些 basic tests 的 NetTopologySuite (NTS) 功能。但如上所述,您需要引用 Spatial4n.Core.NTS 才能访问 NTS 的扩展。

      还有一些使用 NetTopologySuite 的 Spatial4n 额外测试可以分析。

      如果您需要有关该功能的更多具体信息,我建议您使用术语“Lucene spatial JTS”、“Spatial4j”和“JavaTopologySuite”搜索 Java 示例。由于移植大部分是逐行完成的,因此 Java 示例应该很容易转换为 .NET。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-09
        • 1970-01-01
        • 2019-02-10
        • 2019-08-31
        相关资源
        最近更新 更多