He intentado y leído cómo publicar una vista Postgres / Postgis en Geoserver. Sé que puedo crear una Vista SQL en Geoserver, pero me gustaría definir la Vista en Postgres, no en Geoserver.
¿Alguien tiene un ejemplo de cómo se hace?
Hasta ahora he intentado esto, pero no puedo ver el contenido de la Vista, ni siquiera en Postgres.
CREATE OR REPLACE VIEW camino_view AS
SELECT c.id, c.nombre, t.id AS tipo_id, t.nombre AS tipo, l.gid AS geo_id, st_transform(l.the_geom, (-1)) AS the_geom
FROM camino c, camino_tipo t, camino_layer l, camino_link e
WHERE c.tipo_id = t.id AND e.camino_id = c.id AND e.camino_geo_id = l.gid;
CREATE TABLE camino_layer
(
gid serial NOT NULL,
"Tipo" character varying(50),
"Nombre" character varying(50),
the_geom geometry,
CONSTRAINT camino_layer_pkey PRIMARY KEY (gid),
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (-1))
)
WITH (
OIDS=FALSE
);
CREATE TABLE camino_link
(
camino_id integer NOT NULL,
camino_geo_id integer NOT NULL,
CONSTRAINT camino_link_pkey PRIMARY KEY (camino_id, camino_geo_id),
CONSTRAINT camino_link_camino_fkey FOREIGN KEY (camino_id)
REFERENCES camino (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT camino_link_camino_layer_fkey FOREIGN KEY (camino_geo_id)
REFERENCES camino_layer (gid) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
CREATE TABLE camino_tipo
(
id serial NOT NULL,
nombre character varying(48) NOT NULL,
CONSTRAINT camino_tipo_pkey PRIMARY KEY (id)
)
CREATE TABLE camino
(
id serial NOT NULL,
nombre character varying(40) NOT NULL,
tipo_id integer NOT NULL,
CONSTRAINT camino_pkey PRIMARY KEY (id),
CONSTRAINT camino_tipo_fkey FOREIGN KEY (tipo_id)
REFERENCES camino_tipo (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT camino_name_uq UNIQUE (nombre)
)
WITH (
OIDS=FALSE
);
Cualquier ayuda será apreciada. Gracias,