Realizando a seleção “principalmente dentro” usando o ArcMap?

8

Estou procurando uma maneira de determinar se uma polilinha está "principalmente dentro" de um polígono. Como a maior parte do interior é arbitrária, eu precisaria inserir uma porcentagem em sua execução.

Eu pensei que poderia ter havido uma opção no ArcMap usando Select By Location, mas parece não haver. Existem métodos semelhantes, como "completamente dentro", mas não vejo como posso usar nenhum deles para alcançar o que estou procurando.

Essa funcionalidade ou método existe para conseguir isso?

amasephy
fonte
definir 'principalmente dentro' ... 75% dentro?
DPSSpatial
O é um baricentro dentro de opção, de modo que geralmente é principalmente dentro
HeikkiVesanto
@mapBaker Bom ponto sobre a porcentagem. Talvez, se estiver usando o ArcPy, isso possa ser uma variável que possa ser ajustada para produzir o resultado desejado.
amasephy
1
@Vesanto O centróide não funcionaria, se a polilinha cortasse o canto de um polígono, o centróide poderia estar dentro do polígono, mas uma parte significativa dele pode não estar.
Amasephy #
2
Eu faria uma interseção entre o polígono e a linha FC e, em seguida, uma estatística para determinar a% de cada linha em um determinado polígono (ou qualquer polígono). A partir disso, eu faria minha seleção.
Dklassen

Respostas:

8

você precisaria fazer uma tabela para unir a tabela nos dois arquivos de linha (original e saída da ferramenta GP) e calcular a diferença percentual entre os dois campos Shape.Len (se um segmento de linha no arquivo original tiver 100 pés de comprimento , e o mesmo segmento de linha, cortado no polígono, tem 75 pés de comprimento e 75% dessa linha estaria dentro do polígono). Então você pode simplesmente selecionar por atributo com base nesse percentual.

Novamente, eu sei que isso está bastante envolvido, ele cria um conjunto de dados intermediário e provavelmente existe uma maneira mais fácil de fazer isso que eu não conheço; mas, se você escrever um modelo ou script para fazer isso e excluir a linha de saída FC quando terminar, não parecerá tão difícil para o usuário final ... mesmo que seja um pouco trabalhoso para construir inicialmente.

Apenas alguns pensamentos, e deixe-me saber se isso não faz sentido e tentarei explicar melhor.

John
fonte
+1 Esses pensamentos me parecem muito bons porque fazem bom uso dos recursos do ArcGIS e, não importa como isso seja feito, realmente não há como evitar alguma forma de operação de sobreposição de polígono x polilinha. (BTW, eu acho que você foi vítima de um downvoter drive-by e peço desculpas por isso.)
whuber
@John é o que eu estava pensando também ... MAS - para fazer a junção, as linhas de entrada precisariam de um campo UNIQUEID (não o campo ArcGIS OBJECTID, lembre-se) que você poderia fazer a junção em ...
DPSSpatial
1
@mapBaker Obrigado, esse é um bom argumento (eu tinha esquecido se o clipe preservava o OID de entrada na saída, como algumas ferramentas). Você pode calcular o OID para outro campo antes de executar o clipe para fornecer um UniqueID, se ainda não estiver disponível.
João
@John ohhhh K ...
DPSSpatial
Essa solução funcionaria para mim, mas acho que o uso do Intersect pelo dklassen em vez do Clip torna isso mais simples. Acabei usando uma combinação das respostas que recebi. Não tenho certeza de quem deve receber crédito por responder à pergunta.
amasephy
3

Com base nas respostas que recebi aqui, usei uma combinação de idéias fornecidas.

Primeiro, o que fiz foi adicionar um campo Comprimento e Porcentagem ao meu conjunto de dados original. Copiei os valores Shape.Length no campo Length.

Em segundo lugar, em vez de usar o Clip, que é significativamente mais trabalhoso neste caso, usei a ferramenta Intersect. Isso "recorta" as polilinhas que cruzam os polígonos e adiciona alguns atributos potencialmente valiosos. Apesar de ter um campo de ID verdadeiramente único, não acho que seja realmente necessário ao usar um campo de comprimento estático.

Por fim, basta calcular a porcentagem da diferença entre o novo campo Shape.Length e o comprimento estático no campo Porcentagem. Quaisquer polilinhas que cruzem o limite do polígono terão uma porcentagem menor que 100.

amasephy
fonte
2
  1. Divida a polilinha em cada vértice,
  2. para cada chamada de segmento completamente dentro dos pontos finais,
  3. qualquer segmento completamente dentro possui 100% de seu comprimento dentro do polígono (assumindo que não haja polígonos reentrantes) e seu comprimento pode ser adicionado a um total,
  4. quaisquer linhas parciais podem ser divididas em, digamos, 10 segmentos e o mesmo cálculo aplicado.
  5. Compare o total com o comprimento calculado para obter uma resolução de 10% (se você precisar de resultados mais precisos, poderá subdividir mais finamente nas linhas parciais).
  6. Você também pode manter um total dos comprimentos das linhas totalmente externas e fazer o cálculo parcial apenas se você não tiver respondido além do limite.
Steve Barnes
fonte