Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server генерира произволна пространствена география около точка?

Намерих отговор от тази публикация https://gis.stackexchange.com/a/25883/ 37373

Адаптирах отговора в код на 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. Бавно присъединяване към вмъкнати/изтрити тригерни таблици

  2. COUNT(DISTINCT) в множество колони в SQL Server 2008

  3. SQL Server:Обединяване на няколко реда от данни в един ред

  4. T-SQL има ли агрегатна функция за конкатенация на низове?

  5. Различни начини за генериране на най-новия int тип първичен външен ключ в кода