sql >> Database >  >> RDS >> Sqlserver

Afstand tussen twee punten met behulp van geografie datatype in sqlserver 2008?

Als u uw breedte- en lengtegraad in de vorm van graden heeft (net als in uw tabel ), dan kunt u de volgende functie gebruiken:

CREATE FUNCTION dbo.DictanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT 
AS
BEGIN

    RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END

OF als u aandringt op het type geografie, is het gebruik:

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.STDistance(@h);



  1. $wpdb->insert werkt niet. Geen foutbericht

  2. Windows 8 en MySQL? Wat zijn mijn opties?

  3. 2 manieren om alle triggers in een PostgreSQL-database op te sommen

  4. Wat waren de kosten voor de duurste film(s) in de collectie?