Estou tentando fazer uma figura mostrando dados azimutais com um intervalo diferente de incertezas em cada ponto. Esta figura da velha escola de um artigo de 1991 captura a idéia do "enredo da gravata borboleta" que pretendo:
Alguma sugestão sobre como eu poderia fazer uma figura semelhante? Sou novato em assuntos relacionados ao GIS, mas tenho acesso ao ArcGIS através da minha universidade. Minha experiência com o arco foi limitada à criação de mapas geológicos, por isso não tive que fazer nada muito exótico.
Analisei as opções de simbologia no Arc e no QGIS, mas não vi nenhuma configuração que eu pensasse que faria o trabalho. Observe que não se trata apenas de girar símbolos em forma de gravata borboleta pelo azimute; o alcance angular de cada "gravata borboleta" precisa ser diferente.
Eu classificaria minhas habilidades em Python como 'intermediário forte' e minhas habilidades de R como 'intermediário baixo', por isso não sou averso a invadir algo junto com matplotlib
e / mpl_toolkits.basemap
ou bibliotecas semelhantes, se necessário. Mas pensei em solicitar aconselhamento aqui antes de seguir esse caminho, caso haja uma solução mais fácil da área de SIG que eu simplesmente não tenha ouvido falar.
fonte
100->120
o intervalo equivalente a 180 graus de distância em180->200
Respostas:
Isso requer um tipo de "cálculo de campo" no qual o valor calculado (com base em latitude, longitude, azimute central, incerteza e distância) é a forma da gravata borboleta em vez de um número. Como esses recursos de cálculo de campo foram muito mais difíceis na transição do ArcView 3.x para o ArcGIS 8.xe nunca foram totalmente restaurados, hoje em dia usamos scripts em Python, R ou qualquer outra coisa: o processo de pensamento ainda é o mesmo.
Ilustrarei com
R
código de trabalho . Em sua essência, está o cálculo de uma forma de gravata borboleta, que, portanto, encapsulamos como uma função. A função é realmente muito simples: para gerar os dois arcos nas extremidades do arco, é necessário traçar uma sequência em intervalos regulares (de azimute). Isso requer a capacidade de encontrar as coordenadas (lon, lat) de um ponto com base na partida (lon, lat) e na distância percorrida. Isso é feito com a sub-rotinagoto
, onde ocorre todo o levantamento aritmético pesado. O resto é apenas preparar tudo para aplicargoto
e depois aplicá-lo.Isso deve ser aplicado a uma tabela cujos registros você já deve ter de alguma forma: cada um deles fornece a localização, o azimute, a incerteza (como um ângulo para cada lado) e (opcionalmente) uma indicação de quão grande deve ser o tamanho do arquivo. gravata-borboleta. Vamos simular essa tabela situando 1.000 gravatas-borboleta em todo o hemisfério norte:
Neste ponto, as coisas são quase tão simples quanto qualquer cálculo de campo. Aqui está:
(Os testes de tempo indicam que
R
pode produzir cerca de 25.000 vértices por segundo. Por padrão, há um vértice para cada grau de azimute, que pode ser definido pelo usuário peloeps
argumento debowtie
.)Você pode fazer um gráfico simples dos resultados em
R
si como uma verificação:Para criar uma saída shapefile para importar para um GIS, use o
shapefiles
pacote:Agora você pode projetar os resultados, etc. Este exemplo usa uma projeção estereográfica do hemisfério norte e os laços são coloridos por quantis da incerteza. (Se você observar com muito cuidado a 180 / -180 graus de longitude, verá onde esse GIS cortou as gravatas-borboleta que cruzam essa linha. Essa é uma falha comum dos GIS; não reflete um erro no
R
próprio código.)fonte