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

设计网站与建设企业网站建设主要考虑哪些

设计网站与建设,企业网站建设主要考虑哪些,蒙文网站开发,wordpress 小工具样式需求描述:项目中需要通过经纬度坐标查询目标地所在的行政区。 解决思路有两种,使用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://www.dtcms.com/a/596184.html

相关文章:

  • 南宁网站建设团队长沙商城小程序开发
  • 旅游电子商务网站建设背景wordpress 文章评论数
  • 网上停车场做施工图人员网站网站建设投资风险分析
  • 做一元购网站网站建设与维护一年多少钱
  • 怎样用代码建设一个网站西宁网站设计
  • 我想建设一个算命网站公司做网站怎么样
  • 网站四网合一新闻发布会发言稿
  • 网站编辑兼职推广app收益排行榜
  • 响应式网站开发的理解平面设计哪个网站素材好
  • 网站设计模板中的页浙江省网站icp备案
  • 贵阳设计网站怎样在国外网站上做外贸广告
  • 网站开发课题开发背景产品软文是什么意思
  • 游戏娱乐网站建设代理机构做的网站找不到人了怎么办
  • 重庆市住建局官方网站网站首页图片轮转代码 很好用
  • 智能营销型网站制作常州app网站
  • 推广软件的app优化关键词怎么做
  • 临桂城乡建设局网站人力招聘网站建设目的
  • 蓝色网站源码大专生学广告设计有出路吗
  • 网站开发中安全性的防范北京哪里能学做网站
  • 济南网站设计制作公司企业建站技术
  • 电商设计网站模板镇江软件开发公司
  • 商城网站设计公司南昌官网seo诊断
  • 网站规划设计方案杂志社网站模板
  • 过年做哪个网站致富seo查询百科
  • 安阳县有几个乡镇网站建设优化推广杭州
  • 苏州中小型网站建设青岛市黄岛区城市建设局网站
  • 玉山县住房城乡建设局网站网站基础建设和管理
  • 新手学做网站用什么软件如何做网站反链
  • 济南建网站app设计画册设计
  • 商城网站建设机构wordpress move