Python地理编码库geopy的使用
at 4年前 ca Linux pv 2126 by touch
一、简介
处理地理数据经常会涉及到地理编码的问题。地理编码指的是将地理信息转化成坐标关系的过程。分为正向和反向的编码。正向的是指将地址信息转换为坐标点,比如:武汉市武汉大学—>(114.3594147, 30.5401222);反向地理编码就是将地理坐标转换为具体的地址,是一个与前面相反的过程。
基于Python的地理编码库geopy 是用于地理编码的常用工具,使用它可获取多种地图服务的坐标。Python开发者可以使用geopy很容易的获取全球的某个街道地址,城市,国家和地块的地理坐标,它是通过第三方的地理编码器和数据源来解析的。
主要有以下几个功能:
地理编码:将字符串转换为地理位置
逆地理编码:用于将地理坐标转换为具体地址
计算两个点的距离:经纬度距离和球面距离
二、地理编码
输出结果:
天安门, 1, 西长安街, 崇文, 北京市, 东城区, 北京市, 100010, 中国 (39.9073426, 116.391264649167) 0.0 {'place_id': 242516302, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 8847697, 'boundingbox': ['39.9071466', '39.9075289', '116.3905678', '116.3919619'], 'lat': '39.9073426', 'lon': '116.391264649167', 'display_name': '天安门, 1, 西长安街, 崇文, 北京市, 东城区, 北京市, 100010, 中国', 'class': 'historic', 'type': 'city_gate', 'importance': 0.001}
三、逆地理编码
from geopy.geocoders import Nominatim geolocator = Nominatim() location = geolocator.reverse("39.9073426, 116.391264649167") # 传入纬度、经度字符串 print(location.address) print((location.latitude,location.longitude)) print(location.altitude) print(location.raw)
输出结果:
天安门, 1, 西长安街, 崇文, 北京市, 东城区, 北京市, 100010, 中国 (39.9073426, 116.391264649167) 0.0 {'place_id': 242516302, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'relation', 'osm_id': 8847697, 'lat': '39.9073426', 'lon': '116.391264649167', 'display_name': '天安门, 1, 西长安街, 崇文, 北京市, 东城区, 北京市, 100010, 中国', 'address': {'address29': '天安门', 'house_number': '1', 'road': '西长安街', 'suburb': '崇文', 'city': '东城区', 'state': '北京市', 'postcode': '100010', 'country': '中国', 'country_code': 'cn'}, 'boundingbox': ['39.9071466', '39.9075289', '116.3905678', '116.3919619']}
四、计算经纬度距离
from geopy.distance import geodesic tian_an_men = (39.9073285, 116.391242416486) xiaozhai = (34.2253171, 108.9426205) # 可以是meters(米)、kilometers(千米)、miles(英里)、nautical(海里)、feet(英尺) print(geodesic(tian_an_men, xiaozhai).meters)
输出结果:
913925.3165094886
五、计算球面距离
913925.3165094886
输出结果:
913657.4596518732
版权声明
本文仅代表作者观点,不代表码农殇立场。
本文系作者授权码农殇发表,未经许可,不得转载。
已有0条评论