Comment puis-je convertir des coordonnées géomagnétiques en coordonnées géographiques sans faire les calculs moi-même?

10

J'ai quelques données qui sont en coordonnées géomagnétiques; c'est-à-dire qu'ils sont la latitude et la longitude, mais en référence au pôle nord magnétique au Canada plutôt qu'au pôle nord géographique. Comme vous pouvez le deviner, j'aimerais les faire correspondre à d'autres données qui se trouvent dans d'autres systèmes de coordonnées.

(Les données proviennent d'un calcul de l'ovale auroral; c'est-à-dire qu'elles sont d'origine géomagnétique et il n'y a aucune source géographique que je puisse consulter, même en principe.)

Les données seront stockées dans PostGIS.

Le moyen le plus simple consiste à trouver un code EPSG pour le système de coordonnées géomagnétiques, à étiqueter les données avec ce code, puis tout est magiquement reprojeté à tout ce dont j'ai besoin à l'époque. Cependant, je ne trouve aucun code EPSG sur spatialreference.org contenant soit géomagnétique, soit magnétique . Diverses recherches Google ne révèlent également rien.

Pour le niveau de précision dont j'ai besoin, tout système de coordonnées latitude / longitude (par exemple, WGS84) modifié pour avoir un pôle nord différent est assez bon. Donc, s'il existe un moyen facile de définir un tel système de coordonnées et de le charger dans PostGIS, ce serait bien aussi.

Clarification

Par exemple, supposons qu'au lieu de convertir des coordonnées géomagnétiques en coordonnées géographiques, je voulais simplement convertir UTM 15N en WGS84. Je pouvais enregistrer l'objet UTM dans PostGIS non modifié et le marquer avec le code EPSG 26915 . Ensuite, lorsque j'ai fait une requête plus tard, je pourrais dire à PostGIS, "veuillez renvoyer les résultats dans le code EPSG 4326 ", et PostGIS se convertirait automatiquement en WGS84.

De même, je voudrais étiqueter les données géomagnétiques avec un système de coordonnées et laisser PostGIS faire la reprojection en arrière-plan, sans que j'aie à appeler une reproject()fonction manuellement.

Reid
la source
1
Pourriez-vous expliquer comment vos coordonnées géomagnétiques ont été obtenues en premier lieu? Je pense que cela peut détenir la clé d'une solution précise: il semble probable qu'ils soient calculés à partir de coordonnées géographiques. (Sinon, comment mesurer directement une latitude géomagnétique ?)
whuber
@whuber, question modifiée. Merci pour la clarification.
Reid

Réponses:

7

Je ne suis pas sûr que l'open source supporte cette géomagnétique à géographique.

Mais si vous avez peu de coordonnées, pls. essayez ceci ..
http://wdc.kugi.kyoto-u.ac.jp/igrf/gggm/index.html

La NASA a publié l'algorithme, vous pouvez essayer http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mag2geo.pro

vadivelan
la source
1
J'ai ouvert un ticket pour l'équipe proj4. Ils pourraient ajouter un support pour cela dans une version ultérieure? trac.osgeo.org/proj/ticket/178
nickves
Quelqu'un a porté le code geo2mag.pro IDL sur Python . Ce code inverse est très similaire à mag2geo.pro. Voici le code porté par Python .
Serge Stroobandt
2

Les liens fournis par le vadivelan indiquent clairement que les coordonnées géomagnétiques ne sont qu'une rotation de la sphère de sorte que (a) le pôle nord passe par le pôle sud magnétique actuel et (b) le méridien principal passe par les pôles physiques et magnétiques.

Par exemple, IGRF-95 utilise la position du pôle nord magnétique en 1995, à 79,30 degrés de latitude et -71,41 degrés de longitude.

Les rotations sphériques peuvent être calculées de plusieurs façons , généralement en convertissant en coordonnées cartésiennes géocentriques 3D, en appliquant une transformation linéaire (via une multiplication matricielle 3 x 3 ou une multiplication quaternion) et en reconvertissant en coordonnées sphériques. Mais si vous ne voulez pas programmer cela, il y a une astuce:un SIG qui prend en charge les projections obliques peut tourner au moyen d'une reprojection. Il suffit de projeter les coordonnées géomagnétiques comme s'il s'agissait de coordonnées géographiques, par exemple au moyen d'un aspect polaire de la projection stérographique (avec un méridien central à 0 degré). Dézoomez ensuite le résultat en utilisant l'aspect oblique de la même projection avec une latitude d'origine à 79,30 et un méridien central de -71,41. Enfin, projetez à nouveau en utilisant la projection souhaitée pour obtenir la «reprojection magique».

whuber
la source
Hmm. Existe-t-il un moyen pour moi de définir un tel système de coordonnées GEOS ou PROJ, ou autre chose que PostGIS acceptera, et de laisser une bibliothèque faire la reprojection sans que je doive le faire explicitement?
Reid
Cela dépend de ce que vous entendez par «explicitement». À un moment donné - de préférence le plus tôt possible dans le processus - vous devez convertir physiquement les coordonnées de géomagnétique en géographique. Vous pouvez le faire une fois en utilisant un SIG approprié (par exemple, QGIS semble fonctionner) ou un utilitaire de reprojection. Vous n'avez pas besoin de connaître les équations de reprojection pour cela si vous utilisez l'astuce que j'ai décrite.
whuber
Permettez-moi de clarifier la question pour y répondre.
Reid