python地理数据处理库geopy
http://blog.csdn.net/pipisorry/article/details/52205266
python地理位置处理
python地理编码地址以及用来处理经纬度的库
GeoDjango – 世界级地理图形 web 框架。
GeoIP – MaxMind GeoIP Legacy 数据库的Python API。
geojson – GeoJSON 的 Python 绑定及工具。
geopy – Python 地址编码工具箱。
pygeoip – 纯 Python GeoIP API。
django-countries – 一个 Django应用程序,提供用于表格的国家选择功能,国旗图标静态文件以及模型中的国家字段。
其它:
shapely,是geos的python封装,而geos是jts的c++移植版本。
python地理数据处理相关代码
Python 地址编码工具箱geopy
geopy is a Python 2 and 3 client for several popular geocoding web services.
geopy makes it easy for Python developers to locate the coordinates of addresses, cities, countries, and landmarks across the globe using third-party geocoders and other data sources.
geopy includes geocoder classes for the OpenStreetMap Nominatim, ESRI ArcGIS, Google Geocoding API (V3), Baidu Maps, Bing Maps API, Mapzen Search, Yandex, IGN France, GeoNames, NaviData, OpenMapQuest, What3Words, OpenCage, SmartyStreets, geocoder.us, and GeocodeFarm geocoder services. The various geocoder classes are located in geopy.geocoders.
安装
pip install geopy
基本使用
Note: 函数参数都是纬度latitude在前,经度longitude在后。
查询地名转换为具体地址和经纬度Geocoding
To geolocate a query to an address and coordinates:
>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim()
>>> location = geolocator.geocode("175 5th Avenue NYC")
>>> print(location.address)
Flatiron Building, 175, 5th Avenue, Flatiron, New York, NYC, New York, ...
>>> print((location.latitude, location.longitude))
(40.7410861, -73.9896297241625)
>>> print(location.raw)
{'place_id': '9167009604', 'type': 'attraction', ...}
To find the address corresponding to a set of coordinates:
>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim()
>>> location = geolocator.reverse("52.509669, 13.376294")
>>> print(location.address)
Potsdamer Platz, Mitte, Berlin, 10117, Deutschland, European Union
>>> print((location.latitude, location.longitude))
(52.5094982, 13.3765983)
>>> print(location.raw)
{'place_id': '654513', 'osm_type': 'node', ...}
计算两地距离Measuring Distance
通过经纬度计算两地距离的两种方法。Geopy can calculate geodesic distance between two points using the Vincenty distance or great-circle distance formulas, with a default of Vincenty available as the class geopy.distance.distance, and the computed distance available as attributes (e.g., miles, meters,kilometers,etc.).
输入数据类型可以是tuple, list, array...,元素类型可以是float, str...
Vincenty distance
>>> from geopy.distance import vincenty
>>> newport_ri = (41.49008, -71.312796)
>>> cleveland_oh = (41.499498, -81.695391)
>>> print(vincenty(newport_ri, cleveland_oh).miles)
538.3904451566326
Vincenty distance (vincenty) uses a more accurate ellipsoidal modelof the earth. This is the default distance formula, and is thus aliased asdistance.distance. There are multiple popular ellipsoidal models, andwhich one will be the most accurate depends on where your points are locatedon the earth. The default is the WGS-84 ellipsoid, which is the most globallyaccurate. geopy includes a few othermodels in the distance.ELLIPSOIDS dictionary:
model major (km) minor (km) flattening ELLIPSOIDS = {'WGS-84': (6378.137, 6356.7523142, 1 / 298.257223563), 'GRS-80': (6378.137, 6356.7523141, 1 / 298.257222101), 'Airy (1830)': (6377.563396, 6356.256909, 1 / 299.3249646), 'Intl 1924': (6378.388, 6356.911946, 1 / 297.0), 'Clarke (1880)': (6378.249145, 6356.51486955, 1 / 293.465), 'GRS-67': (6378.1600, 6356.774719, 1 / 298.25), }
You can change the ellipsoid model used by the Vincenty formula like so:
>>> distance.vincenty(ne, cl, ellipsoid='GRS-80').miles
The above model name will automatically be retrieved from theELLIPSOIDS dictionary. Alternatively, you can specify the model valuesdirectly:
>>> distance.vincenty(ne, cl, ellipsoid=(6377., 6356., 1 / 297.)).miles
[class geopy.distance.vincenty(*args, **kwargs)]
[https://en.wikipedia.org/wiki/Vincenty’s_formulae]
great-circle distance
>>> from geopy.distance import great_circle
>>> newport_ri = (41.49008, -71.312796)
>>> cleveland_oh = (41.499498, -81.695391)
>>> print(great_circle(newport_ri, cleveland_oh).miles)
537.1485284062816
[class geopy.distance.great_circle(*args, **kwargs)]
[https://en.wikipedia.org/wiki/Great-circle_distance]
两种经纬度距离度量方法的区别
Vincenty's formulae are two related iterative methods used in geodesy to calculate the distance between two points on the surface of a spheroid, developed by Thaddeus Vincenty (1975a) They are based on the assumption that the figure of the Earth is an oblate spheroid(扁球形体), and hence are more accurate than methods such as great-circle distance which assume a spherical(球状的) Earth.
[What's the difference between vincenty and great circle distance calculations?]
计算出错
TypeError: __new__() takes from 1 to 4 positional arguments but 5 were given
可能是某个坐标的维度不对,如[[ ]]二维就不对,应该是[]或者()。
ValueError: Vincenty formula failed to converge!
vincenty算法可以不收敛,可能是因为中间有一些三角函数的计算是通过迭代计算出来的,超过最大迭代次数就当作不收敛了。the basic iterative technique for the inverse method is just Vincenty (regular + his antipodal method); so it may fail to converge in some cases.
Examples where the solution of the inverse problem fails to converge:
lat1 lon1 lat2 lon2 0.7 0 -0.3 179.7 2.2 0 -1.8 179.6 2.3 0 -2.0 179.6
[Talk:Geodesics on an ellipsoid]
def c(): from geopy import distance xs ], [], [], [, ]] ys , ]] for x, y in zip(xs, ys): try: d = distance.vincenty(x, y) print(d) except: )
解决:
It may be preferable to use :class:`.great_circle`, which is marginally less accurate, but always produces a result.
[https://github.com/geopy/geopy/pull/144/files]
from: http://blog.csdn.net/pipisorry/article/details/52205266
ref:
python地理数据处理库geopy的更多相关文章
- python地理处理包——geopy使用之地理编码与反地理编码
由于专业需要,经常接触一些地理处理的工具包,文档都是英文的,自己看的同时将其翻译一下,一方面自己学习的同时有个记录,要是能同时给一起的学习的童鞋们一些帮助,想想也是极好的.以下的文档内容主要翻译自官方 ...
- python常用数据处理库
Python之所以能够成为数据分析与挖掘领域的最佳语言,是有其独特的优势的.因为他有很多这个领域相关的库可以用,而且很好用,比如Numpy.SciPy.Matploglib.Pandas.Scikit ...
- Python 数据处理库 pandas 入门教程
Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...
- Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)
0 简单介绍 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有 ...
- python 各种开源库
测试开发 来源:https://www.jianshu.com/p/ea6f7fb69501 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 sel ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- Python的常用库
读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都 ...
- python地理处理包——pySAL使用
Pysal是基于Python的开源地理处理库,能提供高层次的空间分析功能.
- python 爬虫第三方库
这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...
随机推荐
- [POJ 3243]Clever Y
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...
- [LOJ 6248]「CodePlus 2017 11 月赛」晨跑
Description “无体育,不清华”.“每天锻炼一小时,健康工作五十年,幸福生活一辈子” 在清华,体育运动绝对是同学们生活中不可或缺的一部分.为了响应学校的号召,模范好学生王队长决定坚持晨跑.不 ...
- 计蒜客NOIP模拟赛4 D1T3 小X的佛光
小 X 是远近闻名的学佛,平日里最喜欢做的事就是蒸发学水. 小 X 所在的城市 X 城是一个含有 N 个节点的无向图,同时,由于 X 国是一个发展中国家,为了节约城市建设的经费,X 国首相在建造 X ...
- 51 nod 1188 最大公约数之和 V2
1188 最大公约数之和 V2 题目来源: UVA 基准时间限制:2 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个数N,输出小于等于N的所有数,两两之间的最大公约数 ...
- [2017/5/28]FJ四校联考
来自FallDream的博客,未经允许,请勿转载,谢谢. 话说这一段时间算是过去了,好久好久之后终于又有联考了 没想到这次到我们学校出题,昨天才想起来,临时花一天赶了一套,我出了一个sbFFT,质量 ...
- ORACLE 触发器 基础
--触发器--语法 CREATE OR REPLACE TRIGGER TRIGGER_NAME AFTER|BEFORE|INSTEAD OF [INSERT][OR UPDATE [OF COLU ...
- Mysql B-Tree, B+Tree, B*树介绍
[摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是浮云,目前Mysql的MyISAM和InnoDB都支持B-Tree索引,InnoDB还支持B+Tree索引,Memory ...
- Python小代码_12_生成前 n 行杨辉三角
def demo(t): print([1]) print([1, 1]) line = [1, 1] for i in range(2, t): r = [] for j in range(0, l ...
- C# 异步转同步
当我们的程序运行时,调用了一段异步的逻辑A,这段异步的逻辑无法转化为同步(如动画.下载进度等) 而,我们又需要等待异步逻辑A处理完成,然后再执行其它逻辑B. 那就迫切需要将异步转同步了! //参数bo ...
- 40. Combination Sum II(midum, backtrack, 重要)
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...