Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/05/2008, 12:58
Avatar de DBMark
DBMark
 
Fecha de Ingreso: mayo-2008
Ubicación: Oxford
Mensajes: 35
Antigüedad: 16 años
Puntos: 6
Respuesta: Nuevas funciones con GIS ???

Al investigar, me entere de que no se necesite funciones de GIS para calcular (por ejemplar) distancias, porque tenemos ya los de cos y sin. Solo se necesitan valores de latitud y longitud, pero en radianes.

Cita:
mysql> SELECT ACOS(SIN(@lat_A) * SIN(@lat_B)
-> + COS(@lat_A) * COS(@lat_B)
-> * COS(@long_B - @long_A)) * 3956 AS distance;
+-----------------+
| distance |
+-----------------+
| 161.70380719616 |
+-----------------+
Este ejemplar es por Jay Pipes y es la distancia (en millas) entre Zip Code '10001' and '21236' (approx New York City and Baltimore, Maryland). 3956 es el radio del mundo en millas; para conocer distancia en kilometros supongo que se pueda usar 6367 en vez de 3956.

Otra posibilidad - devolver sitios dentro de 5 millas lejos (disculpame mi espanol!)

Cita:
Similarly, if you want to find zip codes which fall within a specified radius, you could transpose the equation into the WHERE expression, here to find zips in a test database within 5 miles of the ZCTA '21236':

mysql> SELECT
-> x2.zcta
-> FROM ZCTA x1, ZCTA x2
-> WHERE x1.zcta = '21236'
-> AND ACOS(SIN(x1.lat_radians) * SIN(x2.lat_radians)
-> + COS(x1.lat_radians) * COS(x2.lat_radians)
-> * COS(x2.long_radians - x1.long_radians)) * 3956 <= 5;
+-------+
| zcta |
+-------+
| 21057 |
| 21128 |
| 21162 |
| 21206 |
| 21214 |
| 21234 |
| 21236 |
| 21237 |
+-------+
8 rows in set (0.13 sec)
El autor Jay Pipes tiene mas expicaciones sobre GIS en su libro Pro Mysql, pero se puede buscar textos de Jay Pipes por el internet, claro.
Bueno sigo sin exito en conseguir mas datos sobre las nuevas funciones (salvo las paginas de dev.mysql) pero estoy contento con los ejemplares arriba.

Saludos
Mark