Ошибки T-SQL Spatial STGeomFromText с ошибками 6522, 24200 Неверная география - PullRequest
0 голосов
/ 30 мая 2019

Я использую следующий код для преобразования серии точек (полученных от геосервиса ESRI) в Geography.Он работает в 99% случаев, но иногда дает сбой.Я не уверен, что могу прикрепить файл (~ 300 КБ текста) со строкой, так как он довольно большой для публикации в виде текста.

DECLARE @Route Geography

BEGIN TRY
        SELECT @Route = geography::STGeomFromText('LINESTRING(' + @i_Route + ')', 4269);
END TRY
BEGIN CATCH
            DECLARE @error Int, @message NVarChar(4000), @xstate Int;
            SELECT @error = ERROR_NUMBER(), @message = ERROR_MESSAGE(), @xstate = XACT_STATE();

            PRINT CAST(@error AS NVarChar(10)) + ' - ' + @message
END CATCH

Время от времени возникает следующая ошибка:

6522 - ошибка .NET Framework произошла во время выполнения пользовательской подпрограммы или совокупной «географии»: System.ArgumentException: 24200: указанный ввод не представляет допустимый экземпляр географии.Используйте MakeValid для преобразования экземпляра в допустимый экземпляр.Обратите внимание, что MakeValid может привести к небольшому смещению точек пространственного экземпляра.System.ArgumentException: в Microsoft.SqlServer.Types.SqlGeography..ctor (GeoData g, Int32 srid)
в Microsoft.SqlServer.Types.SqlGeography.GeographyFromText (тип OpenGisType, SqlChars taggedText, 1010 srid0rid0ext, HTML9, srid 0, 100, srid 0, 100, srid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, s0, 0, 100, s0, 032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, s0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, тэг, тэг, тэг, тэг, теги, теги, теги, теги, теги.*

Не уверен, где я должен использовать MakeValid().Я попытался добавить в конец строки, но нет разницы в результате, та же ошибка.

...