Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server menghasilkan geografi spasial acak di sekitar titik?

Saya menemukan jawaban dari posting ini https://gis.stackexchange.com/a/25883/ 37373

Saya mengadaptasi respons ke dalam kode SQL Server.

DECLARE @geo as GEOGRAPHY,@newgeo as GEOGRAPHY
SET @geo = (SELECT ZipGeo FROM Location.ZipCodes WHERE ZipCode='90210')

DECLARE @r float,@t float, @w float, @x float, @y float, @u float, @v float;

SET @u=RAND();
SET @v=RAND();

--8046m = ~ 5 miles
SET @r= 8046/(111300*1.0);
SET @w = @r * sqrt(@u);
SET @t = 2 * PI() * @v;
SET @x = @w * cos(@t);
SET @y = @w * sin(@t);
SET @x = @x / cos(@geo.Lat);

SET @newgeo = geography::STPointFromText('POINT('+CAST(@[email protected] AS VARCHAR(MAX))+' '+CAST(@[email protected] AS VARCHAR(MAX))+')',4326)
--Convert the distance back to miles to validate
SELECT @geo.STDistance(@newgeo)/1609.34



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hasil tak terduga dari CTE

  2. Tidak dapat memperoleh informasi tentang grup/pengguna Windows NT

  3. Mengekspor hasil kueri ke file dengan cepat

  4. Bisakah saya menggunakan banyak dengan?

  5. Ubah tipe yang ditentukan pengguna di SQL Server