【问题标题】:calculate all latitude and longitudes in a metric area计算公制区域中的所有纬度和经度
【发布时间】:2012-05-12 19:31:09
【问题描述】:

我知道有很多关于从纬度/经度计算到公制系统的线程。这解决了我的问题的第一部分。

我的问题的第二个(主要部分)是这样的:

  • 我有谷歌地图作为地图应用程序。
  • 我有一对经纬度点
  • 我有一个公制距离,比如说 30 米。
  • 我需要做一个 sql 查询

为什么?

我有很多 POI 记录,可以通过这对经纬对定位。我不想得到所有的结果(原因:更好的性能)。

有没有办法做类似的事情:

select * from myTable where lat> .... and lat < ... and long > ... and long < ...?

这可能吗?如果是,我如何在... 中获取这些值?

问候!

【问题讨论】:

    标签: sql google-maps google-maps-api-3 geolocation distance


    【解决方案1】:

    【讨论】:

    • 好的,这看起来与我的问题非常相似。 (但解决方案不是那么漂亮.. :-D)无论如何。谢谢! +1
    【解决方案2】:

    这是一个示例查询,它返回供应商纬度/经度与经度/经度对数据库之间的距离:

    DECLARE
    @Latitude float,
    @Longitude float
    
    SET @Latitude = 46.51257000000000
    SET @Longitude = -84.33660900000000
    
    DECLARE @SampleData TABLE
    (
    Name varchar(100),
    Lat float,
    Lng float
    )
    
    INSERT INTO @SampleData
    (Name, Lat, Lng)
    SELECT 'Point1', 46.52450048415351,-84.35223018530274
    UNION
    SELECT 'Point2', 46.51835838382206,-84.30279170874024
    UNION
    SELECT 'Point3', 46.522138220045285,-84.2622796237793
    UNION
    SELECT 'Point4', 46.54056115608927,-84.223140829834
    
    SELECT 
        Name,
        Lat,
        Lng,
        -- using spherical law of cosines, where 6371 is the earth's radius in km. Returns km.
        Distance = ACOS(SIN(RADIANS(@Latitude))*SIN(RADIANS(Lat))+COS(RADIANS(@Latitude))*COS(RADIANS(Lat))*COS(RADIANS(Lng-@Longitude)))*6371  
    FROM 
        @SampleData
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 2010-11-18
      相关资源
      最近更新 更多