mysql latitude-longitude point

mysql - Mover columnas de texto lat/lon a una columna de tipo ''punto''



latitude-longitude point (3)

Tengo una tabla en mi base de datos MySQL llamada house .

Dentro de la tabla de la house , hay un par de columnas de texto llamadas latitude y longitude .

He agregado una nueva columna llamada coords , de tipo point - http://dev.mysql.com/doc/refman/5.0/en/gis-class-point.html

¿Cómo movería los valores de latitude y longitude a la nueva columna de coords ?


Concisamente

UPDATE myTable SET coords = GeometryFromText( CONCAT( ''POINT('', lon, '' '', lat, '')'' ) );

Tenga en cuenta que la respuesta de Quassnoi es errónea, ya que el formato de entrada correcto es PUNTO (XY), o en términos de tierra PUNTO (latón largo).

Tenga en cuenta que puede mostrar puntos a través de las funciones X () e Y () como en el siguiente ejemplo:

SELECT X( GeometryFromText( CONCAT( ''POINT('', 35, '' '', 60, '')'' ) ) ) AS x, Y( GeometryFromText( CONCAT( ''POINT('', 35, '' '', 60, '')'' ) ) ) AS y;


MySQL versión 5.5.8

Mi latitud y longitud son de tipo flotador. Para actualizar las filas existentes ...

UPDATE table_name SET coord = POINT(longitude_field, latitude_field);

Algo a considerar, si está recopilando datos y necesita guardar la latitud y la longitud por separado, en sus respectivas columnas, le sugiero que agregue un disparador a su tabla

CREATE DEFINER=`username`@`localhost` TRIGGER `table_name`.`create_point_geom` BEFORE INSERT ON database_name.table_name FOR EACH ROW BEGIN SET NEW.coord = POINT(NEW.longitude, NEW.latitude); END;

Recopilo datos de redes sociales etiquetados geográficamente y uso este método para agregar geometría a mis tablas.


Suponiendo que desea un índice SPATIAL en esta columna:

ALTER TABLE mytable ADD coords Point; UPDATE mytable SET coords = Point(lon, lat); ALTER TABLE mytable MODIFY coords NOT NULL; CREATE SPATIAL INDEX sx_mytable_coords ON mytable(coords);

Si no lo hace, puede omitir los dos últimos pasos.

Actualizar:

En versiones anteriores de MySQL , necesitaría llenar columnas de Point usando WKT :

UPDATE mytable SET coords = GeomFromText(CONCAT(''POINT ('', lon, '' '', lat, '')''))