#mysql #mysql-workbench #mysql-spatial
#mysql #mysql-workbench #mysql-пространственный
Вопрос:
У меня была обычная таблица. Теперь я добавил пространственный столбец
ALTER TABLE roadData ADD pt POINT ;
и теперь моя таблица имеет нулевые значения :
Теперь в руководстве по MySQL используется оператор insert:
INSERT INTO geom VALUES (ST_GeomFromText('POINT(1 1)'));
но я хочу сделать это в уже существующей таблице, удалив нулевые значения и вставив точечные данные на основе широты и долготы в каждой строке. Нравится
INSERT INTO pt VALUES (ST_GeomFromText('POINT(latitude longitude)'));
а также создайте пространственный индекс. Как я могу это сделать?
Ответ №1:
Это an UPDATE STATEMENT
, а не an INSERT STATEMENT
, попробуйте это:
UPDATE geom t
SET t.pt = ST_GeomFromText(CONCAT('POINT(',t.longitude,t.latitude,')'))
Комментарии:
1. спасибо, саги, на самом деле ответ, который вы сказали для перекрестного соединения, занял много времени. итак, @bamar сказал использовать spatial, поэтому пытаюсь это сделать.
2. И ALTER TABLE geom ДОБАВЬТЕ ПРОСТРАНСТВЕННЫЙ ИНДЕКС (g); для создания индекса
3. Для пространственного индекса: ИЗМЕНИТЕ ТАБЛИЦУ roadData, ДОБАВЬТЕ ПРОСТРАНСТВЕННЫЙ ИНДЕКС (pt);
4. ИЛИ СОЗДАЙТЕ ПРОСТРАНСТВЕННЫЙ ИНДЕКС sp_index В roadData (pt);
5. Почему бы и нет
SET t.pt = ST_Point(t.longitude, t.latitude)
? Давайте усложним ситуацию и потратим впустую много ресурсов 🙂