我正在使用Postgis使用Postgres数据库开发一个带Laravel框架的系统。数据库有一个带有几何字段(3D点)的表。所以我需要将3个维度转换为Point对象,将Point对象转换为3个维度。
我搜索了Laravel Postgis图书馆,我找到了laravel-postgis,但它只针对2D点开发,并且不支持3D点。因此我决定直接使用或在php中开发一个转换功能,以便在Laravel中使用。
我试图直接插入新数据的一些代码:
$arr = ['geometry' => "ST_PointFromText('POINT(' || " . Input::get('Latitude') . " || ' ' || " . Input::get('Longitude') . " || ' ' || " . Input::get('Altitude') . " || ')', 4326)"];
Location::where('id','1')->update($arr);
$ arr变量的样本初始化类似于
ST_PointFromText(' POINT(' || 1 ||'' || 1 ||'' || 1 ||' )',4326)
这就像我在this link
中找到的东西但是Laravel调试给我带来了错误:
PDOException in Connection.php line 384: SQLSTATE[XX000]: Internal error: 7 ERROR: parse error - invalid geometry HINT: "ST" <-- parse error at position 2 within geometry
SQLSTATE[XX000]: Internal error: 7 ERROR: parse error - invalid geometry HINT: "ST" <-- parse error at position 2 within geometry (SQL: update "DBLocation" set "geometry" = ST_PointFromText('POINT(' || 1 || ' ' || 1 || ' ' || 1 || ')', 4326) where "id" = 1)
我想知道我的错误。
答案 0 :(得分:0)
我不确定参数化查询的语法,但它应该是这样的:
ST_SetSRID(ST_MakePoint(%, %, %), 4326);
有三个参数:Longitude
,Latitude
,Altitude
按此顺序排列!