SQL Géographie point à l'intérieur du polygone de ne pas retourner vrai sur STIntersect (mais renvoie la valeur true à l'aide de la Géométrie)
Je ne veux pas de recourir, pour la conversion de ma géographie de données à la géométrie juste si elle retourne true en STIntersect.
Voici le code SQL:
DECLARE @point GEOGRAPHY = GEOGRAPHY::Point(1, 1, 4326)
DECLARE @polygon GEOGRAPHY = GEOGRAPHY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
Le suivant renvoie la valeur false (0), mais si j'utilise:
DECLARE @point GEOMETRY = GEOMETRY::Point(1, 1, 4326)
DECLARE @polygon GEOMETRY = GEOMETRY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
Elle renvoie true, est-il quelque chose que je suis absent? Tout ce que je sais est que la géographie est en 3D de l'avion et de la géométrie est un plat de la carte, cependant, je suis l'aide de la terre pour le calcul, si le point est dans le polygone.
PS: Il ne fonctionne pas aussi bien avec STContains, STWithin, STOverlaps
À l'aide de Microsoft SQL Server 2012
OriginalL'auteur MilkTea027 | 2013-12-18
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne:
Vous devez être prudent avec la "direction" dans lequel vous décrire un polygone pour
geography
- considérons un polygone défini comme un cercle autour de l'équateur - avez-vous l'intention de spécifier l'hémisphère nord ou le sud?Voir ici:
C'est une belle entrée de blog expliquant le gauche la règle: danielwertheim.se/2012/12/03/... Par exemple: si un point est à la gauche de toutes les lignes du polygone, il n' intersect le polygone.
L'URL du blog ci-dessus expliquant la gauche de la règle devrait être: danielwertheim.se/...
OriginalL'auteur Damien_The_Unbeliever