查找多边形中的坐标

叶夫根尼(Evgeny Borinskikh)

如何找到弹性索引中存储的多边形。简单映射:

PUT /regions
{
    "mappings": {
        "properties": {
            "location": {
                "type": "geo_shape"
            }
        }
    }
}

和简单的多边形:

/regions/_doc/1
{
    "location" : {
        "type" : "polygon",
        "coordinates" : [
            [ 
                [53.847332102970626,27.485155519098047],
                [53.84626875748117,27.487134989351038],
                [53.8449047241684,27.48501067981124],
                [53.84612634308789,27.482945378869765],
                [53.847411219859,27.48502677306532],
                [53.847332102970626,27.485155519098047] 
            ]
        ]
    }
}

根据文档,仅当多边形包含在请求地理多边形查询中时我才可以在多边形内搜索坐标,但是我需要在查询中通过坐标查找多边形。Elasticsearch 7.6版本。

查询:

{
  "query": {
    "match_all": {}
  },
  "filter": {
    "geo_shape": {
      "geometry": {
        "shape": {
          "coordinates": [
            53.846415,
            27.485756
          ],
          "type": "point"
        },
        "relation": "whithin"
      }
    }
  }
}
乔·索罗辛

您走的路正确,但是查询的格式严重错误。解决方法是:

{
  "query": {
    "bool": {
      "filter": {
        "geo_shape": {
          "location": {
            "shape": {
              "coordinates": [
                53.846415,
                27.485756
              ],
              "type": "point"
            },
            "relation": "intersects"
          }
          
        }
      }
    }
  }
}

请注意,我intersects如何使用而不是的within原因在此GIS StackExchange答案中进行了解释

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章