2010-08-05 3 views
1

Есть ли способ вычесть геометрию из другого? Вид обратного STUnion ..Вычитание геометрии SQL Server из другого

Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно обеспечить, чтобы форма находилась в другом (без изменения большей формы). Я думал, что могу использовать STIntersection, чтобы получить форму, в которой находится «in». Однако STIntersection не является точным и создает форму, которая может (и не) не приравниваться к истинному пересечению.

Вы можете легко это увидеть, если затем принять STDifference оригинальной формы.

Итак, что бы я хотел сделать, это две формы, которые я хочу вычесть из другой - например. Возьмите STIntersection и затем вычтите STDifference.

Любые идеи?

Редактировать: На данный момент я создал свое пересечение из версии большей формы STBuffer (-1), это должно учитывать математическое изменение STIntersection с небольшим снижением точности. Тем не менее, я все равно хотел бы узнать, можно ли вычесть геометрию из другого.

ответ

2

Просто используйте .STDifference(). Не нужно сначала пересекаться, а затем вычесть пересечение. Просто вычтите напрямую.

0

Вы попробовали STWithin?

+1

Я пытаюсь обеспечить, чтобы STWithin захватывал форму, которая не совсем в .. поэтому я создаю новую форму пересечения (которая должна быть внутри, правильно?), Но это не так. Это немного осталось, и поэтому его отказ от STWithin. Поэтому я хотел, чтобы вычесть геометрию из другого (убрав бит, оставшийся от неудавшегося пересечения). –