Puede que no sea absolutamente necesario crear geometrías, pero querrá hacerlo para poder aprovechar los índices. El siguiente código funciona con Postgres 9.1+
CREATE TABLE mypoints(gid SERIAL PRIMARY KEY, latitude double precision, longitude double precision, address varchar(100), types varchar (25), geom geometry(POINT, 4326));
INSERT INTO mypoints (latitude, longitude, address, types, geom)VALUES (40.0,-90.0, '123 Main', 'house', ST_GEOMFROMTEXT('POINT(-90.0 40.0)',4326))
INSERT INTO mypoints (latitude, longitude, address, types, geom)VALUES (41.0,-90.0, '123 Smith', 'house', ST_GEOMFROMTEXT('POINT(-90.0 41.0)',4326))
INSERT INTO mypoints (latitude, longitude, address, types, geom)VALUES (42.0,-90.0, '123 Johnson', 'house', ST_GEOMFROMTEXT('POINT(-90.0 42.0)',4326))
INSERT INTO mypoints (latitude, longitude, address, types, geom)VALUES (43.0,-90.0, '123 Oak', 'warehouse', ST_GEOMFROMTEXT('POINT(-90.0 43.0)',4326))
INSERT INTO mypoints (latitude, longitude, address, types, geom)VALUES (44.0,-90.0, '123 Pine', 'store', ST_GEOMFROMTEXT('POINT(-90.0 44.0)',4326))
INSERT INTO mypoints (latitude, longitude, address, types, geom)VALUES (45.0,-90.0, '123 Granite', 'factory', ST_GEOMFROMTEXT('POINT(-90.0 45.0)',4326))
SELECT latitude, longitude, address, types
FROM mypoints
ORDER BY geom <-> st_setsrid(st_makepoint(-90,47),4326)
LIMIT 1;
Si está buscando todas las características/puntos dentro de una determinada distancia, podría utilizar St_DWithin()
0 votos
¿Podemos eliminar las referencias a MySQL aquí? ¿@polygeo? ¿Nadie respondió realmente a su pregunta original? Y no tenía nada que ver con PostGIS originalmente. Para confundir aún más el asunto MySQL ahora soporta bounding box dentro y puede hacer lo mismo dev.mysql.com/doc/refman/8.0/es/
0 votos
@EvanCarroll eso no es algo que creo que debamos hacer sin probar primero el apoyo de la comunidad. Con tantos votos ya sobre la pregunta y sus respuestas creo que deberíamos usar un Meta Q&A para ver qué quiere hacer la comunidad con ella. Hazme saber si quieres que pregunte ese Meta Q&A o prefieres hacerlo tú mismo.
0 votos
No tengo intención de preguntar a la comunidad. Mejor lo cierro o quito la referencia. Sandeep parecía haberse pasado a usar PostGIS, por lo que es claramente una reliquia por los comentarios de sus respuestas, y no hay ni una sola respuesta aquí que contemple MySQL. Así que deberíamos votar a la baja todas ellas, o cambiar la pregunta para que importen (sólo por la colaboración de Sandeep en las respuestas con PostGIS como solución).
0 votos
Mantenga la palabra MYSQL allí ya que muestra que los datos estaban en la base de datos MYSQL. Se ha movido de MySQL a POSTGIS. La pregunta era cómo mover los datos de MySQL a POSTGIS y luego encontrar el poi más cercano en la base de datos de PostGIS. No es confuso.