Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Filtrar por coordenadas por un puntos de un polígono

Estas en el tema de Filtrar por coordenadas por un puntos de un polígono en el foro de Mysql en Foros del Web. Buenas a todos, Es la primera vez que uso el tipo "point" de mi Mysql, así que estoy bastante perdido. He mirado varios manuales, pero ...
  #1 (permalink)  
Antiguo 23/10/2016, 09:51
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 7 meses
Puntos: 19
Filtrar por coordenadas por un puntos de un polígono

Buenas a todos,

Es la primera vez que uso el tipo "point" de mi Mysql, así que estoy bastante perdido. He mirado varios manuales, pero creo que algo estoy haciendo mal.

Yo tengo el polígono:

Código MySQL:
Ver original
  1. POLYGON((41.000497 -109.050149, 41.002380 -102.051881, 36.993237 -102.041959, 36.999037 -109.045220, 41.000497 -109.050149))
Y tengo un elemento en mi tabla en la columna "geo_point" de la tabla "profiles" que pone:

Código MySQL:
Ver original
  1. POINT(43.318333 -1.981231)
Luego hago la consulta:

Código MySQL:
Ver original
  1. SELECT * FROM profiles
  2.  GeomFromText('POLYGON((41.000497 -109.050149, 41.002380 -102.051881, 36.993237 -102.041959, 36.999037 -109.045220, 41.000497 -109.050149))'), geo_point )

Pero por mucho que pruebo no devuelve ningún tipo de resultado.

¿Cómo debo hacerlo... alguien sabe?... gracias por la ayuda :D <3
  #2 (permalink)  
Antiguo 23/10/2016, 17:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Filtrar por coordenadas por un puntos de un polígono

Muy a vuelo de pájaro, tengo la impresión de que el punto esta fuera de ese polígono...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/10/2016, 08:49
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 7 meses
Puntos: 19
Respuesta: Filtrar por coordenadas por un puntos de un polígono

Buenas gnzsoloyo,

Buf... casi me da un ataque... he probado con unas coordenadas que incluyan ese punto:

Código MySQL:
Ver original
  1. SELECT * FROM profiles WHERE Contains(GeomFromText("POLYGON((-87.5390625 65.94647177615738,-108.6328125 7.013667927566642,62.2265625 8.407168163601074,66.4453125 72.81607371878991,-87.5390625 65.94647177615738))"), geo_point )
Pero tampoco... funciona. ¿Tengo que hacer algo especial con el campo geo_point?.

Actualmente simplemente es un campo de tipo "point". No he añadido nada más a la tabla.

¿Es posible que necesite hacer algún index spatial para que funcione?

Última edición por salbatore; 24/10/2016 a las 08:58
  #4 (permalink)  
Antiguo 24/10/2016, 09:02
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 7 meses
Puntos: 19
Respuesta: Filtrar por coordenadas por un puntos de un polígono

Buenas de nuevo!

Tenías razón... tengo un problema con la creación de los polígonos y sus coordenadas.

Disculpa... vaya ojo tienes.

Gracias gnzsoloyo, me has salvado otra vez
  #5 (permalink)  
Antiguo 25/10/2016, 10:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Filtrar por coordenadas por un puntos de un polígono

Para que lo tengas en cuenta, las coordenadas de un poligono en su formaot espacial, es decir sus valores de puntos, son una representacion de las coordenadas trigonométricas, por lo que para que un punto quede dentro del polígono, sus coordenadas (X, Y) deben estar siempre entre las máximas y mínimas cotas de todos los puntos de ese polígono.
¿Se entiende?
Al mirar los valores de tu polígono era evidente que su cota superior o mas alta (41,x) era de un valor inferior a la Y del punto (43,x), por lo que no podía estar en él.
Ten en cuenta siempre esa relación, sin importar la posición del punto, sus coordenadas deben ser siempre iguales o menores (cercanas al cero) a las de cada punto del polígono. Sino, no están dentro de él, o no pertenecen al mismo MBR.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: coordenadas, filtrar, puntos, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:24.