Mais

Encontrando polígonos que estão dentro / se cruzam com outros polígonos usando FME?

Encontrando polígonos que estão dentro / se cruzam com outros polígonos usando FME?


Versão: FME Desktop 2014 SP3

Tenho duas formas com polígonos. Agora eu quero localizar os polígonos da forma A (polygon.shp) que cruzam os polígonos da forma B (POLYGONS) (ou estão dentro deles).

Estou usando o AreaOnAreaOverlayer e o testador. Mas 8 recursos vão para o AreaOnAreaOverlay e 22 recursos são lançados. O número correto de passagens seria 6. Parece que o AreaOnAreaOverlayer duplica alguns objetos do polygon.shp

De qualquer forma, fiz o mesmo fluxo de trabalho para localizar pontos / linhas nos polígonos com o Transformador PointOn / LineOnAreaOverlay. E funciona perfeitamente.

Alguém tem alguma ideia ou sugestão de melhoria para a bancada?

bancada de trabalho:

As propriedades do Tester_3:


Parece que você está entendendo mal o comportamento do AreaOnAreaOverlayer. Na verdade, ele cruza os polígonos e cria novos se eles se cruzarem. O documentação afirma que a ferramenta:

Executa uma sobreposição de área sobre área para que todas as áreas de entrada se cruzem umas com as outras e os recursos de área resultantes sejam criados e produzidos. As áreas resultantes têm todos os atributos de todas as feições originais nas quais estão contidas.

E a imagem mostra que dois recursos entram e três saem.

Se você deseja gerar polígonos do Shapefile A que cruzam polígonos do Shapefile B, então acho que o transformador que você deseja é o SpatialFilter. Você pode testar diferentes tipos de relacionamentos espaciais.

As configurações padrão provavelmente serão adequadas aos seus objetivos específicos. Mas sugiro ler a documentação completa, pois esta ferramenta é muito poderosa.

Se você quiser determinar as relações entre as camadas, recomendo o SpatialRelator. Esse transformador adiciona um atributo ao relacionamento espacial.


Você pode querer tentar usar o SpatialRelater e o teste de 'interseção'. Isso irá encontrar (e associar) todos os recursos em uma camada que tocam outra camada.


Se você deseja localizar as formas de A dentro de B, acho que você poderia usar um "testador"transformador para filtrar de acordo com o atributo" _overlaps "que é criado em cada um dos elementos de saída. Algo assim:

Espero que sirva para essa ideia.


Sem mais informações sobre seus conjuntos de dados e espaço de trabalho, é difícil saber por que AreaOnAreaOverlayer não está funcionando como esperado.

Talvez tente evitar a necessidade de AreaOnAreaOverlayer em seu espaço de trabalho, colocando um de seus polígonos por meio de CenterOfGravityReplacer e, em seguida, usando os pontos resultantes junto com seu outro polígono como as duas entradas para outro transformador PointOnAreaOverlayer.


Assista o vídeo: POLÍGONOS REGULARES - AULA XE - ÂNGULOS INTERNOS E EXTERNOS