как получить индекс точки из географии? - PullRequest
1 голос
/ 21 июня 2011

Как я могу получить индекс точки, которая находится в моей LineString?Я использую SQL Server 2008 R2.

У меня есть тип географии, в котором сохраняется LineString.Теперь я хочу получить индекс из две точки для этой LineString .Так что я знаю , который один появляется первым .Это как-то возможно?Потому что сейчас я делаю это для себя с помощью цикла while ... но он очень медленный, когда у меня есть больше данных в моей базе данных: /

РЕДАКТИРОВАТЬ: ОК, сейчас я пытаюсь следовать решению из SQL, чтобы использовать CHARINDEX. Дополнительная информация: У меня есть географическая точка, у меня есть линейная линия.Я получил точки пересечения с радиусом вокруг моей точки от линии подкладки.Хорошо, теперь я хочу попытаться получить с первую точку пересечения index с этой точки на LineString .Так что у меня в строке есть несколько чисел, таких как эти шаблоны "1.123456, или 12.123456, или 123.123456", и моя точка поиска также выглядит как "1.123456, или 12.123456, или 123.123456".

Проблема в том, что STIntersection возвращает мне несколько чисел назад, которые переменные в дробные цифры .Я думал о некотором форматировании строки, но я не знаю, как мне это решить.Если бы были какие-то замечательные функции регулярных выражений, я думаю, это облегчит мою жизнь :) Я просмотрел все эти функции , но не смог найти ничего для своих нужд.

Возможно, в этом мне могли бы помочь более опытные люди.

Спасибо!

1 Ответ

1 голос
/ 21 июня 2011

В случае использования типа данных varchar.Пожалуйста, см. Ниже.

Вы можете использовать CharIndex

DECLARE @document varchar(64)

SELECT @document = 'abcdef12345wuerzelchen'
SELECT CHARINDEX('abc', @document)

Как только вы получите первую точку вхождения, Теперь вы можете проверить другую.

Declare @position int
Set @position = CHARINDEX('abc', @document)    
SELECT CHARINDEX('wuerzelchen', @document, @position)

Для получения дополнительной информации вы можете проверить здесь

...