martes, 15 de octubre de 2013

Programa para transformar nodos de rutas en líneas de rutas

Programa en MapBasic para realizar rutas a partir de puntos. Esto puede ser útil en muchas circunstancias, por ejemplo en una encuesta origen destino donde se tienen los nodos pero se quiere representar la ruta.

Este programa para un archivo de 400 puntos, genera una linea secuencial entre ellos. Es decir, une el primer punto con el segundo, el segundo con el tercero, etc.

Es decir, desde algo como esto:


Genera esto:

El resultado lo almacena en un archivo llamado Rutas.

Para correrlo se necesita tener un archivo en Mapinfo que se llame Puntos donde se almacenan los 400 puntos (pueden ser más siempre y cuando se modifique la línea del for N=1 to 400. Otro archivo vacío se debe llamar rutas.

'Programa para dibujo de rutas Tona Mini

Dim PuntoACrecer               As Object                           'define variable objeto donde estará siguiente pto.
Dim N                                  As Integer                           'se almacena contador
Dim CurrentX,CurrentY        As Float                              'se almacena coordenadas 1
Dim CurrentX2,CurrentY2    As Float                              'coordenadas siguientes


Select Obj From Puntos Where RowId=1                        'se selecciona el primer punto
PuntoACrecer=Selection.Obj                                           'se almacena en una variable objeto
CurrentX=CentroidX(PuntoACrecer)                               'se extraen sus coordenadas
CurrentY=CentroidY(PuntoACrecer)



For N=2 To 400                                                               'se inicia el conteo para el total de puntos

Select Obj From Puntos Where RowId=N Into Sel   'almacena punto en archivo dedicado a puntos

PuntoACrecer=Sel.Obj                                            'se almacena en punto variable objeto
CurrentX2=CentroidX(PuntoACrecer)                     'se extraen coordenadas
CurrentY2=CentroidY(PuntoACrecer)


Insert Into Rutas (Obj)                                              'se realiza el dibujo
Values (CreateLine (CurrentX,CurrentY,CurrentX2,CurrentY2))   'se almacena en geobase

CurrentX=CurrentX2    'almacenan segundas coords. en las primeras para repetir operacion
CurrentY=CurrentY2

Next


No hay comentarios:

Publicar un comentario