Elasticsearch不规则多边形区域查询

这篇具有很好参考价值的文章主要介绍了Elasticsearch不规则多边形区域查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 定义ES连接类
class ES_conn:
    def __init__(self):
        es_conf_psth = os.path.join(get_project_root_path(), 'config', 'db.conf')
        es_conf = Config(es_conf_psth)
        self.host = es_conf.get_option_val('es', 'host')
        self.port = es_conf.get_option_val('es', 'port')
        self.es = Elasticsearch(hosts=self.host.split(','), port=self.port)

其中self.es = Elasticsearch(hosts=self.host.split(‘,’), port=self.port)中,hosts参数接收的是一个字符串列表,例如[‘192.168.16.96’,‘192.168.16.97’,‘192.168.16.98’]等,端口是9200

  1. 创建一个带有geo_shape字段类型的索引。(仅执行一次)
es_conn = ES_conn()
index_name = "my_index"
    if es_conn.es.indices.exists(index=index_name):
        es_conn.es.indices.delete(index=index_name)

mappings = {
        "properties": {
            "location": {
                "type": "geo_shape"
            }
        }
    }
    
# 创建新的索引,并定义映射
es_conn.es.indices.create(index=index_name, mappings=mappings)
doc_body = {
	"objectid": "123456",
	"location": {
      "type": "point",
         "coordinates": [121.163214, 31.621541]
     }
}
# 插入一条数据
es_conn.es.index(index=index_name, id=1, body=doc_body) 
  1. 插入一条数据以后
    可以利用
mapping = es_conn.es.indices.get_mapping(index=index_name)
print(mapping)

来检查location字段是不是geo_shape类型

  1. 定义查询
s = Search(using=es_conn.es, index=index_name)
# 不规则多边形范围查询
s = s.filter('geo_shape', location={'relation': 'intersects',
                                    'shape': {'type': 'polygon', 'coordinates': coords}})
response = s.execute()

其中变量coords是一个三维list列表,用来表示一个多边形顶点坐标,如果你的多边形没有挖孔,那么第一维只有一个元素,否则有多个。文章来源地址https://www.toymoban.com/news/detail-518960.html

到了这里,关于Elasticsearch不规则多边形区域查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql如何实现根据经纬度判断某一个坐标是否在一个多边形区域范围内

    要根据经纬度判断一个坐标是否在一个多边形区域内,MySQL提供了几种函数来处理地理空间数据,其中包括用于处理多边形区域的函数。 首先,创建一个表来存储多边形区域。可以使用 ST_GeomFromText 函数将多边形的坐标转换为地理空间对象。我们给他插入两条数据,默认id第一

    2024年02月08日
    浏览(31)
  • Java根据坐标经纬度计算两点距离(5种方法)、校验经纬度是否在圆/多边形区域内的算法推荐

    目录 前言 一、根据坐标经纬度计算两点距离(5种方法) 1.方法一 2.方法二 3.方法三 4.方法四 5.方法五 5.1 POM引入第三方依赖 5.2 代码 6.测试结果对比 二、校验经纬度是否在制定区域内 1.判断一个坐标是否在圆形区域内 2.判断一个坐标是否在一个多边形区域内 3.结果 总结   

    2024年02月10日
    浏览(45)
  • Elasticsearch计算距离,根据距离排序,地理点和地理多边形范围查找

    Elasticsearch 计算并返回距离一共有两种方法: sort 和 script_fields CentOS 7.6 Elasticsearch 7.10 响应结果如下, hits 下的 sort 字段就是距离,单位:km。 5.x 以前支持:distanceInKm(lat, lon) 函数,后来被废弃。现在只支持 arcDistance(lat, lon) 函数:计算两点距离,单位为:m。响应结果如下,

    2024年02月09日
    浏览(37)
  • Qt 不规则窗口,不规则按钮,不规划控件 不规则界面

    类似: Qt 实现 不规则样式设置,不是视觉欺骗,是真正的不规则 ,点击外面不会触发按钮的点击信号. 效果: 显示成一张图片中的图形,使用带有透明区域的png图片; 这里注意:  必须重新绘制,构造函数也一定要调用resize。 见视频,可见,点击到空白处,消失;可见实

    2024年02月09日
    浏览(35)
  • 不规则文件转JSON

    有时候,我们取出来的数据并不是一个规则的JSON文件,这个时候面对存库还是ES检索都是一个问题,所以我们就需要进行解析,然而用字符串分割是不现实的,我们需要一种快速的方法。 为了读取并转换这样的文件为JSON对象,您可以使用Jackson库。首先,您需要引入Jackson库的

    2024年02月14日
    浏览(29)
  • css不规则圆角矩形

    这个收集的css 效果是真的多 https://github.com/chokcoco/iCSS强烈推荐

    2024年02月20日
    浏览(32)
  • QT不规则形状的按钮的实现

    Qt实现按钮的不规则样式设置,不是视觉欺骗,是真正的不规则按钮,点击按钮外面不会触发按钮的点击信号 使用如下的代码可以实现特殊形状的按钮,但是按钮还是矩形的,如果按在不规则图形的外面,但是是按钮的矩形的区域仍然可以触发按钮。 使用如下代码可以实现特

    2023年04月09日
    浏览(34)
  • ArcGIS Pro如何制作不规则形状图例

    在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法,希望能对你有所帮助。 在符号系统内,将水系的样式调整为我

    2024年02月12日
    浏览(35)
  • 折线的可视化及不规则柱体的绘制

    开发环境: Windows 11 家庭中文版 Microsoft Visual Studio Community 2019 VTK-9.3.0.rc0 vtk-example demo解决问题 : 1.绘制一条多段线(折现),并可视化这段折现;2.根据折现绘制一个不规则柱体 关键点 : vtkRotationalExtrusionFilter是Visualization Toolkit(VTK)中的一个过滤器,用于沿着输入曲线生成

    2024年01月25日
    浏览(31)
  • 如何判断两个多边形是否相交?——多边形相交判定算法详解

    如何判断两个多边形是否相交?——多边形相交判定算法详解 在计算机图形学中,判断两个多边形是否相交是一项很重要的任务。这涉及到各种应用场景,如碰撞检测、模拟物理效果等。在本篇文章中,我们将会介绍多边形相交判定算法的相关知识和实现方式。 首先,我们

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包