#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
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 !
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