项目场景:

提示:参考数据国家统计局,[http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/index.html](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/index.html)

用户地址和可销售区域以及物流配送都需要有一个统一的标准,但是行政区域有可能会被撤销以及新增,所以要不定时进行数据同步。国家统计局会定时更新数据,我们可以根据需要进行拉取。

数据及介绍

下面提供一套最近我拉取的数据,如果有需要的可以进行下载使用。
csdn下载地址不需要金币

1-3级地址示例

第四级街道示例

按照国家统一编码,北京市编码11,天津编码12以及其他省份或者直辖市都是有固定的编码,全国统计用区划代码(12位)和城乡分类代码(3位),实际分析数据12位过于长保留6位即可。街道则根据第三级区名称定义

数据读取:

提示:如何从list中确定出省市区

代码长度为6位,前两位代表省份,中间两位代表市/区,后面两位代表县。

前两位代表省【110000,120000,130000】其提取方式为【代码%1000】

中间两位代表市【110100,120100,130100】 其提取方式为【代码%100】

剩余则代表区/县

现在我们已经知道字符长度中都是代表什么样的区域,但是如何实现三级联动的效果呢?
方案如下:

1.先取出所有的省/直辖市级获取其编码
2.循环list配置值计算方式为【0<(当前值-省编码)<1000】即为此省下面的市区
3.循环list配置值计算方式为【0<(当前值-市编码)<100】即为此省下面的区县
4.由于第四级是单独的文件则直接根据选定的区编码读取文件即可

获取代码如下:

 /// <summary>/// 获取四级地址/// </summary>/// <param name="code">区域编码</param>/// <returns></returns>public static object GetAreaCodeList(int? code){//获取json文件var JsonFile = Common.HtmlGet_Json(Config.openUrl + "Json/Area/list.json");//文件转键值对var ADic = JsonConvert.DeserializeObject<Dictionary<int, string>>(JsonFile);//返回数据List<string> areaList = new List<string> { };//循环数据foreach (var item in ADic){//code为空if (!code.HasValue){//读取所有省if (item.Key % 10000 == 0){areaList.Add(item.Value);}}else{var p = item.Key - code;  // lxj, //判断当前code是否为省if (code % 10000 == 0){//则取出市if (p > 0 && p < 10000){areaList.Add(item.Value);}}else if (code % 100 == 0){//则取出区/县if (p > 0 && p < 100){areaList.Add(item.Value);}}else{//第四级根据code读取文件名}}}return areaList;}

如果是过滤直辖市的是市辖区适当改变下代码即可如下:

 /// <summary>/// 获取四级地址/// </summary>/// <param name="code">区域编码</param>/// <returns></returns>public static object GetAreaCodeList(int? code){//获取json文件var JsonFile = Common.HtmlGet_Json(Config.openUrl + "Json/Area/list.json");//文件转键值对var ADic = JsonConvert.DeserializeObject<Dictionary<int, string>>(JsonFile);//返回数据List<string> areaList = new List<string> { };//直辖市int[] sxq = new int[] { 110000, 120000, 310000, 500000 };//循环数据foreach (var item in ADic){//code为空if (!code.HasValue){//读取所有省if (item.Key % 10000 == 0){areaList.Add(item.Value);}}else{var p = item.Key - code;  //过滤直辖市的市辖区if (sxq.Contains(code.Value)){// 不同直辖市的区县if (p > 100 && p < 100){areaList.Add(item.Value);}}else{//判断当前code是否为省if (code % 10000 == 0){//则取出市if (p > 0 && p < 10000){areaList.Add(item.Value);}}else if (code % 100 == 0){//则取出区/县if (p > 0 && p < 100){areaList.Add(item.Value);}}else{//第四级根据code读取文件名}}}}return areaList;}

后面我会介绍如何从国家统计局拉取数据!

根据国家统计局处理四级地址库相关推荐

  1. 四级地址库 国家标准的行政区划代码 省市区街道

    当输入收货地址等时,需要四级地址库,例如淘宝维护收货地址: 本文章提供四级地址库下载,包括一级省.二级市.三级区.四级街道四个层级,于2020年12月更新. 一级省,共31条记录.二级市,共371条记 ...

  2. 2020年最新中国行政地区三级、四级、五级地址库(包含京东)

    2020年最新中国行政地区地址库 三级地址库下载地址:https://download.csdn.net/download/weixin_46484774/12581441 四级地址库下载地址:htt ...

  3. 全国省市县四级坐标地址库

    全国省市县四级坐标地址库 下载并导入数据库文件 使用 下载并导入数据库文件 数据库文件链接: https://download.csdn.net/download/daizimo/10954204 使 ...

  4. MMDB ip地址库操作

    MMDB ip地址库操作 @(JAVA)[java] MMDB即Maxmind DB,是一个设计用于存储IPv4和IPv6的数据信息的数据库,mmdb文件是一个二进制格式的文件,它使用一个二分查找树加 ...

  5. 计算机网络四级题库word,计算机四级考试题库2016

    计算机四级考试题库2016 47.计算机网络的目标是实现____. A.数据处理 B.文献检索 C.资源共享和信息传输 D.信息传输 48.当个人计算机以拨号方式接入1nternet网时,必须使用的设 ...

  6. 【客户下单】基于CRM完全匹配地址库实现自动分单

    [客户下单]基于CRM完全匹配地址库实现自动分单 将寄件人的下单地址,以webservice的方式,发送给CRM地址库,获取到对应的客户关联的定区,匹配与定区关联的快递员,实现自动分单. 在crm_m ...

  7. 读取速度贼快的省市区地址库

    AddressData 读取速度贼快的地址库,包含省市区及身份证号前缀 地址库大小 54.14746KB 读取耗时 14~25ms (MacBook Pro LQ2 i7-4770HQ) {北京市={ ...

  8. 站长工具--IP地址库

    中国最全的IP地址库 转载于:https://www.cnblogs.com/weloveshare/p/5783438.html

  9. 计算机四级软件工程知识点,计算机四级考试题库及搜题软件,送一份备考指南给大家!...

    原标题:计算机四级考试题库及搜题软件,送一份备考指南给大家! 大家都知道,英语与计算机考试都是我们读书生涯中很常见的考试.其计算机四级考试就是全国计算机等级水平考试中的一中. 计算机四级是针对计算机的 ...

  10. spring boot 整合 ip2region(ip地址库)

    Ip2region是什么? ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nod ...

最新文章

  1. [IoC容器Unity]第一回:Unity预览
  2. 分布式系统保障—混沌工程—初识
  3. 大型网站技术架构02 网站的高性能架构、网站的可用性架构
  4. LeetCode 2089. 找出数组排序后的目标下标
  5. 机器学习任务的一般步骤
  6. 【讨论】不得不重视的问题:信息太多!信息太杂!
  7. 【前端 · 面试 】HTTP 总结(七)—— HTTP 缓存概述
  8. 逆向路由器固件之敏感信息泄露 Part2
  9. 优雅的实现Activiti动态调整流程(自由跳转、前进、后退、分裂、前加签、后加签等),含范例代码!...
  10. 【优化算法】世界杯优化算法(WCOA)【含Matlab源码 1427期】
  11. 【故障分析】基于matlab轴承故障仿真信号时域波形图+幅度谱图【含Matlab源码 123期】
  12. Linux当前目录下所有jpg文件,解决Linux平台下无法打开jpg文件(提示: “Not a JPEG file: starts with 0x89 0x50”)的方法...
  13. 微软hci推荐服务器,Azure Stack HCI 的系统需求
  14. 最新Via轻插件下载
  15. 关于window简体中文环境文件路径包含7种横杠的问题,及结论推广
  16. android ue设计原则,ued设计原则
  17. 在嘲笑与冷眼下成长,并不断在泥潭中站起
  18. android表格布局bottom,Android基础_2 Activity线性布局和表格布局
  19. Leetcode575(力扣575):分糖果
  20. python输入身份证号得到出生日期_初学django1:django模型中自定义方法从身份证号码中获取出生日期...

热门文章

  1. MOS管的源极和漏极的区别
  2. 2022年4月国产数据库大事记
  3. 微信小程序 源码资源汇总
  4. 华为Metn40有没有鸿蒙系统,华为matex2测评_华为matex2上手测评
  5. Android 动态更换app图标
  6. 【目标检测】VOC2007数据集介绍
  7. 【Unity3D日常BUG】Unity3D 中听不到声音解决方案
  8. 脚本工具之下载M3U8文件类型的完整视频
  9. 【Matlab】求解函数导数
  10. python 规则引擎 drools_Drools规则引擎入门指南(一)