2 votos

Comprueba si una coordenada de punto está entre coordenadas de cadena de líneas

Sé que, linestring es un vector y si quiero comprobar que, si las coordenadas del punto están entre las coordenadas de inicio y final de linestring, entonces tengo que utilizar la comparación de vectores (x2 > x && x2 < x1 && y2 > y && y2 < y1) esa comparación me muestra si la coordenada x2(Punto) está entre un linestring(vector) codrinates.

Pero no sé cómo comparar las coordenadas de las cadenas de líneas y las coordenadas de los puntos,

Me pregunto si alguien puede darme algunos consejos sobre cómo comparar si un punto corodinado se encuentra entre coordenadas lineales.

2voto

Jeff Mc Puntos 1741

Si está tratando de resolver un problema del punto en el polígono Hay muchos ejemplos al alcance de Google.

Si se trata simplemente de averiguar si el punto coincide con uno de los vértices de la cadena de líneas, un simple in (para Python) puede hacer el trabajo bastante bien - o puedes iterar los vértices y comparar usando abs() para introducir cierta tolerancia en la precisión de las coordenadas.

Si quieres saber si el punto se encuentra en una polilínea, itera a través del segmento de la siguiente manera (pseudocódigo pitónico):

function lies_on_polyline(point, vertices):
  for i from 0 to vertices.length - 2: // finish on last-but-one
    if lies_on_segment(point, vertices[i], vertices[i+1]):
      return True
  return False

function lies_on_segment(point, start, end):
  deltax = end.x - start.x
  if deltax == 0:
    liesInXDir = (point.x == start.x)
  else:
    t = (point.x - start.x) / deltax
    liesInXDir = (t >= 0 and t <= 1)
  if liesInXDir:
    deltay = end.y - start.y
    if deltay == 0:
      return (point.y == start.y)
    else:
      t = (point.y - start.y) / deltay
      return (t >= 0 and t <= 1)
  else:
    return False

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