[Geoserver-users] Creation of a layer from an existing Postgis table

Hi,

I am using geoserver 2.5 and geoserver-manager 1.5.2. I am trying to create a layer from an existing table imported in Postgis using the following code :

GSFeatureTypeEncoder fte = new GSFeatureTypeEncoder();

fte.setName(item.getSigName()); //item.getSigName() is my Postgis table name

fte.setSRS(tmp.getCrs());

fte.setNativeBoundingBox(-5.0, -5.0, 5.0, 5.0, tmp.getCrs());

GSLayerEncoder layerEncoder = new GSLayerEncoder();

layerEncoder.setEnabled(true);

layerEncoder.setQueryable(true);

// source.getVirtualItem().getSigName() is the name of the datastore

if(!manager.getPublisher().publishDBLayer(WORKSPACE, source.getVirtualItem().getSigName(), fte, layerEncoder)){

System.out.print(“error”);

}

Geoserver logs are :

2015-05-12 11:15:23,646 INFO [org.geoserver] - Loaded feature type ‘tt_1431420716200’, enabled

2015-05-12 11:15:23,802 ERROR [geoserver.rest] - :Error occurred creating table

2015-05-12 11:15:23,802 ERROR [geoserver.rest] -

org.geoserver.rest.RestletException: java.io.IOException: Error occurred creating table

at org.geoserver.rest.ReflectiveResource.handleException(ReflectiveResource.java:325)

at org.geoserver.rest.ReflectiveResource.handlePost(ReflectiveResource.java:123)

at org.restlet.Finder.handle(Finder.java:296)

at org.geoserver.rest.BeanDelegatingRestlet.handle(BeanDelegatingRestlet.java:37)

at org.restlet.Filter.doHandle(Filter.java:105)

at org.restlet.Filter.handle(Filter.java:134)

at org.restlet.Router.handle(Router.java:444)

at org.geoserver.rest.RESTDispatcher$1.handle(RESTDispatcher.java:204)

at com.noelios.restlet.ext.servlet.ServletConverter.service(ServletConverter.java:129)

at org.geoserver.rest.RESTDispatcher.handleRequestInternal(RESTDispatcher.java:86)

at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)

at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)

The logs makes me think that geoserver tries to create the table but it already exists so an error occurred.

What is the correct way to create a layer from an existing table ?

Best regards,

François

Arg my mistake ! there was an error in the name I gave to the GSFeatureTypeEncoder… Now it is working fine.

Bye

De : François CELLIER [mailto:francois.cellier@anonymised.com]
Envoyé : mardi 12 mai 2015 11:22
À : geoserver-users@anonymised.comnet
Objet : [Geoserver-users] Creation of a layer from an existing Postgis table

Hi,

I am using geoserver 2.5 and geoserver-manager 1.5.2. I am trying to create a layer from an existing table imported in Postgis using the following code :

GSFeatureTypeEncoder fte = new GSFeatureTypeEncoder();

fte.setName(item.getSigName()); //item.getSigName() is my Postgis table name

fte.setSRS(tmp.getCrs());

fte.setNativeBoundingBox(-5.0, -5.0, 5.0, 5.0, tmp.getCrs());

GSLayerEncoder layerEncoder = new GSLayerEncoder();

layerEncoder.setEnabled(true);

layerEncoder.setQueryable(true);

// source.getVirtualItem().getSigName() is the name of the datastore

if(!manager.getPublisher().publishDBLayer(WORKSPACE, source.getVirtualItem().getSigName(), fte, layerEncoder)){

System.out.print(“error”);

}

Geoserver logs are :

2015-05-12 11:15:23,646 INFO [org.geoserver] - Loaded feature type ‘tt_1431420716200’, enabled

2015-05-12 11:15:23,802 ERROR [geoserver.rest] - :Error occurred creating table

2015-05-12 11:15:23,802 ERROR [geoserver.rest] -

org.geoserver.rest.RestletException: java.io.IOException: Error occurred creating table

at org.geoserver.rest.ReflectiveResource.handleException(ReflectiveResource.java:325)

at org.geoserver.rest.ReflectiveResource.handlePost(ReflectiveResource.java:123)

at org.restlet.Finder.handle(Finder.java:296)

at org.geoserver.rest.BeanDelegatingRestlet.handle(BeanDelegatingRestlet.java:37)

at org.restlet.Filter.doHandle(Filter.java:105)

at org.restlet.Filter.handle(Filter.java:134)

at org.restlet.Router.handle(Router.java:444)

at org.geoserver.rest.RESTDispatcher$1.handle(RESTDispatcher.java:204)

at com.noelios.restlet.ext.servlet.ServletConverter.service(ServletConverter.java:129)

at org.geoserver.rest.RESTDispatcher.handleRequestInternal(RESTDispatcher.java:86)

at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)

at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)

The logs makes me think that geoserver tries to create the table but it already exists so an error occurred.

What is the correct way to create a layer from an existing table ?

Best regards,

François