Знайти найбільш близьку lat до long lat вхід (SQL Server 2008)


12

У моїй базі даних є хмара точок (просторовий SQL Server 2008). Це близько 6 мільйонів записів. Є 3 стовпці: id, значення, geom. Який оптимальний спосіб отримати «значення» на вході лат надовго ??

Я новачок у просторових запитах у SQL Server 2008. Чи може хтось розмістити простий приклад пошуку точки в стовпчику geom, що відповідає або найближчої до вхідної ширини довгий?



Я намагався. Але є 6 мільйонів записів, і створення індексу не вдається з різних причин. Зараз я намагаюся створити порожню таблицю, додати просторовий індекс на geom, а потім додати дані. це працює?
Шаунак

Які помилки ви отримуєте? Індекс може значно уповільнити завантаження, оскільки для багатьох рядків я думаю, що додавання індексу після завантаження буде набагато швидшим. Продуктивність буде дуже залежати від індексу, тому варто домогтися цього права.
Кірк Куйкендалл

Відповіді:



4

Для цього використовується географія, а не геометрія (якщо дані Lat / Lng, то дані повинні бути тип географії, а не геометрія)

"Тип даних географії SQL Server зберігає еліпсоїдальні (навколоземні) дані, такі як координати широти та довготи GPS."

Щоб вибрати топ-5 найближчих записів з точки lat / lng (-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);

Що таке p? вибачте, що я новий бі, ось чому питаю
Shax

DECLARE @p geography
Andrew Hill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.