Casos Border-Line: MySQL punto in_Polygon de función Resultados por duplicado cuando el punto está en la frontera

StackOverflow https://stackoverflow.com/questions/3122088

  •  30-09-2019
  •  | 
  •  

Pregunta

Estoy usando MySQL para tirar lat anhela desde una base de datos y comprobar si están o no en un barrio en particular.

Todo funciona muy bien, excepto si el punto está en la frontera entre los dos barrios. Entonces, el punto se incluye en ambos barrios. Se pone duplicado. ¿Cuál es la mejor manera de manejar los puntos que están en las fronteras?

Cada punto debe ser contado en una sola neighborhood-- no ambos. Además, no quiero, por ejemplo, el barrio de A a conseguir todos los casos fronterizos, pero el barrio limítrofe, entorno B, para tener cero casos.

Imaginemos que el punto de 30.3030, -70.7070 encuentra en la frontera entre Newport y Oldport. Por desgracia, el punto se cuenta dos veces. Que se graba como estando en tanto Oldport y Newport.

  

Tipo | latitud | longitud | barrio

small |  30.3030  | -70.7070  | Newport
small |  30.3030  | -70.7070  | Oldport
small |  30.3344  | -70.7274  | Anotherport

Yo uso la instrucción de selección a continuación:

SELECT t.type, t.latitude, t.longitude, s.neighborhoods 
  FROM my_type_table t, neighborhood_shapes s
WHERE myWithin(POINTFROMTEXT( CONCAT( 'POINT(', t.latitude, ' ', t.longitude, ')' ) ) , s.neighborhood_polygons )) = 1

my_type_table tiene columnas:

  • tipo (VARCHAR)
  • latitud (decimal)
  • longitud (decimal)

... y neighborhood_shapes tiene columnas:

  • barrios (VARCHAR)
  • neighborhood_polygons (geometría)

Yo uso la función myWithin a prueba si el punto está en una zona u otra. Aquí hay un enlace a la misma: myWithin función en MySQL foro . La función retorna 1 cuando el punto está en el polígono y 0 cuando no está en el polígono.

¿Cómo resolver este problema? Cualquier consejo?

¿Fue útil?

Solución

De acuerdo, lo he descubierto. Hubo una pequeña superposición en algunos de los polígonos. Así, cuando la función corrió puso el punto en ambos barrios.

Gracias.

-Laxmidi

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top