序文
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://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コメント上記のコードは、あまり説明します。