pgr_lineGraph - Experimental

pgr_lineGraph — Transforma un grafo dado en su grafo correspondiente basado en aristas.

_images/boost-inside.jpeg

Adentro: Boost Graph

Advertencia

Posible bloqueo del servidor

  • Estas funciones pueden crear un bloqueo del servidor

Advertencia

Funciones experimentales

  • No son oficialmente de la versión actual.

  • Es probable que oficialmente no formen parte de la siguiente versión:

    • Las funciones no podrían hacer uso de ANY-INTEGER ni ANY-NUMERICAL

    • El nombre puede cambiar.

    • La firma (declaración de funciones) podría cambiar.

    • La funcionalidad puede cambiar.

    • Las pruebas de pgTap pueden estar ausentes.

    • Posiblemente necesite codificación c/c++.

    • Puede haber carencia de documentación.

    • Hay documentación que, en dado caso, podría ser necesario reescribir.

    • Ejemplos de documentación que puede ser necesario generar automáticamente.

    • Puede ser necesaria más retroalimentación por parte de la comunidad.

    • Puede depender de una función propuesta de pgRouting.

    • Podría depender de una función obsoleta de pgRouting

Disponibilidad

  • Versión 2.5.0

    • Nueva función Experimental

Soporte

  • Versiones soportadas: actual(3.1) 3.0

  • Versiones no sustentadas: 2.6 2.5

Descripción

Dado un grafo G, su grafo de líneas L(G) es un grafo de tal forma que:

  • Cada vértice de L(G) representa una arista de G

  • Dos vértices de L(G) son adyacentes si y sólo si sus aristas correspondientes comparten un punto final común en G.

Firmas

Resumen

pgr_lineGraph(edges_sql, directed)
RETURNS SET OF (seq, source, target, cost, reverse_cost)
OR EMPTY SET

Uso de valores predeterminados

pgr_lineGraph(edges_sql)
RETURNS SET OF (seq, source, target, cost, reverse_cost) OR EMPTY SET
Ejemplo

Para un grafo dirigido

SELECT * FROM pgr_lineGraph(
    'SELECT id, source, target, cost, reverse_cost FROM edge_table'
);
 seq | source | target | cost | reverse_cost
-----+--------+--------+------+--------------
   1 |    -18 |     18 |    1 |            1
   2 |    -17 |     17 |    1 |            1
   3 |    -16 |     -3 |    1 |           -1
   4 |    -16 |     16 |    1 |            1
   5 |    -15 |     -9 |    1 |            1
   6 |    -15 |     15 |    1 |            1
   7 |    -14 |    -10 |    1 |            1
   8 |    -14 |     12 |    1 |           -1
   9 |    -14 |     14 |    1 |            1
  10 |    -10 |     -7 |    1 |            1
  11 |    -10 |     -4 |    1 |            1
  12 |    -10 |      8 |    1 |            1
  13 |    -10 |     10 |    1 |            1
  14 |     -9 |     -8 |    1 |            1
  15 |     -9 |      9 |    1 |            1
  16 |     -9 |     11 |    1 |           -1
  17 |     -8 |     -7 |    1 |            1
  18 |     -8 |     -4 |    1 |            1
  19 |     -8 |      8 |    1 |            1
  20 |     -7 |     -6 |    1 |            1
  21 |     -6 |      6 |    1 |            1
  22 |     -4 |     -1 |    1 |            1
  23 |     -4 |      4 |    1 |            1
  24 |     -3 |     -2 |    1 |           -1
  25 |     -3 |      5 |    1 |           -1
  26 |     -2 |     -1 |    1 |           -1
  27 |     -2 |      4 |    1 |           -1
  28 |     -1 |      1 |    1 |            1
  29 |      5 |     -8 |    1 |           -1
  30 |      5 |      9 |    1 |           -1
  31 |      5 |     11 |    1 |           -1
  32 |      7 |     -7 |    1 |            1
  33 |      7 |     -4 |    1 |            1
  34 |      8 |     11 |    1 |           -1
  35 |     10 |     12 |    1 |           -1
  36 |     11 |     13 |    1 |           -1
  37 |     12 |     13 |    1 |           -1
  38 |     13 |    -15 |    1 |           -1
  39 |     16 |     -9 |    1 |            1
  40 |     16 |     15 |    1 |            1
(40 rows)

Firma completa

pgr_lineGraph(edges_sql, directed);
RETURNS SET OF (seq, source, target, cost, reverse_cost) OR EMPTY SET
Ejemplo

Para un grafo no dirigido

SELECT * FROM pgr_lineGraph(
    'SELECT id, source, target, cost, reverse_cost FROM edge_table',
    FALSE
);
 seq | source | target | cost | reverse_cost
-----+--------+--------+------+--------------
   1 |     -3 |     -2 |    1 |           -1
   2 |     -3 |      5 |    1 |           -1
   3 |     -2 |      4 |    1 |           -1
   4 |      1 |      4 |    1 |           -1
   5 |      4 |      8 |    1 |           -1
   6 |      4 |     10 |    1 |           -1
   7 |      5 |      9 |    1 |           -1
   8 |      5 |     11 |    1 |           -1
   9 |      6 |      7 |    1 |           -1
  10 |      7 |      8 |    1 |           -1
  11 |      7 |     10 |    1 |           -1
  12 |      8 |      9 |    1 |           -1
  13 |      8 |     11 |    1 |           -1
  14 |      9 |     15 |    1 |           -1
  15 |     10 |     12 |    1 |           -1
  16 |     10 |     14 |    1 |           -1
  17 |     11 |     13 |    1 |           -1
  18 |     12 |     13 |    1 |           -1
  19 |     16 |     15 |    1 |           -1
(19 rows)

Parámetros

Columna

Tipo

Descripción

edges_sql

TEXT

Consulta SQL como se describió anteriormente.

dirigido

BOOLEAN

  • En caso de “”true”” el grafo se considera como Dirigido.

  • Cuando false el gráfo se considera No Dirigido

Consulta interna

Columna

Tipo

Valores predeterminados

Descripción

id

ANY-INTEGER

Identificador de la arista.

origen

ANY-INTEGER

Identificador del primer punto final en el vértice de la arista.

objetivo

ANY-INTEGER

Identificador del segundo punto final en el vértice de la arista.

cost

ANY-NUMERICAL

Peso de la arista (source, target)

  • Cuando es negativo: la arista (source, target) no existe, por lo tanto no es parte del grafo.

reverse_cost

ANY-NUMERICAL

-1

Peso de la arista (target, source),

  • En caso negativo: la arista (target, source) no existe, por lo tanto no es parte del grafo.

Donde:

ANY-INTEGER

SMALLINT, INTEGER, BIGINT

ANY-NUMERICAL

SMALLINT, INTEGER, BIGINT, REAL, FLOAT

Columnas de Resultados

DEVUELVE UN CONJUNTO DE (seq, origen, destino, coste, invers_coste)

Columna

Tipo

Descripción

seq

INTEGER

Valor secuencial a partir de 1.

origen

BIGINT

Identificador del vértice de origen de la arista actual id.

  • Cuando es “negativo”: el origen es la arista inversa en el grafo original.

objetivo

BIGINT

Identificador del vértice de destino de la arista actual id.

  • Cuando es negativo: el objetivo es la arista inversa en el grafo original.

cost

FLOAT

Peso de la arista (source, target).

  • Cuando negative: la arista (source, target) no existe, por lo tanto no es parte del grafo.

reverse_cost

FLOAT

Peso de la arista (target, source).

  • Cuando negative: la arista (target, source) no existe, por lo tanto no es parte del grafo.

Ver también

Índices y tablas