Also hier ist die Situation: Ich habe einen Tisch für Kunden und einen Tisch für Geschäfte, jeder hat seine Adresse. Wenn ein Kunde nach einem Geschäft sucht, möchte ich die Geschäfte nach ihrer Entfernung von seiner Adresse sortiert bekommen. Ich erhalte die Entfernung zwischen den Adressen mithilfe der Google Maps-API. irgendwelche Ideen? Vielen Dank! * Ich benutze Microsoft SQL Server mit asp.net.sql - Berechnung der Entfernung bei der Ausführung einer Abfrage
0
A
Antwort
0
Ich habe inhärente SQL Server DbGeography Mathe verwendet, um solche Dinge in der Vergangenheit zu tun. Angenommen, Sie haben bereits Imports System.Data.Entity.Spatial
, dann:
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)
Wenn Sie suchen, diese mithilfe von SQL stattdessen zu berechnen, dann würden wir wissen müssen, welches Format Ihre Breite/Länge Felder sind in (werden sie als die gespeicherte DbGeography-Typ oder als Zeichenfolgen oder als Zahlen usw.?) Wenn Sie beispielsweise über Geography-Datentypen verfügen, in denen die Punktpositionen beider Häuser und Filialen in ihren Tabellen gespeichert sind, gibt die folgende Abfrage die Geschäfte an, die dem angegebenen Haus am nächsten liegen in aufsteigender Reihenfolge:
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
Haben Sie Längen-/Breitengrad für die Geschäfte und Kunden? Verwenden Sie den geografischen Typ? –
Ja, Adresse und Längen-/Breitenkoordinaten. – WhiteBlue