PostgreSQL (shp2pgsql) AddGeometryColumn выдает «Нет функции, соответствующей данному имени» - PullRequest
2 голосов
/ 06 сентября 2011

Я работаю с файлом формы PADUS OBI , не то чтобы это, вероятно, важно.

Я запускаю файл формы через shp2pgsql, используя параметры по умолчанию, как в:

shp2pgsql PADUS_1_1_CBI_Edition.shp > PADUS.sql

Затем я пытаюсь импортировать SQL в Postgres, выполнив:

psql -d padusdb -f PADUS.sql

И получаю следующую ошибку:

psql:PADUS.sql:36: ERROR:  function addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) does not exist
LINE 1: SELECT AddGeometryColumn('','padus_1_1_cbi_edition','the_geo...
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

У меня установлен PostGIS.

Команды SQL, приводящие к ошибке (помещаемые в пустую базу данных):

SET CLIENT_ENCODING TO UTF8;
SET STANDARD_CONFORMING_STRINGS TO ON;
BEGIN;
CREATE TABLE "padus_1_1_cbi_edition" (gid serial PRIMARY KEY,
"us_id" int4,
"category" varchar(10),
"gis_acres" numeric,
...
BUNCH OF COLUMNS, none of which is called "the_geom"
...
"comments" varchar(200),
"shape_leng" numeric,
"shape_area" numeric);
SELECT AddGeometryColumn('','padus_1_1_cbi_edition','the_geom','-1','MULTIPOLYGON',2);
COMMIT;

Есть мысли о том, что это может означать и как решить проблему?

Ответы [ 4 ]

4 голосов
/ 08 сентября 2011

Итак, оказывается, недостаточно просто установить PostGIS на свою машину.

Изначально я выбрал sudo apt-get install postgresql postgis в Ubuntu 10.10. Это оставило меня с рабочей версией PostGRE 8.4, но никаких признаков PostGIS.

Поэтому я попробовал sudo apt-get install postgresql-8.4-postgis.

Но на этом работа не заканчивается! Вам необходимо настроить базу данных PostGIS.

Этот веб-сайт предоставляет инструкции по выполнению этого и использованию базы данных впоследствии.

1 голос
/ 18 мая 2013

Похоже, что база данных должна быть пространственно включена. Причина, по которой он выдает эти ошибки, заключается в том, что функция отсутствует. Этот ресурс имеет быстрый и простой ответ и решение.

0 голосов
/ 30 октября 2013

Спасибо atorres757! Ваш ответ решил мою проблему за считанные минуты. Я удалил свою базу данных и создал новую базу данных и выбрал template_postgis в качестве моего шаблона. Все шейп-файлы нормально импортируются с моим скриптом на python:

для lyr в iList:

os.system ("shp2pgsql -c -s 4326 -k -I -W UTF-8" + lyr [: - 4] + "" + lyr [: - 4] + "| psql -d AWM -p 5432 -U postgres ")

0 голосов
/ 06 сентября 2011

эта ошибка указывает на то, что функция не может быть распознана (либо имя функции, либо типы параметров неверны)

это определения для AddGeometryColumn в версии 7.2

text AddGeometryColumn(varchar table_name, varchar column_name, integer srid, varchar type, integer dimension);

text AddGeometryColumn(varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension);

text AddGeometryColumn(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension);

мне кажется, что вы пытаетесь использовать 2-е определение, попробуйте изменить его, чтобы использовать первое определение (без схемы), и попробуйте снять кавычки с srid (-1), поскольку оно должно быть передано как целое число.

Вам может понадобиться разыграть все ...

...