Пространственное прерывание SQL Server()

#sql #sql-server #sql-server-2014 #spatial

#sql #sql-сервер #sql-server-2014 #пространственный

Вопрос:

У меня есть две геометрии, когда я пытаюсь получить STIntersection из этих двух геометрий, sql server возвращает вывод исключения.

 Msg 6522, Level 16, State 1, Line 6
A .NET Framework error occurred during execution of user-defined routine or aggregate "geometry": 
System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component.
System.Runtime.InteropServices.COMException: 
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at Microsoft.SqlServer.Types.GLNativeMethods.Combine(CombineMode combineMode, GeoData g1, GeoData g2)
at Microsoft.SqlServer.Types.SqlGeometry.STIntersection(SqlGeometry other).
 

Я пытаюсь выполнить пересечение на двух полигонах, один из которых имеет 51536 точек из stnump точек, а другой — 3125.

Я попробовал это с помощью этого выбора:

 declare @geomHnv geometry = ( select top 1 Shape from dbo.hnv)
declare @geomSaps geometry = ( select top 1 Shape from dbo.Saps)
select @geomSaps.STNumPoints()



select o1.Shape.STIntersection(o2.Shape)
from dbo.hnv o1
cross join dbo.saps o2
 

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

Ссылка: https://drive.google.com/open?id=0B8Vv9ogG99P-YmZSNkFDLUpZb3M

Дамп состоит из двух таблиц, где каждая таблица содержит один столбец геометрии.

Я попробовал это на SQL Server 2014.

Комментарии:

1. «Полигон настолько большой, что я не могу скопировать его сюда» — очевидная вещь, которую нужно сделать, это определить, является ли размер фактором или чем-то еще. Вы можете воспроизвести проблему, используя более простой полигон? (Если вы пробовали это, по крайней мере, стоило бы упомянуть об этом)

2. @Damien_The_Unbeliever — Я попытался запустить пересечение на большом полигоне (51 тыс. точек) и простом полигоне (4 точки), и это не вызвало исключения. Когда я запускаю другие пространственные функции (пересечения, пересечения, касания) с исходными полигонами, они работают так, как должны. Только функция пересечения выдает исключение. я также пробовал разные SRID для полигонов

3. Есть ли шанс, что вы могли бы где-нибудь поместить поток WKB или WKT для этих полигонов? Я застрял на SQL 2012 здесь и хотел бы помочь!