Skip to main content
Bonjour,

 

dans le cadre d'un processus de mise à jour je suis amené à comparer les modifications faites sur un ensemble de point entre deux moments donnés. J'utilise par conséquent un Transformer ChangeDetector pour obtenir les points n'ayant pas changés DU TOUT. Cependant il existe aussi des points bougeant PEU mais de manière suffisante pour que le ChangeDetector les considère comme différents. Pour palier à ca, existe-t-il un moyen d'integrer une tolérance de distance pour qu'un transformer ChangeDetector puisse faire passer dans le flux unchanged les points revised étant suffisament proche d'un original ?

 

Actuellement, j'utilise un NeighborFinder sur les flux Added et Deleted, pour creer ce mechanisme à la main, mais cette solution a trouvé sa limite lorsque deux points Base sont proche du meme Candidate, j'obtient alors des incohérences de résultat.

 

 

 

Maybe the two sets of data have different precision? Try the AttributeRounder transformer.

 


Bonjour

 

 

Vous pouvez essayer de mettre un AnchoredSnapper avant le Matcher, avec un Group By sur le même identifiant que vous utilisez dans le Matcher. Je propose d'envoyer les données mise à jour sur le port Anchor, et les anciennes données sur Candidates. Ceci pour éviter de changer la géométrie des nouvelles données. La tolérance saisie dans l'AnchoredSnapper va décider si le Matcher détecte un changement ou pas.

 

 

David
Bonjour

 

 

Vous pouvez essayer de mettre un AnchoredSnapper avant le Matcher, avec un Group By sur le même identifiant que vous utilisez dans le Matcher. Je propose d'envoyer les données mise à jour sur le port Anchor, et les anciennes données sur Candidates. Ceci pour éviter de changer la géométrie des nouvelles données. La tolérance saisie dans l'AnchoredSnapper va décider si le Matcher détecte un changement ou pas.

 

 

David

Je vais essayer cette methode dès mon retour au bureau, cependant etes vous sur que l'anchoredSnapper n'associe à chaque Candidate qu'un seul Anchor ?


Je vais essayer cette methode dès mon retour au bureau, cependant etes vous sur que l'anchoredSnapper n'associe à chaque Candidate qu'un seul Anchor ?

C'est l'attribut spécifié dans le Group By du AnchoredSnapper qui va assurer cela, donc bien choisir la bonne clé primaire qui les associent.


C'est l'attribut spécifié dans le Group By du AnchoredSnapper qui va assurer cela, donc bien choisir la bonne clé primaire qui les associent.

Donc voici mon schema actuel, si je vous ai bien suivi:

Ce qui sous entends que j'ai 269 objets qui sont proches, mais pas identiques entre mes deux sources (mais je dois les faire passer comme objets similaires), et 7124 qui sont soit identiques, soit trop loins. Parmis ces 7124 j'en ai donc 6639 qui sont identique exactement (ajouté au 269 qui sont approximatif j'obtiens donc 6908 objets "stables"), et 485 qui sont créés entre mes deux instants.

Au final, 6639+269+485 = 7393, le compte est bon, on passe aux lettres.

Cette methode vous semble-t-elle cohérente ? J'entends par la que si je compare mes résultats avec la fonction d'appariement d'OpenJump, j'ai un resultat legerement différent (a 1 ou 2 objets pret), surement lié au fait que le changedetector accepte les points ayant une distance égale a X alors que OpenJump ne prends que le spoints ayant une distance strictement inférieure à X.

EDIT: Je viens de comprendre que vous vouliez utiliser un matcher a la place d'un changedetector, ce que je comprends, mais je ne suis deja pas tres à l'aise avec les transformers que je connais, nul besoin d'aller plus loin


Bonjour

 

 

Vous pouvez essayer de mettre un AnchoredSnapper avant le Matcher, avec un Group By sur le même identifiant que vous utilisez dans le Matcher. Je propose d'envoyer les données mise à jour sur le port Anchor, et les anciennes données sur Candidates. Ceci pour éviter de changer la géométrie des nouvelles données. La tolérance saisie dans l'AnchoredSnapper va décider si le Matcher détecte un changement ou pas.

 

 

David

Je post un screenshot de la solution mise en place, merci à david_r pour son aide inestimable ! Je vais construire un autel a son honneur dans mon bureau.

fin.png


Donc voici mon schema actuel, si je vous ai bien suivi:

Ce qui sous entends que j'ai 269 objets qui sont proches, mais pas identiques entre mes deux sources (mais je dois les faire passer comme objets similaires), et 7124 qui sont soit identiques, soit trop loins. Parmis ces 7124 j'en ai donc 6639 qui sont identique exactement (ajouté au 269 qui sont approximatif j'obtiens donc 6908 objets "stables"), et 485 qui sont créés entre mes deux instants.

Au final, 6639+269+485 = 7393, le compte est bon, on passe aux lettres.

Cette methode vous semble-t-elle cohérente ? J'entends par la que si je compare mes résultats avec la fonction d'appariement d'OpenJump, j'ai un resultat legerement différent (a 1 ou 2 objets pret), surement lié au fait que le changedetector accepte les points ayant une distance égale a X alors que OpenJump ne prends que le spoints ayant une distance strictement inférieure à X.

EDIT: Je viens de comprendre que vous vouliez utiliser un matcher a la place d'un changedetector, ce que je comprends, mais je ne suis deja pas tres à l'aise avec les transformers que je connais, nul besoin d'aller plus loin

Mon seul commentaire est que nous n'avez probablement pas besoin de mettre un Matcher ET encore un ChangeDetector, je pense que l'un ou l'autre devrait suffir.

Donc tous les objets sortant du AnchoredSnapper sont à traiter du même manière


Je post un screenshot de la solution mise en place, merci à david_r pour son aide inestimable ! Je vais construire un autel a son honneur dans mon bureau.

fin.png

Ahah, avec plaisir :-)


Reply