#1 Wed 09 October 2002 08:23
- Gerard Guillaume
- Invité
Polylines vers points
Bonjour a tous,
Je cherche a creer des points a chaque nœud d'une polyligne.
Il y a bien sous MapBasic update TABLE set obj= createpoint(centroidx(obj),centroidy(obj)) , mais je n'obtiens qu'un point a l'emplacement de chaque centroid.
N'y a-t-il pas une commande voisine qui s'acquitterait plus volontiers de ce travail ?
D'avance merci.
#2 Wed 09 October 2002 21:00
- Coubes, Sophie
- Invité
Re: Polylines vers points
Bonjour!
Pour trouver les coordonnees des noeuds d'une polyligne il faut utiliser les fonctions :
ObjectNodeX( object , polygon_num , node_num ) et ObjectNodeY( object , polygon_num , node_num )
object is an Object expression
polygon_num is a positive Integer value indicating which polygon or section to query It is ignored for Multipoint objects (it used for regions and polylines).
node_num is a positive Integer value indicating which node to read
pour trouver le nombre de noeuds : ObjectInfo( object ,OBJ_INFO_NPNTS)
object is an Object expression
J'espere que cela peut t'aider.
#3 Wed 09 October 2002 21:00
- Sebastien Roddier
- Invité
Re: Polylines vers points
Ou comment automatiser mapinfi quand on a pas mapbasic.....
Voici une astuce pour faire ce que vous desirez meme sans avoir mapbasic. Il vous suffit d'avoir excel, word ou autre logiciel office dote de VBA.
Ouvrez Mapinfo (obligatoire dans ce cas, sinon plantage assure)
Ouvrez l'un de ces logiciels (moi j'ai pris excel)
Appuyez sur atl + F11
L'editeur visual basic s'ouvre
Dans la fenetre de gauche (vbaproject(classeur1.xls)) :Click Droit > Insertion > Module
Dans la fenetre module tapez le code source suivant en changeant le nom de la table ELEC400 par le nom de votre table:
Sub pline2points()
Dim mi As Object
Dim newx, newy As Double
Dim j As Integer
Set mi = GetObject(, mapinfo.Application )
mi.do open table C:tempelec400.tab map from elec400
mi.do set map layer 0 editable on
mi.do set coordsys table elec400
For j = 1 To mi.eval( tableinfo(elec400,8) )
mi.do Fetch rec & j & from elec400
For i = 1 To mi.eval( ObjectInfo( elec400.obj , 20) )
newx = mi.eval( ObjectNodeX( elec400.obj , 1 , & i & ) )
newy = mi.eval( ObjectNodey( elec400.obj , 1 , & i & ) )
mi.do Create Point Into Window frontwindow() ( & newx & , & newy & )
Next
Next
End Sub
Une fois copiez, vous pouvez enregister votre macro sous forme d'un classeur excel banal
Pour executer votre programme, dans Visual basic appuyez sur la touche F5.
ATTENTION : ce programme ne marche que si votre table contient uniquement des polylignes
Vous pouvez basculer dans MI pendant l'ececution et voir ce qui se passe, le spoints sont crees dans une couche dessin qu'il vous suffira de sauvegarder.
#4 Wed 09 October 2002 21:02
- Djouin
- Invité
Re: Polylines vers points
De: Denis Jouin
L'outil ALL2PTS-85.MBX que vous trouverez sur le site http://www.directionsmag.com/tools/ dans la categorie utilities devrait resoudre votre probleme.
Cordialement
Denis Jouin
#5 Mon 14 October 2002 15:51
- Jacky Guyot
- Invité
Re: Polylines vers points
Bonjour,
J'ai un fichier d'arpentage constitue d'une serie de points.
Existe t il une astuce ou une fonction qui me permettrait de relier
automatiquement ces points pour creer une polyligne ou mieux un polygone?
Merci
#6 Mon 14 October 2002 15:51
- Sebastien Roddier
- Invité
Re: Polylines vers points
Bonjour
Si vous connaissez l'ordre des points sur la ligne je vous suggere d'ecrire dans un fichier texte un fichier d'import export mapinfo MIF qui a la structure suivante
Version 300
Charset WindowsLatin1
Delimiter ,
CoordSys Earth Projection 3, 9999, 6, -168, -60, 320, 0, 0, 0, 0, 0, m ,
2.337229104484, 46.8, 45.90287723937, 47.69712276063, 600000, 2200000 Bounds
(-113976741.175, -106377291.405) (115176741.175, 122776190.945)
Columns 2
ID
ID_#
Data
Pline 3
x1 y1
x2 y2
x3 y3
Pline 2
x5 y 5
x6 y6
et un fichier MID (qui porte le m^me nom mais qui contient les donnees attributaires)
1,2
9,7
Puis une fois ces 2 fichiers creees importez les dans MapInfo (table / importer)
Pour creer ces fichiers aidez vous des fonctions d'excel pour concatener des chaines de caracteres.
A bientot