在多边形中查找坐标
Find coordinates in a polygon
如何找到存储在弹性索引中的多边形。
简单映射:
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]
]
]
}
}
根据文档,只有当多边形包含在请求中时,我才能在多边形内搜索坐标 Geo-polygon query,但我需要在查询中按坐标查找多边形。 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 answer.
中有解释
如何找到存储在弹性索引中的多边形。 简单映射:
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]
]
]
}
}
根据文档,只有当多边形包含在请求中时,我才能在多边形内搜索坐标 Geo-polygon query,但我需要在查询中按坐标查找多边形。 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 answer.