Estoy tratando de hacer una figura que muestre datos azimutales con un rango diferente de incertidumbres en cada punto. Esta figura de la vieja escuela de un artículo de 1991 captura la idea de la "trama de pajarita" a la que apunto:
¿Alguna sugerencia sobre cómo podría hacer una figura similar? Soy un novato relativo en GIS, pero tengo acceso a ArcGIS a través de mi universidad. Mi experiencia con Arc se ha limitado a hacer mapas geológicos, por lo que no he tenido que hacer nada demasiado exótico.
He examinado las opciones de simbología en Arc y QGIS pero no he visto ninguna configuración que pensé que haría el trabajo. Tenga en cuenta que esto no es solo una cuestión de girar símbolos en forma de corbatín por acimut; El rango angular de cada "corbatín" debe ser diferente.
Yo lo clasificaría como mis conocimientos de Python 'intermedio fuerte' y mis habilidades como R 'intermedio bajo', así que no soy reacio a la piratería algo juntos con matplotlib
y mpl_toolkits.basemap
o bibliotecas similares, si es necesario. Pero pensé en pedir consejo aquí antes de seguir ese camino en caso de que haya una solución más fácil de GIS-land de la que simplemente no haya oído hablar.
fuente
100->120
junto con el rango equivalente a 180 grados de distancia en180->200
Respuestas:
Esto requiere un tipo de "cálculo de campo" en el que el valor calculado (basado en la latitud, longitud, acimut central, incertidumbre y distancia) es la forma del corbatín en lugar de un número. Debido a que dichas capacidades de cálculo de campo se hicieron mucho más difíciles en la transición de ArcView 3.x a ArcGIS 8.xy nunca se han restaurado por completo, hoy en día usamos scripts en Python, R o lo que sea: pero el proceso de pensamiento sigue siendo el mismo.
Ilustraré con
R
código de trabajo . En su núcleo está el cálculo de una forma de corbatín, que por lo tanto encapsulamos como una función. La función es realmente muy simple: para generar los dos arcos en los extremos del arco, necesita trazar una secuencia a intervalos regulares (de acimut). Esto requiere la capacidad de encontrar las coordenadas (lon, lat) de un punto en función del inicio (lon, lat) y la distancia recorrida. Eso se hace con la subrutinagoto
, donde ocurre todo el levantamiento aritmético pesado. El resto es solo preparar todo para aplicargoto
y luego aplicarlo.Esto está destinado a aplicarse a una tabla cuyos registros ya debe tener de alguna forma: cada uno de ellos proporciona la ubicación, el acimut, la incertidumbre (como un ángulo a cada lado) y (opcionalmente) una indicación de qué tan grande para hacer el corbata de moño. Simulemos una tabla de este tipo ubicando 1,000 bowties en todo el hemisferio norte:
En este punto, las cosas son casi tan simples como cualquier cálculo de campo. Aquí está:
(Las pruebas de tiempo indican que
R
puede producir alrededor de 25,000 vértices por segundo. Por defecto, hay un vértice para cada grado de acimut, que el usuario puede configurar mediante eleps
argumentobowtie
).Puede hacer un diagrama simple de los resultados en
R
sí mismo como un control:Para crear una salida de archivo de forma para importar a un SIG, use el
shapefiles
paquete:Ahora puede proyectar los resultados, etc. Este ejemplo utiliza una proyección estereográfica del hemisferio norte y las pajaritas están coloreadas por cuantiles de la incertidumbre. (Si observa con mucho cuidado a 180 / -180 grados de longitud, verá dónde este SIG ha recortado las pajaritas que cruzan esta línea. Esa es una falla común con los SIG; no refleja un error en el
R
código mismo).fuente