Servicios web
Documentación sobre la funcionalidad Cálculo de rutas disponible a través del webservice HTTP-JSON/XML de la plataforma CERCALIA.
La URL base a utilizar es:
- JSON: http://lb.cercalia.com/services/json?key=<clave API*>
- XML: http://lb.cercalia.com/services/xmlgeo?key=<clave API*>
* Clave de seguridad. Es la misma KEY que para la API de mapas de Cercalia
Las peticiones HTTP se pueden enviar en GET o POST
Las respuestas son en formato JSON / XML
Ruta en coche
Petición:
Ejemplo de petición:
&cmd=route&report=0&mo_o=41.120380332,1.244894304&mo_d=39.584958220,2.663190407&mocs=gdd&weight=time&iweight=realtime,toll,ferry&stagegeometry=0&stagegeometrytolerance=0&stagegeometrysrs=EPSG:4326
Donde:
cmd= tipo de petición de cercalia
report=0 / report = 1 indica si se quiere obtener o no el report textual de ruta. Si no es necesario, para una respuesta más rápida utilizar &report=0
mo_o= coordenadas origen (Y,X)
mo_d= coordenadas destino (Y,X)
mo_1= punto de paso 1 (mo_1), 2 (mo_2), etc
mocs=gdd indica que las coordenadas de origen / destino están en geográficas
weight= tipo de ruta:
time (más rápida)
distance (más corta)
money (evitar peajes)
realtime (más rápida, en base al estado actual del tráfico y las vías cerradas).
iweight= proporciona información adicional sobre el cálculo de ruta. Permite indicar diferentes parámetros, separados por coma:
realtime: Utilizar este parámetro para obtener el tiempo de la ruta, en base al estado actual del tráfico.
toll: Utilizar este parámetro para obtener si la ruta pasa por un tramo de vía de peaje. Utilizar solo si &report=0
ferry: Utilizar este parámetro para obtener si la ruta pasa por un tramo de ferry. Utilizar solo si &report=0
stagegeometry=1/0 Incluir o no la geometría de la ruta (polilínea) en formato WKT. En caso que la petición incluya puntos de paso, la geometría se divide para cada etapa
stagegeometrytolerance=10 Indica la tolerancia (simplificación) en metros para la geometría del parámetro anterior. Por defecto: 100 m
stagegeometrysrs=EPSG:4326 Sistema de coordenadas de la geometría de la ruta (polilínea). EPSG:4326 = coordenadas geográficas
Cálculo de rutas en función de la hora de salida:
- weight= tipo de ruta:
- sptime (más rápida en función de la hora de salida)
- spmoney (más rápida en función de la hora de salida sin pasar por vías de peaje)
- departuretime= Fecha y hora de salida en formato ISO 8601. Ejemplo para hora UTC: 2019-10-16T07:30:12Z *Solamente funciona si se indican los valores de weight indicados.
Opcional:
mo_1,n= coordenadas puntos de paso (Y,X) -> 1, ... n
lang= idioma del texto del report, en caso de &report=1.
Posibles valores lang:
Valor | Significado |
---|---|
es | Español |
fr | Francés |
de | Alemán |
it | Italiano |
ca | Catalán |
pt | Portugués |
en | Inglés |
nl | Holandés |
Parámetros avanzados: optimización de ruta:
reorder=1 Utilizar este parámetro para optimizar una ruta por distancia o tiempo, con un máximo de 100 paradas o puntos de paso. El origen y el destino se mantienen fijos
Franjas horarias de visita
:
Valor | Significado |
---|---|
STARTWINDOW_x | Fecha y hora de inicio de la franja horaria en la que se permite llegar a la parada X en formato ISO 8601. Sólo se usa en rutas calculadas con reorder=1. Por ejemplo: 2020-04-22T06:00:00Z |
ENDWINDOW_x | Fecha y hora del fin de la franja horaria en la que se permite llegar a la parada X en formato ISO 8601. Sólo se usa en rutas calculadas con reorder=1. Por ejemplo: 2020-04-22T07:00:00Z |
priority_x Valor de 0 a 100 indicando la prioridad para realizar esta parada. Sólo se usa en rutas calculadas con reorder=1. Si el calculador no puede satisfacer todas las franjas horarias. Devolverá una ruta con las paradas que su suma de prioridades sea más alta.
Respuesta:
<cercalia cmd="route" version="1">
<route dest="%" dist="356.697" hasferries="1" hastolls="1" icost="67707521,125,3" id="16474053,16410248|0.09513969,0.32824484" iweight="realtime,toll,ferry" orig="%" realtime="18:50:27" time="18:48:27" weight="time">
<stoplist>
<stop by="false" id="o">
<mo id="">
<coord x="1.24489430" y="41.120380332"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="">
<coord x="2.663190407" y="39.584958220"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="%" dest_stop_id="d" dist="356.697" orig="%" orig_stop_id="o" realtime="18:50:27" time="18:48:27" weight=""/>
</stages>
</route>
<server>http://c6.cercalia.com</server>
</cercalia>
Donde:
id= ID de ruta, necesario para pedir la geometría de la ruta
dist= distancia ruta, en km
time= tiempo total de la ruta (HH:MM:SS)*
realtime= tiempo total de la ruta, en base al estado actual del tráfico (HH:MM:SS)*, si iweight=realtime
hasferries= indica si la ruta pasa por un tramo de ferry (se devuelve si en la petición se añade &iweight=ferry y &report=0)
hastolls= indica si la ruta pasa por un tramo de vía de peaje (se devuelve si en la petición se añade &iweight=toll y &report=0)
* Nota:
Para trayectos que duren más de un día, el tiempo no se reparte en años, meses y días, sino que queda todo acumulado en las horas. Por ejemplo: 2 días se expresaría como "48:00:00", 10 días se expresaría como "240:00:00".
El XML de respuesta de Cercalia contiene el elemento WKT con la geometría expresada en "Well-known Text Representation for Geometry".
"Well-known Text Representation for Geometry" es un estándar para el intercambio de geometrías definido por Open Geospatial Consortium. La siguiente tabla muestra ejemplos de este formato:
Geometry Type | Text Literal Representation | Comment |
---|---|---|
Point | 'POINT (10 10)' | a Point |
LineString | 'LINESTRING ( 10 10, 20 20, 30 40)' | a LineString with 3 points |
Polygon | 'POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))' | a Polygon with 1 exteriorRing and 0 interiorRings |
Multipoint | 'MULTIPOINT (10 10, 20 20)' | a MultiPoint with 2 points |
MultiLineString | 'MULTILINESTRING ((10 10, 20 20), (15 15, 30 15))' | a MultiLineString with 2 linestrings |
MultiPolygon | 'MULTIPOLYGON ( ((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 70, 80 60, 60 60 ) ))' | a MultiPolygon with 2 polygons |
GeomCollection | 'GEOMETRYCOLLECTION (POINT (10 10), POINT (30 30), LINESTRING (15 15, 20 20))' | a GeometryCollection consisting of 2 Point values and a LineString value |
Para mayor información consulte el documento OpenGIS® Implementation Specification for Geographic information - Simple feature access - Part 1: Common architecture.
En nuestro caso las geometrías devueltas siempre serán de tipo LineString (excepto si se piden subetapas no consecutivas o hay agrupaciones de subetapas, casos en los que se devolverá el tipo MultiLineString).
Report textual de ruta:
En caso de activar el report (&report=1), se incluirá la descripción textual de la ruta. El idioma del texto vendrá asociado al parámetro &lang=.
<cercalia cmd="route" version="1">
<route coste_v1="0.0" coste_v2="0.0" coste_v3="0.0" dest="%" dist="1.2" icost="223570" id="13171123,13177702|0.18124574540503743,0.8983606557377048|" iweight="realtime" lang="es" mindist="1000" orig="%" realtime="00:03:43" time="00:03:33" weight="time">
<stoplist>
<stop by="false" id="o">
<mo id="">
<coord x="-413030" y="4900888"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="">
<coord x="-411582" y="4900474"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage coste_v1="0.0" coste_v2="0.0" coste_v3="0.0" dest="%" dest_stop_id="d" dist="1.2" id="1,2,3,4,5,6,7" orig="%" orig_stop_id="o" time="00:03:33">
<wkt/>
<sub_stage angle="353.0" id="1,2,3,4,5" name="Calle de Sagasta" type="L">
<start x="-413030" y="4900888"/>
<end x="-411665" y="4900635"/>
<time>00:02:52</time>
<time_sum>00:02:52</time_sum>
<dist>1.0</dist>
<dist_sum>1.0</dist_sum>
<time_seconds>173</time_seconds>
<dist_meters>1049</dist_meters>
<view>0</view>
<desc>
Partir de <b>%</b> por Calle de Alberto Aguilera hasta llegar al cruce con Glorieta de Ruiz Jiménez.<br>Seguir recto por Glorieta de Ruiz Jiménez hasta llegar al cruce con Calle de Carranza.<br>Seguir recto por Calle de Carranza hasta llegar al cruce con Glorieta de Bilbao.<br>Girar hacia la derecha y seguir por Glorieta de Bilbao hasta llegar al cruce con Calle de Sagasta.<br>Seguir recto por Calle de Sagasta hasta llegar al cruce con Calle de Antonio Flores
</desc>
<municipios/>
<poilist/>
<arealist>
<area name="Madrid" type="U"/>
</arealist>
</sub_stage>
<sub_stage angle="65.0" id="6,7" name="Calle de Serrano Anguita" type="L">
<start x="-411665" y="4900635"/>
<end x="-411582" y="4900474"/>
<time>00:00:40</time>
<time_sum>00:03:33</time_sum>
<dist>0.2</dist>
<dist_sum>1.2</dist_sum>
<time_seconds>41</time_seconds>
<dist_meters>166</dist_meters>
<view>0</view>
<desc>
Girar hacia la derecha y seguir por Calle de Antonio Flores hasta llegar al cruce con Calle de Serrano Anguita.<br>Girar hacia la izquierda y seguir por Calle de Serrano Anguita en dirección a <b>%</b>.
</desc>
<municipios/>
<poilist/>
<arealist>
<area name="Madrid" type="U"/>
</arealist>
</sub_stage>
</stage>
</stages>
</route>
<server>http://cercalia-tomcat-lbs-instance4:8080</server>
</cercalia>
Ruta a pie
El cálculo de rutas a pie se realiza en los servidores estándar de Cercalia.
Petición:
Ejemplo de petición:
&cmd=route&mo_o=[2.825707,41.973398|o]&mo_d=[2.825536,41.970830|d]&mocs=4326&weight=time&stagegeometry=true&stagegeometrysrs=EPSG:4326&net=espw&report=0
Donde:
cmd= tipo de petición de cercalia
report=0 indica que no se quiere obtener el report textual de ruta (obligatorio para que no dé error)
mo_o= coordenadas origen (Y,X)
mo_d= coordenadas destino (Y,X)
weight= tipo de ruta:
time (más rápida)
distance (más corta)
stagegeometry=1 Indica que la respuesta debe incluir una geometría en formato WKT. En caso que la petición incluya puntos de paso, la geometría se divide para cada etapa
stagegeometrysrs=EPSG:4326 indica que la geometría de la polilínia se devolverá en coordenadas geográficas
mocs=epsg:4326 indica que las coordenadas de origen / destino están en geográfica
net= red/ país a utilizar (espw, o usaw)
Opcional:
mo_1,n= coordenadas puntos de paso (Y,X) -> 1, ... n
Parámetros avanzados: optimización de ruta:
reorder=1 Utiliza este parámetro para optimizar una ruta por distancia o tiempo, con un máxima de 100 paradas o puntos de paso. El origen y el destino se mantienen fijos
Esta funcionalidad está disponible para todos los tipos de ruta.
Respuesta:
<cercalia cmd="route" version="1">
<route dest="d" dist="0.306" id="9911054,9868590|0.6062123,0.5|espw" orig="o" time="00:04:35" weight="time">
<stoplist>
<stop by="false" id="o">
<mo id="o">
<coord x="2.825704625115002" y="41.97339605714581"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="d">
<coord x="2.8255339452110193" y="41.97082858283375"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="d" dest_stop_id="d" dist="0.306" orig="o" orig_stop_id="o" time="00:04:35" weight="time">
<wkt cs="EPSG:4326" tolerance="100.0">
LINESTRING (2.825668865971416 41.9734025479364, 2.8255968272809073 41.97318154631235, 2.8255159789053366 41.97294692425489, 2.82554292836386 41.97229668143117, 2.8258303892547785 41.97087550888706, 2.8255339452110193 41.97082858283375)
</wkt>
</stage>
</stages>
</route>
<server>lb3.cercalia.com</server>
</cercalia>
Donde:
id= ID de ruta, necesario para pedir la geometría de la ruta
dist= distancia ruta, en km
time= tiempo total de la ruta (HH:MM:SS)*
* Nota:
Para trayectos que duren más de un día, el tiempo no se reparte en años, meses y días, sino que queda todo acumulado en las horas. Por ejemplo: 2 días se expresaría como "48:00:00", 10 días se expresaría como "240:00:00".
Ruta para camiones (truck routing)
Funcionalidad que permite obtener la ruta específica para camiones. Incluye:
- Calcular la distancia y tiempo parcial y acumulado entre cada punto.
- Obtener el recorrido en formato polilínea (WKT).
- Obtener el coste de peaje, en caso de pasar por vías de peaje.
- Especificar las características físicas del camión (altura, peso, longitud, ancho), para que la ruta evite los tramos de vía por los que no puede circular.
Esta funcionalidad está disponible a través de:
- Webservice HTTP-JSON
El formato de la petición & respuesta es el mismo que en el caso de una ruta normal, pero se le añaden unos parámetros específicos para indicar los tipos de restricciones a tener en cuenta.
Parámetros de petición
Parámetros comunes de cálculo de ruta:
cmd= tipo de petición de cercalia
report=0 indica que no se quiere obtener el report textual de ruta (respuesta más rápida)
mo_o= coordenadas origen (Y,X)
mo_d= coordenadas destino (Y,X)
mo_1,n= coordenadas puntos de paso (Y,X) -> 1,...n
weight= tipo de ruta:
time (más rápida)
distance (más corta)
money (evitar peajes)
realtime (más rápida, en base al estado actual del tráfico y las vías cerradas).
rimp (mercancías peligrosas)
iweight= proporciona información adicional sobre el cálculo de ruta. Permite indicar diferentes parámetros, separados por coma:
realtime: Utilizar este parámetro para obtener el tiempo de la ruta, en base al estado actual del tráfico.
toll: Utilizar este parámetro para obtener si la ruta pasa por un tramo de vía de peaje. Utilizar solo si &report=0
ferry: Utilizar este parámetro para obtener si la ruta pasa por un tramo de ferry. Utilizar solo si &report=0
mocs=gdd indica que las coordenadas están en geográficas
stagegeometry=1/0 Incluir o no la geometría de la ruta (polilínea) en formato WKT. En caso que la petición incluya puntos de paso, la geometría se divide para cada etapa
stagegeometrytolerance=10 Indica la tolerancia (simplificación) en metros para la geometría del parámetro anterior. Por defecto: 100 m
stagegeometrysrs=EPSG:4326 Sistema de coordenadas de la geometría de la ruta (polilínea). EPSG:4326 = coordenadas geográficas
Parámetros específicos vehículo:
Para utilizar esta funcionalidad es necesario añadir el parámetro &net=logistics
Parámetro | Descripción |
VWEIGHT | Peso del vehículo expresado en toneladas. |
VAXLEWEIGHT | Peso máximo de los ejes del vehículo expresado en toneladas. |
VHEIGHT | Altura máxima del vehículo expresada en metros. |
VLENGTH | Longitud del vehículo expresada en metros. |
VWIDTH | Ancho del vehículo expresado en metros. |
VMAXVEL | Velocidad máxima del vehículo expresada en Km/h |
Parámetros específicos para restricciones temporales para la circulación de vehículos de más de 7,5 tn (solo disponible para España):
Para utilizar esta funcionalidad es necesario añadir el parámetro &net=logistics
Parámetro | Descripción |
TRSTART | Parámetro para indicar la fecha y hora de salida medido en milisegundos desde epoch (1 de Enero de 1970 UTC). Sólo se tiene en cuenta para evitar las restricciones temporales. |
TRDEPARTURETIME | Parámetro para indicar la fecha y hora de salida en formato ISO 8601. Ejemplo para hora UTC: 2007-04-05T14:30:12Z. Sólo se tiene en cuenta para evitar las restricciones temporales. Se convierte a formato TRSTART de forma interna. |
TRINFODATE | Parámetro para indicar la fecha salida, e informar (no evitar) de las restricciones temporales formato AAAAMMDD. |
TRINFODAYS | Número de días a partir de TRINFODATE sobre las que informaran de las restricciones temporales. (Por defecto 1) |
Ejemplo de petición:
&cmd=route&net=logistics&mo_o=40.418372,-3.676642&mo_d=40.432961,-3.649504&mo_1=40.429048,-3.666815&mo_2=40.429446,-3.653268&weight=time&VWEIGHT=12&mocs=gdd
Parámetros avanzados: optimización de ruta:
reorder=1 Utiliza este parámetro para optimizar una ruta por distancia o tiempo, con un máxima de 100 paradas o puntos de paso. El origen y el destino se mantienen fijos
- Restricciones horarias de cada parada:
Esta funcionalidad está disponible para todos los tipos de ruta.
Formato de respuesta
Elem |
Elem |
Elem |
Elem |
Elem |
Descripción |
|
@id |
|
|
|
|
Identificador de la ruta |
|
@orig |
|
|
|
|
Nombre del origen de la ruta |
|
@dest |
|
|
|
|
Nombre del destino de la ruta |
|
@lang |
|
|
|
|
Idioma del report |
|
@dist |
|
|
|
|
Distancia total de la ruta calculada |
|
@time |
|
|
|
|
Tiempo total de la ruta calculada |
|
@weight |
|
|
|
|
Coste usado en el cálculo de ruta |
|
stoplist |
|
|
|
|
|
|
stop |
|
|
|
|
||
@id |
|
|
Identificador de parada (orig, dest, stage1, stage2) |
|||
ge |
|
|
La parada es una geoentidad |
|||
@id |
|
Código de la geoentidad |
||||
@name |
|
Nombre de la geoentidad |
||||
@type |
|
Tipo de geoentidad (ctry,ct,st,...) |
||||
name |
Valor |
Nombre de la geoentidad |
||||
city |
@id |
Código de localidad |
||||
Valor |
Nombre de localidad |
|||||
municipality |
@id |
Código de municipio |
||||
valor |
Nombre de municipio |
|||||
subregion |
@id |
Código de subregión |
||||
valor |
Nombre de subregión |
|||||
region |
@id |
Código de región |
||||
valor |
Nombre de región |
|||||
country |
@id |
Código de país |
||||
valor |
Nombre de país |
|||||
coord |
@x |
Coordenada x |
||||
@y |
Coordenada y |
|||||
poi |
|
|
La parada es un punto de interés |
|||
@category_id |
|
Categoría del punto de interés |
||||
@id |
|
identificador del punto de interés |
||||
name |
Valor |
Nombre del punto de interés |
||||
info |
Valor |
Información del punto de interés |
||||
coord |
@x |
Coordenada x |
||||
@y |
Coordenada y |
|||||
mo |
|
|
La parada es un mobile obect |
|||
@id |
|
Idntificador objeto móvil |
||||
satus |
Valor |
Estado |
||||
desc |
Valor |
Descripción |
||||
coord |
@x |
Coordenada x |
||||
@y |
Coordenada y |
|||||
getpoicats |
|
|
|
|
POI de la ruta a obtener. Invalida la cache de rutas calculadas. |
|
@infoxml |
|
|
|
Obtener info extendida XML |
||
poicat |
|
|
|
Categoría (y subcategoría) de POI. Repetitivo. |
||
estages |
|
|
|
|
|
|
stage |
|
|
|
|
||
@orig |
|
|
Origen de la etapa |
|||
@dest |
|
|
Destino de la etapa |
|||
substage |
|
|
|
|||
@id |
|
Identificador de subetapa |
||||
@angle |
|
Angulo formado con la etapa anterior |
||||
@name |
|
Nombre de la subetapa |
||||
@type |
|
Tipo carretera de la subetapa * |
||||
desc |
Valor |
Descripción de la subetapa |
||||
time |
Valor |
Tiempo para cruzar la subetapa |
||||
time_sum |
Valor |
Tiempo acumulado |
||||
dist |
Valor |
Distancia para cruzar la subetapa |
||||
dist_sum |
Valor |
Distancia acumulada |
||||
start |
|
|
||||
|
@x |
Coord. X del inicio de subetapa |
||||
|
@y |
Coord. Y del inicio de subetapa |
||||
end |
|
|
||||
|
@x |
Coord. X del final de subetapa |
||||
|
@y |
Coord. Y del final de subetapa |
||||
restrictions |
|
Lista de restricciones |
||||
restriction |
Véase 0 Elementos de una restricción logística |
|||||
municipios |
|
Municipios por los que se pasa |
||||
municipio |
Un municipio |
|||||
@id |
Identificador |
|||||
@name |
Nombre |
|||||
poilist |
|
POI de la subetapa |
||||
poi |
Véase ¡Error! No se encuentra el origen de la referencia. ¡Error! No se encuentra el origen de la referencia. |
* Valores posibles del parámetro @type (tipo de la carretera de la subetapa):
Valor |
Descripción |
A |
Autopistas |
G |
Ferry |
I |
Carretera principal, con nombre |
K |
Carreteras secundarias, con nombre |
J |
Carreteras sin nombre |
L |
Calles con nombre |
M |
Calles secundarias, sin clasificación específica |
R |
Rotonda |
S |
Enlace |
T |
Via de servicio |
Elementos de una restricción logística (camiones)
En cada subetapa del report de la ruta aparecen las restricciones que se han encontrado y su coordenada.
<restrictions>
<restriction height="2.2" x="245771" y="5046066"/>
<restriction height="2.2" x="246247" y="5046538"/>
</restrictions>
Elemento |
Elem |
Descripción |
restriction |
|
|
@x |
Coordenada X. |
|
@y |
Coordenada Y. |
|
@weight |
Peso máximo del vehículo (si se informa). |
|
@axleweight |
Peso máximo de un eje del vehículo (si se informa). |
|
@height |
Altura máxima del vehículo (si se informa). |
|
@width |
Anchura máxima del vehículo (si se informa). |
|
@length |
Longitud máxima del vehículo (si se informa). |
Geometría de la ruta
Para obtener la polilínea de la ruta, al igual que en el caso de las rutas normales, es necesario lanzar una segunda petición, indicando el ID de ruta devuelto por la primera petición.
Por ejemplo:
&cmd=geom&routeweight=time&tolerance=2&routeid=7156401,8107490,7151464,7156671|0.2309042,0.19879568,0.6412315,0.9265352|logistics|120******&ocs=4326
Elementos de geom (polilínea de ruta)
Elemento |
Elem |
Elem |
Descripción |
geometry
|
|
|
Datos de la geometría |
route |
|
Parámetros de la subetapa o agrupación de subetapas |
|
@id |
|
Identificador de la ruta |
|
@substage |
|
Subetapa o agrupación de subetapas |
|
@weight |
|
Coste de la ruta |
|
|
wkt |
|
|
|
@tolerance |
Tolerancia (resolución de la geometría devuelta, en metros) |
|
|
Valor |
Geometría en formato wkt |
Cálculo masivo de rutas multipunto
Funcionalidad que permite obtener la distancia y tiempo de conducción entre todos los puntos indicados en el cálculo, con todas las combinaciones posibles respetando el orden indicado. Por ejemplo, permite:
- Indicar varios vehículos de asistencia (con su localización actual) que pueden atender a una incidencia.
- La localización de una incidencia a atender (por ejemplo un coche averiado).
- El taller de destino donde llevar el coche.
- Las bases de vuelta a las que tienen que volver los vehículos.
De esta forma, calcula todas las combinaciones de ruta, respetando el orden vehículo asistencia -> vehículo averiado -> taller de destino -> base donde volver
Así mismo, puede tener en cuenta el estado del tráfico, al igual que en el caso del cálculo de rutas genérico.
Petición:
Ejemplo de petición:
&cmd=route&molist_o=[40.390477919,-3.663617190,|Vehiculo1],[%2040.401144209,-3.692551925|Vehiculo2]&mo_1=[40.387970785,-3.722825150|Incidencia]&molist_2=[40.404172767,-3.698283176|Taller1],[%2040.352579254,-3.716509993|Taller2]&molist_d=[40.334976144,-3.761398808|Base1],[%2040.266864021,-3.752307858|Base2]&mocs=gdd&weight=time
Donde:
cmd= tipo de petición de cercalia
- Punto/os de partida de la/las ruta/s:
mo_o= coordenadas origen [Y,X|ID]
molist_o= lista de coordenadas origen [Y,X|ID2],[Y,X|ID2] ...
- Punto/os de partida de la/las ruta/s:
mo_1= coordenadas 1er punto de paso [Y,X|ID]
molist_1= lista de coordenadas 1er punto de paso [Y,X|ID2],[Y,X|ID2] ...
- Opcional: 2o punto/s de paso de la ruta (y así sucesivamente):
mo_2= coordenadas 2o punto de paso [Y,X|ID]
molist_2= lista de coordenadas 2o punto de paso [Y,X|ID2],[Y,X|ID2] ...
- Punto/os de destino final de la/las ruta/s:
mo_d= coordenadas destino final [Y,X|ID]
molist_d= lista de coordenadas destino final [Y,X|ID2],[Y,X|ID2] ...
mocs=gdd indica que las coordenadas están en geográficas
weight= tipo de ruta:
time (más rápida)
distance (más corta)
money (evitar peajes)
realtime (más rápida, en base al estado actual del tráfico y las vías cerradas).
iweight= proporciona información adicional sobre el cálculo de ruta. Permite indicar diferentes parámetros, separados por coma:
realtime: Utilizar este parámetro para obtener el tiempo de la ruta, en base al estado actual del tráfico.
toll: Utilizar este parámetro para obtener si la ruta pasa por un tramo de vía de peaje. Utilizar solo si &report=0
ferry: Utilizar este parámetro para obtener si la ruta pasa por un tramo de ferry. Utilizar solo si &report=0
Cálculo de rutas en función de la hora de salida:
- weight= tipo de ruta:
- sptime (más rápida en función de la hora de salida)
- spmoney (más rápida en función de la hora de salida sin pasar por vías de peaje)
- departuretime= Fecha y hora de salida en formato ISO 8601. Ejemplo para hora UTC: 2019-10-16T07:30:12Z *Solamente funciona si se indican los valores de weight indicados.
Respuesta:
<cercalia cmd="route" version="1">
<route dest="Base1" dist="23.9" id="13174411,13206236,13184886,13672512|0.4314835,1.0,0.94561416,0.65883976" orig="Vehiculo1" time="00:44:16" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo1">
<coord x="-3.663617189530327" y="40.39047791946798"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller1">
<coord x="-3.698283176344499" y="40.404172767495176"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base1">
<coord x="-3.761398808206737" y="40.33497614352786"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="8.5" orig="Vehiculo1" orig_stop_id="o" time="00:15:23" weight="time"/>
<stage dest="Taller1" dest_stop_id="0" dist="4.4" orig="Incidencia" orig_stop_id="o" time="00:13:07" weight="time"/>
<stage dest="Base1" dest_stop_id="0" dist="11.0" orig="Taller1" orig_stop_id="o" time="00:15:46" weight="time"/>
</stages>
</route>
<route dest="Base1" dist="20.3" id="12951122,13206236,13184886,13672512|0.3542734,1.0,0.94561416,0.65883976" orig="Vehiculo2" time="00:39:34" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo2">
<coord x="-3.692551924831817" y="40.40114420888145"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller1">
<coord x="-3.698283176344499" y="40.404172767495176"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base1">
<coord x="-3.761398808206737" y="40.33497614352786"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="4.8" orig="Vehiculo2" orig_stop_id="1" time="00:10:41" weight="time"/>
<stage dest="Taller1" dest_stop_id="0" dist="4.4" orig="Incidencia" orig_stop_id="o" time="00:13:07" weight="time"/>
<stage dest="Base1" dest_stop_id="0" dist="11.0" orig="Taller1" orig_stop_id="o" time="00:15:46" weight="time"/>
</stages>
</route>
<route dest="Base1" dist="25.8" id="13174411,13206236,13089655,13672512|0.4314835,1.0,0.38120848,0.65883976" orig="Vehiculo1" time="00:44:17" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo1">
<coord x="-3.663617189530327" y="40.39047791946798"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller2">
<coord x="-3.716509993459284" y="40.352579253586725"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base1">
<coord x="-3.761398808206737" y="40.33497614352786"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="8.5" orig="Vehiculo1" orig_stop_id="o" time="00:15:23" weight="time"/>
<stage dest="Taller2" dest_stop_id="1" dist="9.2" orig="Incidencia" orig_stop_id="o" time="00:16:38" weight="time"/>
<stage dest="Base1" dest_stop_id="0" dist="8.1" orig="Taller2" orig_stop_id="1" time="00:12:16" weight="time"/>
</stages>
</route>
<route dest="Base1" dist="22.2" id="12951122,13206236,13089655,13672512|0.3542734,1.0,0.38120848,0.65883976" orig="Vehiculo2" time="00:39:35" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo2">
<coord x="-3.692551924831817" y="40.40114420888145"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller2">
<coord x="-3.716509993459284" y="40.352579253586725"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base1">
<coord x="-3.761398808206737" y="40.33497614352786"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="4.8" orig="Vehiculo2" orig_stop_id="1" time="00:10:41" weight="time"/>
<stage dest="Taller2" dest_stop_id="1" dist="9.2" orig="Incidencia" orig_stop_id="o" time="00:16:38" weight="time"/>
<stage dest="Base1" dest_stop_id="0" dist="8.1" orig="Taller2" orig_stop_id="1" time="00:12:16" weight="time"/>
</stages>
</route>
<route dest="Base2" dist="30.6" id="13174411,13206236,13184886,13737176|0.4314835,1.0,0.94561416,0.35529318" orig="Vehiculo1" time="00:45:41" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo1">
<coord x="-3.663617189530327" y="40.39047791946798"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller1">
<coord x="-3.698283176344499" y="40.404172767495176"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base2">
<coord x="-3.7523078575314477" y="40.26686402112744"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="8.5" orig="Vehiculo1" orig_stop_id="o" time="00:15:23" weight="time"/>
<stage dest="Taller1" dest_stop_id="0" dist="4.4" orig="Incidencia" orig_stop_id="o" time="00:13:07" weight="time"/>
<stage dest="Base2" dest_stop_id="1" dist="17.7" orig="Taller1" orig_stop_id="o" time="00:17:11" weight="time"/>
</stages>
</route>
<route dest="Base2" dist="27.0" id="12951122,13206236,13184886,13737176|0.3542734,1.0,0.94561416,0.35529318" orig="Vehiculo2" time="00:40:59" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo2">
<coord x="-3.692551924831817" y="40.40114420888145"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller1">
<coord x="-3.698283176344499" y="40.404172767495176"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base2">
<coord x="-3.7523078575314477" y="40.26686402112744"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="4.8" orig="Vehiculo2" orig_stop_id="1" time="00:10:41" weight="time"/>
<stage dest="Taller1" dest_stop_id="0" dist="4.4" orig="Incidencia" orig_stop_id="o" time="00:13:07" weight="time"/>
<stage dest="Base2" dest_stop_id="1" dist="17.7" orig="Taller1" orig_stop_id="o" time="00:17:11" weight="time"/>
</stages>
</route>
<route dest="Base2" dist="34.1" id="13174411,13206236,13089655,13737176|0.4314835,1.0,0.38120848,0.35529318" orig="Vehiculo1" time="00:48:25" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo1">
<coord x="-3.663617189530327" y="40.39047791946798"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller2">
<coord x="-3.716509993459284" y="40.352579253586725"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base2">
<coord x="-3.7523078575314477" y="40.26686402112744"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="8.5" orig="Vehiculo1" orig_stop_id="o" time="00:15:23" weight="time"/>
<stage dest="Taller2" dest_stop_id="1" dist="9.2" orig="Incidencia" orig_stop_id="o" time="00:16:38" weight="time"/>
<stage dest="Base2" dest_stop_id="1" dist="16.4" orig="Taller2" orig_stop_id="1" time="00:16:24" weight="time"/>
</stages>
</route>
<route dest="Base2" dist="30.4" id="12951122,13206236,13089655,13737176|0.3542734,1.0,0.38120848,0.35529318" orig="Vehiculo2" time="00:43:43" weight="*">
<stoplist>
<stop by="false" id="o">
<mo id="Vehiculo2">
<coord x="-3.692551924831817" y="40.40114420888145"/>
</mo>
</stop>
<stop by="false" id="1">
<mo id="Incidencia">
<coord x="-3.7228251499066443" y="40.387970785252115"/>
</mo>
</stop>
<stop by="false" id="2">
<mo id="Taller2">
<coord x="-3.716509993459284" y="40.352579253586725"/>
</mo>
</stop>
<stop by="false" id="d">
<mo id="Base2">
<coord x="-3.7523078575314477" y="40.26686402112744"/>
</mo>
</stop>
</stoplist>
<getpoicats/>
<stages>
<stage dest="Incidencia" dest_stop_id="0" dist="4.8" orig="Vehiculo2" orig_stop_id="1" time="00:10:41" weight="time"/>
<stage dest="Taller2" dest_stop_id="1" dist="9.2" orig="Incidencia" orig_stop_id="o" time="00:16:38" weight="time"/>
<stage dest="Base2" dest_stop_id="1" dist="16.4" orig="Taller2" orig_stop_id="1" time="00:16:24" weight="time"/>
</stages>
</route>
<server>lb.cercalia.com</server>
</cercalia>
Donde:
id= ID de ruta, necesario para pedir la geometría de la ruta
dist= distancia ruta, en km
time= tiempo total de la ruta (HH:MM:SS)*
realtime= tiempo total de la ruta, en base al estado actual del tráfico (HH:MM:SS)*, si iweight=realtime
hasferries= indica si la ruta pasa por un tramo de ferry (se devuelve si en la petición se añade &iweight=ferry y &report=0)
hastolls= indica si la ruta pasa por un tramo de vía de peaje (se devuelve si en la petición se añade &iweight=toll y &report=0)
* Nota:
Para trayectos que duren más de un día, el tiempo no se reparte en años, meses y días, sino que queda todo acumulado en las horas. Por ejemplo: 2 días se expresaría como "48:00:00", 10 días se expresaría como "240:00:00".