Eu tenho uma polilinha que é dividida em multipartes e essas partes não são bem ordenadas para que o ID do vértice não esteja seguindo a plotagem da polilinha.
Esta polilinha representa uma linha de ônibus e eu preciso ter a plotagem seguindo a direção do ônibus. Gostaria de saber como mesclar as multipartes dessa polilinha?
Eu já tentei dividir e cancelar a divisão, assim como multipartes para peça única, união, mesclagem, etc. mas ninguém está me dando o resultado que eu quero.
Respostas:
Vejo pelas suas tags que você está executando o ArcGIS 10. Usei o seguinte método para uma tarefa semelhante:
1) Use Multipart para peça única
2) Use Unsplit
Para que isso funcione (ou seja, para que você tenha as linhas na ordem correta), pode ser necessário dividir a linha nos pontos finais constituintes e depois alterar a direção com base em um atributo (por exemplo, 1 = início, 2 = final) - você pode usar isso para conectar condicionalmente apenas os pontos diferentes (se 1 + 2, crie linhas de conexão).
Se você estiver trabalhando com um IDE, o código para fazer isso é bastante longo, mas farei o possível para ajudar se você tiver perguntas específicas.
fonte
Eu tive que fazer exatamente o mesmo há algum tempo, usando o AV 3.xe Avenue. Eu dei uma olhada rápida no código, mas não o encontrei. Se bem me lembro, a lógica foi mais ou menos assim: (eu também tinha os pontos de ônibus e os terminais como um shapefile de ponto diferente, para poder determinar as partes inicial e final):
Para obter a primeira parte:
2a Obter a peça mais próxima do terminal de partida
2b. Obtenha as distâncias do nó inicial e final desta peça até o terminal inicial. Se o vértice inicial for o mais próximo, adicione esta parte à 'polilinha classificada'. Se for o final, vire-o e adicione-o.
... ou algo assim! :-)
Deixe-me saber se isso faz sentido para você e eu posso tentar encontrar meu código original da Avenue.
fonte
Eu trabalhei em um projeto parecido com isso, usei o ArcObjects. Meu objetivo era conectar duas polilinhas adjacentes se um dos pontos finais fosse o ponto de partida de outra para transformar duas polilinhas curtas em uma única polilinha. Meu processo foi:
Ambas as classes substituem os métodos "Equals" e "GetHashCode".
Por esses processos, criei dois dicionários. Depois de criar dicionários, verifico se os dois dicionários contêm o mesmo ponto e, nos dois dicionários, essa chave possui apenas um recurso na lista de recursos, criei uma nova polilinha com essas duas polilinhas e excluo duas polilinhas curtas.
Para unir duas polilinhas em uma:
fonte
Eu tive exatamente o mesmo problema devido às atualizações que fiz nas rotas de ônibus usando a ferramenta "Remodelar recurso". Dissolve, Merge e Unsplit não estavam funcionando porque os recursos de várias partes não eram coincidentes.
Se você ainda não percebeu isso, dê uma olhada nos vértices que devem coincidir entre os recursos de várias partes. Estenda, apare ou reformule conforme necessário e, em seguida, use qualquer uma das ferramentas mencionadas acima.
fonte