Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

#1 Fri 09 August 2002 10:41

Antonin Rivat
Invité

Overlap

J'ai deux tables contenants des polygones. Je souhaite recuperer un
troisieme table contenant les polygone resultant de l'intersection des deux
tables precedentes. J'ai essayer d'utiliser la fonction overlap(table1.obj,
table2.obj) mais la selection me retourne les polygones entiers! Par contre
areaoverlap me retourne bien la valeur de la surface superposee!!
Dans la fentre mapbasic la fonction seule overlap(table1.obj, table2.obj)
n'esst pas connue!!
Je m'y perds un peu dans cette fonction!! Comment s'utilise t elle? Est il
possible de recuperer la portion de polygone commune a deux tables de
polygones?
Merci de vos eclaircissements.

 

#2 Fri 09 August 2002 10:41

Geo Maumet
Invité

Re: Overlap

Bonjour,
Pour recuperer les polygones d'intersection entre deux couches.
Mettez une des deux couches (une copie) modifiables
Selectionnez les polygones de cette couche
Mettez les en cible
Selectionnez les polygones de l'autre couche
Faite supprimer exterieur
Il ne vous restera que les intersections
et ensuite utiliser le mettre a jour colonne pour recuperer les surfaces
Salut
Laurent

 

#3 Fri 09 August 2002 10:41

Sebastien Roddier
Invité

Re: Overlap

Bonjour

Voici comment je procede dans une fenêtre Mapbasic

- j'ouvre mes deux tables : couv1 et couv2
- je creeer une nouvelle : table resultat
- je declare une variable : objet
- je renseigne la variable avec la fonction overlap
- je met a jour la table resultat avec la valeur de la variable

ex :

dim newobj as object
newobj = overlap(couv1.obj, couv2.obj)
insert into resultat (obj) values(newobj)

attention si l'intersection est multiple (plusieurs polygones intersectes)
le resultat ne retourne que le premier objet intersecte. Pour faire un
intersect complet sur 2 couvertures j'ai fit un petit programme qui
parcours en boucle toutes les intersections et genere les surfaces au fur
et a mesure. Ensuite il est facile d'agrementer l'application pour qu'elle
fasse tous les type de d'intersection possible comme ArcInfo (UNION,
IDENTITY, INTERSECT) avec recuperation des attributs en plus.

cordialement

 

#4 Fri 09 August 2002 11:32

Geo Maumet
Invité

Re: Overlap

Oui la fonction OverLap renvoie un objet, mais ne doit etre employe que dans du code mapbasic

Dim Obj1, Obj2, InterObj as object
Dim i as interger

Fetch First from Table1
For i=1 to Tableinfo(Table1,TAB_INFO_NROWS)
Obj1=Table1.obj
Run Command Select obj from Table2 where obj intersects any
(Select Obj from Table1 where Rowid= + i + )Into TempoSel
Obj2=TempoSel.obj
InterObj=Overlap(Obj1,Obj2)
Insert into MaTable (Obj)
Values(InterObj)

Fetch Next from Table1
Next

Attention il faudrait tester si la requete retourne plusieurs objets, pour effectuer un overlap par objet selectionne.
Salut
Laurent

 

#5 Tue 13 August 2002 11:13

L Gnemmi
Invité

Re: Overlap

Bonjour,
J utilise un petit mbx pour faire cette operation automatiquement: overlay. Fonctionne tres bien.
Trouve sur www.directionsmag.com .
Faire la recherche de overlay-188.zip pour le trouver.
Ludovic Gnemmi

 

Pied de page des forums

Powered by FluxBB