Для отображения данных на картах Google у меня есть> 50 тыс. Строк данных в SQL Server 2005 со следующей (упрощенной) структурой
PointID
Latitude
Longitude
TypeID
Я могу выбрать небольшое подмножество в ограничивающей рамке, обеспечив приличное сочетание типов, например:
.....
(
@NELat float,
@NELong float,
@SWLat float,
@SWLong float
)
as
select top 100 PointID, Latitude, Longitude,
rank() over (partition by PointTable.TypeID order by newid()) as NewRank
from PointTable
where
(
CONVERT(float, PointTable.Latitude) >= @SWLat and CONVERT(float, PointTable.Latitude) <= @NELat and
CONVERT(float, PointTable.Longitude) >= @SWLong and CONVERT(float, PointTable.Longitude) <= @NELong
)
order by NewRank
К сожалению, исходные данные смещены в сторону одного конкретного географического местоположения.
Какой самый эффективный / самый быстрый в вычислительном отношении способ гарантировать, что извлеченные данные имеют приличный географический разброс?
Я не хочу кластеризовать данные, просто чтобы показать более равномерное распределение данных через ограничивающую рамку.
Могу ли я создать подмножество сеток ограничивающих рамок и разделить их?
Любые предложения будут очень полезны!
Я искал тип данных географии, доступный для SQL Server 2008, но он не похож на тот, который доступен в 2005 году. Также я знаю, что float
не лучший тип данных для хранения координат, но это не было до меня.