python+mysql+阿里云地理小工具实现经纬度反射行政区

文章介绍了如何利用MySQL的geometry数据类型将经纬度数据映射到行政区。首先,从阿里云数据可视化平台获取省市的点和面坐标,然后通过Python的pandas库和SQL查询,结合ST_intersects函数找出匹配的行政区信息,更新原始数据表。
摘要由CSDN通过智能技术生成

前言

前段时间做了一个网点采集的需求,需求里有行政区的字段要求,但是拿下来的数据是经纬度,因此需要将经纬度映射成行政区,但是数据量也不大而且还都是上海的,没有必要去找地图的官方API,因此决定用mysql的geometry这数据类型来解决

geometry

具体的介绍可以看这个文章
MySQL Geometry的使用
我这次用到的很简单,数据结构用到了点坐标和多面

数据来源

mysql只是提供一个存储处理的工具,还是得有省市的点和面坐标,可以从阿里云的数据可视化平台里找到
阿里云地理小工具
导入到mysql之后就是这样的
在这里插入图片描述

映射代码

直接贴代码,拿下来改改表名就可以用了

from db_config import engine_crawler
import pandas as pd
if __name__ == '__main__':
    df=pd.read_sql("select * from kuaidian_copy1 where 行政区 is null",engine_crawler())
    for index,row in df.iterrows():
        jingdu=row['经度']
        weidu=row['维度']
        sql=r"""SELECT
	id,
	NAME,
	ext_path,
	polygon 
FROM
	AreaCity_Geo_20230301 
WHERE
	ST_intersects ( polygon, ST_GeomFromText ( 'POINT({} {})', 0 ) ) =1""".format(jingdu,weidu)
        df_1=pd.read_sql(sql,engine_crawler())
        if len(df_1)!=0:
            qu=df_1['ext_path'][0]
            sql_update="update kuaidian_copy1 set 行政区='{}' where id={}".format(qu,row['id'])
            print(sql_update)
            engine_crawler().execute(sql_update)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值