4 votos

ST_GeomFromText no se encuentra

He instalado Postgres 9.5. Luego instalé PostGIS. Luego creé una base de datos llamada geodb . En ella he creado una columna con el tipo polygon y varios otros como id .

Tabla polygon se creó con éxito, por lo que parece que PostgreSQL conoce la geometría.

Pero cuando intento ejecutar la siguiente consulta:

INSERT INTO public.rasters_previews( id, "Path", "Coordinates", "Name", "imageBounds") VALUES (1, 'foo', ST_GeomFromText('polygon((60.536 27.589,60.509 39.054,54.908 38.183,54.93 28.368,60.536 27.589))'), 'xname', 'xbound');

Me da error que la función ST_GeomFromText no existe.

He intentado hacer lo mismo con la configuración postgis_22_sample como plantilla pero obtuve el mismo resultado.

¿Qué estoy haciendo mal? ¿Debo hacer alguna otra manipulación para obtener la DB wotk como geoespacial?

1 votos

¿Esto funciona? SELECT ST_GeomFromText('polygon((60.536 27.589,60.509 39.054,54.908 38.183,54.93 28.368,60.536 27.589))');

3 votos

El tipo de dato "polygon" es un tipo de dato nativo de PostgreSQL. Con PostGIS desea utilizar "geometría", tal vez con la restricción de contener sólo polígonos.

1 votos

¿ha creado la extensión postgis en su base de datos? Puede hacerlo ejecutando: create extension postgis;

7voto

neouser99 Puntos 1203

¿Está el esquema en el que se instaló PostGIS en su ruta de búsqueda? La forma más fácil de comprobarlo es ejecutando el comando

SELECT PostGIS_Full_Version();

Si eso devuelve información sobre PostGIS estás listo, si no, encuentra el esquema en el que instalaste PostGIS y añádelo a la ruta de búsqueda. Yo suelo instalar PostGIS en su propio esquema con:

CREATE SCHEMA postgis;
CREATE EXTENSION postgis WITH SCHEMA postgis;
ALTER DATABASE geodb SET search_path TO public, postgis;

No olvide añadir cualquier otro esquema de su base de datos a la ruta de búsqueda. Si instalas la extensión de topología, ésta creará su propio esquema de topología que también deberá ir a la ruta de búsqueda.

1 votos

¿Cómo encontrar el esquema donde se instaló PostGIS?

2 votos

SELECT specific_schema FROM information_schema.routines WHERE routine_name = 'postgis_full_version'; Ejecutando esta consulta en la base de datos en la que estás intentando encontrar PostGis te dirá en qué esquema se instaló PostGis. Si PostGIS no está funcionando entonces añada el esquema a la ruta de búsqueda de esa base de datos.

0voto

Dimarc67 Puntos 66

Puede volver a instalar sus extensiones en el esquema público si las instaló accidentalmente en un esquema fuera de la ruta de búsqueda predeterminada

por ejemplo:

DROP EXTENSION IF exists postgis;
CREATE EXTENSION postgis WITH SCHEMA public;

DROP EXTENSION IF exists "uuid-ossp";
CREATE EXTENSION "uuid-ossp" WITH SCHEMA public;

DROP EXTENSION IF exists unaccent;
CREATE EXTENSION unaccent WITH SCHEMA public;

DROP EXTENSION IF exists cube;
CREATE EXTENSION cube WITH SCHEMA public;

DROP EXTENSION IF exists ltree;
CREATE EXTENSION ltree WITH SCHEMA public;

DROP EXTENSION IF exists tablefunc;
CREATE EXTENSION tablefunc WITH SCHEMA public;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X