python中文地址映射省市县行政区域及经纬度解析

您所在的位置:网站首页 经纬度划分区域 python中文地址映射省市县行政区域及经纬度解析

python中文地址映射省市县行政区域及经纬度解析

2024-05-30 08:38| 来源: 网络整理| 查看: 265

面对这样的需求

从下面地址详情中提取其所在行政区域(省、市、县/区 ),切分为右边表格的形式。

地址详情映射后地址信息详细地址省市县/区详细地址平罗县御景安家25-1-102宁夏回族自治区石嘴山市平罗县御景安家25-1-102达州渠县渠江镇珠山村一组57号四川省达州市渠县渠江镇珠山村一组57号兴庆区在水一方C区5-3-101宁夏回族自治区银川市兴庆区在水一方C区5-3-101成都市武侯区佳灵路九峰家园2栋四川省成都市武侯区佳灵路九峰家园2栋大田县集美路21号福建省三明市大田县集美路21号邢台桥东区高开东汪镇西静庵村河北省邢台市桥东区高开东汪镇西静庵村

 

方法一 pip install cpca

    原理是通过jieba工具先对详细地址做分词,再将结果分段对比行政地区域地址库,代码如下:

import cpca area_str = ["平罗县御景安家25-1-102"] df_str = cpca.transform(area_str ) df_str

结果展示:

省   市     区  地址宁夏回族自治区  石嘴山市  平罗县 御景安家25-1-102 经纬度解析

cpca.latlng 以字典的形式将全国的行政区域经纬度保存(如下图:)

                   

我们直接从该字典中查询行政区域对应的经纬度即可(如下:)

cpca.latlng['北京市', '北京市', '西城区'] 结果:('39.93428014370851', '116.37319010401802')

另一种类似的方法也可以解析地址经纬度(如下:)

方法二 pip install chinese_province_city_area_mapper

 原理与方法相似,但在使用过程要比方法一更上手,很多拼写不全的地址用方法二都可以映射正确的省市县。实验以下地址的时候使用方法一解析失败,使用方法二解析成功,如下:

from chinese_province_city_area_mapper.transformer import CPCATransformer Ca = CPCATransformer() Ca.transform(['湖南省株洲县朱亭镇水口村跃进组12号', '青海省海东地区乐都县高庙镇白崖子村42号', '湖南省株洲县渌口镇凯裕名城B栋4单元301 '])

使用chinese_province_city_area_mapper解析结果:

                                                      

使用cpca解析结果:

                                     

 

只有市级和市级以下的行政区域存在重名的情况,例如中国有很多城市的区叫“朝阳区” ,如果详细地址中没有别的地址描述的话系统是不知道应该映射到哪个“朝阳区”,所以我们需要为一些市区指定默认所属省。

有两种方式指定默认值:

# 方法一:直接通过 CPCATransformer 指定 cpca = CPCATransformer({"朝阳区":"北京市"}) df = cpca.transform(location_str) # 方法二:通过内置模块 umap 调用默认地址字典 from chinese_province_city_area_mapper import myumap cpca = CPCATransformer(myumap.umap) df = cpca.transform(location_str)

打印myumap.umap ,结果如下 :

{'南关区': '长春市', '南山区': '深圳市', '宝山区': '上海市', '市辖区': '东莞市', '普陀区': '上海市', '朝阳区': '北京市', '河东区': '天津市', '白云区': '广州市', '西湖区': '杭州市', '铁西区': '沈阳市'}

 

   对经纬度的解析结果大体相当,代码如下:

from chinese_province_city_area_mapper.infrastructure import SuperMap SuperMap.lat_lon_mapper.get("北京市,北京市,朝阳区") 结果:(39.92, 116.43)

   绘图功能,两行代码完成:

# 绘制城市热力地图 from chinese_province_city_area_mapper import drawers drawers.draw_locations(DF, "df.html")

 

chinese_province_city_area_mapper  模块还有其他功能模块,例如 SuperMap模块简要介绍如下:

from chinese_province_city_area_mapper.infrastructure import SuperMap #地区到市的映射数据库,是一个字典类型(key为区名,value为其所属的市名),注意其中包含重复的区名 SuperMap.area_city_mapper #重复的区名列表,列表类型,如果区名在这个列表中,则area_city_mapper的映射是不准确的 SuperMap.rep_areas #市到省的映射数据库,字典类型(key为市的名称,value为省的名称) SuperMap.city_province_mapper #全国省市区的经纬度数据库,字典类型(key为"省,市,区",value为(维度,经度)) SuperMap.lat_lon_mapper #获取北京市朝阳区的经纬度 SuperMap.lat_lon_mapper.get("北京市,北京市,朝阳区")

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3