3

Pysal 的新手,刚刚开始处理加载、阅读等。我有一些十进制度 (WGS84) 的测试点数据,并且想要使用 get_point_dist 函数。运行它后,我得到了正确的响应,但我想要米/公里等的距离而不是 DD。

任何想法如何做到这一点,或者答案是“投影输入数据”?

4

1 回答 1

1

PySAL 中的 get_points_dist 方法仅在欧几里得空间中运行,因此您需要投影输入数据才能使用它。

但是,您可以使用 arcdist 方法。

注意:点元组应按(Long,Lat)顺序提供。

例如:

>>> import pysal
>>> pt0 = (-74.0, 40.7)
>>> pt1 = (-77.0, 38.8)
>>> pysal.cg.arcdist(pt0, pt1)

arcdist 确实有一些限制,它假定一个完美的球体并且不会考虑大地水准面 (WGS84)。它默认为 KiloMeters,要更改它,您必须以所需的任何单位指定球体(地球)的半径。KM 和 Miles 的常量是提供的,pysal.cg.sphere.RADIUS_EARTH_KM pysal.cg.sphere.RADIUS_EARTH_MILES

例子:

>>> pysal.cg.arcdist(pt0, pt1, pysal.cg.sphere.RADIUS_EARTH_KM)

PySAL 中的 KDTree 还可以使用球坐标,并提供准确的最近邻结果,即使在反子午线(日期线/180 lng/-180 lng)和民意调查中也是如此。

>>> pts = [(-179.0,0.0), (170,0.0), (179.0,0.0)]
>>> kd = pysal.cg.KDTree(pts, distance_metric='Arc', radius = pysal.cg.sphere.RADIUS_EARTH_KM)
>>> d, i = kd.query((-180.0,0.0), k=3)
>>> d
array([  111.19492664,   111.19492664,  1111.94926645])
>>> i
array([0, 2, 1])
于 2013-08-01T19:43:57.617 回答