banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 30 July 2007 10:05

ninikkhuet
Participant occasionnel
Date d'inscription: 13 Jun 2007
Messages: 20

[MapX 5.0 et VB6] Méthode FeatureFactory.CreateRegion

Bonjour,

j'amerais dessiner une region sur ma carte mapX à l'aide d'une centaine de points qui représentent la zone de couverture d'un satellite. Pour ça j'utilise la méthode map.FeatureFactory.CreateRegion([points],[Style]), et j'ai un problème lorsque 2 points de la region se trouvent de part et d'autre de la carte. Par exemple (voir la pièce jointe) le premier point (-105,71) et le deuxième point (164,64) sont reliés donc la zone de couverture est faussée...J'ai pensé à utiliser la méthode map.FeatureFactory.CreateLine pour relier les points de la région 2 par 2 pour pouvoir vérifier s'il faut les relier ou pas, mais ça prend alors un temps fou pour tracer les zones de couvertures des satellites. J'espère que vous allez pouvoir m'orienter parce que pour l'instant je suis dans le noir complet et je vais passer à autre chose en attendant.

Merci


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Mon 30 July 2007 15:40

jasper
Participant occasionnel
Lieu: Paris
Date d'inscription: 7 Mar 2007
Messages: 44

Re: [MapX 5.0 et VB6] Méthode FeatureFactory.CreateRegion

Bonjour.

Si j'ai bien compris, vous souhaiteriez que la ligne sorte à "droite" de la fenetre pour réapparaitre par la "gauche"... (c'est vrai que la terre est ronde ! ;-) on finissait par l'oublier avec les SIG !)

Le plus simple et le plus rapide, à mon avis, est de valider la collection de points (utilisée lors du CreateRegion ou du CreateLine), avant la création du feature.
Pour cela, calculez la distance de chaque point avec le point suivant : si la distance est supérieure à 20 000 km par exemple, je supprime le point de la collection...

Attention toutefois, si vous utilisez un CreateRegion, le dernier point sera automatiquement attaché au premier (le polygone -region- est une polyligne fermée).

Cordialement,
Jasper.

PS : et pourquoi pas tout simplement trier les coordonnées X dans la collection de points ?

Dernière modification par jasper (Mon 30 July 2007 15:42)

Hors ligne

 

#3 Tue 31 July 2007 08:50

ninikkhuet
Participant occasionnel
Date d'inscription: 13 Jun 2007
Messages: 20

Re: [MapX 5.0 et VB6] Méthode FeatureFactory.CreateRegion

Bonjour,

ça me paraît assez bien l'idée de calculer les distances entre chaque point..
par contre pour trier les coordonnées X dans la collection de points je ne vois pas trop ce que ça change !

Cordialement,
ninikkhuet

Hors ligne

 

#4 Tue 31 July 2007 10:36

jasper
Participant occasionnel
Lieu: Paris
Date d'inscription: 7 Mar 2007
Messages: 44

Re: [MapX 5.0 et VB6] Méthode FeatureFactory.CreateRegion

Bonjour.

Le fait de trier les coordonnées par le X permettra de ne tracer les lignes uniquement de la gauche vers la droite (ouest -> est), et ainsi de ne pas tracer la fameuse ligne ouest-est qui vous embête....

A tester, car cela me semble la méthode la plus simple à mettre en place (le tri d'un tableau en VB est une commande basique de mémoire), mais également la plus rapide en temps machine.

Cordialement,
Jasper.

Hors ligne

 

#5 Wed 01 August 2007 10:29

ninikkhuet
Participant occasionnel
Date d'inscription: 13 Jun 2007
Messages: 20

Re: [MapX 5.0 et VB6] Méthode FeatureFactory.CreateRegion

ah d'accord ! smile
bon je vais essayer ça, merci

Hors ligne

 

#6 Thu 09 August 2007 11:02

ninikkhuet
Participant occasionnel
Date d'inscription: 13 Jun 2007
Messages: 20

Re: [MapX 5.0 et VB6] Méthode FeatureFactory.CreateRegion

Bonjour,

je traîne encore sur ce pb...décidément, MapX c'est pas de la tarte !!

Finalement le tri du tableau n'a pas fonctionné, mapX me traçait les lignes entre les points n'importe comment ...Solution provisoire : je trace toujours les lignes entre chaque point et je calcule la distance entre chaque point pour savoir s'il faut tracer ou pas. Ca fonctionne mais c'est assez long, je suis obligée de diminuer le nb total de pts constituant ma zone de visibilité. J'essaie encore de chercher s'il y a plus simple et surtout moins long..

J'ai un autre problème qui vient se rajouter : j'essaie de récupérer la carte entière, sauf la région dessinée, pour la mettre d'une autre couleur. J'ai pensé à plusieurs méthodes éventuellement : intersectfeatures, combinefeatures... mais je ne sais pas du tout comment on les utilise et surtout si elle pourrait me servir à qq chose. Si vous avez une idée..

Merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB