iOS: Comment convertir MKMapPoint ou CLLocationCoordinate2D UTM?
-
26-09-2019 - |
Question
D'après ce que j'ai lu cela prend un peu de mathématiques compliquées que je ne suis pas bon. Donc, je demande ici.
Est-ce que quelqu'un a l'expérience d'une conversion MKMapPoint ou CLLocationCoordinate2D à une valeur UTM? J'ai trouvé cette ressource ( http://www.uwgb.edu/dutchs/usefuldata/UTMFormulas. HTM ) mais le calcul est écrasante.
La solution
Vous pouvez utiliser une lib pour le faire, ou analyser le code d'un lib pour comprendre l'algorithme et de le faire vous-même.
Ceci est un c ++ lib qui fait le travail: http://geographiclib.sourceforge.net/html/
http://geographiclib.sourceforge.net/html/classGeographicLib_1_1UTMUPS.html
J'ai trouvé ce site (http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html). Si vous regardez le code source, la conversion entière est effectuée en utilisant JavaScript, vous pouvez avoir un coup d'oeil et essayer de convertir en Obj-c.
Autres conseils
J'ai écrit récemment une classe pour cela et a affiché un exemple de projet sur GitHub
La partie que vous voulez est un fichier appelé UTMConverter.m. Il a des procédés pour la conversion de latitude / longitude pour UTM et vice-versa.
MKMapViewZoom
semble avoir des méthodes de classe qui peuvent convertir entre-plat (carte géométrique) &-carte courbes coordonnées (géographiques), bien que je ne les ai pas testé sur. Quelqu'un me donne un coup de pouce si cela fonctionne réellement
//convert from WGS84 (geographic coordinates) to UTM (geometric coordinates)
+ (double)longitudeToPixelSpaceX(double)pixelX
+ (double)latitudeToPixelSpaceY(double)pixelY
//convert from UTM to WGS84
+ (double)pixelSpaceXToLongitude(double)longitude
+ (double)pixelSpaceYToLatitude(double)latitude
de la documentation ici
- Objectif C: https://github.com/jdp -global / MKMapViewZoom / blob / master / MKMapView% 2BZoomLevel.m
- pour RubyMotion: http://rubydoc.info/gems/map -kit-emballage / 0.0.5 / cadres
Mise à jour:
Ceci est affolant, mais pour obtenir ce code source de la classe au travail j'ai eu essentiellement avec précision pour extraire les méthodes dans mon propre domaine essentiellement, puis retirez les parties du code faisant référence MERCATOR_OFFSET
et changement MERCATOR_RADIUS
à la valeur mètres du le rayon de la terre. J'étais un peu, ok, très surpris quand j'ai découvert ce travail réellement effectuées.