Я использую ogr2ogr для загрузки файла GPX в 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)
Что мне здесь не хватает?
РЕДАКТИРОВАТЬ
Я попробовал Mike 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 может быть какая-то проблема, возможно, отсутствующая библиотека или разрешение?
РЕДАКТИРОВАТЬ 2
Теперь я вижу, что есть некоторые установки, где пользователь должен запустить
psql -d yourdatabase -f postgis.sql
В моем компьютере я сделал только
create extension postgis;
create extension postgis_topology;
Посмотрим, в этом ли проблема.
РЕДАКТИРОВАТЬ 3 — решено!
Я начал все это снова:
create extension postgis;
create extension postgis_topology;
ogr2ogr
из консоли создает дополнительные таблицы (например, waypoints
);Похоже, ваш исходный слой не имеет системы пространственной привязки (SRID = 0).
С ogr2ogr ты можешь попробовать -s_srs EPSG:4326
переопределить источник SRS.
Я начал все это снова:
create extension postgis;
create extension postgis_topology;
ogr2ogr
из консоли создает дополнительные таблицы (например, waypoints
);