J'essaie de faire une figure montrant des données azimutales avec une gamme différente d'incertitudes à chaque point. Cette figure oldschool d'un papier de 1991 capture l'idée de "noeud papillon" que je vise:
Des suggestions sur la façon dont je pourrais faire une figure similaire? Je suis relativement novice dans le domaine des SIG, mais j'ai accès à ArcGIS via mon université. Mon expérience Arc s'est limitée à faire des cartes géologiques, donc je n'ai rien eu de trop exotique.
J'ai fouillé dans les options de symbologie dans Arc et QGIS, mais je n'ai vu aucun paramètre qui, selon moi, ferait l'affaire. Notez que ce n'est pas seulement une question de rotation des symboles en forme de nœud papillon par azimut; la plage angulaire de chaque "noeud papillon" doit être différente.
Je classerais mes compétences en Python comme «intermédiaire fort» et mes compétences R comme «intermédiaire faible», donc je ne suis pas opposé à pirater quelque chose avec matplotlib
et / mpl_toolkits.basemap
ou des bibliothèques similaires si nécessaire. Mais je pensais que je demanderais des conseils ici avant de s'engager dans cette voie au cas où il y aurait une solution plus facile de SIG-terre dont je n'ai tout simplement pas entendu parler.
la source
100->120
et avec la plage équivalente à 180 degrés180->200
Réponses:
Cela nécessite une sorte de "calcul sur le terrain" dans lequel la valeur calculée (basée sur une latitude, une longitude, un azimut central, une incertitude et une distance) est la forme du nœud papillon plutôt qu'un nombre. Étant donné que ces capacités de calcul de champ ont été rendues beaucoup plus difficiles lors de la transition d'ArcView 3.x à ArcGIS 8.x et n'ont jamais été entièrement restaurées, nous utilisons aujourd'hui des scripts en Python, R ou autre chose à la place: mais le processus de réflexion est toujours le même.
Je vais illustrer avec du
R
code de travail . Au cœur se trouve le calcul d'une forme de nœud papillon, que nous encapsulons donc en fonction. La fonction est vraiment très simple: pour générer les deux arcs aux extrémités de l'arc, il faut tracer une séquence à intervalles réguliers (d'azimut). Cela nécessite une capacité à trouver les coordonnées (lon, lat) d'un point en fonction du départ (lon, lat) et de la distance parcourue. Cela se fait avec le sous-programmegoto
, où tout le levage arithmétique lourd se produit. Le reste prépare simplement tout pour postulergoto
, puis l'applique.Ceci est destiné à être appliqué à une table dont vous devez déjà avoir les enregistrements sous une forme quelconque: chacun d'eux donne l'emplacement, l'azimut, l'incertitude (sous la forme d'un angle de chaque côté) et (éventuellement) une indication de la taille de la nœud papillon. Simulons une telle table en situant 1000 bowties dans tout l'hémisphère nord:
À ce stade, les choses sont presque aussi simples que n'importe quel calcul de champ. C'est ici:
(Les tests de synchronisation indiquent qu'il
R
peut produire environ 25 000 sommets par seconde. Par défaut, il existe un sommet pour chaque degré d'azimut, qui peut être défini par l'utilisateur via l'eps
argument tobowtie
.)Vous pouvez faire un simple tracé des résultats en
R
soi comme une vérification:Pour créer une sortie de fichier de formes à importer dans un SIG, utilisez le
shapefiles
package:Vous pouvez maintenant projeter les résultats, etc. Cet exemple utilise une projection stéréographique de l'hémisphère nord et les nœuds papillons sont colorés par les quantiles de l'incertitude. (Si vous regardez très attentivement à 180 / -180 degrés de longitude, vous verrez où ce SIG a coupé les nœuds papillons qui traversent cette ligne. C'est un défaut commun avec les SIG; il ne reflète pas un bug dans le
R
code lui-même.)la source