#1 Tue 17 July 2007 14:32
- scoutoto
- Participant occasionnel
- Date d'inscription: 5 Jun 2007
- Messages: 32
[MapX] Superposition de features
Bonjour,
J'utilise l'ActiveX MapX et voici la description de mon problème.
J'ai à ma disposition plusieurs fichiers .TAB avec pour objectif de les fusionner.
Je crée donc autant de layers que de fichiers .TAB sélectionnés par l'utilisateur.
Mais avant de tout fusionner, il me faut détecter quelles sont les parcelles (ou features) qui se superposent partiellement sur deux layers différents.
Je peux bien évidemment utiliser la fonction "IntersectFeatures".
Solution 1 : J'ai essayé de comparer la collection de features du layer "A" avec la collection de features du layer "B".
Le résultat obtenun'est pas correct (aucune superposition n'est trouvée alors que certaines parcelles sont réellement superposées !)
Solution 2 : Je compare un feature du layer "A" avec la collection de features du layer "B", etc.... .
Cette opération est très longue donc pas utilisable pour ma problématique.
Sous Mapinfo, j'arrive à obtenir ce que je souhaite et rapidement avec la sélection SQL suivante :
Fields {*}
Tables {LAYERA, LAYERB}
Where {CartesianArea(overlap(LAYERA.obj,LAYERB.obj),"hectare") where LAYERA.obj intersects LAYERB.obj}
Group {}
Order {}
Into {LSTLAYER_INTERSECTIONS}
Browse
J'ai enregistré cette requête (QRY), est-il possible de l'utiliser avec l'active X MapX ou
peut on utiliser les fonctions SQL (ci-dessus) sous MapX ?
Merci de votre aide.
Hors ligne
#2 Mon 30 July 2007 09:45
- ninikkhuet
- Participant occasionnel
- Date d'inscription: 13 Jun 2007
- Messages: 20
Re: [MapX] Superposition de features
Bonjour,
si tu as trouvé une réponse à ton problème, je serais curieuse de connaître la solution
Hors ligne
#3 Mon 30 July 2007 15:25
- jasper
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 7 Mar 2007
- Messages: 44
Re: [MapX] Superposition de features
Bonjour.
Il est possible avec MapX, comme sous MapInfo, d' effectuer une requête géographique, par le biais de la méthode Layer.Search().
Voici un exemple tiré de l'aide en ligne MapX.
Cordialement,
Jasper.
Exemple :
Dim f As MapXLib.Feature
Dim v As New MapXLib.Variables
Set f = Map1.Layers.Item("states").Selection.Item(1) ' find cities within selected state
Map1.Datasets.Add miDatasetLayer, Map1.Layers("us cities"), "citiesds" ' add a Dataset so we can reference the 'state' column.
v.Add "var1", f ' add feature variable
v.Add "svar", "TX" 'add string variable
v.Add "dvar", Date ' add date variable (just to demonstrate use of date function with a variable)
' do search and get features collection as result
Set ftrs = Map1.Layers.Item("us cities").Search("obj within var1 and year(dvar) = 2000 and state <> svar ", v)
' now show results as selection
Map1.Layers.Item("us cities").Selection.Replace ftrs
Hors ligne