retoques version 4.0.0.0
parent
431578ba46
commit
028928896e
|
|
@ -28,8 +28,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 3,1,6,0
|
FILEVERSION 3,4,0,0
|
||||||
PRODUCTVERSION 3,1,6,0
|
PRODUCTVERSION 3,4,0,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
|
@ -46,12 +46,12 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "VSM"
|
VALUE "CompanyName", "VSM"
|
||||||
VALUE "FileDescription", "Librería de la aplicación Olivia"
|
VALUE "FileDescription", "Librería de la aplicación Olivia"
|
||||||
VALUE "FileVersion", "3.1.6.0"
|
VALUE "FileVersion", "3.4.0.0"
|
||||||
VALUE "InternalName", "Olivia.dll"
|
VALUE "InternalName", "Olivia.dll"
|
||||||
VALUE "LegalCopyright", "OLIVIA (c) VSM 2020. All rights reserved."
|
VALUE "LegalCopyright", "OLIVIA (c) VSM 2020. All rights reserved."
|
||||||
VALUE "OriginalFilename", "Olivia.dll"
|
VALUE "OriginalFilename", "Olivia.dll"
|
||||||
VALUE "ProductName", "OLIVIA"
|
VALUE "ProductName", "OLIVIA"
|
||||||
VALUE "ProductVersion", "3.1.6.0"
|
VALUE "ProductVersion", "3.4.0.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ public:
|
||||||
CartoBase cartoAux;
|
CartoBase cartoAux;
|
||||||
std::map<int,Info_aso2> iaso; ///<Map con mismos elementos que entidades la carto, con la información asociada
|
std::map<int,Info_aso2> iaso; ///<Map con mismos elementos que entidades la carto, con la información asociada
|
||||||
std::vector<Info_tramos> *tramos;
|
std::vector<Info_tramos> *tramos;
|
||||||
|
std::vector <Coste_modif> coste_modificado;
|
||||||
std::vector<Info_aso_nw_elev> iaso_elev; ///<Map con mismos elementos que la nw, con la info de elevación de los nodos
|
std::vector<Info_aso_nw_elev> iaso_elev; ///<Map con mismos elementos que la nw, con la info de elevación de los nodos
|
||||||
double mima[N_COOR_MIMA]; ///<Coordenadas de las cuatro esquinas de la red
|
double mima[N_COOR_MIMA]; ///<Coordenadas de las cuatro esquinas de la red
|
||||||
//*************************************************************************************
|
//*************************************************************************************
|
||||||
|
|
|
||||||
|
|
@ -236,6 +236,17 @@ typedef struct Info_aso_nw
|
||||||
double velo; //velocidad de la vía, en km/h
|
double velo; //velocidad de la vía, en km/h
|
||||||
char *nomb; //nombre de la vía
|
char *nomb; //nombre de la vía
|
||||||
}Info_aso_nw;
|
}Info_aso_nw;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nueva Estructura que contiene la información asociada de la nw
|
||||||
|
*/
|
||||||
|
typedef struct Coste_modif
|
||||||
|
{
|
||||||
|
float coste;
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
}Coste_modif;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nueva Estructura que contiene la información asociada de las entidades de limpieza (aceras, bordillos, peatonales...)
|
* Nueva Estructura que contiene la información asociada de las entidades de limpieza (aceras, bordillos, peatonales...)
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -970,6 +970,7 @@ BOOL Colv_limp_thr::rellena_info_nw()
|
||||||
{
|
{
|
||||||
s=dbf.getI(icampv);
|
s=dbf.getI(icampv);
|
||||||
}
|
}
|
||||||
|
s = dbf.getI(icampv);
|
||||||
if(s<=0)
|
if(s<=0)
|
||||||
{
|
{
|
||||||
s=OLV_LIMP_VELO_DEF;//pone por def
|
s=OLV_LIMP_VELO_DEF;//pone por def
|
||||||
|
|
@ -977,7 +978,7 @@ BOOL Colv_limp_thr::rellena_info_nw()
|
||||||
|
|
||||||
olv_limp->iaso[ia].velReal = 1.0 * s * OLV_KMH2MS;;
|
olv_limp->iaso[ia].velReal = 1.0 * s * OLV_KMH2MS;;
|
||||||
if(cevita==0)
|
if(cevita==0)
|
||||||
olv_limp->iaso[ia].inf_n.velo=1.0*s*OLV_KMH2MS;
|
olv_limp->iaso[ia].inf_n.velo= olv_limp->iaso[ia].velReal;
|
||||||
else if(cevita >0)
|
else if(cevita >0)
|
||||||
{
|
{
|
||||||
olv_limp->iaso[ia].inf_n.velo = 1.0 * cevita * s * OLV_KMH2MS;
|
olv_limp->iaso[ia].inf_n.velo = 1.0 * cevita * s * OLV_KMH2MS;
|
||||||
|
|
@ -1195,6 +1196,14 @@ BOOL Colv_limp_thr::rellena_info_amb()
|
||||||
if(!olv_limp->barr_mix)
|
if(!olv_limp->barr_mix)
|
||||||
olv_limp->barr_mix=(barr_mix & (OLV_LIMP_FLG_AMB_APA | OLV_LIMP_FLG_AMB_BORD)) && (barr_mix & OLV_LIMP_FLG_AMB_ACE);
|
olv_limp->barr_mix=(barr_mix & (OLV_LIMP_FLG_AMB_APA | OLV_LIMP_FLG_AMB_BORD)) && (barr_mix & OLV_LIMP_FLG_AMB_ACE);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (olv_limp->uds_tto == OliviaDef::GeneralDef::OlvTipTtoMh_eje)
|
||||||
|
ancho = 1;
|
||||||
|
else if (olv_limp->uds_tto == OliviaDef::GeneralDef::OlvTipTtoM2h_eje)
|
||||||
|
ancho = olv_limp->ancho_via;
|
||||||
|
olv_limp->iaso[ia].inf_l.ancho = ancho;
|
||||||
|
}
|
||||||
if (icampoid >= 0)
|
if (icampoid >= 0)
|
||||||
{
|
{
|
||||||
olv_limp->iaso[ia].oid = dbf.getI(icampoid);
|
olv_limp->iaso[ia].oid = dbf.getI(icampoid);
|
||||||
|
|
@ -1658,12 +1667,10 @@ BOOL Colv_limp_thr::replica_peat()
|
||||||
ient=olv_limp->carto.get(i);
|
ient=olv_limp->carto.get(i);
|
||||||
if(!(olv_limp->iaso[ient.entity()->ref].flgs & OLV_LIMP_FLG_AMB_PEAT))
|
if(!(olv_limp->iaso[ient.entity()->ref].flgs & OLV_LIMP_FLG_AMB_PEAT))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Replica la peatonal
|
//Replica la peatonal
|
||||||
if(!ient.getCopy(&peatcp) || !olv_limp->carto.add(peatcp))
|
if(!ient.getCopy(&peatcp) || !olv_limp->carto.add(peatcp))
|
||||||
break;
|
break;
|
||||||
ientcp=olv_limp->carto.get(olv_limp->carto.getNumberEntities()-1);
|
ientcp=olv_limp->carto.get(olv_limp->carto.getNumberEntities()-1);
|
||||||
|
|
||||||
//Añade la info aso
|
//Añade la info aso
|
||||||
info_aux.reset();
|
info_aux.reset();
|
||||||
info_aux.flgs=OLV_LIMP_FLG_PEAT_REP;
|
info_aux.flgs=OLV_LIMP_FLG_PEAT_REP;
|
||||||
|
|
@ -1936,6 +1943,7 @@ BOOL Colv_limp_thr::une_amb_nw(int soloi)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Añade los segmentos a clase NW_union
|
//Añade los segmentos a clase NW_union
|
||||||
|
|
||||||
add_uniones_obj(i);
|
add_uniones_obj(i);
|
||||||
}
|
}
|
||||||
//cuida si ha salido antes por falta de memo
|
//cuida si ha salido antes por falta de memo
|
||||||
|
|
@ -1947,7 +1955,6 @@ BOOL Colv_limp_thr::une_amb_nw(int soloi)
|
||||||
|
|
||||||
if(comp_lejos) //ojo
|
if(comp_lejos) //ojo
|
||||||
comprueba_aislados(olv_limp->inww_amb);
|
comprueba_aislados(olv_limp->inww_amb);
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
//si hay algún ámbito asignado a una carretera de prohibido circular
|
//si hay algún ámbito asignado a una carretera de prohibido circular
|
||||||
//se le quita el flag a la carretera
|
//se le quita el flag a la carretera
|
||||||
|
|
@ -2134,6 +2141,8 @@ BOOL Colv_limp_thr::busca_inw_dmin_ejes(int i_amb)
|
||||||
ientamb=olv_limp->carto.getEntity(i_amb);
|
ientamb=olv_limp->carto.getEntity(i_amb);
|
||||||
refamb=ientamb.entity()->ref;
|
refamb=ientamb.entity()->ref;
|
||||||
npts=ientamb.getNumberPtos();
|
npts=ientamb.getNumberPtos();
|
||||||
|
double* pi = ientamb.getPto(0);
|
||||||
|
double* pf = ientamb.getPto(npts-1);
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
//Bucle por cada carretera de la nw
|
//Bucle por cada carretera de la nw
|
||||||
//empiezan donde acaban los ámbitos, y terminan en namb+nnw
|
//empiezan donde acaban los ámbitos, y terminan en namb+nnw
|
||||||
|
|
@ -2143,9 +2152,14 @@ BOOL Colv_limp_thr::busca_inw_dmin_ejes(int i_amb)
|
||||||
refenw=ientnw.entity()->ref;
|
refenw=ientnw.entity()->ref;
|
||||||
if(!(olv_limp->iaso[refenw].flgs & OLV_LIMP_FLG_NW))
|
if(!(olv_limp->iaso[refenw].flgs & OLV_LIMP_FLG_NW))
|
||||||
continue; //no debería, pero por si acaso
|
continue; //no debería, pero por si acaso
|
||||||
|
double* ei = ientnw.getPto(0);
|
||||||
if(olv_limp->iaso[refenw].oid==olv_limp->iaso[refamb].oid)
|
double* ef = ientnw.getPto(ientnw.getNumberPtos()-1);
|
||||||
|
if (ei[0] == pi[0] && ef[0] == pf[0])
|
||||||
break;
|
break;
|
||||||
|
/*
|
||||||
|
if(olv_limp->iaso[refenw].oid==olv_limp->iaso[refamb].oid)//todo a elena
|
||||||
|
break;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
if(inw>=olv_limp->n_amb+olv_limp->n_nw || pirate)
|
if(inw>=olv_limp->n_amb+olv_limp->n_nw || pirate)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
@ -4067,7 +4081,7 @@ double Colv_limp_thr::dame_ang_conj(int ic, int i, int j)
|
||||||
}
|
}
|
||||||
|
|
||||||
ang=Colv_geom::ang_vect(v[0],v[1]);
|
ang=Colv_geom::ang_vect(v[0],v[1]);
|
||||||
if(ang> OLV_PI)
|
//if(ang> OLV_PI)
|
||||||
ang=OLV_PI-ang;
|
ang=OLV_PI-ang;
|
||||||
|
|
||||||
return ang;
|
return ang;
|
||||||
|
|
@ -4148,16 +4162,198 @@ void Colv_limp_thr::revisa_calles_cortadas()
|
||||||
// return;
|
// return;
|
||||||
for(ic=0;ic<olv_limp->conjs.n;ic++)
|
for(ic=0;ic<olv_limp->conjs.n;ic++)
|
||||||
{
|
{
|
||||||
|
Coste_modif coste_old;
|
||||||
nady=olv_limp->ang_conj[ic].nady;
|
nady=olv_limp->ang_conj[ic].nady;
|
||||||
|
/*if (nady == 1)
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
j = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{*/
|
||||||
|
for (i = 0; i < nady; i++)
|
||||||
|
{
|
||||||
|
j = -1;
|
||||||
|
k = nady;
|
||||||
|
//localiza entrada a ic
|
||||||
|
if (olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] >= MAYUSCULO)
|
||||||
|
continue;
|
||||||
|
//localiza al menos una salida
|
||||||
|
for (j = 0; j < nady; j++)
|
||||||
|
{
|
||||||
|
//if (j == i) La salida puede ser tambien i
|
||||||
|
// continue;
|
||||||
|
|
||||||
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO &&
|
||||||
|
olv_limp->ang_conj[ic].angs[i][j])
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//por cada entrada a ic al menos tiene que tener una salida
|
||||||
|
if (j >= nady)
|
||||||
|
{
|
||||||
|
//pone coste extra de i a ic
|
||||||
|
// coste_old.i = olv_limp->ang_conj[ic].i_conjs[i];
|
||||||
|
coste_old.i = olv_limp->ang_conj[ic].i_conjs[i];
|
||||||
|
coste_old.j = ic;
|
||||||
|
coste_old.coste = olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic];
|
||||||
|
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(olv_limp->ang_conj[ic].i_conjs[i], ic, coste_old.coste * 10);
|
||||||
|
|
||||||
|
//por la entrada i a ic es cortada, abre salidas
|
||||||
|
|
||||||
|
for (j = 0; j < nady; j++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO)
|
||||||
|
{
|
||||||
|
//abre salidas con un coste extra
|
||||||
|
olv_limp->ang_conj[ic].angs[i][j] = 1;
|
||||||
|
|
||||||
|
coste_old.i = ic;
|
||||||
|
coste_old.j = olv_limp->ang_conj[ic].i_conjs[j];
|
||||||
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]];
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[j], coste_old.coste * 10);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
/*
|
||||||
|
if(i<nady && k<nady)
|
||||||
|
{
|
||||||
|
//solo tiene una calle por donde volver
|
||||||
|
olv_limp->ang_conj[ic].angs[i][k] = 1;
|
||||||
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[k]] < MAYUSCULO)
|
||||||
|
{
|
||||||
|
coste_old.i = ic;
|
||||||
|
coste_old.j = olv_limp->ang_conj[ic].i_conjs[k];
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[k], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[k]] * 10);
|
||||||
|
}
|
||||||
|
if(olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] < MAYUSCULO)
|
||||||
|
{
|
||||||
|
coste_old.i = olv_limp->ang_conj[ic].i_conjs[i];
|
||||||
|
coste_old.j = ic;
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(olv_limp->ang_conj[ic].i_conjs[i], ic, olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] * 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
/*else
|
||||||
|
{
|
||||||
|
for (i = 0; i < nady; i++)
|
||||||
|
{
|
||||||
|
if (!(olv_limp->cost_conj[olv_limp->ang_conj[ic].i_conjs[i]][ic] < MAYUSCULO))
|
||||||
|
continue;
|
||||||
|
for (j = 0; j < nady; j++)
|
||||||
|
{
|
||||||
|
if (j == i)
|
||||||
|
continue;
|
||||||
|
if (!(olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (j >= nady)
|
||||||
|
{
|
||||||
|
//de la conjunción i no se puede ir a otra que no sea ella misma
|
||||||
|
}
|
||||||
|
if (!olv_limp->ang_conj[ic].angs[i][j])
|
||||||
|
{
|
||||||
|
//comprueba si se puede ir de i a j o de j a i
|
||||||
|
if()
|
||||||
|
}
|
||||||
|
}
|
||||||
for(i=0;i<nady;i++)
|
for(i=0;i<nady;i++)
|
||||||
{
|
{
|
||||||
for(j=0;j<nady;j++)
|
for(j=0;j<nady;j++)
|
||||||
{
|
{
|
||||||
|
if (j == i)
|
||||||
|
continue;
|
||||||
if(!olv_limp->ang_conj[ic].angs[i][j])
|
if(!olv_limp->ang_conj[ic].angs[i][j])
|
||||||
{
|
{
|
||||||
//si el ángulo es prohibido, mira a ver si hay más conjunciones
|
//si el ángulo es prohibido, mira a ver si hay más conjunciones
|
||||||
for(k=0;k<nady;k++)
|
for(k=0;k<nady;k++)
|
||||||
{
|
{
|
||||||
|
if (k == i || k==j)
|
||||||
|
continue;
|
||||||
|
if(olv_limp->ang_conj[ic].i_conjs[k]<0 || olv_limp->ang_conj[ic].i_conjs[k]>=olv_limp->conjs.n)
|
||||||
|
{
|
||||||
|
olvlog(LOG_TODO,"olv_limp_t","Ojo ang_conj fuera de límites ic %ld, k %ld",ic,k);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
/* if(((k!=i) || (k!=j)) && (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[k]].n>1))
|
||||||
|
break; /
|
||||||
|
if((olv_limp->ang_conj[ic].i_conjs[k]!=olv_limp->ang_conj[ic].i_conjs[i]) &&
|
||||||
|
(olv_limp->ang_conj[ic].i_conjs[k]!=olv_limp->ang_conj[ic].i_conjs[j]) &&
|
||||||
|
(olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[k]]<MAYUSCULO) &&
|
||||||
|
(olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[k]].n>1))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(k>=nady)//estos nodos son los únicos que tiene para entrar y salir
|
||||||
|
{
|
||||||
|
olv_limp->ang_conj[ic].angs[i][j]=1;
|
||||||
|
//coste en calles cortadas
|
||||||
|
int rnw = -1;
|
||||||
|
Coste_modif coste_old;
|
||||||
|
coste_old.i = ic;
|
||||||
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO)
|
||||||
|
{
|
||||||
|
|
||||||
|
coste_old.j = j;
|
||||||
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]];
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[j], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] * 10);
|
||||||
|
}
|
||||||
|
if (i!=j && olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] < MAYUSCULO)
|
||||||
|
{
|
||||||
|
coste_old.j = i;
|
||||||
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]];
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[i], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] * 10);
|
||||||
|
if (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].n == 1)
|
||||||
|
rnw = olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].refnw0;
|
||||||
|
}
|
||||||
|
/*if (rnw != -1)
|
||||||
|
{
|
||||||
|
|
||||||
|
}*
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*************************************************************************************
|
||||||
|
/**
|
||||||
|
* Resvisa los ángulos, de forma que si hay algún giro "prohibido" de 180º, en caso
|
||||||
|
* de que sean calles cortadas o sin salida, los pone a ok
|
||||||
|
*/
|
||||||
|
void Colv_limp_thr::revisa_calles_cortadas_old()
|
||||||
|
{
|
||||||
|
int ic, i, j, k, nady;
|
||||||
|
//if(olv_limp->res_circ==OLV_RES_NO)
|
||||||
|
// return;
|
||||||
|
for (ic = 0; ic < olv_limp->conjs.n; ic++)
|
||||||
|
{
|
||||||
|
nady = olv_limp->ang_conj[ic].nady;
|
||||||
|
|
||||||
|
for (i = 0; i < nady; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < nady; j++)
|
||||||
|
{
|
||||||
|
if (j == i)
|
||||||
|
continue;
|
||||||
|
if (!olv_limp->ang_conj[ic].angs[i][j])
|
||||||
|
{
|
||||||
|
//si el ángulo es prohibido, mira a ver si hay más conjunciones
|
||||||
|
for (k = 0; k < nady; k++)
|
||||||
|
{
|
||||||
|
if (k == i || k == j)
|
||||||
|
continue;
|
||||||
if (olv_limp->ang_conj[ic].i_conjs[k] < 0 || olv_limp->ang_conj[ic].i_conjs[k] >= olv_limp->conjs.n)
|
if (olv_limp->ang_conj[ic].i_conjs[k] < 0 || olv_limp->ang_conj[ic].i_conjs[k] >= olv_limp->conjs.n)
|
||||||
{
|
{
|
||||||
olvlog(LOG_TODO, "olv_limp_t", "Ojo ang_conj fuera de límites ic %ld, k %ld", ic, k);
|
olvlog(LOG_TODO, "olv_limp_t", "Ojo ang_conj fuera de límites ic %ld, k %ld", ic, k);
|
||||||
|
|
@ -4174,6 +4370,31 @@ void Colv_limp_thr::revisa_calles_cortadas()
|
||||||
if (k >= nady)//estos nodos son los únicos que tiene para entrar y salir
|
if (k >= nady)//estos nodos son los únicos que tiene para entrar y salir
|
||||||
{
|
{
|
||||||
olv_limp->ang_conj[ic].angs[i][j] = 1;
|
olv_limp->ang_conj[ic].angs[i][j] = 1;
|
||||||
|
//coste en calles cortadas
|
||||||
|
int rnw = -1;
|
||||||
|
Coste_modif coste_old;
|
||||||
|
coste_old.i = ic;
|
||||||
|
if (olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] < MAYUSCULO)
|
||||||
|
{
|
||||||
|
|
||||||
|
coste_old.j = j;
|
||||||
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]];
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[j], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[j]] * 10);
|
||||||
|
}
|
||||||
|
if (i != j && olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] < MAYUSCULO)
|
||||||
|
{
|
||||||
|
coste_old.j = i;
|
||||||
|
coste_old.coste = olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]];
|
||||||
|
olv_limp->coste_modificado.push_back(coste_old);
|
||||||
|
olv_limp->cost_conj.set(ic, olv_limp->ang_conj[ic].i_conjs[i], olv_limp->cost_conj[ic][olv_limp->ang_conj[ic].i_conjs[i]] * 10);
|
||||||
|
if (olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].n == 1)
|
||||||
|
rnw = olv_limp->conjs.inc[olv_limp->ang_conj[ic].i_conjs[i]].refnw0;
|
||||||
|
}
|
||||||
|
/*if (rnw != -1)
|
||||||
|
{
|
||||||
|
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -7906,7 +8127,6 @@ BOOL Colv_limp_thr::planifica_fin()
|
||||||
//Si es barrido mixto hay que copiar la info en las que no se ha sectorizado
|
//Si es barrido mixto hay que copiar la info en las que no se ha sectorizado
|
||||||
if(olv_limp->barr_mix)
|
if(olv_limp->barr_mix)
|
||||||
copia_info_barr_mix();
|
copia_info_barr_mix();
|
||||||
|
|
||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
//prepara los datos para guardarlos
|
//prepara los datos para guardarlos
|
||||||
if(!genera_rut_ctrl(olv_limp->nsec, olv_limp->plan, FALSE))
|
if(!genera_rut_ctrl(olv_limp->nsec, olv_limp->plan, FALSE))
|
||||||
|
|
@ -8037,6 +8257,16 @@ BOOL Colv_limp_thr::genera_planif_aux(int is, Info_sec *ss, Info_planif *pp, int
|
||||||
is_uno=FALSE;
|
is_uno=FALSE;
|
||||||
ref_nw=0;
|
ref_nw=0;
|
||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
|
//recompone costes
|
||||||
|
/*int cmn = olv_limp->coste_modificado.size();
|
||||||
|
for (int i = 0; i < olv_limp->coste_modificado.size(); i++)
|
||||||
|
{
|
||||||
|
Coste_modif cm = olv_limp->coste_modificado[i];
|
||||||
|
olv_limp->cost_conj.set(cm.i, cm.j, cm.coste);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(nsecu==1)
|
if(nsecu==1)
|
||||||
{
|
{
|
||||||
|
|
@ -8223,7 +8453,15 @@ BOOL Colv_limp_thr::genera_planif_aux(int is, Info_sec *ss, Info_planif *pp, int
|
||||||
}
|
}
|
||||||
else//es carretera
|
else//es carretera
|
||||||
{
|
{
|
||||||
|
//todo_costes_virtuales
|
||||||
ref_nw=ref_j;
|
ref_nw=ref_j;
|
||||||
|
if (olv_limp->iaso[ref_nw].inf_n.velo != olv_limp->iaso[ref_nw].velReal && olv_limp->iaso[ref_nw].velReal>0)
|
||||||
|
{
|
||||||
|
//poner coste real
|
||||||
|
cost = ltot / olv_limp->iaso[ref_nw].velReal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
tp=OLV_PLAN_TIP_NW;
|
tp=OLV_PLAN_TIP_NW;
|
||||||
dt=OLV_DESP;
|
dt=OLV_DESP;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -197,6 +197,7 @@ public:
|
||||||
|
|
||||||
//Cálculo del coste entre ámbitos
|
//Cálculo del coste entre ámbitos
|
||||||
void invierte_nodos(int nn, int KK,Secu_amb * ord_sec, BOOL *pirate);
|
void invierte_nodos(int nn, int KK,Secu_amb * ord_sec, BOOL *pirate);
|
||||||
|
void revisa_calles_cortadas_old();
|
||||||
BOOL calcula_cost_amb();
|
BOOL calcula_cost_amb();
|
||||||
BOOL inicia_cost_amb();
|
BOOL inicia_cost_amb();
|
||||||
BOOL calcula_cost_amb_fin();
|
BOOL calcula_cost_amb_fin();
|
||||||
|
|
|
||||||
|
|
@ -82,8 +82,8 @@ MAINICON ICON "favicon.ico"
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 3,1,7,0
|
FILEVERSION 4,0,0,0
|
||||||
PRODUCTVERSION 3,1,7,0
|
PRODUCTVERSION 4,0,0,0
|
||||||
FILEFLAGSMASK 0x17L
|
FILEFLAGSMASK 0x17L
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
|
@ -100,12 +100,12 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "VSM"
|
VALUE "CompanyName", "VSM"
|
||||||
VALUE "FileDescription", "Launcher de la aplicación Olivia"
|
VALUE "FileDescription", "Launcher de la aplicación Olivia"
|
||||||
VALUE "FileVersion", "3.1.7.0"
|
VALUE "FileVersion", "4.0.0.0"
|
||||||
VALUE "InternalName", "OliviaTasks"
|
VALUE "InternalName", "OliviaTasks"
|
||||||
VALUE "LegalCopyright", "OLIVIA (c) VSM 2020. All rights reserved."
|
VALUE "LegalCopyright", "OLIVIA (c) VSM 2020. All rights reserved."
|
||||||
VALUE "OriginalFilename", "OliviaTasks.exe"
|
VALUE "OriginalFilename", "OliviaTasks.exe"
|
||||||
VALUE "ProductName", "OliviaTasks"
|
VALUE "ProductName", "OliviaTasks"
|
||||||
VALUE "ProductVersion", "3.1.7.0"
|
VALUE "ProductVersion", "4.0.0.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ class UTILES_EXPORT CartoBase: public SetEntities, public SetPtsR, public DataIa
|
||||||
friend class CartoBaseInfoBuilder;
|
friend class CartoBaseInfoBuilder;
|
||||||
friend class CartoPto;
|
friend class CartoPto;
|
||||||
friend class CartoLine;
|
friend class CartoLine;
|
||||||
|
friend class CartoBaseTopologyManager;
|
||||||
private:
|
private:
|
||||||
//info interna-------------------------------
|
//info interna-------------------------------
|
||||||
int ref;//referencia para el siguiente elemento
|
int ref;//referencia para el siguiente elemento
|
||||||
|
|
@ -56,7 +57,7 @@ public:
|
||||||
CartoBaseInfoEntity get(int i);//acceso a entidad iesima (modo lectura)
|
CartoBaseInfoEntity get(int i);//acceso a entidad iesima (modo lectura)
|
||||||
CartoBaseInfoEntity getRef(int r);//acceso a entidad con referencia r (modo lectura)
|
CartoBaseInfoEntity getRef(int r);//acceso a entidad con referencia r (modo lectura)
|
||||||
|
|
||||||
|
bool compruebaPts();
|
||||||
//añade elementos
|
//añade elementos
|
||||||
bool add(CartoEntity& element);
|
bool add(CartoEntity& element);
|
||||||
bool add(CartoBase& cad);
|
bool add(CartoBase& cad);
|
||||||
|
|
@ -106,6 +107,8 @@ public:
|
||||||
virtual bool IaGetVal( int refEnt, int icol, int* v );
|
virtual bool IaGetVal( int refEnt, int icol, int* v );
|
||||||
virtual bool IaFinW(){return true;}
|
virtual bool IaFinW(){return true;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
int add(CartoBaseEntity* src);
|
int add(CartoBaseEntity* src);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue