Я попытался вставить данные в столбец типа точек () из PHP следующим образом:
INSERT INTO table (coordinates) VALUES ("48.20 14.80");
или же
INSERT INTO table (coordinates) VALUES ("POINT(48.20 14.80)");
И тогда я применил триггеры перед каждой вставкой или обновлением:
BEGIN
SET @lat = SUBSTRING(NEW.coordinates, 1, LOCATE(' ', NEW.coordinates));
SET @lng = SUBSTRING(NEW.coordinates, LOCATE(' ', NEW.coordinates) + 1);
SET @coor = PointFromWKB(POINT(@lat, @lng));
SET NEW.coordinates = @coor;
END
или же
BEGIN
SET NEW.coordinates = GEOMFROMTEXT(NEW.coordinates);
END
Но это возвращает:
SQLSTATE[22003]: Numeric value out of range: 1416 Cannot get geometry object from data you send to the GEOMETRY field
Кто-нибудь из вас знает в чем проблема? Благодарю.
попробуй это:
1-
BEGIN
SET @lat = ST_X(NEW.coordinates);
SET @lng = ST_Y(NEW.coordinates);
SET t.coordinates = GEOMFROMTEXT(CONCAT( 'POINT(', @lat, ' ', @lng, ')' ) ) ... --update point table
END
2-
INSERT INTO table (coordinates) VALUES (ST_GeomFromText('POINT(48.20 14.80)'));
Ваша лучшая ставка
ИЛИ ЖЕ
2. Измените тип данных столбца координат на текст.
Это немного поздно, но я создал это решение проблемы
$cord= $long." ".$lat;
И на вставке я использовал это. Обратите внимание, я использую активную запись codeigniter для вставки данных
$this->db->set("coord",'geomfromtext("POINT("'."'$cord'".'")")',false);
$this->db->insert("gisdata");
Надеюсь, поможет.
Ура!