代码之家  ›  专栏  ›  技术社区  ›  RYFN

确保地理数据在sql数据库中的良好传播

  •  0
  • RYFN  · 技术社区  · 16 年前

    要在google地图上显示数据,我在sql server 2005中有5万行数据,结构如下(简化)

    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 不是存储坐标的最佳数据类型,但这不取决于我。

    1 回复  |  直到 16 年前
        1
  •  0
  •   RYFN    16 年前

    我最后做的是:

    扩展我的表以包括 Hierarchical Triangular Mesh 给定纬度/经度的ID。

    PointID
    Latitude
    Longitude
    TypeID
    HTMID
    

    htmid是使用空间数据库中的函数从“ Using Table Valued Functions in SQL Server 2005 to Implement a Spatial Data Library ,源代码可从 Codeplex (注意,我必须生成一个新的samplekey.snk来构建示例项目。我跟随 these instructions )

    然后htmid可以四舍五入,并用于按点分组。

    .....
    (
    @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,
    rank() over (partition by round(PointTable.HTMID,-7) order by newid()) as HTMRank
    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 HTMRank, NewRank
    

    这可能并不完全准确,如果不深入了解技术细节,我也不会使用这个htmid来计算任何更精确的东西,但它确实达到了我想要的效果。

    推荐文章