Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Odległość między dwoma punktami przy użyciu typu danych Geografia w sqlserver 2008?

Jeśli masz swoją szerokość i długość geograficzną w postaci stopni (tak jak w tabeli ), możesz użyć następującej funkcji:

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

LUB jeśli nalegasz na typ Geography, użycie to:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PIVOT / UNPIVOT w SQL Server 2008

  2. Czy mogę utworzyć funkcję globalną w SQL Server?

  3. Jaka wersja platformy .Net jest dostarczana z programem SQL Server 2008?

  4. Widok SQL:łączyć tabele bez powodowania duplikowania danych w każdym wierszu?

  5. Efektywne konwertowanie dat między czasem UTC a czasem lokalnym (tj. PST) w SQL 2005