4

我有一些在 Solr 中索引的多边形。是否可以用一个点(纬度,经度)查询并查看哪个多边形里面有那个点?

4

2 回答 2

7

是的,这是可能的,并在此处进行了描述:http ://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4 您的 Solr 版本必须为 4 或更高版本,并且您必须导入可以从http://sourceforge 获得的 JTS jar 文件。 net/projects/jts-topo-suite/ 你必须定义一个 fieldType 为 location_rpt 的字段

<fieldType name="location_rpt"   class="solr.SpatialRecursivePrefixTreeFieldType"
           spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
           distErrPct="0.025"
           maxDistErr="0.000009"
           units="degrees"
        />

在 schema.xml 中。然后你必须索引多边形,如:

<field name="geo">POLYGON((-10 30, -40 40, -10 -20, 40 20, 0 0, -10 30))</field>

但我认为您已经这样做了,因为您写道您已经将它们编入索引。

对于查询,您只需使用过滤器查询fq=geo:"Intersects(10.12 50.02)"where10.1250.02表示您的点的纬度和经度。

于 2013-10-18T13:11:44.533 回答
0

我们首先需要外部 JTS jar 文件来索引多边形形状。

于 2015-06-23T07:32:01.133 回答