geoHelper

news2024/11/25 6:36:32

个人博客:无奈何杨(wnhyang)

个人语雀:wnhyang

共享语雀:在线知识共享

Github:wnhyang - Overview


简介

GitHub - wnhyang/geoHelper

无奈何杨/geoHelper

geoHelper整合了身份证、手机号、IPGPS解析方法,基于内存提供离线高性能解析服务。

身份证/手机号解析服务

IP/GPS解析服务,ip2region,逆地理编码

数据来源

数据来源
行政区划GitHub - modood/Administrative-divisions-of-China
手机号GitHub - EeeMt/phone-number-geo
IP狮子的魂/ip2region
geo中国城市坐标(最全最完整)

身份证解析

适用国内身份证解析,作为Hutool.IdcardUtil的扩展,加入AdocUtil,意为中国行政区划工具。

方法包括:

  • getProvince 获取省份
  • getProvinceName 获取省份名称
  • getCity 获取城市
  • getCityName 获取城市名称
  • getArea 获取区县
  • getAreaName 获取区县名称
  • getPca 获取省市区

当然基于GitHub - modood/Administrative-divisions-of-China可以扩展到乡级(乡镇街道)、 村级(村委会居委会),那么数据量会大一些,可以将数据存储在数据库中使用。

示例

public static void main(String[] args) {
    init();
    log.info("provinceCode:11, provinceName:{}", getProvinceName("11"));
    log.info("cityCode:1101, cityName:{}", getCityName("1101"));
    log.info("areaCode:110101, areaName:{}", getAreaName("110101"));
    log.info("areaCode:110101, pca:{}", getPca("110101"));
}

init success, cost:97ms

provinceCode:11, provinceName:北京市

cityCode:1101, cityName:市辖区

areaCode:110101, areaName:东城区

provinceCode:11, cityCode:1101, areaCode:110101

areaCode:110101, pca:Pca(province=北京市, city=市辖区, area=东城区)

手机号解析

适用国内手机号解析,使用GitHub - EeeMt/phone-number-geo工具。

示例

public static void main(String[] args) {
    log.info("15558167723:{}", lookup("15558167723"));
}

15558167723:PhoneNumberInfo(number=15558167723, attribution=Attribution(province=浙江, city=杭州, zipCode=310000, areaCode=0571), isp=CHINA_UNICOM)

IP解析

使用狮子的魂/ip2region项目,因为此项目本身很灵活,数据可扩展,可自行参考源项目学习。

示例

public static void main(String[] args) {
    init();
    String search = search("114.114.114.114");
    log.info("search:{}", search);
}

init success, cost:28ms

search:中国|0|江苏省|南京市|0

GPS解析

IP/GPS解析服务,ip2region,逆地理编码,实现的方法已经在这篇文章说明了,所以不多介绍啦。

示例

public static void main(String[] args) {
    AdocUtil.init();
    init();
    // 116.867584,39.542294
    Pca pcaByGeo = getPcaByGeo("116.867584,39.542294");
    log.info("pcaByGeo:{}", pcaByGeo);
}

pcaByGeo:Pca(province=河北省, city=廊坊市, area=广阳区)

解析不准确的原因

之前文章已经说明此方法的优势与缺陷,这里再说明一下,如果需要增加精度要怎么做。

行政区浏览

坐标拾取器 | 高德地图API

GeoHUB

天地图·在线地图

总所周知行政区划都是不规则的多边形,而且这个多边形的中心点不是数学上的重心,而是行政上的中心。如下是河北省-廊坊市-广阳区的行政区划,这是一个不规则的多边形。

通过高德地图搜索确认其中心经纬度是:116.710667,39.52343,已标注在上图,大概是红色圆圈⭕️的位置。

现有坐标:116.867584,39.542294,其应该归属天津市-武清区,但是因为计算方法或者说是数据的缺陷,因此此点离廊坊市-广阳区更近,所以结果是pcaByGeo:Pca(province=河北省, city=廊坊市, area=广阳区),并不正确。如下图所示。

如何提高准确性呢?

那就是要切割了,如下是天津市-武清区,如果希望对于武清区解析的更准确就要增加武清区数据,数据不能是随意添加,需要如下图这样的画圈,将武清区的边界画出,增加这些圆圈中心坐标数据。如果希望更加精细就要画出更多直径更小的圈,不过那工作量将非常庞大。

重要‼️

所有一旦要画圈提高精度,必须连带画出边界外相邻的圈。因为,如果只是画出下面这样天津市-武清区的圈,不管边界外廊坊市-广阳区、北京市-通州区,那么原来被识别为通州、广阳的点会因为武清新增加的点的影响都被识别为武清区,而且新增的边界圆心坐标向边界方向画圆与其他地区圆近乎相切时的直径必须统一,这样才能保证边界点距离的准确。

如下图在北京通州、天津武清、廊坊广阳邻接的位置画了三个圈,其中天津武清区的圆心坐标为:116.88,39.58,北京通州圆心坐标为:116.91,39.59,廊坊广阳圆心坐标为:116.70,39.54

补充数据

1、首先从areas.csv文件中找到武清区的areaCode120114

2、在areas_with_geo.csv文件中补充120114经纬度120114,116.88,39.58

3、重新运行项目就可以了。

再次测试116.867584,39.542294,果然被正确解析到天津武清区!

总结

以上已经说明了解析不准确,补充数据提高准确性的方法,但这个方法其实是很苛刻的,对于数据的要求非常高,甚至说如何数据达标甚至可以比拟商业的的经纬度解析标准。


个人博客:无奈何杨(wnhyang)

个人语雀:wnhyang

共享语雀:在线知识共享

Github:wnhyang - Overview

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java云商城系统 云端商城 一站式系统Java源码 云商城自助下单平台 云商城虚拟交易网

内容目录 一、详细介绍二、效果展示2.效果图展示 三、学习资料下载 一、详细介绍 云商城系统,无后门,一站式系统Java源码,心权益商品数量不限数量 系统对接 手动发货 自动发货 兑 换 码 订单监控 商品监控 对象存储 邮箱提醒 加价模板 密价…

智慧园区能耗管控系统,3D可视化开发都需要哪些技术栈?

数据可视化: 数据可视化是将数据通过图表、图形、地图等可视化方式展示,使得数据更加直观、易于理解和分析。在智慧园区能耗管控系统中,可以使用各种图表库(如Echarts、Highcharts)和可视化工具(如Tableau…

首个ICLR时间检验奖出炉,机器学习大牛Max Welling和OpenAI创始团队成员Diederik Kingma获奖

国际表征学习大会(ICLR)是机器学习领域的一个学术会议,每年一次,通常在每年四月底或五月初举行。会议包括特邀演讲以及经评审论文的口头和海报展示。 ICLR 由 Yann LeCun(杨立昆)和 Yoshua Bengio 两位图灵…

探索宇宙奥秘:太阳系运转的三维可视化之旅

在宇宙探索的伟大征途中,太阳系运转三维可视化技术为我们揭开了星辰大海的一角。通过图扑可视化技术,我们能够以前所未有的方式直观地体验和理解太阳及其周围行星的运动规律。这不仅是对于天文学家的一大帮助,也为广大天文爱好者和教育者提供…

AI换脸原理(2)——人脸检测参考文献S3FD:源码解析

1 介绍 S3FD是一个实时人脸检测器,这篇论文的主要思想是试图解决一个常见的问题,即基于anchor(锚点)的检测器随着人脸变小而急剧恶化。 基于锚点的目标检测方法是通过对一系列预设锚点进行分类和回归来检测目标的,这些锚点是通过在图像上有规律地平铺一组不同尺度和宽高比…

NGINX App Protect现已支持NGINX开源版 全方位加强现代应用安全防护

近日,F5 NGINX 发布全新升级的NGINX App Protect 5.0版本,将先前专属于NGINX 商业版本NGINX Plus 的现代应用安全能力拓展至NGINX开源版中,为增强现代应用和API安全防护提供全方位支持。此次升级后,适用于云端及本地部署的NGINX A…

ETCD 简介

ETCD 简介 1-etcd介绍 etcd 是 CoreOS 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。具有以下特点: 简单:安装配置简单,而且提供了 HTTP API 进行交互,使用也很简单键…

Windows+Linux的虚拟串口工具

文章目录 1.Windows虚拟串口工具1.1 安装教程1.2 使用方法 2.Linux系统虚拟串口工具2.1 socat安装2.2 开启虚拟串口2.3 测试2.3.1 命令测试2.3.2 Cutecom工具测试 2.4 关闭虚拟串口 3.参考资料 1.Windows虚拟串口工具 下载地址:https://www.downxia.com/downinfo/4…

虚拟机镜像文件格式qcow2转zst

一、使用qcow2文件还原出pve虚拟机 1.1、在pve上创建一个空的新虚拟机 把虚拟机的网卡和磁盘删除 将外部磁盘镜像为vm中未使用的磁盘。这个镜像格式必须是qemu-img支持的镜像格式(qcow2/raw/vmdk) qm importdisk 101 bigdata-ubuntu-x86.qcow2 local-lvm此时查看pve上虚拟机…

Python | Leetcode Python题解之第74题搜索二维矩阵

题目&#xff1a; 题解&#xff1a; class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:row,col len(matrix),len(matrix[0])row_l,row_r 0,row-1while row_l < row_r:m (row_lrow_r)//2if target < matrix[m][0]:row_r m-1…

[GESP样题 三级] 进制转换、春游、密码合规

B3849 [GESP样题 三级] 进制转换 题目 小美刚刚学习了十六进制&#xff0c;她觉得很有趣&#xff0c;想到是不是还有更大的进制呢&#xff1f;在十六进制中&#xff0c;用 A 表示 10、F 表示 15。如果扩展到用 Z 表示 35&#xff0c;岂不是可以表示 36进制数了嘛&#xff01;…

java spring 09 Bean的销毁过程 上 在docreatebean中登记要销毁的bean

1.Bean销毁是发送在Spring容器关闭过程中的 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);UserService userService (UserService) context.getBean("userService");userService.test();// 容器关闭cont…

2W 6KVDC 隔离双输出 DC/DC 电源模块——TPJ-2W 系列

TPJ-2W一款有超高隔离电压的电源模块&#xff0c;主要用于隔离度要求高的如医疗仪器和设备&#xff0c;特别在安全设备的应用中起着相当重要的作用&#xff0c;它的绝缘设计完全能满足对隔离电压要求超过6KVDC的应用&#xff0c;在额定负载2W的情况下&#xff0c;工作温度范围为…

基于springboot实现夕阳红公寓管理系统项目【项目源码+论文说明】

基于springboot实现夕阳红公寓管理系统演示 摘要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的产生往往是…

ES6-自学01

调用方法读取文件&#xff1a;如果失败就throw抛出err,成功则抛出data 2.使用promise封装&#xff0c;如果失败就改变状态为 reject(err) 如果成功就 resolve(返回成功的值) &#xff0c;然后then,就可以获取返回的值&#xff0c;值toString&#xff08;&#xff09;方法来把…

ShowMeAI | 这是我们知道的,关于〖Suno 〗和〖AI音乐〗的一切

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; Suno 是一款AI音乐创作工具&#xff0c;可以通过提示词和设置生成一段音乐&#xff0c;而且可以包含歌词和人声 (这非常难得)。在经历了两年探索之后…

银河麒麟QT项目打包详细教程

银河麒麟QT项目打包详细教程 一、QT项目打包 下载linuxdeployqt&#xff0c;下载地址&#xff1a;https://github.com/probonopd/linuxdeployqt/releases 安装Linuxdeployqt 2.1 为了安装方便&#xff0c;将下载下来的文件名称改短些 mv linuxdeployqt-6-x86_64.AppImage lin…

zer0pts CTF 2022 -- kRCE

文章目录 前言题目分析漏洞利用提权shell exp 前言 这道题目非常有意思&#xff0c;看似 kernel pwn&#xff0c;但又是一个非常规的 kernel pwn&#xff0c;通过这个题目也学到了很多&#xff0c;这里主要参考 Will’s Root 的 wp 题目分析 作者写了一个具有多个漏洞的驱动…

工厂车间冷风机降温通风措施

冷风机的工作原理主要基于蒸发冷却原理&#xff0c;以下是其具体的工作流程&#xff1a; 空气吸入&#xff1a;当冷风机开始工作时&#xff0c;首先通过风扇将车间内的热空气吸入冷风机的机体内。蒸发冷却&#xff1a;冷风机内部有一个或多个湿帘或水帘&#xff0c;当热空气通…

打破次元壁!Stable Diffusion将现实影像转成二次元动画,推特转赞10k+,网友:都可以重做《神奇宝贝》动漫了

破次元壁计划已启动&#xff01; 就在最近&#xff0c;有网友分享了一个用Stable Diffusion打造二次元动画的工具&#xff0c;直接在网上爆火。 先快来看一波效果。 万物皆可妙化为二次元&#xff0c;耳机也可蜕变成小兔兔&#xff1a; 瞧&#xff01;连易拉罐的拉环也化身成…