Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Geographie-Datentyp vs. Geometrie-Datentyp in SQL Server

Der Geografietyp ist etwas restriktiver als die Geometrie. Es kann nicht verschiedene Hemisphären überqueren und der äußere Ring muss gegen den Uhrzeigersinn gezeichnet werden.

Leider (einige finden das gut) gibt SQL Server 2012 keinen Fehler mehr aus, wenn Sie die ungültige Geographie erstellen. Sie müssen die Reihenfolge der Punkte in der Roben Island-Geometrie umkehren, wie zum Beispiel:

DECLARE @robben_island geography = ('POLYGON((18.351803 -33.788421, 18.354464 -33.822369,18.386736 -33.820515, 18.382788 -33.787494, 18.351803 -33.788421))')
DECLARE @point_in_robben_island geography= ('POINT(18.369226 -33.80554)')
DECLARE @point_in_alcatraz geography= ('POINT(-122.423401 37.827006)')

SELECT @robben_island.STContains(@point_in_robben_island)   --returns 'True'
SELECT @robben_island.STContains(@point_in_alcatraz)        --returns 'False'