10
votes

Comment les points de grille 2D de la carte (x, y) sur sphère sous forme de points 3D (x, y, z)

J'ai un ensemble de points de grille 2D (x, y) que je veux mapper / projeter sur une sphère sous forme de points 3D (x, y, z).

Je me rends compte qu'il y aura une certaine déformation envers les pôles tels que ABS (Y) augmente, mais mon patch de grille ne couvrira qu'une partie de la sphère près de l'équateur si sévère, un gauchissement grave sera évité.

J'ai du mal à trouver les bonnes équations pour cela.


1 commentaires

Je ne sais pas ce que vous demandez ici ... Qu'est-ce que le 2D x et y représente? Sont-ils la latitude / longitude ou les coordonnées sur une projection rectangulaire plate de la sphère? Dans le dernier cas, quelle projection utilisez-vous?


3 Réponses :


1
votes

Je m'attendrais à ce que vous puissiez utiliser l'inverse d'un certain nombre de projections globales.

Mercator est plutôt bon autour de l'équateur par rapport aux autres projections.

Les formules sont sur la page Wiki.
http://fr.wikipedia.org/wiki/mercator_projection


2 commentaires

Merci. Je me rends compte que c'est ce que je veux, mais j'ai du mal à dériver les équations pour prendre des points 2D (x, y) à des points 3D (x, y, z) sur la sphère.


Ah, les formules réelles. Il s'agit d'une opération mathématique non triviale et vous aurez peut-être plus de chance sur math.stackexchange.com . Une fois que vous avez la formule, vous pouvez revenir ici pour la programmer de l'aide. En outre, wiki.openstreetmap.org/wiki/mercator



21
votes

Paraphrasé de l'article Wikipedia sur la projection Mercator:

Given longitude and latitude on a sphere of radius S,
the 3D coordinates P = (P.x, P.y, P.z) are:
  P.x = S * cos(latitude) * cos(longitude)
  P.y = S * cos(latitude) * sin(longitude)
  P.z = S * sin(latitude)


4 commentaires

Ma latitude est 29.65163. Lorsque j'essaie de calculer la valeur y, j'obtiens une erreur (en python) car tan (((((latitude + pi / 2) / 2) est -0.0970531183 et effectuer des journaux sur cette valeur une "erreur de domaine mathématique" car la valeur est négative. Qu'est-ce que je fais mal?


Vous devez convertir votre latitude de degrés en radians, avant d'ajouter PI / 2 . Ceci convertira la plage +/- 90 degrés à une plage de +/- pi / 2 radians , qui ne débouchera pas la plage de fonctions à moins que vous n'êtes pas aux pôles ( Auquel cas la projection Mercator est singulière de toute façon ...)


Savez-vous comment obtenir la latitude et la longitude de x, y et z?


La latitude est ATAN2 (z, sqrt (x * x + y * y)) et la longitude est atan2 (y, x) . Ces deux radians de rendement peuvent être utilisés directement dans la cartographie inverse, mais qui doivent être convertis en degrés si c'est ce que vous voulez à la place.



2
votes

Je suppose que votre (x, y) sur la sphère est la latitude, la longitude.

Si tel est le cas, voir http://tatutorial.math.lamar.edu /Classes/calcii/sphéricalcoords.aspx .

Entrez la description de l'image ici

là:

phi = 90 degrés - latitude

theta = longitude

rho = rayon de votre sphère.


0 commentaires