2016-04-27 71 views
1

我使用ogr2​​ogr将GPX文件上传到PostGIS。为什么PHP不能在PostGIS上插入新的几何体?

当我在命令行(Ubuntu 14.04)上执行它时,它工作正常。

ogr2ogr -append -f PostgreSQL PG:"host=... dbname=... user=... password=..." 2016-04-26_15-32-01.xml 

当我做它在PHP(5.5.9),

exec("ogr2ogr -append -f PostgreSQL PG:\"host=".HOST." dbname=".DATABASE." user=".USER." password=".PASSWORD."\" /var/www/html/plantas/gps/2016-04-26_15-32-01.xml 2>&1",$output,$retval); 

它提供了以下错误:

ERROR 1: INSERT command for new feature failed. 
ERROR: Geometry SRID (0) does not match column SRID (4326) 

Command: INSERT INTO "waypoints" ("wkb_geometry" , "ele", "time", "name", "cmt", "desc", "sym", "type", "gpxx_waypointextension", "wptx1_waypointextension", "ctx_creationtimeextension") VALUES ('010100000000008C76C2DF4EC00100C0A13A450E40'::GEOMETRY, 594, '2015/11/16 17:22:09+00', 'ROP_2904', '08-NOV-15 9:56:51 
PONTO 60', '08-NOV-15 9:56:51 
PONTO 60', 'Flag, Blue', 'user', ' SymbolAndName ', ' SymbolAndName ', ' 2015-11-16T17:22:09Z ') RETURNING "ogc_fid" 
ERROR 1: Terminating translation prematurely after failed 
translation of layer waypoints (use -skipfailures to skip errors) 

缺少什么我在这里?

编辑

我想迈克牛逼建议:

$linha = "ogr2ogr -append -f PostgreSQL PG:\"host=".HOST." dbname=".DATABASE." user=".USER." password=".PASSWORD."\" -s_srs EPSG:4326 /var/www/html/plantas/gps/2016-04-26_15-32-01.xml 2>&1"; 
// or $linha = "ogr2ogr -s_srs EPSG:4326 -append -f PostgreSQL PG:\"host=".HOST." dbname=".DATABASE." user=".USER." password=".PASSWORD."\" /var/www/html/plantas/gps/2016-04-26_15-32-01.xml 2>&1"; 
exec($linha,$output,$retval); 

无济于事:

ERROR 1: INSERT command for new feature failed. 
ERROR: Geometry SRID (0) does not match column SRID (4326) 

什么是真正奇怪的是,正是在终端相同的命令作品。所以我认为PHP可能有一些问题,可能是缺少的库或许可?

EDIT 2

现在我看到有一些安装在用户需要运行

psql -d yourdatabase -f postgis.sql 

在我的电脑上我只做了

create extension postgis; 
create extension postgis_topology; 

会看到,如果这问题。

编辑3 - 已解决!

我又开始了这一切:

  1. 从备份中恢复以前的数据库;
  2. create extension postgis;
  3. create extension postgis_topology;
  4. ogr2ogr从控制台创建附加的台(样waypoints);
  5. 之后,我需要授予访问这些额外的表给php/apache用户。

回答

0

我又开始了这一切:

  1. 从备份中恢复以前的数据库;
  2. create extension postgis;
  3. create extension postgis_topology;
  4. ogr2ogr从控制台创建附加的台(样waypoints);
  5. 之后,我需要授予访问这些额外的表给php/apache用户。
1

它看起来像您的源图层没有空间参考系统(SRID = 0)。您可以尝试使用-s_srs EPSG:4326覆盖源SRS。

+0

谢谢Mike,但我仍然得到同样的错误。 – Rodrigo

+0

@Rodrigo如何使用'-a_srs'来代替? –

+0

我尝试了所有三种:-a_srs,-t_srs和-s_srs。没有工作。 – Rodrigo

相关问题