Ampliar casos de flags na Construção de Polígonos a partir de linha-centroide
jpesperidiao opened this issue · 4 comments
Subject of the issue (Assunto do problema)
Quando se utilizam linhas específicas como delimitadores, assume-se que estes são utilizados exclusivamente para este fim e, por isso, delimitadores não utilizados são indício de erros.
Assim, sugere-se separar as constraints de linha em mais um parâmetro: delimitadores. Estes, então comporiam os limites dos polígonos e que, caso fornecidos, devem ter todas as suas feições ser utilizadas na construção de polígonos.
Outra sugestão de melhoria de flags seria a explicitação de qual atributo (ou quais atributos) dos centroides teria causado o conflito, resultante em flags.
Sugestão do @dinizime.
USO DE CASO 01 - Delimitadores não utilizados
Descrição:
Quando se utilizam linhas específicas como delimitadores, assume-se que estes são utilizados exclusivamente para este fim e, por isso, delimitadores não utilizados são indício de erros.
Pré-condição:
Utilizar-se de linhas específicas como delimitadores.
Fluxo atual:
- Mergear as camadas de polígono e transformá-las em linhas.
- Mergear os constraintLine com as linhas originadas dos polígonos.
- Explodir e intersectar todas as linhas.
- Deletar linhas duplicadas.
- Gerar polígonos a partir destas linhas.
- Filtrar espacialmente os polígonos com os centróides e copiar seus atributos.
- Verificar casos de polígonos que contém mais de um centróide com atributos conflitantes.
- Retornar os polígonos construídos e as flags geradas.
Fluxo proposto:
- Possibilitar a escolha de múltiplas camadas de centróides.
- Mergear as camadas de polígono e transformá-las em linhas.
- Mergear os constraintLine com as linhas originadas dos polígonos.
- Explodir e intersectar todas as linhas.
- Deletar linhas duplicadas.
- Gerar polígonos a partir destas linhas.
- Filtrar as linhas da camada de delimitador que não foram utilizadas na construção dos polígonos.
- Filtrar espacialmente os polígonos com os centróides e copiar seus atributos.
- Verificar casos de polígonos que contém mais de um centróide com atributos conflitantes.
- Retornar os polígonos construídos e as flags tipo polígono geradas.
- Retornar as linhas não utilizadas na construção dos polígonos como flags.
Regras de validação:
- Após construídos os polígonos filtrar através da matriz DE9IM as linhas que não foram utilizadas e retornar como flags.
USO DE CASO 02 - Melhoria dos textos informativos das flags
Descrição:
Sugestão de melhoria de flags seria a explicitação de qual atributo (ou quais atributos) dos centroides teria causado o conflito, resultante em flags.
Pré-condição:
Existência de flags.
Fluxo atual:
....
- Filtrar espacialmente os polígonos com os centróides e copiar seus atributos.
- Verificar casos de polígonos que não contém nenhum centróide.
- Verificar casos de polígonos que contém mais de um centróide com atributos conflitantes.
- Retornar os polígonos construídos e as flags geradas.
Fluxo proposto:
....
- Filtrar espacialmente os polígonos com os centróides e copiar seus atributos.
- Verificar casos de polígonos que não contém nenhum centróide.
- Verificar casos de polígonos que contém mais de um centróide com atributos conflitantes.
- Explicitar qual(is) atributo(s) está(ão) em conflito e retornar como texto da flag.
- Retornar os polígonos construídos e as flags geradas.
Regras de validação:
- Verificar a igualdade dos valores dos atributos dos centróides em conflito.
Explicitar ID dos centróides conflitantes para fácil identificação pelo usuário.
Não vejo como isso irá facilitar a identificação do usuário, só vai deixar mais sujo o texto do flag. Se for fazer isso acho melhor criar um atributo a mais no flag (que provavelmente o usuário irá ignorar)
Explicitar ID dos centróides conflitantes para fácil identificação pelo usuário.
Não vejo como isso irá facilitar a identificação do usuário, só vai deixar mais sujo o texto do flag. Se for fazer isso acho melhor criar um atributo a mais no flag (que provavelmente o usuário irá ignorar)
@dinizime a idéia é montar um texto de flag assim: "Polígono com centróides de Id {01} e {02} com valores conflitantes no atributo nome do atributo."
Da maneira que o método está construído hj o usuário é obrigado a marcar o pk field da camada para que não retorne como conflito de atributo e quando o usuário o faz, dentro do método que gera a flag não se tem acesso ao Id tendo que explicitá-lo.
O que o sr acha? Faz sentido?
Aproveitando o ensejo, faz sentido pro sr:
- Rodar o algoritmo somente em feições selecionadas?
- Possibilitar a escolha de mais de uma camada de centróide, ao invés de uma por vez?
- Retornar os centróides não utilizados (ou conflitantes) como flag ao invés do polígono?
@dinizime a idéia é montar um texto de flag assim: "Polígono com centróides de Id {01} e {02} com valores conflitantes no atributo nome do atributo."
Da maneira que o método está construído hj o usuário é obrigado a marcar o pk field da camada para que não retorne como conflito de atributo e quando o usuário o faz, dentro do método que gera a flag não se tem acesso ao Id tendo que explicitá-lo.
O que o sr acha? Faz sentido?
Lembrar que utilizamos o Inspetor de Feições, e é importante ter um texto razoavelmente padrão para poder filtrar os casos. Se o texto tiver o ID atrapalha isso.
Além disso o fluxo otimizado para corrigir flags de centroide é:
- Botar o flag no inspetor de feições com filtro por tipo
- Resolver os flags de área sem centroide
- Resolver os flags de área com mais de um centroide distinto
3.a) Abrir a tabela de centroide com somente as feições seleciondas
3.b) Abrir o Select by Location e selecionar os centroides que intersectam a feição selecionada do flag
3.c) Verificar na tabela de atributo qual flag tem o valor destoante.
- Rodar o algoritmo somente em feições selecionadas?
Não é necessário
- Possibilitar a escolha de mais de uma camada de centróide, ao invés de uma por vez?
Sim, pode modificar para aceitar multiplos.
- Retornar os centróides não utilizados (ou conflitantes) como flag ao invés do polígono?
O polígono é melhor como o fluxo que expliquei anteriormente.