Я хотел бы немного пояснить:
Экземпляры, которые передаются в функцию distance_from
, сделаны из классов shapely.geometry.polygon.Polygon
и shapely.geometry.point.Point
из модуля shapely.geometry
пакет Shapely Python для вычислительной геометрии .(Подробнее о фигурных и геометрических объектах см. В руководстве: Пакет Shapely Python , Геометрические объекты ).
Метод distance
геометрическогообъект возвращает минимальное расстояние до другого геометрического объекта, как описано здесь в руководстве.Внешность многоугольника является экземпляром shapely.geometry.polygon.LinearRing
, который составляет границу многоугольника (хотя он не должен смешиваться с атрибутом boundary
многоугольника, который возвращает LineString
).Таким образом, для описанного выше случая вам не нужно явно использовать poly.exterior.distance(point)
, потому что минимальное расстояние одинаково для всего многоугольника, как и для его границы.Они имеют абсолютно одинаковую форму только разного типа геометрии.
Было бы менее подвержено ошибкам, если бы вы просто использовали poly.distance(point)
, потому что, если точка интереса находится в пределах interior
( больше информации здесь ) многоугольника, этоЯсно, что он содержится, поэтому вам не нужна явная проверка, а расстояние от точки в interior
до самого себя равно 0. Тогда было бы иначе, если бы вы попытались получить расстояние от exterior
(который, как объяснено выше, является LinearRing
, то есть закрытым LineString
) до точки, которая находится во «внутренней» части.В этом случае вы получите минимальное расстояние между точкой во «внутренней» части и окружающим линейным кольцом.
Для получения дополнительной информации о бинарных отношениях (т. Е. Между геометрическим объектом и другим, который охватывает contains
, within
, touches
и т. Д.) См. эту часть руководства и для тех, кто интересуется базовыми отношениями DE-9IM (которые позволяют четко определить, как геометрические объекты относятся кдругое) обратитесь к этой части.
Shapely - это оболочка для Python для набора GEOS , который сам по себе является портом C ++ JTS .На странице JTS по ссылке Таблица характеристик можно найти дополнительную информацию о том, как проверяются и вычисляются пространственные отношения