convertir la latitude, la longitude x,y
Je veux convertir localisation GPS (latitude, longitude) dans x,y coordonnées.
J'ai trouvé beaucoup de liens sur ce sujet et l'a appliqué, mais il ne me donne pas la bonne réponse!
Je suis en suivant ces étapes pour tester la réponse:
(1) tout d'abord, je prends deux positions et de calculer la distance entre eux à l'aide de cartes.
(2) puis de convertir les deux positions en x,y coordonnées.
(3) puis à nouveau calculer la distance entre les deux points de coordonnées x,y,
et voir si il me donner le même résultat dans le point(1) ou pas.
l'une des solution que j'ai trouvé le suivant, mais il ne me donne pas la bonne réponse!
latitude = Math.PI * latitude /180;
longitude = Math.PI * longitude /180;
//adjust position by radians
latitude -= 1.570795765134; //subtract 90 degrees (in radians)
//and switch z and y
xPos = (app.radius) * Math.sin(latitude) * Math.cos(longitude);
zPos = (app.radius) * Math.sin(latitude) * Math.sin(longitude);
yPos = (app.radius) * Math.cos(latitude);
aussi j'ai essayé cette lien, mais toujours pas de travailler avec moi!
toute aide comment convertir(latitude, longitude) à (x,y) ?
Merci,
OriginalL'auteur noor | 2013-04-28
Vous devez vous connecter pour publier un commentaire.
Pas de solution exacte existe
Il n'est pas isométrique à la carte à partir de la sphère de l'avion. Lors de la conversion de coordonnées de latitude/longitude de la sphère de x/y de coordonnées dans le plan, on ne peut pas espérer que toutes les longueurs seront préservés par cette opération. Vous devez accepter un certain type de déformation. Beaucoup de différentes projections cartographiques existent, qui peuvent atteindre différents compromis entre les conservations de longueurs, les angles et les zones. Pour la petite parties de la surface de la terre, transverse de Mercator est tout à fait commun. Vous pourriez avoir entendu parler UTM. Mais il y a beaucoup plus de.
Les formules que vous citez calculer x/y/z, c'est à dire un point dans l'espace 3D. Mais même là, vous auriez pas correcte des distances automatiquement. La plus courte distance entre deux points sur la surface de la sphère serait de passer par cette sphère, alors que les distances sur la terre sont pour la plupart géodésique longueurs à la suite de la surface. De sorte qu'ils seront plus.
Approximation pour les petites zones
Si la partie de la surface de la terre qui vous voulez dessiner est relativement petite, vous pouvez utiliser un simple rapprochement. Vous pouvez simplement utiliser l'axe horizontal x pour désigner la longitude λ, l'axe vertical y pour désigner latitude φ. Le rapport entre ces ne devrait pas être de 1:1, si. Au lieu de cela vous devez utiliser la fonction cos(φ0) lorsque le rapport d'aspect, où φ0 désigne une latitude proche du centre de votre carte. En outre, pour convertir à partir d'angles (mesuré en radians) pour les longueurs, vous multipliez par le rayon de la terre (qui, dans ce modèle est supposé être une sphère).
C'est simple projection équirectangulaire. Dans la plupart des cas, vous serez en mesure de calculer cos(φ0) qu'une seule fois, ce qui rend les calculs ultérieurs d'un grand nombre de points de vraiment bon marché.
J'ai mis à jour ma réponse pour décrire un simple rapprochement pour votre cas d'utilisation.
Merci, mais j'ai ces questions: ici λ et φ en radian? également sur φ0, que suggérez-vous à moi, si ma zone de près de 50mx50m
Si vous mesurez vos angles en degrés ou en radians affecte seulement la taille, mais pas la forme de la carte. Vous avez à faire assurez-vous de calculer le cosinus correctement, ce qui dans la plupart des langages de programmation à l'aide de moyens radians. Pour φ₀, je vous suggère simplement de prendre la moyenne entre la limite inférieure et la limite supérieure de votre latitudes. Mais pour ces petites cartes, de prendre toute latitude à l'intérieur de cette zone sera probablement assez bien.
Merci pour votre aide, mais j'ai appliqué la procédure décrite sur cette exemple:: point1(32.49194144785378,35.99031005054712) ,, point2(32.492285325127966,35.99031541496515) ,, la distance réelle entre eux = 38.284 compteur _ à l'aide de cette vue, daftlogic.com/projects-google-maps-distance-calculator.htm _ puis j'ai appliqué les étapes en supposant φ₀ = 32.492113386490873 qui est le avg de lat de deux points, puis en x,y de coordination, j'ai obtenu point1(0.3559,0.5668) et ppoint2(0.3559,0.5668), alors la distance entre eux = 5.9990 e-06 !! qui est le problème de la valeur!
OriginalL'auteur MvG
Depuis cette page affiche jusqu'au-dessus de google alors que j'ai cherché pour ce même problème, je voudrais donner plus de réponses pratiques. La réponse par MVG est correct mais plutôt theoratical.
J'ai fait une piste de traçage de l'app pour le fitbit ionique en javascript. Le code ci-dessous est la façon dont j'ai abordé le problème.
plotting.js
OriginalL'auteur Pieter Oskam
Je veux partager avec vous comment j'ai géré le problème. J'ai utilisé la projection équirectangulaire tout comme @MvG dit, mais cette méthode vous donne X et Y des positions en rapport avec le monde (ou la totalité de la carte), cela signifie que vous obtenez des positions mondiales. Dans mon cas, j'ai voulu convertir les coordonnées sur une petite surface (environ 500 m de place), j'ai donc relié le point de projection à un autre de 2 points, obtenir les positions mondiales et relatifs à des locaux (sur l'écran), les positions, comme cela:
D'abord, j'ai choisi de 2 points (en haut à gauche et en bas à droite) autour de la zone où je veux du projet, tout comme cette image:
Une fois que j'ai la référence mondiale dans la zone lat et de gnl, je fais la même chose pour l'écran de positions. Les objets contenant ces données sont indiquées ci-dessous.
Comme vous pouvez le voir, j'ai fait cela en javascript, mais les calculs qui peut être traduit dans toutes les langues.
PS: je suis en application de l'converti en postes à un élément html dont l'id est "point-à-projet". Afin d'utiliser ce bout de code dans votre projet, vous créez cet élément (style que la position absolue) ou le changement de l'utilisation "de bloc".
OriginalL'auteur allexrm