Найти ближайший лат длинный к входному лат длинный (SQL Server 2008)

12

В моей базе данных есть облако точек (пространственный SQL Server 2008). Это около 6 миллионов записей. Есть 3 столбца: id, значение, geom. Каков оптимальный способ получения «значения» на входе lat long ??

Я новичок в пространственных запросах в SQL Server 2008. Может ли кто-нибудь опубликовать простой пример поиска точки в столбце geom, совпадающей или ближайшей от входной длины?

Shaunak
источник
Я старался. Но существует 6 миллионов записей, и создание индекса не удается по разным причинам. Я пытаюсь сейчас создать пустую таблицу, добавить пространственный индекс на Geom, а затем добавить данные. это работает?
Шаунак
Какие ошибки вы получаете? Индекс может сильно замедлить загрузку, для этого количества строк, я думаю, добавление индекса после загрузки будет намного быстрее. Производительность будет сильно зависеть от индекса, поэтому стоит сделать это правильно.
Кирк Куйкендалл

Ответы:

4

При этом используется география, а не геометрия (если данные широты / долготы, вы должны использовать тип географии, а не геометрию)

«Географический тип данных SQL Server хранит эллипсоидальные (круглые данные), такие как координаты широты и долготы GPS».

Чтобы выбрать 5 самых близких записей из точки широты / долготы (-122,0 37,0), которую вы можете использовать.

SELECT   TOP 5
         geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) 
FROM     markers
WHERE    geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) < 25
ORDER BY geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p);
Mapperz
источник
Что такое р? извините, я новенький, вот почему спрашиваю
Shax
ОБЪЯВИТЬ @p география
Эндрю Хилл