要在谷歌地图显示数据,我在SQL服务器2005> 50,000列数据的以下的(简化的)结构确保地理数据的良好扩散从SQL数据库
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 sever 2008的地理数据类型,但它看起来不像2005年的可用。我也知道float
不是用于存储坐标的最佳数据类型,但这不是最好的对我来说。