В чем разница между геометрией GDAL Within () и функциями Contains ()? - PullRequest
1 голос
/ 19 июня 2019

Чем отличаются следующие функции, доступные в org.gdal.ogr.Geometry.

Within() vs Contains()

Crosses() vs Intersect()

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Функции within и contains являются взаимными функциями. a contains b , если и только если, b равно within a .Исходный код C ++ говорит то же самое:

bool
Geometry::within(const Geometry* g) const
{
    return g->contains(this);
}

Функции crosses () и intersects () имеют разную реализацию.

Согласно этой странице документации , пересечения возвращают истину, если дизъюнкт возвращает ложь, а непересекающийся предикат означает, что две геометрии не имеют общей точки.Мы можем заключить, что пересечение означает, что две геометрии имеют по крайней мере одну общую точку.

С другой стороны, предикат пересечения означает, что геометрия имеет некоторые, но не все внутренние точки, общие.Что является более строгим, чем предикат пересечения.

1 голос
/ 04 июля 2019

Ортомала Локни правильно о crosses и intersects, Вот визуальное объяснение того, как внутри и содержится работа.

Скажите, что у вас есть две геометрии: точка A и многоугольник B, как показано на рисунке. Polygon

Тогда A равно в пределах B, тогда как B содержит A.

Обратное значение не соответствует действительности . A не содержит B, а B не входит в A.

следующие два утверждения верны:

A.within(B) -> B.contains(A)

A.contains(B) -> B.within(A)

...