Polygone de la zone de calcul à l'aide de la Latitude et de la Longitude générés à partir de l'espace Cartésien et un fichier de l'univers
Donné une série de paires de coordonnées GPS, j'ai besoin de calculer l'aire d'un polygone (n-gon). C'est relativement petite (pas plus de 50 000 pieds carrés). Les géocodes sont créés par l'application d'une transformation affine avec des données provenant d'un fichier de l'univers.
J'ai essayé d'utiliser une approche en deux étapes en faisant la conversion des géocodes en coordonnées cartésiennes:
double xPos = (lon-lonAnchor)*( Math.toRadians( 6378137 ) )*Math.cos( latAnchor );
double yPos = (lat-latAnchor)*( Math.toRadians( 6378137 ) );
puis-je utiliser un la croix du produit de calcul pour déterminer la surface.
Le problème est que les résultats sont un peu en précision (environ 1%). Est-ce que je peux regarder dans pour améliorer cela?
Grâce.
OriginalL'auteur Heath Lilley | 2010-05-18
Vous devez vous connecter pour publier un commentaire.
1% d'erreur semble un peu élevé en raison de juste votre rapprochement. Êtes-vous une comparaison avec des mesures réelles, ou un idéal de calcul? Rappelez-vous qu'il y a erreur dans le GPS, ainsi que peut-être contribuer.
Si vous voulez une méthode plus précise pour ce faire, il y a une bonne réponse à cette question. Si vous allez pour un moyen plus rapide, vous pouvez utiliser le WGS84 géoïde au lieu de votre sphère de référence pour la conversion de coordonnées cartésiennes (ECEF). Voici la lien wiki pour cette conversion.
Désolé pour la réponse tardive, a fini par utiliser le WGs84 géoïde avec le proj4 bibliothèque java. Très travaillé, merci pour l'aide.
OriginalL'auteur Ron Warholic
Je suis à la modification d'une Carte de Google, de sorte qu'un utilisateur peut calculer la surface
d'un polygone en cliquant sur les sommets. Il ne donnait pas correct
les zones jusqu'à ce que j'ai fait en sorte que le calcul.cos(latAnchor) était en radians première
Donc:
est devenu:
où lon, lonAnchor et latAnchor sont en degrés. Fonctionne comme un charme maintenant.
OriginalL'auteur Sandy
J'ai vérifié sur internet pour diverses polygone de la zone de formules(ou code) mais n'a pas trouver un bon ou facile à mettre en œuvre.
Maintenant, j'ai écrit l'extrait de code pour calculer l'aire d'un polygone dessiné sur la surface de la terre. Le polygone peut avoir n sommets avec chaque sommet a, de son propre latitude longitude.
Quelques Points Importants
La zone de sortie aura de l'unité de mètres carrés
vous avez mis "area = zone * R * R / 2;" à l'intérieur de la boucle alors qu'il devrait être en dehors de la boucle.
Je pense que vous devriez convertir
p1.Longitude
etp2.Longitude
en radians. Après avoir fait cette modification, je me suis vraiment similaire résultat que j'ai obtenu à partir degoogle.maps.geometry.spherical.computeArea
fonction.Après les corrections, cela semble très bien. Et est très similaire en
getGeodesicArea
à Ouvrir les Calques (moins de projection de la partie). Voir: github.com/openlayers/openlayers/blob/v2.13.1/lib/OpenLayers/...tks pour le code, adapté à PHP et affiché comme une réponse distincte. UPVOTED 🙂
OriginalL'auteur Risky Pathak
Basé sur la solution par Risqué Pathak voici la solution pour SQL (Redshift) pour calculer les zones de GeoJSON multipolygons (avec l'hypothèse que linestring 0 est le plus éloigné du polygone)
OriginalL'auteur LauriK
Adapté RiskyPathak de l'extrait de code PHP
OriginalL'auteur tony gil