2016-11-10 2 views
0

Использования SQL Server, когда я получаю результат 1 для выражения @multipolygon.STIntersects(@points), указывающий, что точка находится в пределах одного из полигонов, входящих в составе мульти-многоугольникTSQL - География: Какой полигон?

есть способ выяснить, какой многоугольник внутри многих в многополигон фактически содержит точку?

+0

Многопользовательский режим * один * особенность, как и номер 3 - одна функция. Кроме того, единственное, что идентифицирует один многоугольник из следующего, - это индекс в исходной спецификации. Как бы вы сами идентифицировали любой из полигонов? Если они * идентифицируются *, они, вероятно, должны храниться в разных полях или строках, точно так же, как элементы заказа должны храниться в отдельных строках 'OrderItem' –

ответ

0

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

Я не делал ничего подобного себе, но эта ссылка может помочь https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d99cef8e-d345-44ee-87e1-f9d4df851c35/multipolygon-results-split-into-polygons?forum=sqlspatial

0

я использовал что-то подобное раньше:

select * 
from dbo.Numbers as n 
where @point.STIntersects(@multipolygon.STGeometry(n.Number)) = 1 
    and n.Number <= @multipolygon.STNumGeometries(); 

Где dbo.Numbers представляет собой таблицу Талли. Этот запрос вернет индекс, основанный на 1, из которых совпадают полигоны. Если вы хотите сами полигоны, добавьте STGeometry(n.Number) в список выбора.

Смежные вопросы