5 votos

¿Qué significa "a la derecha", con respecto al operador >> en PostGIS?

Estoy leyendo la documentación sobre el >> en PostGIS, y no puedo entender el significado de strictly to the right porque en el plano, la derecha o la izquierda depende de la dirección a la que se mire.

Referencia: https://postgis.net/docs/ST_Geometry_Right.html

¿Cuál sería esa dirección?

5voto

hernan43 Puntos 566

El lenguaje de a la izquierda , a la derecha , por encima de y debajo de utilizado para el operadores de caja delimitadora se refieren a direcciones relativas en un Rejilla cartesiana . Así que "derecha" es una dirección relativamente positiva a lo largo de la x -eje, que suele ser "al este de" o " hacia el este " para la mayoría de los sistemas de proyección (e ignorando que el mundo es redondo, donde se podría argumentar que todo está al este de cualquier otra cosa).

Así que, en lenguaje SQL: Pregunta: "¿está alguna geometría (A) a la derecha de otra (B)"...

SELECT A << B as A_leftof_B, A >> B AS A_rigthtof_B
FROM (
SELECT
  'POINT (-40 30)'::geometry AS A,
  'POINT (90 10)'::geometry AS B
) AS d;
 a_leftof_b | a_rigthtof_b
------------+--------------
 t          | f
(1 row)

Respuesta: A no está a la derecha de B (pero está a la izquierda de B).

En cuanto al uso de estrictamente depende de si hay alguna superposición de las dos cajas delimitadoras a lo largo de esa dimensión (el x -para el caso de a la izquierda y a la derecha ). Por ejemplo, Italia está estrictamente al este de España (ya que ni siquiera se solapan de este a oeste), pero España no está estrictamente al este de Portugal, ya que se solapan de este a oeste. Sin embargo, España está al este de Portugal, como se demuestra utilizando el &> operador ya que el cuadro delimitador de España está más al este que el de Portugal.


Apéndice

El << o >> (o muchos otros operadores de cuadro delimitador ) hacer no considerar la secuencia de coordenadas.

Para determinar lo que está a la izquierda o a la derecha de la trayectoria de una cadena de líneas necesitarás una función personalizada. Una función tan prometedora es de Andreas Neumann, llamado left_of_test .

2voto

Flinkman Puntos 4821

Debo anular esta afirmación en favor de la respuesta de Mike T

La respuesta correcta es mayor X como dijo Mike T; después de mucho indagar, la función ha sido renombrada varias veces y es en realidad:

static bool box2df_right(const BOX2DF *a, const BOX2DF *b)
{
    if ( ! a || ! b ) return FALSE; /* TODO: might be smarter for EMPTY */

    /* a.xmin > b.xmax */
    return a->xmin > b->xmax;
}

La función en la que pensaba no era ésta, y puede que fuera una función de otra API. Debo disculparme sinceramente por mi error. Para los que no hablan "C" es decir si el mínimo X del primero es mayor que el máximo X del segundo entonces es a la derecha .

He dejado esto tal y como estaba escrito por si alguien más se confunde en el mismo punto.

El lado izquierdo y el lado derecho se consideran por el orden de los vértices; imagínate parado en el primer vértice mirando al segundo, luego camina hacia el segundo y mira el tercero y así sucesivamente hasta llegar al final de la línea. Al estar parado en un vértice mirando al siguiente en la secuencia, hay un lado izquierdo y un lado derecho definidos, independientemente de la dirección en la que se encuentre el segmento.

La lateralidad se determina de manera similar al producto cruzado de dos vectores que tiene las propiedades matemáticas de ser negativo si el punto cae a la derecha de la línea y positivo si el punto cae a la izquierda de la línea, para una explicación programática ver aquí que se repite para cada vértice sucesivamente.

Para que este operador sea realmente útil en los polígonos, debería utilizar ST_ForceRHR para asegurar que los polígonos están orientados en el sentido de las agujas del reloj para el primer anillo exterior. Entonces, en este caso, a la derecha significaría dentro de . PostGIS no impone ninguna orientación particular del anillo sino que el primer anillo es el exterior y luego siguen los anillos interiores.

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