Fazendo um mapa de fluxo radial mostrando linhas curvas em distâncias curtas (20 km) usando o ArcGIS for Desktop?


10

A Esri forneceu instruções sobre como fazer um mapa de fluxo radial, mas acho que as linhas curvas serão produzidas apenas a uma longa distância, como metade do globo.

Para distâncias curtas (20 km), uma linha geodésica provavelmente ainda parecerá bastante reta. Para continuar usando esse processo para um mapa de fluxo radial em distâncias curtas, pensei que poderíamos editar as configurações dos dados para que a Terra fosse menor, portanto, você obterá uma boa linha curva por uma pequena distância. Alguém sabe como fazer isto?

Como alternativa, existe outra ferramenta no ArcGIS Desktop 10.0 a ser usada para criar linhas curvas? Eu tenho 90 pontos que preciso conectar até 54 pontos, seria bom automatizá-lo ao invés de ter que desenhar as linhas manualmente.


2
Sua pergunta foi feita em gis.stackexchange.com/questions/5204/… em um contexto não-ArcGIS. Você pode achar as respostas interessantes.
whuber

1
Eu tive uma idéia diferente da whuber's, mas a dele pode ser melhor, considerando seus objetivos. Eu simplesmente pensei que se poderia adicionar uma quantidade arbitrária de curvatura nos arcos, semelhante ao que é feito nos diagramas de arcos . Pode-se então mudar a direção do ápice, dependendo da direção do fluxo. Essencialmente, o fluxo de trabalho seria o mesmo para grandes círculos, quebre a sequência de linhas em muitos segmentos retos menores. A curva arbitrária pode acomodar qualquer projeção local.
Andy W

@ Andy, sua sugestão me parece mais útil (embora não ofenda a whuber, que faz ótimas sugestões para usuários mais capazes). Não consigo entender ou implementar a sugestão do whuber. Estou atrás de uma solução simples 'pronta para uso', de preferência uma extensão do ArcGIS. Eu olhei para os diagramas de arco, existem alguns exemplos incríveis lá. Não estou vendo uma solução lá para um mapa estático simples, mostrando uma relação de muitos para muitos (mas geralmente de um para muitos) entre, no meu caso, sites de despejo e sites de realocação.
Ndthl

Respostas:


5

Aqui está uma ilustração do fluxo de trabalho que mencionei no comentário acima e, embora eu não conheça nenhuma rotina simples pré-enlatada para fazer isso, anexei uma planilha do Excel que pode importar um conjunto de coordenadas de origem e destino e a folha cria um conjunto ou coordenadas de linha circular (planilha aqui ). Ele possui fórmulas configuradas, por isso é muito fácil importar novas coordenadas de OD e estendê-las para preencher os resultados, mas vou explicar a lógica do processo mais explicitamente, e outros podem dar conselhos sobre como criá-lo inteiramente dentro ArcMap (ou o que for).

Resumidamente, acho que isso é razoável para a visualização de dados OD principalmente pela mesma razão que grandes linhas circulares são populares, elas fornecem mais distinção visual entre linhas. A abordagem que sugiro também tem uma vantagem sobre as grandes linhas circulares, pois a direção do fluxo é codificada no semicírculo. Nesta outra resposta no site, ofereço uma visão geral mais geral das técnicas de visualização para mapeamento de fluxo, e muitas dessas mesmas técnicas podem ser aplicadas além de criar arcos como esse.

Assim, para detalhar como se desenha linhas como a sugestão, essencialmente, só tenho 3 etapas para o processo: 1) encontre a orientação do fluxo, 2) encontre o ponto médio e a distância do fluxo, 3) trate o ponto central como o centro de um círculo e, em seguida, desenhe o arco (um semicírculo da origem ao destino). Para ser claro, estou começando com um par de coordenadas projetadas de origem (x1,y1)e coordenadas de destino (x2,y2).

Então 1) encontre a orientação do fluxo. Um primeiro usa a fórmula ATAN((y2 - y1)/(x2 - x1))e, em seguida, dependendo da direção, atribui uma orientação, dependendo de a direção ser leste ou oeste. Um exemplo de pseudocódigo abaixo (eu atribuo pontos OD que estão ambos nas mesmas coordenadas e uma orientação de zero). Aqui, o varaible or_raddeve ser uma abreviação de "orientação em radianos" e pise refere ao valor de pi.

#tan_or = ATAN((y2 - y1)/(x2 - x1)).
Do If x2 = x1 and y1 <= y2. 
    compute or_rad = 0.
Else if x2 = x1 and y1 > y2.
    compute or_rad = pi.
Else if x1 > x2.
    compute or_rad = 270/180*pi - #tan_or.
Else if x1 < x2.
    compute or_rad = 90/180*pi - #tan_or.
End If.

2) Encontre o ponto médio e a distância do fluxo. Isso é muito simples, pois apenas um conjunto de coordenadas emparelhadas será o ponto médio em (x, y) (x1+x2/2,y1+y2/2). Então vamos definir mid_x = (x1 + x2)/2e mid_y = (y1 + y2)/2para a próxima parte. A distância usando o teor de pitágoro é simples distance = SQRT((x1 - x2)^2 + (y1 - y2)^2).

3) Em seguida, dadas essas informações, desenhe o círculo dado sobre um número pré-especificado de graus e um raio (que é metade da distância entre os dois pontos). Por exemplo, digamos que começamos com um conjunto de pares de coordenadas OD em (1,3):(3,2). A orientação em graus será ~ 116 (e em radianos ~ 2), o ponto médio x, y será (2,2.5)e a distância entre os dois pontos será de 2,2.

Então, digamos que queremos desenhar o semicírculo em torno de 180 graus. No código pseduo (usando as variáveis ​​que eu já defini), as iterações serão parecidas com;

for i in (0 to 180 degrees) 
    rad_i = i/180*pi. /*converts i from degrees to radians
    step_or = pi - rad_i /*for clarity, this makes the circle go from origin to destination
    radius = distance/2
    Arc_X = mid_x + sin(or_rad - step_or)*radius.
    Arc_Y = mid_y + cos(or_rad - step_or)*radius.

Abaixo, é inserido um diagrama das coordenadas originais especificadas acima. Começar em zero e terminar em 180 garante que os pontos de existência e de extremidade estejam nos mesmos locais. Ajustar o loop para ter mais etapas (arco mais detalhado) ou menos (arco menos detalhado) deve ser bastante óbvio.

insira a descrição da imagem aqui

Observe que outros threads no site discutem a criação de linhas a partir de dados pontuais (consulte a tag de ). Eu tenho um exemplo na planilha xls anexada e utilizei a ferramenta de arcmap ET Geo-wizards para converter as coordenadas da planilha em linhas de shapefile. Os arcos nos dados de exemplo na planilha anexada subsequentemente se parecem com isso;

insira a descrição da imagem aqui

Uma atualização simples, mas potencialmente útil para esta configuração atual seria atualizar as fórmulas para permitir uma quantidade pré-especificada de excentricidade em arco, embora eu não tenha tido muita certeza de como fazer isso em minhas poucas tentativas até agora. Estou ansioso por sugestões e comentários da comunidade aqui, sob meus conselhos.


1
esta é uma resposta realmente fantástica! Embora eu não entenda como codificar, acho que tenho algo de bom a ser discutido com um amigo. Estou ciente da ferramenta et geowizards para unir dois pontos com uma linha reta - só estou interessado nas linhas curvas para fins cartográficos.
Ndthl 13/07/12
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.