我正在尝试学习 lucene .net 空间功能。
我想找出一个点是否存在于多面体中。
从我对谷歌的研究中,我了解到我需要使用网络拓扑套件来描述多多边形。
但我找不到最新版本的 Lucene.Net.Contrib.Spatial.NTS。
任何建议(我正在使用.net core)
我正在尝试学习 lucene .net 空间功能。
我想找出一个点是否存在于多面体中。
从我对谷歌的研究中,我了解到我需要使用网络拓扑套件来描述多多边形。
但我找不到最新版本的 Lucene.Net.Contrib.Spatial.NTS。
任何建议(我正在使用.net core)
很多这种混乱都集中在几件事上:
Lucene 4.x+ 的设计与之前的版本完全不同。Lucene.Net.Contrib
包装不再是该设计的一部分。相反,现在有针对不同功能的专用模块。在这种情况下,您正在寻找的是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
)。但是,您可以通过直接引用将 NTS 功能添加到您的项目中Spatial4n.Core.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 代码库中有一些 NetTopologySuite (NTS) 功能的基本测试。但如上所述,您需要参考Spatial4n.Core.NTS
才能访问 NTS 的扩展。
还有一些可以分析的使用 NetTopologySuite 的 Spatial4n 附加测试。
如果您需要有关该功能的更多具体信息,我建议您使用术语“Lucene spatial JTS”、“Spatial4j”和“JavaTopologySuite”搜索 Java 示例。由于移植大部分是逐行完成的,因此 Java 示例应该很容易转换为 .NET。
我还不熟悉 Lucene.Net 的特定空间特性,但也许这个NtsPolygonTest会有所帮助,因为它似乎只是对您正在寻找的功能类型的测试。
我确实看到空间的大多数功能都存在于Lucene.Net.Spatial命名空间(及以下)中。
此外,看起来 Spatial 功能使用Spatial4n nuget 包,它是 Spacial4J java 库的一个端口。