我爱编程

python写脚本查询地址所在街道

2018-05-04  本文已影响206人  yiangdea
媳妇儿她们公司承接普查,需要对地址进行街道的划分,故写了这个脚本帮助她搞定这些,
思索:如果不知道高德的开发者API,也不会写脚本,几千条数据的街道,光靠着web版的地图挨个查,数街道,估计得通宵也搞不定,政府部门的电子化任重而道远...到现在连个正经ERP系统都没有,街道划分图拿给她一张5年前的手绘图...非常厉害了!

需求: 利用地图搜索地址信息,查询地址所在街道,然后记录
实现如下

pandas使用操作:

pip install pandas
如果报 [PermissionError: [Errno 13] Permission denied: '/Users/yangda/.virtualenv/educational *venv*/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc'](https://www.google.com/search?biw=1280&bih=680&q=PermissionError:+%5BErrno+13%5D+Permission+denied:+%27/Users/yangda/.virtualenv/educational+venv/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc%27&spell=1&sa=X&ved=0ahUKEwiLgb7GsevaAhVGxGMKHThzD2sQBQgjKAA)
使用 sudo pip install pandas

pandas.read_csv参数详解

实现代码:

# -*- coding:utf-8 -*-
from __future__ import unicode_literals

__author__ = 'yang_da'
__date__ = '2018/5/4 下午1:44'

import requests
import pandas as pd
import time
import sys


def parse():
    total_data = pd.read_csv('begin.csv', header=1)
    total_list_data = total_data['123456']
    return total_list_data


def search_location(address):
    params = {'address': address,
              'city': '北京',
              'key': '请写入你自己的key'}
    base_url = 'http://restapi.amap.com/v3/geocode/geo'
    response = requests.get(url=base_url, params=params)
    json_data = response.json()
    if json_data['status'] == '1' and len(json_data['geocodes']) > 0:
        return json_data['geocodes'][0]['location'] if json_data['geocodes'][0]['location'] else 'errorlocation', json_data
    return 'errorlocation', json_data


def search_address_detail(location):
    params = {'location': location,
              'key': '写入你的key'}
    base_url = 'http://restapi.amap.com/v3/geocode/regeo'
    response = requests.get(url=base_url, params=params)
    json_data = response.json()
    if json_data['status'] == '1':
        if json_data['regeocode']['addressComponent']['township']:
            return json_data['regeocode']['addressComponent']['township'], json_data
    return 'errorSearchAddress', json_data


if __name__ == '__main__':
    df = pd.DataFrame(columns=['originAddress', 'location', 'anotherInfo', 'searchTownship', 'searchAnotherAddress'])
    address_list = parse()
    index = 0
    for address in address_list:
        # 地址,处理坑爹数据
        address_deal = address.split(' ',1)
        real_address = ''
        for real in address_deal:
            if len(real) > len(real_address):
                real_address = real
        # 搜索location
        location_str, search_json = search_location(address=real_address)
        # 利用location搜索township
        township_str, search_address_json = search_address_detail(location=location_str)
        df.loc[index] = [address, location_str, search_json, township_str, search_address_json]
        index = index + 1
        print('正在查询')
        print(index)
    df.to_csv('locationDetail.csv', index=True)
    print('输出csv成功')

参考:
pandas入门
python调高德api

上一篇下一篇

猜你喜欢

热点阅读