Pages: 1
- Sujet précédent - [Mapbasic]Extraire les coordonnées amont aval d'un polyligne - Sujet suivant
#1 Tue 24 July 2007 11:23
- Pierre.J
- Participant occasionnel
- Lieu: Nantes - Paris
- Date d'inscription: 1 Nov 2006
- Messages: 37
[Mapbasic]Extraire les coordonnées amont aval d'un polyligne
Bonjour à tous,
J'aimerais remplir de maniere automatique quatre champs de ma BD mapinfo (Xamont Yamont Xaval Yaval).
La projection est en Lambert II. Mes objets sont des polylignes.
En fouillant un peu sur le forum j ai trouve qqs posts concernant la création d'un tel MBX. J ai bien compris la commande "ObjectNode" et "ObjectInfo" et j'arrive à la mettre en oeuvre par une requete SQL. Malheureusement les voix de la programmation me sont encore innaccessible et je n'arrive pas à me mettre en marche le bout de code que j'ai trouvé.
Est ce que l'un d entre vous connait l existence d un tel MBX et/ou pourrait m expliquer comment le créer?
Cordialement,
Pierre J
Hors ligne
#2 Wed 25 July 2007 15:43
Re: [Mapbasic]Extraire les coordonnées amont aval d'un polyligne
Bonjour,
En fouillant dans mes archives voici une routine que j'avais développée.
A adapter à vos besoins
Code:
Do Case i_ObjectType '================================= 'Objet de type ligne Case OBJ_TYPE_LINE s_ObjectType = "Ligne" f_Angle = 0 s_Comment = "" f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_LINEBEGX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_LINEBEGY) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, 1, 1, f_NodeX, f_NodeY, f_Angle, s_Comment) f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_LINEENDX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_LINEENDY) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, 1, 1, f_NodeX, f_NodeY, f_Angle, s_Comment) '================================= 'Objet de type multiligne Case OBJ_TYPE_PLINE s_ObjectType = "Multiligne" f_Angle = 0 s_Comment = "" For i_ObjectRow = 1 to ObjectInfo(s_TabObjet, OBJ_INFO_NPOLYGONS) For i_NodeNum = 1 to ObjectInfo(s_TabObjet, OBJ_INFO_NPOLYGONS + i_ObjectRow) f_NodeX = ObjectNodeX(s_TabObjet, i_ObjectRow, i_NodeNum) f_NodeY = ObjectNodeY(s_TabObjet, i_ObjectRow, i_NodeNum) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) Next Next '================================= 'Objet de type polygone Case OBJ_TYPE_REGION s_ObjectType = "Polygone" f_Angle = 0 s_Comment = "" For i_ObjectRow = 1 to ObjectInfo(s_TabObjet, OBJ_INFO_NPOLYGONS) For i_NodeNum = 1 to ObjectInfo(s_TabObjet, OBJ_INFO_NPOLYGONS + i_ObjectRow) - 1 s_Comment = "" f_NodeX = ObjectNodeX(s_TabObjet, i_ObjectRow, i_NodeNum) f_NodeY = ObjectNodeY(s_TabObjet, i_ObjectRow, i_NodeNum) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) Next Next '================================= 'Objet de type rectangle Case OBJ_TYPE_RECT s_ObjectType = "Rectangle" i_ObjectRow = 1 f_Angle = 0 s_Comment = "" i_NodeNum = 1 f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_MINX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_MAXY) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) i_NodeNum = 2 f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_MAXX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_MAXY) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) i_NodeNum = 3 f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_MINX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_MAXY) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) i_NodeNum = 4 f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_MINX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_MINY) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) '================================= 'Objet de type point Case OBJ_TYPE_POINT s_ObjectType = "Point" i_ObjectRow = 1 i_NodeNum = 1 f_Angle = 0 s_Comment = "" f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_POINTX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_POINTY) 'Insert le résultat dans la table de sortie Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, 1, 1, f_NodeX, f_NodeY, f_Angle, s_Comment) '=================== 'Objet de type texte. Case OBJ_TYPE_TEXT s_ObjectType = "Texte" i_ObjectRow = 1 i_NodeNum = 1 f_Angle = ObjectGeography(s_TabObjet,OBJ_GEO_TEXTANGLE) s_Comment = "" f_NodeX = ObjectGeography(s_TabObjet, OBJ_GEO_TEXTLINEX) f_NodeY = ObjectGeography(s_TabObjet, OBJ_GEO_TEXTLINEY) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, 1, 1, f_NodeX, f_NodeY, f_Angle, s_Comment) '========================= 'Objet de type multipoints. Case OBJ_TYPE_MPOINT If ObjectInfo(s_TabObjet, OBJ_INFO_NONEMPTY) then s_ObjectType = "Multipoints" i_ObjectRow = 1 f_Angle = 0 s_Comment = "" For i_NodeNum = 1 to ObjectInfo(s_TabObjet, OBJ_INFO_NPNTS) f_NodeX = ObjectNodeX(s_TabObjet, i_ObjectRow, i_NodeNum) f_NodeY = ObjectNodeY(s_TabObjet, i_ObjectRow, i_NodeNum) Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) Next End if '=================== 'Autres type d'objet. Case Else s_ObjectType = "" i_ObjectRow = 0 i_NodeNum = 0 f_NodeX = 0 f_NodeY = 0 f_Angle = 0 Do case i_ObjectType Case OBJ_TYPE_ROUNDRECT s_ObjectType = "Rectangle arrondi" Case OBJ_TYPE_FRAME s_ObjectType = "Cadre" Case OBJ_TYPE_ELLIPSE s_ObjectType = "Ellipse" Case OBJ_TYPE_ARC s_ObjectType = "Arc" Case OBJ_TYPE_COLLECTION s_ObjectType = "Collection d'objets" Case Else s_ObjectType = i_ObjectType End Case s_Comment = "Non pris en charge" Insert Into s_TempName Values (s_TabName, i_Row, s_ObjectType, i_ObjectRow, i_NodeNum, f_NodeX, f_NodeY, f_Angle, s_Comment) End case
Bonne continuation
Florent
Hors ligne
#3 Wed 25 July 2007 15:54
Re: [Mapbasic]Extraire les coordonnées amont aval d'un polyligne
Suite au message précédent.
En pièce jointe, la version compilée opérationnelle et les sources.
Le code est placé sous licence GPL.
Aucune garantie d'aucune sorte sur ce module.
A utiliser comme bon vous semble.
Florent
Hors ligne
#4 Thu 26 July 2007 09:01
- Pierre.J
- Participant occasionnel
- Lieu: Nantes - Paris
- Date d'inscription: 1 Nov 2006
- Messages: 37
Re: [Mapbasic]Extraire les coordonnées amont aval d'un polyligne
Merci beaucoup!
Voila qui devrait me faciliter la tâche.
Hors ligne
Pages: 1
- Sujet précédent - [Mapbasic]Extraire les coordonnées amont aval d'un polyligne - Sujet suivant