Como o ponto médio de uma polilinha pode ser calculado usando a estrutura de geoprocessamento , por exemplo, em um script Python?
A propriedade polyline.centroid retorna O verdadeiro centróide, se estiver dentro ou sobre o recurso; caso contrário, o ponto do rótulo será retornado . O centróide raramente está localizado em linhas não retas, o que é inútil para meus propósitos.
A ferramenta Feature Vertices to Points possui uma opção de ponto médio, mas isso requer ArcInfo, que não tenho atualmente.
Uma opção poderia ser adicionar medidas às polilinhas e criar um evento de rota 50% ao longo da linha.
Outra solução alternativa é usar a opção Calcular Geometria no ArcMap, mas o ideal é automatizar esse processo em um script.
Alguma sugestão melhor / mais rápida?
No momento, estou limitado ao ArcGIS 10.0 (sem acesso a uma licença no nível ArcInfo).
fonte
Respostas:
A classe Polyline possui um novo método chamado "positionAlongLine" no ArcGIS 10.1. Isso retornará um objeto PointGeometry com exatamente um ponto a uma distância especificada do final inicial da linha ou uma fração da distância entre o início e o final . Para encontrar o ponto médio, você precisaria apenas fazer
positionAlongLine(0.5,True)
. Para encontrar os pontos médios das linhas e adicionar suas coordenadas à tabela de atributos, você pode fazer a Calculadora de Campos na seguinte instrução:!Shape!.positionAlongLine(0.5,True).firstPoint.X
!Shape!.positionAlongLine(0.5,True).firstPoint.Y
Observe que você precisa usar o analisador Python na calculadora de campo para que isso funcione.
Se você quiser acessar esse objeto de ponto no Python, faça o seguinte:
fonte
Com a licença do ET Geo Wizards, você pode tentar a função "Polyline to Point" com a opção "Middle points" e "Remove Duplicate Points" (opcional): http://www.ian-ko.com/ET_GeoWizards/UserGuide/convertPl2Pnt. htm
Você pode implementar os ET Geo Wizards assim:
Para variáveis de entrada da função ET, consulte: http://www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htm
fonte