Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Cerchio di SQL Server

Il tuo problema è che disegni un cerchio in coordinate geografiche. Google Maps utilizza la proiezione del mercato web https://en.wikipedia.org/wiki/Web_Mercator , in modo che il tuo cerchio sia un ovale. Se vuoi creare qualcosa che assomigli a un cerchio in Google Maps, devi farlo in un set di dati con la proiezione del mercato web. (Sto deliberatamente dicendo "sembra un cerchio" poiché se lo proietti su un altro sistema, ad esempio utm per una mappa su larga scala, potrebbe finire di nuovo come un ovale.)

il codice epsg per web_mercator è 3857, quindi se proietti le tue coordinate xey su web_mercator

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT(-9796115.18981 5543147.20386)', 3857);
SELECT @g.BufferWithTolerance(5, .01, 1)

Dovrebbe funzionare (basta inserire -9796... 5543... Sono le coordinate web_mercator per la tua X e Y geografica)

Sembra che tu debba utilizzare gli strumenti spaziali del server SQL (https://gis.stackexchange.com/questions/2723/is-it-possible-to-reproject-spatial-data-using-sql-server ) o uno strumento esterno per eseguire la riproiezione. Se hai solo pochi punti, http://cs2cs.mygeodata.eu/ può essere utile.