4 votos

Publique vistas SQL de Postgres / Postgis a Geoserver

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,

2voto

bob Puntos 111

¿Puedes escribir la distribución de tu primer parámetro condicionada a tu segundo parámetro y viceversa? Si es así, Muestreo de Gibbs sería una opción viable. Son sólo un par de líneas de código y puede mezclarse casi instantáneamente en muchos casos.

1voto

Vasu Puntos 11

Tu SQL no está completo, haces referencia a 4 tablas en tu vista pero sólo creas una (camino_layer).

Una vez que tenga su Vista SQL funcionando, puede crear un Vista SQL de GeoServer que básicamente recupera todo lo que la vista hace así SELECT * from camino_view;

También puede añadir parámetros.

1voto

Max Ruf Puntos 162

Debería comprobar Documentos de PostGIS . ST_Transform realmente transforma los datos, parece que sólo estás tratando de asignar un SRID de -1. Si ese es el caso, debes usar ST_SetSRID() en su lugar, o simplemente no hacer nada y devolver "l.the_geom".

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