У меня есть коллекция Point
объектов. Я хочу найти самое дальнее расстояние между любыми двумя точками. Представьте себе круг, охватывающий все эти точки. Я хочу знать диаметр этого круга. Как я могу это сделать в GeoDjango?Наибольшее расстояние между двумя точками с GeoDjango
редактировать: это то, что я до сих пор:
>>> r=Route.objects.get(pk=1)
>>> a=Airport.objects.filter(routebase__route=r)
>>> # this route represents a few hundred miles flight into mexico and back
>>> a
[<Airport: MMDO>, <Airport: KELP>, <Airport: KELP>, <Airport: MMCU>]
>>> # a multipoint object with all the airports
>>> mpoint = a.collect()
>>> # a polygon that represents a ring around the multipoint
>>> p = mpoint.envelope
>>> #now I just need to get the diameter of this envelope
>>> p.length
19.065994262694986
???
какие единицы это? Является ли это той ценностью, которой я занимаюсь?
edit2: OK Я собираюсь попробовать это еще один способ:
>>> r=Route.objects.get(pk=1)
>>> a=Airport.objects.filter(routebase__route=r)
>>> # this route represents a few hundred miles flight into mexico
>>> a
[<Airport: MMDO>, <Airport: KELP>, <Airport: MMCU>]
>>> # a multipoint object with all the airports
>>> mpoint = a.collect()
>>> # get the center point of the route polygon and get the
>>> # distance between each point and the centroid
>>> # the largest should be the diameter of the ring, right?
>>> cen = mpoint.centroid
>>> dist = []
>>> for p in mp:
dist.append(LineString(p, cen).length)
>>> dis
[0.54555421739245946,
0.61638306853425906,
0.53442640535933494,
0.54555421739245946]
>>> max(dist)
0.61638306853425906
?? опять же, каковы эти единицы?
С чисто геометрической точки зрения диаметр круга, который охватывает множество точек, является только верхней границей максимального расстояния. Если у вас есть 3 балла, которые лежат на круге только на 0,01 градуса, то максимальное расстояние более чем в 100 раз меньше диаметра указанного круга. – jva