Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server - Da longitude e latitude ao tipo de dados de geometria


Você tem uma geometria, que armazena uma forma na geometria euclidiana, e deseja associar a ela um ponto no globo, representado por uma latitude e uma longitude, para ver se está dentro. Isso não funcionará, devido à maneira como o SQL armazena os dados. Você provavelmente precisará usar os tipos de dados Geography para verificar isso - Latitude e longitude são pontos em uma esfera (na verdade, dados geodésicos, já que a Terra não é exatamente uma esfera.)

Para obter mais informações sobre por que eles são diferentes, consulte esta explicação da microsoft . Também esta resposta no stackoverflow:GEOMETRY e GEOGRAPHY diferença SQL Servidor 2008

Para converter seus dados de geometria para geografia, tente:Geography::STGeomFromText(cast(GeomCol as varchar(max)), 4326)

Então você pode usar o STIntersects método, documentado pela microsoft aqui .