2014-08-27 3 views
3

J'essaie de comprendre complètement le concept d'azimut et je rencontre des incohérences (ou peut-être c'est mon erreur).L'azimut sur l'équateur est-il égal à celui qui n'est pas sur l'équateur?

Je vous montre quelques exemples qui ne correspondent pas, en espérant que quelqu'un puisse m'expliquer comment cela fonctionne vraiment.

Je montre les coordonnées dans EPSG: 900913, dans PostGIS et en utilisant ma propre fonction JavaScript.

FONCTION MON

/* Difference between the two longitudes */ 
var dLon = lon2 - lon1; 
/* Y value */ 
var y = Math.sin(dLon) * Math.cos(lat2); 
/* X value */ 
var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon); 
/* Calculates the azimuth between the two points and converts it to degrees */ 
var angle = Math.atan2(y, x)/Math.PI * 180; 

EXEMPLES

/* Same Y, not on the equator */ 
Point A: (-81328.998084106, 7474929.8690234) 
Point B: (4125765.0381464, 7474929.8690234) 
Result in PostGIS: 90 degrees 
Result in my JS function: 74.232 degrees 

/* Same Y, on the equator */ 
Point A: (-81328.998084106, 0) 
Point B: (4125765.0381464, 0) 
Result in PostGIS: 90 degrees 
Result in my JS function: 90 degrees 

Je comprends que sur l'équateur, le Azimuth est 90 (ou 270) pour une ligne horizontale. pense que si vous tracez une ligne horizontale un peu au nord (ou au sud) de l'équateur, alors l'azimut n'est plus à 90 degrés. Mais ... PostGIS me dit que c'est toujours 90 degrés quand nous avons le même Y.

De plus, ce calculator montre aussi que les azimuts des lignes horizontales ne sont pas 90 degrés quand Y! = 0 (pas sur l'équateur).

Comment est-ce correct?

Merci

+0

duplication possible de [Comment calculer l'azimut entre deux points dans PostGIS?] (Http://stackoverflow.com/questions/25526684/how-to-calculate-the-azimuth-between-two-points-in- postgis) –

+0

Cette question semble être hors sujet car il ne s'agit pas de programmation (bien qu'elle utilise la programmation). Voir [Quels sujets puis-je poser à ce sujet?] (Http://stackoverflow.com/help/on-topic) dans le centre d'aide. Peut-être que le [Geography Stack Exchange] (https://gis.stackexchange.com/) serait un meilleur endroit à demander. – jww

+0

@jww, merci. Je sais que GIS.StackExchange est meilleur. J'ai essayé les deux et l'aswer ici était mieux. Donc, un grand merci à la personne qui a répondu! :) Je serai plus prudent à l'avenir. – joaorodr84

Répondre

2

Dans votre exemple vous avez utilisé EPSG: 900913, qui est plane, projetée et en mètres. Cela signifie que la formule utilisée sera le atan2, qui sera toujours 90 lorsque les latitudes sont les mêmes, que la formule est:

azimuth = atan2(y1-y2, x1-x2)

Et la 2ème partie sera toujours 0, donnant un azimut de 90. Donc, en utilisant des coordonnées planaires, oui, l'azimut sera toujours le même pour des paires de coordonnées avec des latitudes identiques et c'est pourquoi Postgis donne toujours la même réponse en utilisant EPS: 900913.

Si vous passez au type de données de géographie et que vous utilisez par conséquent des coordonnées géodésiques, ce n'est plus le cas.

Par exemple:

select degrees( 
    st_azimuth(
    st_makepoint(0, 10)::geography, 
    st_makepoint(90, 10)::geography)); 

Donne 80,1318065 PostGIS et donne 80,139 sur la page de calculatrice LIÉ. Lorsque les x/longitudes se rapprochent, les valeurs se rapprochent de 90 pour une latitude donnée. Par exemple,

select degrees( 
    st_azimuth(
    st_makepoint(0, 10)::geography, 
    st_makepoint(1, 10)::geography)); 

donne maintenant 89,9131737 PostGIS et 89,333 et dans le calculateur en ligne (un peu plus de différence). Tout ceci est dû au fait que la formule prend maintenant en compte la courbure, donc l'angle entre les projections des deux vecteurs de même latitude ne sera plus de 90, sauf sur l'équateur. Examinez l'équation de l'article Wikipedia azimuth pour la version sphéroïde.

Cela devrait être assez facile à coder en JavaScript et cela devrait donner des réponses comparables à Postgis avec le type de géographie.

+0

Salut @ JohnBarça. J'utilisais PostGIS dans le mauvais sens. Je vous remercie. Comme vous pouvez le voir, j'utilise déjà la [fonction de Wikipedia] (http://upload.wikimedia.org/math/2/3/8/238805bcce98ded92525289f49b3d6f9.png), légèrement modifiée. Ou voulez-vous dire le [deuxième] (http://upload.wikimedia.org/math/e/5/e/e5ecad955f1b1f7e2f84c3dd36eb4296.png)? – joaorodr84

+0

Je voulais dire le 2ème, qui représente le sphéroïde oblate, en commençant par http://upload.wikimedia.org/math/7/6/e/76e90f1c786b852709ce30d9504cb19a.png. Si vous utilisez cela, vous devriez vous rapprocher des valeurs que vous obtenez en utilisant la géographie dans Postgis. –

+0

Merci beaucoup. :) – joaorodr84

Questions connexes