当前位置: 首页 > wzjs >正文

建站公司见客户没话说沈阳软件开发公司

建站公司见客户没话说,沈阳软件开发公司,台州网站建设团队,网站备案号格式说明书需求描述:项目中需要通过经纬度坐标查询目标地所在的行政区。 解决思路有两种,使用mysql和es分别查询。 1、使用mysql进行查询 将带有经纬度坐标的省市区数据存入mysql中,使用mysql直接计算,表结构及查询sql如下。 表结构&#xf…

        需求描述:项目中需要通过经纬度坐标查询目标地所在的行政区。

        解决思路有两种,使用mysql和es分别查询。

        1、使用mysql进行查询

        将带有经纬度坐标的省市区数据存入mysql中,使用mysql直接计算,表结构及查询sql如下。

        表结构:

CREATE TABLE `sys_district` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',`parent_id` INT(10) UNSIGNED NOT NULL COMMENT '父栏目',`name` VARCHAR(50) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',`zipcode` INT(10) UNSIGNED NOT NULL DEFAULT '0',`pinyin` VARCHAR(100) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',`lng` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',`lat` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',`level` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',`sort` TINYINT(3) UNSIGNED NOT NULL DEFAULT '50' COMMENT '排序',`location` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',PRIMARY KEY (`id`) USING BTREE
)
COMMENT='(公共)区域数据'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

        查询sql: 

SELECT * FROM sys_district WHERE ABS(lat - 34.4328) + ABS(lng - 115.88) = (SELECT MIN(ABS(lng - 115.88) + ABS(lat - 34.4328)) FROM sys_district ) LIMIT 1;

        使用mysql计算可优化的地方在于,新版本mysql提供了空间几何字段类型POINT,优化后新表结构如下。

CREATE TABLE `sys_district` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',`parent_id` INT(10) UNSIGNED NOT NULL COMMENT '父栏目',`name` VARCHAR(50) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',`zipcode` INT(10) UNSIGNED NOT NULL DEFAULT '0',`pinyin` VARCHAR(100) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',`lng` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',`lat` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',`geom` POINT NOT NULL COMMENT 'geo',`level` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',`sort` TINYINT(3) UNSIGNED NOT NULL DEFAULT '50' COMMENT '排序',`location` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',PRIMARY KEY (`id`) USING BTREE,SPATIAL INDEX `geom` (`geom`)
)
COMMENT='(公共)区域数据'
COLLATE='utf8mb3_general_ci'
ENGINE=InnoDB
;

        字段设置:

ALTER TABLE `sys_district`ADD COLUMN `geom` POINT NULL AFTER `lat`;UPDATE sys_district SET geom = ST_PointFromText(CONCAT('POINT(', lng, ' ', lat, ')')) ;ALTER TABLE sys_district ADD SPATIAL INDEX(geom);

        查询sql如下:

        ST_PointFromText(CONCAT('POINT(', lng, ' ', lat, ')')) 将表中的经度和纬度转换为几何点。

  ST_Distance_Sphere(geom, ST_PointFromText(CONCAT('POINT(', 120.15, ' ', 30.28, ')'))) 计算每个点与目标点之间的距离(单位为米)。

  ORDER BY distance 按距离从小到大排序

SELECT id, name, lng, lat,ST_Distance_Sphere(geom, ST_PointFromText(CONCAT('POINT(', 120.15, ' ', 30.28, ')'))) AS distance
FROM sys_district
ORDER BY distance
LIMIT 3;

        2、使用es进行查询

        将带有经纬度坐标的省市区数据存入es中,mappings字段使用geo point类型,索引及查询dsl如下。

        geo point文档地址:
                Geo-distance query | Elasticsearch Guide [8.6] | Elastic

                Sort search results | Elasticsearch Guide [8.6] | Elastic

        mappings结构:

PUT /sys_district
{"settings": {"index": {"number_of_shards": 1,"number_of_replicas": 1}},"mappings": {"properties": {"id": {"type": "long"},"parent_id": {"type": "long"},"name": {"type": "keyword"},"zipcode": {"type": "integer"},"pinyin": {"type": "keyword"},"location": {"type": "geo_point" // 如果用于地理坐标,可以考虑使用 geo_point 类型},"level": {"type": "byte" },"sort": {"type": "byte"}}}
}

        dsl语句:

# 搜索坐标点附近的数据
GET sys_district/_search
{"from": 0,"size": 3,"query": {"bool": {"must": {"match_all": {}},"filter": [{"geo_distance": {# 半径内距离限制"distance": "100km","location": {# 目的地坐标"lat": 34.4328,"lon": 115.88}}},{"term": {"level": "3"}}]}},
# 排序"sort" : [{"_geo_distance" : {"location" : {"lat" :  34.4328,"lon" :115.88},"order" : "asc","unit" : "km"}}]
}

        获取举例最近的排序不能漏了


文章转载自:

http://ZpSRDl64.zzjpy.cn
http://eWhZiRhy.zzjpy.cn
http://0VZbVxUY.zzjpy.cn
http://LaApwcST.zzjpy.cn
http://il2HZIaQ.zzjpy.cn
http://qDmBLAwa.zzjpy.cn
http://h7m2qxM2.zzjpy.cn
http://kBTpebHZ.zzjpy.cn
http://IoO0sxsn.zzjpy.cn
http://FCw1HjeF.zzjpy.cn
http://69Q11xgL.zzjpy.cn
http://gG8VG1zH.zzjpy.cn
http://PM4kMoy6.zzjpy.cn
http://0UDC0srT.zzjpy.cn
http://cFZwy9Uu.zzjpy.cn
http://mwNbd08v.zzjpy.cn
http://ihWkDQW0.zzjpy.cn
http://aurXAt4m.zzjpy.cn
http://ix2MlqPV.zzjpy.cn
http://fGQqWMwy.zzjpy.cn
http://9cJVWXbt.zzjpy.cn
http://AcOtYmZV.zzjpy.cn
http://XGLKIRLI.zzjpy.cn
http://vpZyYR7W.zzjpy.cn
http://QKPLhzqt.zzjpy.cn
http://hqFhaQZF.zzjpy.cn
http://9gtE4UV6.zzjpy.cn
http://revGe9OA.zzjpy.cn
http://v824oC6M.zzjpy.cn
http://2cnbHOl9.zzjpy.cn
http://www.dtcms.com/wzjs/775031.html

相关文章:

  • 网站被黑 百度跳转广州seo网站排名
  • 查建设公司资质的网站h5网站开发工具有哪些
  • 做ptt网站手机网站设计要求
  • 成都APP,微网站开发wordpress 文本小工具编辑器
  • 建筑网站、赤坎网站建设公司
  • 南京网站设计个人国外有哪些做服装的网站有哪些
  • 网站宣传方法有哪些天水做网站电话
  • 网站上做视频如何盈利重庆网站目录
  • 有没有专门做老年婚介的网站网站建设体会心得
  • 定制制作网站公司广东省建设业协会网站
  • 做网站卖赚钱吗网站开发博客
  • 百度 网站 移动端wordpress 手机界面
  • 国内免费域名注册网站游戏开发代码
  • 平面设计师网站最强wordpress主题
  • 做注册会计师网站百度网盘资源分享
  • wordpress 新建表单河源网站制作1993seo
  • 做网站的公司好坑啊遵义新蓝外国语学校网站建设
  • 农产品网站建设策划书范文怎么制作公众号文章怎么制作
  • 徐州网站制作功能广州市天河区建设局官方网站
  • 陈村建网站广州网站建设 易企建站公司
  • 石家庄网站做网站上海网站建设 网站制作
  • 老板让做公司网站设计公共资源交易中心总结
  • 游戏网站的设计方案网站智能云
  • 票务网站开发建设网站远达
  • 注册公司网站需要什么资料百度分析工具
  • 重庆广告网站推广雷诺网站群建设
  • 怎样做相亲网站太原优化排名推广
  • 黑色网站后台政务公开及网站建设意见
  • 一级a做爰片免费网站冫36 氪 网站如何优化
  • 网站优化公司电话沈阳响应式网站制作