1 votos

Representación de una ruta que se duplica sobre sí misma en BigQuery con un LineString

Estoy tratando de representar rutas en BigQuery, pero me encuentro con problemas para las rutas que se duplican sobre sí mismas. Considere la siguiente LineString que procede del suroeste al noreste de la siguiente imagen, y luego hace un bucle sobre sí mismo antes de continuar más al norte (las flechas rojas fueron añadidas por mí manualmente):

Full route

Cuando intentamos representar esta ruta en BigQuery utilizando algunos métodos diferentes, el resultado es siempre el mismo:

al construir los puntos individualmente:

select st_makeline([
    st_geogpoint(0, 0),
    st_geogpoint(0, 1),
    st_geogpoint(1, 1),
    st_geogpoint(2, 2),
    st_geogpoint(1, 1),
    st_geogpoint(0, 1),
    st_geogpoint(0, 2)
])

al construir los segmentos individualmente:

select st_makeline([
    st_makeline(st_geogpoint(0, 0), st_geogpoint(0, 1)),
    st_makeline(st_geogpoint(0, 1), st_geogpoint(1, 1)),
    st_makeline(st_geogpoint(1, 1), st_geogpoint(2, 2)),
    st_makeline(st_geogpoint(2, 2), st_geogpoint(1, 1)),
    st_makeline(st_geogpoint(1, 1), st_geogpoint(0, 1)),
    st_makeline(st_geogpoint(0, 1), st_geogpoint(0, 2))
])

incluso al descodificar una cadena WKT:

select st_geogfromtext('linestring(0 0,0 1,1 1,2 2,1 1,0 1,0 2)')

Cada vez, el resultado es la misma MultLineString:

MULTILINESTRING((0 0, 0 1, 1 1, 2 2), (0 1, 0 2))

Que es la siguiente ruta:

BigQuery route

Así que BigQuery no está insertando la parte doblada en cadenas de líneas separadas; simplemente está saltando por completo los segmentos que considera que ya ha cubierto. Está bien para representar una forma, pero no un camino. Supongo que se trata de algo relacionado con el intento de BQ de construir una cadena de líneas compatible con el OGC, o tal vez simplemente tratando de minimizar la cantidad de datos que necesita almacenar. ¿Hay alguna manera de evitar esto?

0voto

Hay un respuesta a una situación similar pregunta en Stack Overflow. En resumen:

[Si dos aristas se superponen exactamente, la sección superpuesta se descarta. ... Actualmente no hay manera de evitar este comportamiento - BigQuery Geography representa un conjunto de puntos, y como los conjuntos van, cuando se unen dos conjuntos idénticos se obtiene sólo una copia de este conjunto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X