Suite

Comment mesurer la distance entre des points en fonction de l'altitude?

Comment mesurer la distance entre des points en fonction de l'altitude?


J'ai besoin de pouvoir mesurer des distances entre des points, mais la distance doit être calculée en fonction de l'altitude. Les points sont les demeures des conteurs du XIXe siècle et les lieux mentionnés dans leurs récits. La distance doit donc être "distance de marche". Un chemin le long d'une vallée sera probablement plus court qu'un chemin au-dessus d'une montagne même si la distance en ligne droite réelle est plus courte. Ci-joint une capture d'écran illustrant ma réflexion. Dans l'image, les chemins A et C seraient donc calculés plus courts que le chemin B.

Les points proviennent d'un fichier CSV mais j'ai également une couche raster avec les données d'altitude.


Atteindre cet objectif est en quelque sorte une tâche de base dans SIG, mais la méthode dans QGIS peut ne pas être triviale. Votre meilleure chance est d'utiliser GRASSr.marcherfonction, qui crée une surface de coût anisotrope (dem+pente+autres facteurs).

Tout d'abord, vous devez créer une surface de friction en tant qu'entrée pourr.marcher. Dans votre cas, il peut s'agir d'un raster à valeur unique (1.0) correspondant à l'étendue de votre DEM. Vous pouvez le créer avecr.mapcalculatoravec la formule :A*0+1où A est votre DEM.

Ensuite, vous devez sélectionner un ensemble de points de départ à partir de votre fichier CSV. Ce sont les points à partir desquels la surface de coût cumulée sera calculée. Vous devez créer une surface de coût individuelle à partir de chaque point de départ. Il peut être judicieux de définir les points d'arrivée associés à chaque point de départ de cette étape (en couches individuelles bien sûr). Après, tu peux courirr.marcheravec les entrées créées. Les points de départ peuvent être dans une seule couche, vous pouvez les parcourir avec la flèche verte dans la boîte de dialogue.

Maintenant, dans un cas idéal, vous avez les surfaces de coût et les points d'arrivée pour chaque surface de coût. En théorie, vous pourriez trouver les chemins les moins coûteux avecr.drain, mais pour moi, cela s'est terminé par une erreur (python n'a pas pu importer la bibliothèque QgisRaster). Si vous rencontrez le même problème, vous pouvez utiliser l'algorithme "Least cost paths" de SAGA. Cela créera un point et une couche de lignes pour chaque point final avec la surface de coût (utilisez à nouveau le bouton d'itération). Une fois que vous avez toutes les lignes, vous pouvez les fusionner en un seul fichier de formes avec l'outil "Fusionner les calques de formes" de SAGA.

Cette méthode peut être très lente avec l'incrémentation des points, donc si vous en avez beaucoup, vous pouvez essayer d'automatiser la méthode avec python. Cela prendra encore beaucoup de temps à calculer (en particulier les surfaces de coûts), mais vous n'avez pas à créer manuellement des tonnes de couches de points d'arrivée.


Mesurer la distance entre deux points sur Terre - Ce n'est pas aussi simple que vous le pensez

Si un ami vous demandait à quelle distance se trouve sa maison par rapport à la vôtre, que lui répondriez-vous ? Je suis sûr que la plupart des gens de nos jours sauteraient sur Google Maps, saisiraient les adresses, puis liraient la distance à partir du panneau de sortie. Mais que représente réellement cette distance et quelle est sa précision ? Si la distance entre votre maison et un ami est courte, la précision, ainsi que la méthode de calcul, peuvent même ne pas être un problème. Cependant, si vous essayez de créer un itinéraire de marathon avec une distance exacte de 26,2 milles, la précision et la méthode de mesure peuvent devenir un problème.

Lorsque vous voulez connaître la distance entre deux emplacements, ce n'est pas aussi simple que de sortir une carte et d'y poser une règle. Dans le monde technologiquement avancé d'aujourd'hui, de nombreuses méthodes mathématiques peuvent être utilisées par un système d'information géographique pour calculer avec précision les distances. Vous trouverez ci-dessous cinq des méthodes les plus couramment utilisées aujourd'hui.


Mesure de la distance entre les entités en unités linéaires à partir d'une vaste couche en coordonnées géographiques en gdal

J'ai une couche de points pour une grande surface. La couche est dans un système de coordonnées géographiques. J'ai besoin de travailler à distance avec les caractéristiques de cette couche. En fait, j'ai besoin de construire une couche tampon de 100 mètres, mais cela n'a pas d'importance. La première idée est de projeter la couche, de créer une zone tampon et de revenir au système de coordonnées géographiques. Cependant, la zone de la couche est assez grande et, si j'ai bien compris, je ne peux pas utiliser le seul système de coordonnées projeté sans distorsions importantes. Donc, j'ai besoin d'utiliser plusieurs systèmes de coordonnées projetées ou d'utiliser haversine pour construire un tampon. Les deux approches ne semblent pas nettes et pratiques. Existe-t-il un moyen plus naturel de créer une zone tampon (ou de mesurer une distance) ? Je voudrais utiliser gdal/ogr.

Une réponse

Pour construire la couche tampon, une bonne approche me semble d'utiliser une projection conforme et de redimensionner le rayon des tampons par l'inverse du facteur d'échelle de la projection.

Par exemple, vous pouvez utiliser la projection Mercator et construire les tampons avec un rayon = 100m / SEC(phi) . Où phi est la latitude du point à tamponner et SEC(phi) est le facteur d'échelle de la projection de Mercator.


Distance entre deux points dans OpenCv basée sur une mesure connue [fermé]

Vous voulez améliorer cette question ? Mettez à jour la question afin qu'elle soit sur le sujet pour Stack Overflow.

J'ai une image dans laquelle, j'ai deux ensembles de coordonnées entre lesquels j'ai tracé une ligne.

Les coordonnées sont A,B,C et D. Je connais la distance entre C et D. Cependant, la distance entre A et B est inconnue. Quelle est la meilleure façon de calculer cela dans OpenCv ?

Existe-t-il une fonction ou une méthode spécifique à OpenCv pour le faire ? Surtout la distance que nous prenons est en pixels ? Je suis désolé si cette question est stupide, je ne veux vraiment pas finir par avoir de mauvaises valeurs en raison d'un manque de compréhension dans ce sujet.

J'ai vu certaines références à cv2.norm() et cv2.magnitude() comme solution à ce problème. Cependant, je n'ai pas du tout compris comment choisir pour ma situation, en gardant à l'esprit que dans ce cas la distance est dans une image/photo.


Comment mesurer la distance sur Google Earth

Voici la méthode que vous utiliseriez pour mesurer les distances plates entre les points de la carte dans Google Earth Pro :

1. Ouvrez Google Earth Pro ou téléchargez le logiciel gratuitement.

2. Accédez à l'emplacement que vous souhaitez servir de point de départ en entrant le nom dans la barre de recherche dans le coin supérieur gauche de l'écran.

3. Dans le menu du haut, sélectionnez l'icône de la règle.

4. Assurez-vous que « Navigation de la souris » est coché et que vous êtes dans la section « Ligne ».

5. Sélectionnez l'unité de mesure que vous souhaitez utiliser dans la liste déroulante.

6. Cliquez sur le premier point, puis sur le deuxième point que vous souhaitez utiliser pour votre mesure.

Vous verrez une ligne jaune apparaître sur la carte et la mesure s'affichera dans la partie règle de la fenêtre Google Earth Pro.

À partir de là, vous pouvez enregistrer puis nommer la mesure en cliquant sur "Enregistrer" et en lui donnant un nom correspondant, avant de cliquer sur "Ok". La mesure sera alors enregistrée dans la section « Lieux » de votre compte.


Types de mesure disponibles avec l'outil Mesurer

La liste déroulante Choisir le type de mesure fournit une sélection de types de mesure à utiliser pour la mesure de distance. Les types de mesure disponibles incluent Planaire , Géodésique , Loxodrome et Grande Elliptique .

La mesure planaire utilise les mathématiques cartésiennes 2D pour calculer les longueurs et les aires. Cette option n'est disponible que lors de la mesure dans un système de coordonnées projetées et le plan 2D de ce système de coordonnées sera utilisé comme base pour les mesures. Toutes les mesures de surface calculées avec l'outil de mesure sont planes.

La ligne la plus courte entre deux points quelconques de la surface terrestre sur un sphéroïde (ellipsoïde). Une ligne géodésique est utilisée lorsque vous souhaitez déterminer la distance la plus courte entre deux villes pour la trajectoire de vol d'un avion. Ceci est également connu comme une grande ligne circulaire si elle est basée sur une sphère plutôt que sur un ellipsoïde.

Un loxodrome n'est pas la distance la plus courte entre deux points, mais définit plutôt la ligne de relèvement constant, ou azimut. Les grands itinéraires circulaires sont souvent divisés en une série de loxodromes, ce qui simplifie la navigation. Ceci est également connu comme une ligne de rhumb.

La ligne sur un sphéroïde (ellipsoïde) définie par l'intersection à la surface par un plan qui passe par le centre du sphéroïde et les points de départ et d'extrémité d'un segment. Ceci est également connu comme un grand cercle lorsqu'une sphère est utilisée. Le grand type elliptique vous permet de créer des lignes uniquement.

Lors de la mesure dans un bloc de données avec un système de coordonnées projetées, le type de mesure par défaut sera Planaire . Cela signifie que les mathématiques cartésiennes 2D sont utilisées pour calculer les longueurs. Les mesures planaires reflètent la projection de données géographiques sur la surface 2D (en d'autres termes, elles ne prendront pas en compte la courbure de la terre). Les types de mesure Géodésique , Loxodrome et Grande elliptique peuvent être choisis comme alternative si vous le souhaitez.

Lors de la mesure dans un bloc de données avec un système de coordonnées géographiques, le type de mesure par défaut est Géodésique . Les mesures de lignes planes et toutes les mesures de zone ne seront pas disponibles lors de la mesure dans un système de coordonnées géographiques. Les types de mesure Loxodrome et Great Elliptic peuvent être choisis comme alternative si vous le souhaitez.


Prendre et enregistrer une mesure

  1. Ouvrez Google Earth Pro. .
  2. Dans la barre de menu, cliquez sur OutilsRègle. Une nouvelle fenêtre "Règle" avec des options apparaît.
  3. En bas à gauche, sélectionnez Navigation à la souris.
  4. Cliquez sur l'onglet correspondant à ce que vous souhaitez mesurer.
  5. Sur la carte, survolez un endroit et cliquez sur un point de départ pour votre mesure.
  6. Ensuite, survolez un autre endroit et cliquez sur un point final.
  7. La mesure apparaîtra dans la fenêtre "Règle". Pour enregistrer votre mesure, cliquez sur Sauvegarder.
  8. Dans le champ "Nom", saisissez un nom pour votre mesure.
  9. En bas à droite, cliquez d'accord. Google Earth Pro ajoutera votre mesure sous "Lieux" dans le panneau de gauche.

Ajoutez plus de détails lorsque vous enregistrez une mesure

Dans la fenêtre "Nouveau chemin" ou "Modifier le chemin", modifiez les champs comme l'altitude, la couleur ou le style.


  • 21 février 2021 - Les unités de distance sélectionnées sont stockées et rappelées lors de votre prochaine visite
  • 6 juillet 2020 - Nouvelle option pour exporter un lien vers l'itinéraire. Trouvé dans la section Options d'exportation
  • 2 juin 2019 - Correction d'un bug avec la sortie des compteurs ne fonctionnant pas
  • 29 mai 2019 - Mise en œuvre des cartes de dépliants
  • 20 mai 2019 - Correction d'un bug dans le navigateur IE
  • 9 mai 2019 - Correction d'un problème avec la distance qui ne se réinitialise pas à zéro lorsque le bouton Effacer la carte est cliqué
  • 14 septembre 2017 - Distance désormais affichée sur la carte en mode plein écran
  • 4 août 2017 - Sélecteur d'unités mis à jour. Unités de pieds ajoutées
  • 24 juillet 2017 - L'option Plein écran a été déplacée sur la carte. Maintenant trouvé dans le coin supérieur droit
  • 4 juillet 2017 - Correction d'un problème avec l'export CSV et XLSX
  • 29 janvier 2017 - Option pour afficher la carte d'altitude et exporter le fichier CSV des données d'altitude le long de l'itinéraire
  • 25 novembre 2016 - Exportation KML pour afficher les broches à chaque nœud le long de la route
  • 23 novembre 2016 - Ajout de l'option de téléchargement KML, CSV et XLSX
  • 19 juillet 2016 - Corrections de bugs avec la façon dont le mode de transport et le temps de déplacement estimé changent si les unités sont modifiées
  • 5 juillet 2016 - Ajout de mètres comme unité de distance
  • 25 juin 2016 - Les unités de vitesse de déplacement changent en fonction des unités de distance
  • 20 juin 2016 - Correction d'un problème avec la mesure des jours affichant le double de la valeur réelle
  • 24 mars 2016 - Les points de route peuvent désormais être ajoutés à mi-chemin. Les points peuvent également être supprimés par un clic droit
  • 25 janvier 2016 - La vitesse peut désormais être saisie manuellement
  • 28 décembre 2015 - Ajout d'une option pour changer entre les minutes, les heures et les jours pour l'estimation du temps de trajet
  • 24 juin 2014 - Ajout de l'option Snap To Roads
  • 24 mars 2014 - Ajout de l'option Pan à ma position
  • 11 janvier 2012 - Implémentation de l'API Google Maps V3. Ajout de l'option Plein écran
  • 12 octobre 2010 - Les marqueurs affichent désormais leur latitude et longitude lorsque vous les survolez
  • 15 octobre 2009 - Ajout de la sortie du temps de trajet
  • 12 octobre 2009 - Ajout d'une option de carte de terrain
  • 20 février 2008 - Refonte du design maintenant avec des marqueurs déplaçables
  • 1er novembre 2007 - Ajout d'une zone de texte de recherche rapide
  • 19 octobre 2007 - Les yards sont désormais ajoutés comme unité de mesure
  • 9 octobre 2007 - Miles nautiques ajoutés comme unité de mesure
  • 5 septembre 2007 - Mise à jour du texte descriptif
  • 28 juin 2007 - Page créée

Si vous essayez de mesurer la distance entre deux villes, l'outil Quelle distance est-il entre est probablement plus adapté à vos besoins.


Calculer toutes les distances entre deux GeoDataFrame (de points) dans GeoPandas

C'est un cas assez simple, mais je n'ai pas trouvé de moyen facile de le faire jusqu'à présent. L'idée est d'obtenir un ensemble de distances entre tous les points définis dans un GeoDataFrame et ceux définis dans un autre GeoDataFrame .

Cela produit la distance élément par élément entre les points dans gdf_1 et gdf_2 qui partagent le même index (avec également un avertissement car les deux GeoSeries n'ont pas le même index, ce qui sera mon cas).

La question est de savoir comment est-il possible d'obtenir une série de toutes les distances points à points (ou au moins, les combinaisons uniques de l'indice de gdf_1 et gdf_2 puisqu'il est symétrique).

Dans cet article, la solution est donnée pour quelques points, mais je ne trouve pas de moyen simple de combiner tous les points dans deux ensembles de données.

Dans cet article, seules les opérations par élément sont proposées.

Une question analogue a également été soulevée sur le repo GitHub de geopandas. Une des solutions proposées est d'utiliser la méthode apply, sans aucune réponse détaillée.


1 réponse 1

Cela dépend vraiment de toutes sortes de détails, mais pour la situation idéalisée, les données suivantes suffiront :

De plus, appelez la distance entre la caméra et les deux points $L$.

Le champ de vision de la caméra ($FOV$) (ou l'angle de vue comme c'est plus courant en photographie) peut être calculé en

qui, pour une scène à distance $L$ correspond à une dimension de scène $W$ égale à

$ W = 2cdot Lcdot an(FOV/2) = frac $

par conséquent, si deux objets sont distants de $x$ pixels et qu'il y a $y$ pixels dans cette dimension, les objets sont

Comme toujours, assurez-vous d'utiliser souvent des unités cohérentes, les distances focales seront données en millimètres, tandis que la taille du détecteur est indiquée en pouces et la distance entre la caméra et les objets en pieds. Choisissez un système et convertissez tout en ce système unique d'unités avant de calculer quoi que ce soit.

Encore une fois, il s'agit d'une première approximation et ne s'applique qu'à une configuration idéalisée. En réalité, il y a beaucoup d'autres choses à considérer, mais la distance entre les objets suivra approximativement la relation ci-dessus.


Voir la vidéo: Comment déterminer laltitude dun point sur la carte topographique 13