sql - 执行查询时计算距离

时间:2016-05-03 16:22:28

标签: sql asp.net sql-server geography geographic-distance

所以情况就是这样:我有一张顾客桌子和一张商店桌子,每张都有自己的地址。当顾客正在寻找商店时,我想根据他们与地址的距离来排序商店。我使用google maps API获取地址之间的距离。有任何想法吗?谢谢! *我使用asp.net的microsoft SQL服务器。

1 个答案:

答案 0 :(得分:0)

我过去曾使用固有的SQL Server DbGeography数学来做这样的事情。 假设你已经Imports System.Data.Entity.Spatial,那么:

Dim dblDistance As Double
Dim geoHouseLocation As DbGeography
Dim geoStoreLocation As DbGeography ' = appropriate table value

geoHouseLocation = DbGeogrpahy.FromText("POINT(" & stLong & " " & stLat & ")")
dblDistance = geoHouseLocation.Distance(geoStoreLocation)

如果您希望使用SQL来计算它,那么我们需要知道您的Lat / Long字段的格式(它们是存储为DbGeography类型,还是字符串,还是数字等?)例如,如果您有地理数据类型将两个房屋和商店的点位置保存在其表中,那么以下查询将按升序为您提供最接近给定房屋的商店:

SELECT tblHouses.HouseID, tblStores.StoreName, tblHouses.GeoPoint.STDistance(tblStores.GeoPoint) AS GeoDistance
FROM tblHouses, tblStores
WHERE tblHouses.HouseID = 1
ORDER BY tblHouses.GeoPoint.STDistance(tblStores.GeoPoint) ASC