Получить центроид из KML в SQL server 2016
Всем привет,
У меня есть вопрос о функциях SQL Server и Geography. Я ищу, чтобы получить центроид определенной формы в файле KML.
Вот мой маленький вопрос
DECLARE @h VARCHAR(MAX); set @h = 'SELECT [Id] ,[Name] ,[placemark_sd_id] ,[ACC] ,[EXS] ,[NAM] ,[TXT] ,[UID_1] ,[placemark] FROM [dbKMLTemp].[dbo].[myTable] where [NAM] = "G";' DECLARE @g geometry; SET @g = geometry::STGeomFromText (@h,0) select @g.STCentroid().ToString();
Я получаю эту ошибку.
Msg 6522, Уровень 16, Состояние 1, Строка 6
А .Framework произошла ошибка во время выполнения определяемой пользователем подпрограммы или статистической "геометрия":
Система.Formatexception версия: 24114: надписи выберите [код],[имя],[ во входном известного текста (WKT) не является допустимым. Допустимые метки: точка, линия, полигон, МУЛЬТИТОЧКА, МУЛЬТИЛИНИЙ, МУЛЬТИПОЛИГОН, коллекции geometrycollection, circularstring, можно получить, экземпляр compoundcurve, curvepolygon и объект fullglobe (география тип данных только).
Система.Formatexception версия:
в Microsoft. SqlServer.Типы.OpenGisTypes.ParseLabel(строковый ввод)
в Microsoft. SqlServer.Типы.Хорошо известный текстовый редактор.ParseTaggedText(тип OpenGisType)
в Microsoft. SqlServer.Типы.WellKnownTextReader. Read(тип OpenGisType, Int32 srid)
в Microsoft. SqlServer.Типы.Типы данных sqlgeometry.GeometryFromText(тип OpenGisType, текст SqlChars, Int32 srid)
То что я пытаюсь сделать это взять следующий запрос но там где он говорит полигон я хочу получить полигон из оператора select:
DECLARE @g geometry; SET @g = geometry::STGeomFromText('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0),(2 2, 2 1, 1 1, 1 2, 2 2))', 0); SELECT @g.STCentroid().ToString();
Я получил это от https://docs.microsoft.com/en-us/sql/t-sql/spatial-geometry/stcentroid-geometry-data-type
Как мне объединить их? У меня есть многоугольник из файла KML, и теперь мне нужно найти его центр.
Спасибо
Майк
Что я уже пробовал:
Посмотрите на мой код в вопросе.