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 caseBonne 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


