Postgresql 如何使用原始查询添加点?

Postgresql 如何使用原始查询添加点?,postgresql,postgis,laravel-5.2,Postgresql,Postgis,Laravel 5.2,我需要在postgres类型的表中插入一个点,我尝试了: \DB::statement("SET search_path = postgis, public;"); \DB::statement("INSERT INTO points (latlong) VALUES( ST_GeomFromText('POINT(-71.060316 48.432044)', 4326));"); 但我有一个错误: SQLSTATE[42883]: Undefined function: 7 ERROR:

我需要在postgres类型的表中插入一个点,我尝试了:

\DB::statement("SET search_path = postgis, public;");
\DB::statement("INSERT INTO points (latlong) VALUES( ST_GeomFromText('POINT(-71.060316 48.432044)', 4326));");
但我有一个错误:

SQLSTATE[42883]: Undefined function: 7 ERROR: function st_geomfromtext(unknown, integer) does not exist
LINE 1: INSERT INTO points (latlong) VALUES(ST_GeomFromText('POINT(-...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts. (SQL: INSERT INTO points (latlong) VALUES(ST_GeomFromText('POINT(-71.060316 48.432044)', 4326));)
我正在使用安装了postgis的postgres 9.4.5。。有什么想法吗

  • 使用类似于
    CREATE EXTENSION IF NOT EXISTS PostGIS的东西安装PostGIS
  • 除非源数据已经是文本,否则通过格式化
    ST_geomefromtext
    的WKT字符串来创建几何图形并不是生成几何图形的最佳方法(速度较慢、有损、容易出错等)。若要从两个浮点值生成点几何图形,请使用以下命令:

    DB::insert('INSERT INTO points (latlong) VALUES(ST_SetSRID(ST_MakePoint(?, ?), 4326))',
               [lng, lat]);
    

  • 您的存储过程不存在,可能它有不同的名称我没有存储过程,我只想插入一个点..ST_GeomFromText是什么('point(-71.060316 48.432044)),4326);从OGC已知文本表示构建PostGIS ST_几何体对象。PostGIS是PostgreSQL对象关系数据库的空间数据库扩展程序,定义于PostGIS中。它增加了对地理对象的支持,允许在SQL中运行位置查询。是的,postgis没有安装,我使用了docker映像,现在可以了。谢谢你的建议,这个命令可以下载扩展吗?权限等呢。。目前我正在使用一个docker,如果不存在,创建扩展