Suite

Publication de vues de Microsoft SQL Server dans GeoServer

Publication de vues de Microsoft SQL Server dans GeoServer


Je développe l'application avec OpenLayers 3 et GeoServer pour servir les couches WMS. Les couches sont publiées à partir de Microsoft SQL Server dans GeoServer.

Dans le serveur MSSQL, il existe deux bases de données, la première base de données se compose de toutes les tables et vues spatiales et non spatiales utilisées par une autre application Web pour afficher et modifier les données d'attribut de chaque actif spatial.

La deuxième base de données peut contenir des tables spatiales (couches) qui peuvent être directement publiées à partir de GeoServer, mais certaines vues ont été créées à partir de la première base de données. Ainsi, si une mise à jour des actifs a été effectuée dans cette application Web, cela affectera les attributs des vues dans la deuxième base de données.

J'utilise la deuxième base de données pour mon application. Je peux facilement publier les tables qui ont été téléchargées directement du fichier de formes vers le serveur MSSQL. Le problème est que lors de la publication des vues dans GeoServer, une exception est levée.

Exception du journal GeoServer

2015-10-15 16:49:05,699 ERROR [wicket.RequestCycle] - java.io.IOException : une erreur s'est produite lors du calcul des limites pour spatial_view java.lang.RuntimeException : java.io.IOException : une erreur s'est produite lors du calcul des limites pour spatial_view chez org. geotools.jdbc.JDBCFeatureSource.getBoundsInternal(JDBCFeatureSource.java:540) à org.geotools.data.store.ContentFeatureSource.getBounds(ContentFeatureSource.java:428) à org.geotools.data.store.ContentFeatureSource.getSources.(ContentFeature: 364) sur org.vfny.geoserver.global.GeoServerFeatureSource.getBounds(GeoServerFeatureSource.java:660) sur org.geoserver.catalog.CatalogBuilder.getNativeBounds(CatalogBuilder.java:561) sur org.geoserver.catalog.Catalogounder.getNativeBounder.getNativeBounder .java:543) sur org.geoserver.web.data.resource.BasicResourceConfig$2.onClick(BasicResourceConfig.java:155) sur org.geoserver.web.wicket.GeoServerAjaxFormLink.onSubmit(GeoServerAjaxFormLink.java:44) sur org.apache .wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(Aj axSubmitLink.java:68) sur org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:143) sur org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java.:177) sur org. .wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:300) sur org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:119). .processEvents(AbstractRequestCycleProcessor.java:92) sur org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250) sur org.apache.wicket.RequestCycle.step(RequestCycle.java:1329) sur org.apache.wicket. RequestCycle.steps(RequestCycle.java:1436) sur org.apache.wicket.RequestCycle.request(RequestCycle.java:545) sur org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:484) sur org .apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:160) sur javax.servlet.http.HttpServlet.s service(HttpServlet.java:648) sur javax.servlet.http.HttpServlet.service(HttpServlet.java:729) sur org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:159) sur org.springframework .web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) sur org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) sur org.springframework.Dispatch.web.servletdo.DispatcherServlet. (DispatcherServlet.java:923) sur org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) sur org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) sur org.springframework. web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) sur javax.servlet.http.HttpServlet.service(HttpServlet.java:648) sur javax.servlet.http.HttpServlet.service(HttpServlet.java:729) sur org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:291) sur org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) sur org.apache .catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) à org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) à org.geoserver.filters.ThreadLocalsCleanupFilter.doFilterjater(Thva ) sur org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) sur org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.geoserver.filters.SpringDelegating.Filter$ doFilter(SpringDelegatingFilter.java:75) sur org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71) sur org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(Spring.java:71ter) .filters.SpringDelegatingFilter.doFilter( SpringDelegatingFilter.java:46) sur org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) sur org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.geoserver.platform .AdvancedDispatchFilter.doFilter (AdvancedDispatchFilter.java:50) sur org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) sur org.apache.catalina.core.ApplicationFilterChain.doFilter. org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) à org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter.doFilter.org(GeoServerjavasecurity.webFilter) à access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) sur org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) sur org.geoserver.s ecurity.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73) à org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.PropositeFilter.java.webframe.org. FilterChainProxy.java:323) à org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69) à org.springframework.security.web.access.ExceptionTranslationFilter.doFilter.ExceptionTransvalation:Filter (ExceptionTransvalation:Filter) .geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73) at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java.Chava:92) .doFilter(FilterChainProxy.java:323) sur org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54 ) sur org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) sur org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServer69.CompositeFilter:GeoServer69.CompositeFilter: web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182) à org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositefilFilter.orgeo. java:92) sur org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:116) sur org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter. .filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69) sur org.springframework.security. web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146) à org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.javage.Filter.javage. GeoServerCompositeFilter.java : 92) sur org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java :323) sur org.geoserver.security.filter.GeoServerCompositeFilter$Nested69ServerFilter.org. .springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter.doFilter(GeoServerSecurityContextPersistFilter) NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73) sur org.geoserver.security.filter.GeoServerCompositeFilter. doFilter(GeoServerCompositeFilter.java:92) à org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) à org.springframework.security.web.Filter.orgjainProxy.doFilter(FilterChainProxy.java:323) à org.springframework.security.web.Filter.orgjainProxy.doFilter:Filter .geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:135) à org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Delegating.Profilter.Proxy.java.framework à org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Delegating.ProfilterProxy.java.framework:346) :259) sur org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) sur org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.geoserver.filters.LoggingFilter. doFilter(LoggingFilter.java:83) sur org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) sur org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai n.java:206) sur org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42) sur org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) sur org.apache.catalina.core .ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48) sur org.apache.catalina.core.ApplicationFilterChain.internalorgDoFilter(ApplicationFilter:23Chain9) apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44) sur org.apache.catalina.core.ApplicationFilterChain.internalDoFilter.java(ApplicationFilterChain.java 239) sur org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109) sur org.apache.catalina.Chacore.ApplicationFilter(SetCharacterEncodingFilter.java:109) .internalDoFilter(ApplicationFil terChain.java:239) sur org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) sur org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) sur org.apache.catalina .core.StandardContextValve.invoke(StandardContextValve.java:106) sur org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) sur org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java ) sur org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) sur org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617) sur org.apache.catalina.core.StandardEngine appeler(StandardEngineValve.java:88) sur org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) sur org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) sur org.apache .coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) sur org.apache .tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521) sur org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478) sur java.util.concurrent.ThreadPoolExecutor .runWorker(Unknown Source) sur java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) sur org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) sur java.lang. Thread.run (source inconnue) Causé par : java.io.IOException : une erreur s'est produite lors du calcul des limites pour spatial_view sur org.geotools.jdbc.JDBCDataStore.getBounds(JDBCDataStore.java:1309) sur org.geotools.jdbc.JDBCFeatureSource.getBoundsInternal( JDBCFeatureSource.java:533)… 115 de plus Causé par : com.microsoft.sqlserver.jdbc.SQLServerException : Impossible de résoudre le conflit de classement entre "Latin1_General_CI_AS" et "SQL_Latin1_General_CP1_CI_AS" dans l'opérateur d'ajout se produisant dans la colonne 1 de l'instruction SELECTE sur com.microsoft.sqlserver .jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) sur com.micr osoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) à com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792) à com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExec SQLServerStatement.java:689) sur com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) sur com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) sur com.microsoft.sqlserver .jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) sur com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) sur com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(SQLServer6Statement.java:155) ) sur org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) sur org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) sur org.geotools.jdbc.JDBCDataStore.getBounds JDBCDataStore.java:1285)… 116 de plus 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" a pris 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, comme 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::::" a pris 20ms

Le géométrie_colonnes table dans la deuxième base de données (que j'utilise) a stocké le nom de la colonne de géométrie comme ogr_geometry mais les vues ont le nom de colonne de géométrie comme SP_GEOMETRIE

Est-ce le problème, si oui comment le surmonter ?

ou comment publier ces vues MSSQL Server en utilisant GeoServer 2.7.2 ?


Je confirme ce problème.

Comme solution de contournement, je suggère de créer une couche avec des limites SRS, pas celles calculées à partir de données. (L'erreur provient de la requête bbox sur les données).


D'après votre trace de pile, il semble que vous ayez des problèmes avec les champs de texte dans vos vues : "Impossible de résoudre le conflit de classement entre "Latin1_General_CI_AS" et "SQL_Latin1_General_CP1_CI_AS"


Voir la vidéo: MS SQL+DBeaver+ PostgreSQL+ Geoserver