【发布时间】:2021-05-08 10:33:45
【问题描述】:
我正在尝试学习 lucene .net 空间功能。
我想知道一个点是否存在于多边形内部。
根据我对谷歌的研究,我知道我需要使用网络拓扑套件来描述多多边形。
但我找不到最新版本的 Lucene.Net.Contrib.Spatial.NTS。
任何建议(我正在使用.net core)
【问题讨论】:
标签: geospatial lucene.net nettopologysuite
我正在尝试学习 lucene .net 空间功能。
我想知道一个点是否存在于多边形内部。
根据我对谷歌的研究,我知道我需要使用网络拓扑套件来描述多多边形。
但我找不到最新版本的 Lucene.Net.Contrib.Spatial.NTS。
任何建议(我正在使用.net core)
【问题讨论】:
标签: geospatial lucene.net nettopologysuite
我还不熟悉 Lucene.Net 的特定空间特性,但也许这个 NtsPolygonTest 会有所帮助,因为它似乎只是对您正在寻找的功能类型的测试。
我确实看到空间的大部分功能都存在于 Lucene.Net.Spatial 命名空间(及以下)中。
此外,空间功能似乎使用了 Spatial4n nuget package,它是 Spacial4J Java 库的一个端口。
【讨论】:
很多困惑都集中在以下几件事上:
Lucene 4.x+ 的设计与之前的版本完全不同。 Lucene.Net.Contrib 包不再是该设计的一部分。相反,现在有 specialized modules 用于不同的功能。在这种情况下,您要查找的是 Lucene.Net.Spatial 程序集。
在 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。
【讨论】: