Pages: 1
- Sujet précédent - Obtenir l'union des intersections de 2 couches de polygones - Sujet suivant
#1 Mon 27 August 2007 11:24
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Obtenir l'union des intersections de 2 couches de polygones
Bonjour,
Je cherche à croiser géométriquement les périmétres des objets A et le parcellaire de la collectivité. En résultat je souhaite obtenir l'union des intersections de ces deux collections. J'ai utilisé le spatial filter, le clipper, mais rien n'y fait. Le résultat est inexact. Certaines parcelles semblent oubliées du calcul. J'ai nettoyé mon parcellaire pour m'assurer de n'avoir que des surfaces.
Avez-vous déjà procédé à un traitement semblable ?
Dernière modification par Brindavoine (Mon 27 August 2007 11:27)
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#2 Mon 27 August 2007 12:26
Re: Obtenir l'union des intersections de 2 couches de polygones
Avez vous essayé AreaOnAreaOverlayer pour l'intersection des polygones
puis dissolver pour l'union ?
Hors ligne
#3 Mon 27 August 2007 13:01
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Obtenir l'union des intersections de 2 couches de polygones
Le test a été effectué.
Il fusionne le polygone A à toutes les parcelles intersectantes. Ce qui ne m'avance pas. Je ne souhaite pas obtenir la totalité du polygone A mais l'intersection de ce polygone avec mon parcellaire.
Clipper avec Aggregator renvoie un résultat exact mais dès lors que j'ai plusieurs bases le résultat ne l'est plus. Il faut que je trouve maintenant un moyen de traiter mes objets base pour les envoyer un à un vers le "Clipper".
Dernière modification par Brindavoine (Mon 27 August 2007 13:02)
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#4 Mon 27 August 2007 13:06
Re: Obtenir l'union des intersections de 2 couches de polygones
bonjour
Utiliser SpatialRelator avec les bons paramètres pour connaître les relations géomètriques
Utiliser AeraOnAeraOverLayer pour créer des entités résultant des relations spatiales
ça dépend ce que vous voulez obtenir vraiment
Abscisse Géomatique Leroux Mathieu
Hors ligne
#5 Mon 27 August 2007 13:31
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Obtenir l'union des intersections de 2 couches de polygones
j'ai ce message d'erreur :
2007-08-27 13:30:16| 33.4| 12.4|ERROR |SPATIALRELATOR(SpatialRelationshipFactory): Intersection matrix match of predefined type 3 with geometry dimensions 2 and 2 could not be computed.
Ce qui correspond peu ou prou à mon message d'erreur avec SpatialFilter.
Une idée ?
! En fait celà est dû à l'utilisation de polygones aggrégés.
Comment dois-je utiliser les relations créées dans AreaOnArea ?
Dernière modification par Brindavoine (Mon 27 August 2007 14:10)
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#6 Mon 27 August 2007 14:27
Re: Obtenir l'union des intersections de 2 couches de polygones
Vous pouvez utiliser DESAGGREGATOR pour supprimer les aggrégats.
Si vous avez encore un message de ce type c'est que vos couches en entrée ne sont pas propres, avec des géométries incohérentes.
Il faut que vos deux couches en entrée soient planaires (pas de chevauchement) sinon c'est encore plus complexe.
Après AreOnAreaOverlayer, il faut utiliser les attributs de la couche A qui sont ajoutés à votre parcelle comme critère d'aggrégation dans DISSOLVER par exemple id_pos.
AreOnAreaOverlayer découpe vos parcelles par rapport aux objets de votre couche A.
Dissolver permet de fusionner toutes les parcelles se trouvant dans le même objet A.
Hors ligne
#7 Mon 27 August 2007 16:12
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Obtenir l'union des intersections de 2 couches de polygones
Le traitement qui me semble adéquat :
un spatial relator (ce qui permet d'associer les objets A et les parcelles) puis un list explode pour dupliquer chaque parcelle entrant en relation avec un objet A.
Et ensuite un clipper entre les objets list explode et mes objets A avec l'instruction d'associer les objets listes explode et les objets A d'après une valeur d'attribut. Et enfin un aggregator pour avoir des objets propres.
cependant j'ai ce message d'erreur :
2007-08-27 16:00:33| 1.5| 0.0|WARN |CLIPPER(ClippingFactory): Extra clipping feature encountered and ignored.
2007-08-27 16:00:33| 1.5| 0.0|WARN |Deleting extra clipper feature encountered which entered transformer CLIPPER
J'ai donc un objet A qui n'est pas utilisé lors du clipping.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#8 Mon 27 August 2007 18:49
Re: Obtenir l'union des intersections de 2 couches de polygones
Si je comprends bien votre problématique :
Utiliser spatial filter pour ne sélectionner que les parcelles intersectantes et utiliser ensuite AreaOnAreaOverlayer avec un filtre sur le champ nombre d'objet ayant servi à créer de nouvelle entité.
Logo Abscisse Géomatique Leroux Mathieu
Hors ligne
#9 Tue 04 September 2007 14:11
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Obtenir l'union des intersections de 2 couches de polygones
Aloha
Votre réponse ne me permet pas d'effectuer le traitement.
Mes données en entrée sont issues d'une base Oracle ; j'utilise donc le SQLquerier pour extraire les parcelles intersectantes. Puis j'utilise un clipper.
Dans la suite de mon traitement je dois :
calculer la surface de l'ensemble des intersections de parcelle avec chaque objet
Or un areacalculator placé derrière l'aggregator en sortie du clipper ne renvoie pas de données cohérentes (< à la surface de l'objet servant de clipper !!!).
Errata : il semble que ce soit dû à des doublons créés lors du clipper (!?).
Dernière modification par Brindavoine (Tue 04 September 2007 14:33)
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
Pages: 1
- Sujet précédent - Obtenir l'union des intersections de 2 couches de polygones - Sujet suivant