启动geoserver报错文件找不到 现象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 java.io.FileNotFoundException: src/main/webapp at org.eclipse.jetty.webapp.WebInfConfiguration.unpack(WebInfConfiguration.java:671) at org.eclipse.jetty.webapp.WebInfConfiguration.preConfigure(WebInfConfiguration.java:152) at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:506) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:544) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138) at org.eclipse.jetty.server.Server.start(Server.java:416) at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108) at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113) at org.eclipse.jetty.server.Server.doStart(Server.java:383) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.geoserver.web.Start.main(Start.java:125) 九月 15, 2021 11:21:37 上午 org.geoserver.web.Start main 严重: GeoServer startup complete in 0.186s
解决方法 org.geoserver.web.Start#main
wah.setWar(“src/web/app/src/main/webapp”);
geoserver 调用wms服务时访问的数据
org.geoserver.wms.GetMap#executeInternal
org.geotools.renderer.lite.StreamingRenderer#drawPlain
org.geotools.data.store.ContentFeatureSource#getReader(org.geotools.data.Query)
org.geoserver.wms.GetMapOutputFormat#produceMap
org.geoserver.wms.map.RenderedImageMapOutputFormat#produceMap(org.geoserver.wms.WMSMapContent, boolean)
renderer.paint(
org.geotools.data.postgis.PostGISDialect#encodeGeometryColumnSimplified
geoserver 在一定版本下出现数据缺失,本地发布的文件没有这种情况,目前只出现在用postgis发布的数据shp图层数据
参考了这个github-issueshttps://github.com/AtlasOfLivingAustralia/spatial-hub/issues/66
之前版本查询SQL
1 SELECT "ogc_fid" ,encode (ST_AsBinary(CASE WHEN ST_HasArc("geom" ) THEN "geom" ELSE ST_Simplify(ST_Force2D("geom" ), 1.71661376953125E-5 , true ) END ),'base64' ) as "geom" FROM "public" ."cg4201061__hhbjx" WHERE "geom" && ST_GeomFromText('POLYGON ((111.91068649291992 32.39775896072388, 111.91068649291992 32.41295099258423, 111.92733764648438 32.41295099258423, 111.92733764648438 32.39775896072388, 111.91068649291992 32.39775896072388))' , 4490 )
现在geoserver 25.2
1 2 3 4 5 6 7 SELECT "fid" , encode ( ST_AsTWKB ( ST_Simplify ( ST_Force2D ( "geom" ), 3.8116173923015597 , TRUE ), 0 ), 'base64' ) AS "geom" FROM "public" ."qj_temp_gzw" WHERE "geom" && ST_GeomFromText ( 'POLYGON ((38371118.635024056 3413740.625232533, 38371118.635024056 3417424.5832218914, 38374191.75154781 3417424.5832218914, 38374191.75154781 3413740.625232533, 38371118.635024056 3413740.625232533))' , 4526 )
在老的版本中 加入了判断是否
encode(ST_AsBinary(CASE WHEN ST_HasArc(“geom”) THEN “geom” ELSE ST_Simplify(ST_Force2D(“geom”), 1.71661376953125E-5, true) END),’base64’) as “geom”
是否是如果一个geometry对象或geometry collection包含一个CircularString对象,则返回TRUE这样如果包含圆的geometry会被简化
而 ST_Simplify() 函数则是通过数据简化 简化太多的圆变成三角形,中间变成八边形
老版本geoserver(2.15)执行SQL的区别
1 2 3 4 5 6 7 SELECT "fid" ,encode (ST_AsBinary(ST_Simplify(ST_Force2D("geom" ), 3.8116173982620243 , true )),'base64' ) as "geom" FROM "public" ."qj_temp_gzw" WHERE "geom" && ST_GeomFromText('POLYGON ((38371404.953002505 3413497.2549508526, 38371404.953002505 3417181.212940211, 38374478.06952626 3417181.212940211, 38374478.06952626 3413497.2549508526, 38371404.953002505 3413497.2549508526))' , 4526 ) 勾选SELECT "fid" ,encode (ST_AsBinary(ST_Force2D("geom" )),'base64' ) as "geom" FROM "public" ."qj_temp_gzw" WHERE "geom" && ST_GeomFromText('POLYGON ((38371404.953002505 3413497.2549508526, 38371404.953002505 3417181.212940211, 38374478.06952626 3417181.212940211, 38374478.06952626 3413497.2549508526, 38371404.953002505 3413497.2549508526))' , 4526 ) 不勾选
新版本geoserver(2.19) 执行SQL的区别
1 2 3 4 5 6 7 8 9 SELECT "fid" ,encode (ST_AsTWKB(ST_Simplify(ST_Force2D("geom" ), 3.8116173923015597 , true ),0 ), 'base64' ) as "geom" FROM "public" ."qj_temp_gzw" WHERE "geom" && ST_GeomFromText('POLYGON ((38371404.953002505 3413497.2549508526, 38371404.953002505 3417181.212940211, 38374478.06952626 3417181.212940211, 38374478.06952626 3413497.2549508526, 38371404.953002505 3413497.2549508526))' , 4526 )SELECT "fid" ,encode (ST_AsBinary(ST_Force2D("geom" )), 'base64' ) as "geom" FROM "public" ."qj_temp_gzw" WHERE "geom" && ST_GeomFromText('POLYGON ((38371404.953002505 3413497.2549508526, 38371404.953002505 3417181.212940211, 38374478.06952626 3417181.212940211, 38374478.06952626 3413497.2549508526, 38371404.953002505 3413497.2549508526))' , 4526 )