GeoServer WMS地图请求内存限制问题

发布日期 : 2018-01-18 02:10:43 UTC      

访问量: 1112 次浏览

GeoServer发布WMS地图服务后,需要请求获取 一张较大的地图图片,请求地址如下:

http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=campus&styles=&  
bbox=4.528514,4.950175,4.546676,4.958241  
&width=7430&height=3300&srs=EPSG:4326&format=image/png  

其中,输出的地图图片的高、宽分别为:3300、7430。

问题一:在浏览器中地址栏中回车发送请求后,抛出以下异常, 提示地图渲染超过了65536KB的大小限制:

  
     
  
Rendering request would use 71833KB, whilst the maximum memory allowed is 65536KB


解决一:登录 GeoServer Web Admin Page 管理页面,在左侧的服务中, 点击WMS,在右侧把Max rendering memory (KB)的值由65536改为了 6553600以确保够用。重新请求即可成功。 问题二:当继续增加请求的图片大小时(高、宽:14860、6600), 仍然会抛出异常,请求URL和异常信息如下:
http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=campus&styles=&  
bbox=4.528514,4.950175,4.546676,4.958241  
&width=14860&height=6600&srs=EPSG:4326&format=image/png  
  
   
     
  
      java.lang.NegativeArraySizeException  
null  
  
 
解决二:开始菜单 >> Start GeoServer 右键属性,找到 "C:\Program Files (x86)\GeoServer 2.5\bin\startup.bat" ,用记事本打开:
call "C:\Program Files (x86)\Java\jdk1.8.0\bin\java.exe" -DGEOSERVER_DATA_DIR="C:\Program Files (x86)\GeoServer 2.5\data_dir" -Xmx512m -XX:MaxPermSize=128m -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -Djetty.port=8080 -Djetty.logs="C:\Program Files (x86)\GeoServer 2.5\logs" -jar "C:\Program Files (x86)\GeoServer 2.5\start.jar"  
修改其中的 -Xmx512m -XX:MaxPermSize=128m 部分,修改如下:
call "C:\Program Files (x86)\Java\jdk1.8.0\bin\java.exe" -DGEOSERVER_DATA_DIR="C:\Program Files (x86)\GeoServer 2.5\data_dir" -Xmx1024m -XX:MaxPermSize=512m -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -Djetty.port=8080 -Djetty.logs="C:\Program Files (x86)\GeoServer 2.5\logs" -jar "C:\Program Files (x86)\GeoServer 2.5\start.jar"  
再次请求地图URL,问题解决。
《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。