107 lines
5.6 KiB
C++
107 lines
5.6 KiB
C++
#pragma once
|
|
#ifdef OLIVIA_COMPILA
|
|
/**
|
|
* @file olv_limp.h
|
|
* Archivo de definiciones y variables de la utilidad de limpieza viaria del programa Olivia.
|
|
*/
|
|
#include "olv_limp_def.h"
|
|
#include "olv_geom.h"
|
|
#include "mapmatrix.h"
|
|
#include "CartoBase.h"
|
|
|
|
class COlivia;
|
|
class Colv_limp_thr;
|
|
class Colv_limp_thr_aux;
|
|
class Colv_tasks;
|
|
class Csock_svThread;
|
|
class Colv_limp_thr;
|
|
|
|
struct Secu_amb;
|
|
struct Djkt_ang_ady;
|
|
struct Info_conjs;
|
|
struct Campos_dbf;
|
|
struct Info_tramos;
|
|
//////////////////////////////////////////////////
|
|
/**
|
|
* Clase de definiciones y variables de la utilidad de limpieza viaria del programa Olivia.
|
|
*/
|
|
class Colv_limp
|
|
{
|
|
public:
|
|
//*************************************************************************************
|
|
//Variables
|
|
bool socCreado;
|
|
char nomb_tto[OLV_SHP_SZ_CAMP_CHAR]; ///<Nombre del tratamiento para escribir en el shp
|
|
int pp; ///<Entero para pruebas
|
|
int tipo_ambit; ///<Indica si los ámbitos son lineales o puntuales
|
|
int n_amb; ///<Número de entidades de ámbitos, la cuenta empieza en 0 porque es la primera capa que se carga
|
|
int n_nw; ///<Número de entidades de la red navegable, la cuenta empieza en ini_nw porque no es la primera que se carga
|
|
int uds_tto; ///<Unidades de tratamiento: m/h, m2/h, min
|
|
int npts_ctrl; ///<Número de puntos de control
|
|
int nsec; ///<Número de sectores
|
|
int nsec_act; ///<Número de sectores activos, siempre <= que nsec
|
|
int nsec_orig; ///<Número de sectores original, se usa por si se corrige el num de sectores porque haya alguno vacío
|
|
int res_circ; ///<Restricción de circulación
|
|
int lateral; ///<Lateralidad, 0 o -1 ambos, 1 derecha, 2 izda
|
|
int tipo_shp_viaj; ///<Indica la forma en que se guardan los viajes según la enum TipoViajes
|
|
int t_sal; ///<Tiempo de salida/llegada a la instalación, en segundos
|
|
int nod_instal; ///<Nodos en la red de la instalación
|
|
int nod_plant; ///<Nodos en la red de la planta donde va a descargar
|
|
BOOL igno_ais; ///<Indica si ignorar aislados
|
|
BOOL barr_mix; ///<Indica si es barrido mixto
|
|
BOOL usa_secuen;
|
|
double f_trafic; ///<Factor de reducción de la velocidad en calles por el tráfico en tanto por 1
|
|
double calc_nsec; ///<Indica si el número de sectores es calculado (almacena el coste del sector) o impuesto (0)
|
|
double margen_sect; ///<Margen de diferencia entre sectores, en tanto por uno
|
|
double t_ini; ///<Tiempo inicial en el que comienza la ruta, en segundos, en base 24 h
|
|
double t_tto; ///<Tiempo de tratamiento, en minutos
|
|
double v_despl; ///<Velocidad de desplazamiento, en km/h. Si es 0, es determinada por la vía.
|
|
double t_conv; ///<Tiempo de trabajo por convenio, en segundos
|
|
double t_desc; ///<Tiempo de descanso de personal, en segundos
|
|
double t_despl; ///<Tiempo de desplazamiento, en segundos, sólo ida, si es ida y vuelta, x2
|
|
double t_carg; ///<Tiempo de carga y descarga, en segundos
|
|
double ancho_via; ///<Ancho medio de la vía
|
|
double coor_instal[3]; ///<Coordenadas de la instalación
|
|
double ang_lim; ///<Ángulo límite de giro, en radianes
|
|
double anchos_def[OLV_ANCH_DEF_N]; ///<Anchos por defecto de las entidades de limpieza, los lee del ini
|
|
double DESV_MAX; ///<Desviación máxima entre sectores para dejar de igualar sectores, en porcentaje
|
|
double DESV_MAX_ABS; ///<Desviación máxima para dejar de igualar, en segundos
|
|
CmapMatInt tip_conj; ///<Matriz de NconjxNconj con 1 si es nw entre conjunciones. La rellena el thread
|
|
COlivia *olv; ///<Instancia general de la utilidad
|
|
Colv_limp_thr *thr_limp; ///<Instancia del thread de limpieza, que hace las operaciones
|
|
Colv_tasks *olv_tasks;
|
|
Csock_svThread *soc;
|
|
Matrix2d<float> cost_amb; ///<Matriz de NambxNamb con los costes (seg) entre ámbitos. La rellena el thread
|
|
Cdijkstra_arch arch_dj; ///<Archivo de nodos dj
|
|
CmapMatFloat cost_conj; ///<Matriz de NconjxNconj con los costes (seg) entre conjunciones. La rellena el thread
|
|
Secu_amb *ord_sec_plan; ///<Array con la información de la secuencia y distancias de la planta a los ámbitos
|
|
Secu_amb *ord_sec; ///<Array de Namb con la información de la secuencia y distancias entre ámbitos
|
|
Djkt_ang_ady *ang_conj; ///<Matriz de Nconj, con los ángulos (º) de giro entre conjunciones. La rellena el thread
|
|
Campos_dbf camps; ///<Campos de la dbf a leer, se rellenan en constructor o con info de socket
|
|
Info_sec *sec; ///<Array de Nsec con la info de cada sector. Lo rellena el thread
|
|
Info_amb_sec *amb_sec; ///<Array de Namb con la info de los ámbitos ya asigandos a un sector. Lo rellena el thread
|
|
Info_conjs conjs; ///<Conjunciones, contiene el array de conjunciones de la red y su tamaño
|
|
Info_planif *plan; ///<Array de planificaciones, una por cada sector
|
|
Info_inw_dmin *inww_amb; ///<Array de Namb que almacena la carretera más cercana al punto inicial y al final (Nambx2)
|
|
///<del ámbito si es lineal o la más cercana si es puntual. La rellena el thread.
|
|
CartoBase carto;
|
|
std::map<int,Info_aso2> iaso; ///<Map con mismos elementos que entidades la carto, con la información asociada
|
|
std::vector<Info_tramos> *tramos;
|
|
|
|
//*************************************************************************************
|
|
//Funciones
|
|
Colv_limp(COlivia *olv);
|
|
virtual ~Colv_limp(void);
|
|
////////////////
|
|
void libera_memo_secto();
|
|
void prueba();
|
|
virtual BOOL inicia();
|
|
virtual int pon_config(char *config);
|
|
virtual void cancela();
|
|
virtual void rellena_campos();
|
|
virtual void dame_cost(double ltot, int ia, float *cost, float *cost2);
|
|
double dame_ancho(char *observ, char *tipo);
|
|
BOOL rellena_campos_ini(char *path);
|
|
BOOL guarda_campos_ini(char *path);
|
|
};
|
|
#endif |