緯度および経度座標にマップテンセントバッチ変換アドレスを使用

序文

2年前、の量得るために、R + Baiduのマップの緯度と経度の座標を使って記事書いたhttps://blog.csdn.net/lpwmm/article/details/79202592を、以降のフィードバックは、ドキュメントアクションに従って座標データを得ることができない多くの人々を獲得私はレイダーズはテンセントオープンプラットフォームでマッピングを行うように変更することを決めたので、途中AKコードBaiduのマップのAPIの施さアップグレードのように見える、とのGitHub badbyeの作者には、下に比べても、長い間更新されていないことbaidumapライブラリを書きますより有利なハを提供するために、個々の開発者のためのコールテンセントマップの空き数:あなたは一日1ワット回呼び出すことができ、並行処理制限は5回/秒、日常の使用に十分に良いされているされて、あなたは、企業情報との関連がより多くのニーズを呼び出すために必要がある場合特定の比較:https://lbs.qq.com/webservice_v1/guide-quota.html、この2年間ではほとんど忘れパイソン、R'veを使用してきた...恥ずかしい...私は、開発言語として次のPythonを使用します。テキストを開始し、オーバーロングったらしい、緯度と経度の座標にバッチ改宗者のアドレスを実現!

完全なコードに関連する記事は、オープンソース(コード雲)であります

https://gitee.com/lpwm/txmap

テンセントマップキーアプリケーション

テンセントオープンロケーションサービス:
https://lbs.qq.com/dev/
使用QQマイクロチャネルまたはコンソールログインには、バインドの電話番号や電子メールへの初めての必要性のために、ここではそれらを繰り返さない、完全な情報への指示に従います。
クリック左側のメニューkey与配额- key管理- 创建新密钥
ここに画像を挿入説明
このキーに名前を付ける
ここに画像を挿入説明
キーを正しくコピー作成した後、キーセットに保存し
ここに画像を挿入説明
、ここでチェックする必要があるWebServiceAPIとIP許可を設定します
ここに画像を挿入説明

電流を埋めるために必要が明確でない場合は、を介してアクセスすることができ、インターネット上のIPコンピュータのIPアドレスを許可http://ifconfig.io/の眺め
ここに画像を挿入説明

これまでのところ、テンセントが設定されているキーをマップするには、バッチで取得するにはPythonを使用して起動することができます

緯度と経度のPythonを使用して、単一の位置を取得します

以下は、開発環境を説明します。

  • Pythonの3.7.6(3.6推奨以降に行います)
  • PyCharm(年前、彼の歯をgrittedおよびProfessional Editionの、PyCharmまたはVSCode十分のコミュニティ版とおいしい!共通の開発の1年間のサブスクリプションを購入)

:最初の公式WebサービスAPIドキュメント添付
https://lbs.qq.com/webservice_v1/index.htmlを

実際には、APIの使用は文書によると、パラメータを持つGETリクエストを送信するためにある地址解析(地址转坐标)の導入(https://lbs.qq.com/webservice_v1/guide-geocoder.html)、我々は唯一のGET要求て送信に追加する必要がありますaddressそしてkey、パラメータ、JSONデータやPythonの持つ行に返された結果解析requestsのは、単純な単一の場所を試してみましょう、ライブラリは簡単にこの要求を実現することができます。

"""
@Description : 单独调用演示
@File        : demo.py
@Project     : txmap
@Time        : 2020/4/4 17:37
@Author      : Dexter
@Software    : PyCharm
"""
import os
from pprint import pprint

import requests as req
from dotenv import load_dotenv

load_dotenv()

KEY = os.getenv('KEY')

ret = req.get(
    url='https://apis.map.qq.com/ws/geocoder/v1/',
    params={
        'region': '安阳市',
        'address': '中国文字博物馆',
        'key': KEY
    }
).json()

pprint(ret)

結果:

H:\gitee\txmap\venv\Scripts\python.exe H:/gitee/txmap/demo.py
{'message': 'query ok',
 'result': {'ad_info': {'adcode': '410502'},
            'address_components': {'city': '安阳市',
                                   'district': '文峰区',
                                   'province': '河南省',
                                   'street': '',
                                   'street_number': ''},
            'deviation': 1000,
            'level': 11,
            'location': {'lat': 36.112438, 'lng': 114.393631},
            'reliability': 7,
            'similarity': 0.8,
            'title': '中国文字博物馆'},
 'status': 0}

Process finished with exit code 0

あなたが見ることができ、その結果返されたが非常に詳述されて、分析単一の場所の緯度と経度の実験は成功、次の行バッチバージョンでした

バッチ変換を実現

目標

次に、位置を読み取り、XLSXファイルデータは、緯度と経度列XLSX、このようなXLSXファイル長の緯度と経度の座標に追加します:
ここに画像を挿入説明

実装コード

"""
@Description : 批量获取xlsx中的位置经纬度
@File        : main.py
@Project     : txmap
@Time        : 2020/4/4 17:55
@Author      : Dexter
@Software    : PyCharm
"""
import os

import openpyxl
import requests as req
from dotenv import load_dotenv

load_dotenv()

KEY = os.getenv('KEY')

XLSX_PATH = os.path.join(os.getcwd(), '位置.xlsx')

CITY = '安阳市'


def get_cor(address):
    """
    获取单个地址对应坐标
    :param address: 地址名称
    :return: 字典类型的经纬度坐标,格式:{'lat': 36.112438, 'lng': 114.393631}
    """
    ret = req.get(
        url='https://apis.map.qq.com/ws/geocoder/v1/',
        params={
            'region': CITY,
            'address': address,
            'key': KEY
        }
    ).json()
    if ret.get('status') == 0:
        return ret.get('result').get('location')
    else:
        return None


if __name__ == '__main__':
    wb = openpyxl.load_workbook(XLSX_PATH)
    ws = wb['Sheet1']
    for cell in ws['A']:
        # 第一行是列标题,需要排除掉
        if cell.row > 1:
            addr = cell.value
            cor = get_cor(addr)
            if cor:
                # 经度
                ws[f'B{cell.row}'] = cor.get('lng')
                # 维度
                ws[f'C{cell.row}'] = cor.get('lat')

    wb.save(XLSX_PATH)

治療終了後のXLSXファイル:
ここに画像を挿入説明

結論

Pythonは、もはや日常業務プロセスの誇る自慢単に使用し、車輪と、より簡潔なコードへのより容易ではないことができないことがあります。ご質問は、メッセージの議論を残してください場合は、noコメント上記のコードは、あまり説明します。

公開された219元の記事 ウォン称賛99 ビュー490 000 +

おすすめ

転載: blog.csdn.net/lpwmm/article/details/105313017