J'essaie de déterminer si un point est dans un polygone. Les résultats que je récupère semblent toujours revenir 1, que le point soit dans la limite ou non.Géographie SQL Intersect renvoie toujours 1
DECLARE @point GEOGRAPHY = GEOGRAPHY::Point(54.2225,-4.5366, 4326)
DECLARE @polygon GEOGRAPHY = GEOGRAPHY::STGeomFromText('POLYGON((54.2826 -4.4420, 54.2904 -4.6564, 54.0467 -4.7031, 54.2826 -4.4420))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
J'utilise SQL Express 2014 fonctionnant localement
Merci pour la réponse - cela a beaucoup de sens. J'utilise maintenant le code suivant mais je reçois toujours la valeur de retour '0' 'DECLARE @point GEOGRAPHY = GEOGRAPHY :: Point (54.1826, -4.5420, 4326) --INSIDE --DECLARE @point GEOGRAPHY = GEOGRAPHIE :: Point (57.1826, -3.5420, 4326) --OUTSIDE DECLARE @polygon GEOGRAPHIE = GEOGRAPHIE :: STGeomFromText ('POLYGONE (' 54.2826 -4.4420, 54.2904 -4.6564, 54.0467 -4.7031, 54.2826 -4.4420)) ', 4326 si @ polygon.EnvelopeAngle() = 180 \t set @polygon = @ polygon.ReorientObject(); SELECT @ polygon.STContains (@point) ' – Braydie
Vous allez aimer ceci: La méthode' POINT() 'prend les arguments dans l'ordre inverse de la WKT que vous fournissez pour le polygone! C'est-à-dire, comme vous l'avez défini, vous avez changé la latitude et la longitude. Vérifiez 'SELECT @ polygon.STPointN (1). [Lat], @point. [Lat]' –
Ah wow, je n'aurais jamais trouvé ça! Merci encore! J'ai inversé l'ordre de mes coordonnées dans le ctor of the Point, mais semble toujours obtenir zéro ... Mon cerveau est un peu fuzzed maintenant, mais je ne pense pas que c'est correct ..? – Braydie