Más

Publicar vistas desde Microsoft SQL Server en GeoServer

Publicar vistas desde Microsoft SQL Server en GeoServer


Estoy desarrollando la aplicación con OpenLayers 3 y GeoServer para servir capas WMS. Las capas se publican desde Microsoft SQL Server en GeoServer.

En el servidor MSSQL, hay dos bases de datos, la primera base de datos consta de todas las tablas y vistas espaciales y no espaciales que utiliza alguna otra aplicación web para ver y editar los datos de atributos de cada activo espacial.

La segunda base de datos puede contener algunas tablas espaciales (capas) que se pueden publicar directamente desde GeoServer, pero hay algunas vistas que se han creado a partir de la primera base de datos. De modo que si se ha realizado alguna actualización de los activos en esa aplicación web, afectará los atributos de las vistas en la segunda base de datos.

Estoy usando la segunda base de datos para mi aplicación. Puedo publicar fácilmente las tablas que se han subido directamente desde shapefile al servidor MSSQL. El problema es que al publicar las vistas en GeoServer, arroja una excepción.

Excepción del registro de GeoServer

2015-10-15 16: 49: 05,699 ERROR [wicket.RequestCycle] - java.io.IOException: Se produjo un error al calcular los límites para la vista espacial java.lang.RuntimeException: java.io.IOException: Se produjo un error al calcular los límites para la vista espacial en la organización. geotools.jdbc.JDBCFeatureSource.getBoundsInternal (JDBCFeatureSource.java:540) en org.geotools.data.store.ContentFeatureSource.getBounds (ContentFeatureSource.java:428) en org.geotools.data.store.ContentFeatureSource: 364) en org.vfny.geoserver.global.GeoServerFeatureSource.getBounds (GeoServerFeatureSource.java:660) en org.geoserver.catalog.CatalogBuilder.getNativeBounds (CatalogBuilder.java:561) en org.geoserverBuilder. .java: 543) en org.geoserver.web.data.resource.BasicResourceConfig $ 2.onClick (BasicResourceConfig.java:155) en org.geoserver.web.wicket.GeoServerAjaxFormLink.onSubmit (GeoServerAjaxFormLink.java.ava .wicket.ajax.markup.html.form.AjaxSubmitLink $ 1.onSubmit (Aj axSubmitLink.java:68) en org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent (AjaxFormSubmitBehavior.java:143) en org.apache.wicket.ajax.AjaxEventBehavior.respond (AjaxEvent177) .wicket.ajax.AbstractDefaultAjaxBehavior.onRequest (AbstractDefaultAjaxBehavior.java:300) en org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents. .processEvents (AbstractRequestCycleProcessor.java:92) en org.apache.wicket.RequestCycle.processEventsAndRespond (RequestCycle.java:1250) en org.apache.wicket.RequestCycle.step (RequestCycle.java:1329) en org. RequestCycle.steps (RequestCycle.java:1436) en org.apache.wicket.RequestCycle.request (RequestCycle.java:545) en org.apache.wicket.protocol.http.WicketFilter.doGet (WicketFilter.java:484) en org .apache.wicket.protocol.http.WicketServlet.doPost (WicketServlet.java:160) en javax.servlet.http.HttpServlet.s ervice (HttpServlet.java:648) en javax.servlet.http.HttpServlet.service (HttpServlet.java:729) en org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal (Servler.Wrapping:159) en .web.servlet.mvc.AbstractController.handleRequest (AbstractController.java:153) en org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle (SimpleControllerHandlerAdapter.java:48) en org.springframework.WebpatcherServ (DispatcherServlet.java:923) en org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:852) en org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:882) en org. web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:789) en javax.servlet.http.HttpServlet.service (HttpServlet.java:648) en javax.servlet.http.HttpServlet.service (HttpServlet.java .apache.catalina.core.ApplicationFilterChain.internalDoFilter (Applica tionFilterChain.java:291) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) en org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) en org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) .catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) en org.geoserver. ) en org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) en org.geoserver $ Chain.filters.Spring:206) doFilter (SpringDelegatingFilter.java:75) en org.geoserver.wms.animate.AnimatorFilter.doFilter (AnimatorFilter.java:71) en org.geoserver.filters.SpringDelegatingFilter $ Chain.doFilter (SpringDelegatingFilter.javageos71) .filters.SpringDelegatingFilter.doFilter ( SpringDelegatingFilter.java:46) en org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.javage:20os .AdvancedDispatchFilter.doFilter (AdvancedDispatchFilter. org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:311) en org.geoserver.security. access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:116) en org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:83) en org.geoserver.s ecurity.filter.GeoServerCompositeFilter $ NestedFilterChain.doFilter (GeoServerCompositeFilter.java:73) en org.geoserver.security.filter.GeoServerCompositeFilter.doFilter (GeoServerCompositeFilter.java:92) en org.springinframework. FilterChainProxy.java:323) en org.geoserver.security.filter.GeoServerCompositeFilter $ NestedFilterChain.doFilter (GeoServerCompositeFilter.java:69) en org.springframework.security.web.access.ExceptionTranslationFilter.doTransvalation:113 (ExceptionTranslationFilter.doTransvalation:113) .geoserver.security.filter.GeoServerCompositeFilter $ NestedFilterChain. .doFilter (FilterChainProxy.java:323) en org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter (GeoServerAnonymousAuthenticationFilter.java:54 ) en org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:323) en org.geoserver.security.filter.GeoServerCompositeFilter $ NestedFilterChain.doFilter (GeomeServer.javaspring .69) web.authentication.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:182) en org.geoserver.security.filter.GeoServerCompositeFilter $ NestedFilterChain.doFilter (GeoServerCompositeFilter.sevater. java: 92) en org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter (GeoServerUserNamePasswordAuthenticationFilter.java:116) en org.springframework.security.web.FilterChainFxy $ VirtualChaver. .filter.GeoServerCompositeFilter $ NestedFilterChain.doFilter (GeoServerCompositeFilter.java:69) en org.springframework.security. web. GeoServerCompositeFilter.java:92) en org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:323) en org.geoserver.security.filter.GeoServerCompositeFilter $Filter.doil- .springframework. NestedFilterChain.doFilter (GeoServerCompositeFilter.java:73) en org.geoserver.security.filter.GeoServerCompositeFilter. doFilter (GeoServerCompositeFilter.java:92) en org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:323) en org.springframework.security.web.FilterChainProxy.doFilter .geoserver.security.GeoServerSecurityFilterChainProxy.doFilter (GeoServerSecurityFilterChainProxy.java:135) en org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java. : 259) en org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) en org.geoserver.ilter. doFilter (LoggingFilter.java:83) en org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChai n.java:206) en org.geoserver.filters.GZIPFilter.doFilter (GZIPFilter.java:42) en org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) en org.apache.catalina.core .ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) en org.geoserver.filters.SessionDebugFilter.doFilter (SessionDebugFilter.java:48) en org.apache.catalina.core.ApplicationFilterChain.internalJavater. apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain. 239) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) en org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter (SetCharacterEncodingFilter.javacatalin.core.Application) en org.apache.ApplicationFilter. .internalDoFilter (ApplicationFil terChain.java:239) en org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) en org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:219) en org.apache.catal .core.StandardContextValve.invoke (StandardContextValve.java:106) en org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:502) en org.apache.catalina.core.StandardHostValve.V14alve (StandardjaHost: ) en org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79) en org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:617) en org.apache.catalina.core.Stave. invoque (StandardEngineValve.java:88) en org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:518) en org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1091) en org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1091) .coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:668) en org.apache .tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1521) en org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1478) en java.util.concurrent.ThreadPoolExecutor .runWorker (Fuente desconocida) en java.util.concurrent.ThreadPoolExecutor $ Worker.run (Fuente desconocida) en org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) en java.lang. Thread.run (Fuente desconocida) Causado por: java.io.IOException: Se produjo un error al calcular los límites de la vista espacial en org.geotools.jdbc.JDBCDataStore.getBounds (JDBCDataStore.java:1309) en org.geotools.jdbc.JDBCFeatureSource.getBounds JDBCFeatureSource. .jdbc.SQLServerException.makeFromDatabaseError (SQLServerException.java:216) en com.micr osoft.sqlserver. SQLServerStatement.java:689) en com.microsoft.sqlserver.jdbc.TDSCommand.execute (IOBuffer.java:5696) en com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand (SQLServerConnection.java:1715) en comq.microsveroft. .jdbc.SQLServerStatement.executeCommand (SQLServerStatement.java:180) en com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement (SQLServerStatement.java:155) en com.microsoft. ) en org.apache.commons.dbcp. JDBCDataStore.java:1285)… 116 más 2 015-10-15 16: 49: 05,708 INFO [geoserver.filters] - 0: 0: 0: 0: 0: 0: 0: 1 "POST / geoserver / web /? Wicket: interface =: 8: resource: tabs : panel: theList: 0: content: referencingForm: computeLatLon :: IActivePageBehaviorListener: 0: & wicket: ignoreIfNotActive = true & random = 0.15636781346984208 "tomó 33ms 2015-10-15 16: 49: 05,714 INFO [geoserver.filters] - 0: 0: 0 : 0: 0: 0: 0: 1 "GET / geoserver / web /? Wicket: interface =: 9 ::::" "Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 45.0.2454.101 Safari / 537.36 "" http: // localhost: 8080 / geoserver / web /? Wicket: interface =: 8 :::: "" "" 2015- 10-15 16: 49: 05,734 INFO [geoserver.filters] - 0: 0: 0: 0: 0: 0: 0: 1 "GET / geoserver / web /? Wicket: interface =: 9 ::::" tomó 20 ms

El geometry_columns tabla en la segunda base de datos (que estoy usando) ha almacenado el nombre de la columna de geometría como ogr_geometry pero las vistas tienen el nombre de la columna de geometría como SP_GEOMETRY

¿Es este el problema? Si es así, ¿cómo solucionarlo?

o ¿cómo publicar estas vistas de MSSQL Server usando GeoServer 2.7.2?


Confirmo este problema.

Como solución, sugiero crear una capa con límites SRS, no los que se calculan a partir de datos. (El error proviene de la consulta de bbox en los datos).


Según el seguimiento de la pila, parece que tiene algunos problemas con los campos de texto en sus vistas: "No se puede resolver el conflicto de intercalación entre" Latin1_General_CI_AS "y" SQL_Latin1_General_CP1_CI_AS "


Ver el vídeo: MS SQL+DBeaver+ PostgreSQL+ Geoserver