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

SQL Server:dalla longitudine e latitudine al tipo di dati della geometria

Hai una geometria, che memorizza una forma nella geometria euclidea, e vuoi associare un punto sul globo, rappresentato da una latitudine e una longitudine, con essa, per vedere se si trova all'interno. Questo non funzionerà, a causa del modo in cui SQL archivia i dati. Probabilmente è necessario utilizzare i tipi di dati Geografia per verificarlo:latitudine e longitudine sono punti su una sfera (in realtà dati geodetici, poiché la terra non è proprio una sfera).

Per ulteriori informazioni sul motivo per cui sono diversi, vedere questa spiegazione di Microsoft . Anche questa risposta su StackOverflow:GEOMETRY and GEOGRAPHY Difference SQL Server 2008

Per convertire i tuoi dati dalla geometria alla geografia, prova:Geography::STGeomFromText(cast(GeomCol as varchar(max)), 4326)

Quindi puoi usare STIntersects metodo, documentato da microsoft qui .