2016-04-27 2 views
1

私はogr2ogrを使ってPostGISにGPXファイルをアップロードしています。PostGISでPHPが新しいジオメトリを挿入できないのはなぜですか?

私がコマンドライン(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) 

は、私がここで何をしないのですか?

EDIT

私はマイク・Tの提案を試みた:無駄に

$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

は今、私は、ユーザーがそれはだ場合、私だけ

create extension postgis; 
create extension postgis_topology; 

ゴナは見なかった私のコンピュータでは

psql -d yourdatabase -f postgis.sql 

を実行するために必要ないくつかの設備があります見ています問題。

EDIT 3 - SOLVED!

私は再びそれをすべて始めた:

  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)がありません。

ogr2ogrを使用すると、-s_srs EPSG:4326を送信元SRSより優先して試すことができます。

+0

ありがとう、マイク、私はまだ同じエラーが発生します。 – Rodrigo

+0

@Rodrigo代わりに '-a_srs'を使う方法は? –

+0

-a_srs、-t_srs、および-s_srsの3つを試しました。何も働かなかった。 – Rodrigo

関連する問題