Как буферизовать IPoint или IGeometry? (Как сделать буферизованные проверки пересечения на IPoint?)

Как мне буферизовать IPoint для проверки пересечения с помощью IRelationalOperator?

Я имею, ради аргументов:

IPoint p1 = xxx;
IPoint p2 = yyy;
IRelationalOperator rel1 = (IRelationalOperator)p1;
   if (rel.Intersects (p2))
    // Do something

Но теперь я хочу добавить допуск к моей проверке, поэтому я предполагаю, что правильный способ сделать это - буферизовать p1 или p2. Правильно? Как мне добавить такой буфер?

Примечание: метод Intersects, который я использую, является методом расширения, который я написал, чтобы упростить мой код. Вот:

/// <summary>
/// Returns true if the IGeometry is intersected.
/// This method negates the Disjoint method.
/// </summary>
/// <param name="relOp">The rel op.</param>
/// <param name="other">The other.</param>
/// <returns></returns>
public static bool Intersects (
    this IRelationalOperator relOp,
    IGeometry other)
{
    return (!relOp.Disjoint (other));
}

1 ответ

Решение

ОК, я нашел ответ. Или ответ. Используйте интерфейс ITopologicalOperator.

IPoint p1 = xxx;
IPoint p2 = yyy;
ITopologicalOperator topoOp = (ITopologicalOperator)p2 ;
IGeometry p2Bufferd = topoOp.Buffer (bufferSize);

IRelationalOperator rel1 = (IRelationalOperator)p1;
   if (rel.Intersects (p2Bufferd))
    // Do something
Другие вопросы по тегам