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 Wed 02 May 2001 22:28

Roddier Sebastien
Invité

select rectangle

Bonour a tous

Je cherche a selectionner des objets d'une table presents dans un
rectangle (a partir de 2 paires de coordonnees : coins extreme d'une
fenetre carte par exemple).

Je sais qu'il y a un bouton pour le faire mais je cherche a la faire
dans une routine MB.

Quelqu'un aurait il une idee lumineuse....

Merci d'avance

Sebastien RODDIER

 

#2 Wed 02 May 2001 22:30

Pascal Barbier
Invité

Re: select rectangle

Sans doute plein de solution.. mais en general j'utilise celle ci
Creer un objet rectangle avec vos 2 points
puis lancer une requete sql en MB pour recuperer les objet de la table
concernee. on recupere alors une table..
sinon si vous voulez travailler au plus pres des objet recupere vous pouvez
faire comme suit. je n'ai pas mis tout le code de l aprocedure mais cela
passe par l'utilisation de SearchRect et SearchInfo


Code:

X1 = CommandInfo (CMD_INFO_X)
Y1 = CommandInfo (CMD_INFO_Y)

X2 = CommandInfo (CMD_INFO_X2)
Y2 = CommandInfo (CMD_INFO_Y2)

If X1>=X2 then
tempoX1 = X1
X1 =X2
X2 = TempoX1
end if
If Y1>=Y2 then
tempoY1 = Y1
Y1 =Y2
Y2 = TempoY1
end if
DX = X2-X1
DY = Y2 -Y1

Nb_obj_trouve = SearchRect (WinId,X1,Y1,X2,Y2)

If Nb_obj_trouve = 0 then '/// cas ou l'on ne rammasse rien
Beep
exit sub
End if

Nb_arc_trouve = 0
redim Tab_row_arc_trouve (Nb_obj_trouve)
ColId = bus_ratp.Id
ColGeom = bus_ratp.obj

For i = 1 to Nb_obj_Trouve
If SearchInfo (i, SEARCH_INFO_TABLE)= bus_ratp then
'----------------------------- recherche des arcs de bus
Nb_arc_trouve=Nb_arc_trouve+1
Tab_row_arc_trouve(NB_ARC_TROUVE)= SearchInfo (i, SEARCH_INFO_ROW)
fetch rec Tab_row_arc_trouve(NB_ARC_TROUVE)from bus_ratp
IdArcLu = ColId
GeoLue = ColGeom
insert into TempoArc (Id,obj) Values (IdARcLu,GeoLue)
end if
next 'i --------fin du chargement de tempoarc

Cordialement
Pascal Barbier

 

Pied de page des forums

Powered by FluxBB