热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

基于矢量数据的逆地理编码功能实现

地理编码和逆地理编码概述地理编码,是指将大家熟悉的地址文字描述,转换为经纬度,如输入某某省、某某市、某某路,在地图上根据经纬度定位到输入的地图上的某个点,直观的显示所在位置。逆地理编码是指将经纬度

地理编码和逆地理编码概述

地理编码,是指将大家熟悉的地址文字描述,转换为经纬度,如输入某某省、某某市、某某路,在地图上根据经纬度定位到输入的地图上的某个点,直观的显示所在位置。逆地理编码是指将经纬度转化为大家都能看懂文字描述。一般人对经纬度数字没什么概念,转化为文字描述后,更容易让人理解。在现在大量的人员定位,车辆监控中,除了在地图上直观的展示人员或者车辆的地图位置外,很多的系统也提供了人员或者车辆所在位置的文字描述功能。

目前大部分系统和项目开发中,逆地理编码功能的实现,都是调用主流厂商提供的逆地理编码服务接口来实现逆地理编码功能。在开发一些特殊的系统时,往往这些主流厂商提供的逆地理编码得到的结果不能更好的满足项目展示的需求。如在物流配送中应用中,需要很精确直观的描述物流车辆所在的线路,以及物流配送点。而这些在线地图厂商提供的逆地理编码服务接口,在位置描述的精准度上,达不到项目想要的效果。另外,有部分项目是在单位内网里构建,不能访问外网的逆地理编码服务接口。

针对这些项目的开发,可以在地图矢量数据基础上,通过自己写一些底层的GIS算法,来实现逆地理编码功能,在位置描述上,具有更高的灵活度,更加适应项目实际需求。如经纬度所在道路的描述,以及经纬度周边描述上,可以添加专门的线路数据和点数据,通过控制搜索优先级,来实现位置的精确描述。

逆地理编码功能实现的基本思路

逆地理编码功能结果描述分为三个部分组成,

1、经纬度所在的行政区划,这部分需要使用到全国的行政区划数据,省界、市界、县界、如果更精确还需要乡镇界。

2、经纬度当前所在的道路,国道、省道、县道、乡镇村道、城市道路等。人员或者车辆回传的经纬度坐标,因为有一定的误差,不可能跟这些道路完全匹配,一般认为,误差范围在50米以内,就认为在这些道路上。

3、经纬度所在的周边参照地物,如宾馆、饭店、商场等周边参照地物。

逆地理编码的实现和关键技术

1、讲矢量数据通过读取通用格式,存入数据库,并做一定的空间索引。数据存储上,行政区域、道路数据、地物数据分开存储。对具有特殊描述需求的项目,可以在道路和地物数据中加入自己的道路数据和地物数据,并设置优先级。在搜索算法中优先搜索。

2、对外提供查询接口,通过读取数据库数据,并利用GIS基础算法,得到经纬度位置描述结果。

3、核心算法:主要有点是否在区域内,两点间经纬度距离、点是否在道路上。

逆地理编码算法的扩展

通过这种方式,除实现逆地理编码运算外,还可以实现地图地物模糊查询,地图矩形框选、圆形框选,多边形框选等功能。如圆形框选,即可实现搜索指定经纬度周边一定距离范围内的地物。

逆地理编码的实现效果

1、数据存储

 

 

2、服务发布

   

3、逆地理编码前端展现

   

4、扩展功能前端展现

 地物搜索

 

 

范围搜索

 

矩形框选

 

多边形框选

 


推荐阅读
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 科研创新不仅需要深厚的专业知识,还需要独特的视角和敏锐的问题发现能力。本文将探讨如何通过基础学习、问题导向、文献查阅、网络资源利用及自然观察等方法,有效找到科研创新的切入点。 ... [详细]
  • 本文探讨了Lua中元表和元方法的使用,通过具体的代码示例展示了如何利用这些特性来实现类似C语言中的运算符重载功能。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 【Java数据结构和算法】008栈
    目录0、警醒自己一、栈的应用场景和介绍1、栈的应用场景一个实际的场景:我的思考:2、栈的介绍入栈演示图:出栈演示图 ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • BeautifulSoup4 是一个功能强大的HTML和XML解析库,它能够帮助开发者轻松地从网页中提取信息。本文将介绍BeautifulSoup4的基本功能、安装方法、与其他解析工具的对比以及简单的使用示例。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 深度学习与神经网络课程总结
    本文档总结了神经网络和深度学习课程中的关键概念和理论,包括机器学习的基本要素、算法类型以及数据特征表示等。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 使用Pandas DataFrame探索十大城市房价与薪资对比
    在本篇文章中,我们将通过Pandas库中的DataFrame工具,深入了解中国十大城市的房价与薪资水平,探讨哪些城市的生活成本更为合理。这是学习Python数据分析系列的第82篇原创文章,预计阅读时间约为6分钟。 ... [详细]
  • 本文简要介绍了如何使用 Python Elasticsearch DSL 进行基本和高级查询,包括连接 Elasticsearch、执行简单和复杂查询、聚合、排序及分页等。 ... [详细]
author-avatar
处男是你_909
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有