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

应用需求: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的大小限制:

<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE ServiceExceptionReport SYSTEM
"http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd">
<ServiceExceptionReport version="1.1.1" >
<ServiceException>
      Rendering request would use 71833KB, whilst the maximum memory allowed is 65536KB
</ServiceException>
</ServiceExceptionReport>


解决一:登录 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
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ServiceExceptionReport SYSTEM
"http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd"> 
<ServiceExceptionReport version="1.1.1" >
<ServiceException>
      java.lang.NegativeArraySizeException
null
</ServiceException>
</ServiceExceptionReport>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ServiceExceptionReport SYSTEM
"http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd"> 
<ServiceExceptionReport version="1.1.1" >
<ServiceException>
      java.lang.OutOfMemoryError: Java heap space
Java heap space
</ServiceException>
</ServiceExceptionReport>

解决二:开始菜单 >> 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,问题解决。

参考文章:

1. Maximum memory for GetMap request

2. WMS configuration

3. Geoserver/java out of heap space - how do I increase it?

GeoServer WMS地图请求内存限制问题,布布扣,bubuko.com

时间: 2024-10-06 18:59:28

GeoServer WMS地图请求内存限制问题的相关文章

ArcGIS api fo silverlight学习一(silverlight加载GeoServer发布的WMS地图)

最好的学习资料ArcGIS api fo silverlight官网:http://help.arcgis.com/en/webapi/silverlight/samples/start.htm 一.GeoServer环境搭建及数据发布 参考:http://www.cnblogs.com/beniao/archive/2011/01/08/1930822.html等 二.创建ArcGIS API for SilverLight应用 参考:http://blog.csdn.net/zdw_wym/

World Wind Java开发之十四——添加WMS地图服务资源

数据是GIS的核心,没有数据一切无从谈起,Internet上有很多在线WMS地图服务资源,我们可以好好利用这些数据资源,比如天地图.必应地图.NASA.OGC数据服务等等. 在我们国家常用的还是天地图的地图服务资源,详见:http://blog.3snews.net/space.php?uid=6955280&do=blog&id=67981,这篇博客列举了一些常用的在线地图服务资源,读者可以自行试下. 1.添加天地图地图服务 由于上篇转载的平常心的博客对WMSTiledImageLaye

基于GeoServer切片地图服务的发布

接着上一篇文章,如何将JPG格式的图片转化为带地理坐标的TIFF格式里提及的最近的一个项目,数据源是一张高分辨率的2.5维图片,现在已经成功转化成了带有地理坐标的TIFF格式.下面将介绍借助GeoServer如何将这个TIFF格式的数据以TMS(Tiled Map Service)的形式发布出去.此前笔者利用商业软件ArcGIS Server发布地图服务已经算是比较熟悉了.此次利用开源软件发布还处于摸索与学习阶段. 1.GeoServer介绍 GeoServer是OpenGIS Web 服务器规

autocad文件(dxf、dwg)发布到 Geoserver作为地图图层

目录 一.Geoserver服务运行 二.dwg文件转dxf 三.dxf转shp 四.shp转文件查看 五.shp文件style设置 六.shp文件导入到Geoserver 七.open Layer 展示 本博客中涉及的操作只适用于,OpenStreetMap数据源,其他数据源需要融汇贯通. 准备环境 一.Geoserver服务运行 java sdk.tomcat.Geoserver 具体配置过程参见: 在windows环境下配置GeoServer 二.dwg文件转dxf 工具软件:Autode

cesium 结合 geoserver 实现地图属性查询(附源码下载)

前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内容概览 1.cesium 结合 geoserver 实现地图属性查询2.源代码 demo 下载 效果图如下: 实现思路:首先利用 geoserver 发布的图斑 WFS 服务,通过 url 的 rest 请求,构造属性查询形式,获取 geojson 数据源:然后调用cesium api 的 Cesi

cesium结合geoserver实现地图空间查询(附源码下载)

前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内容概览 1.cesium 结合 geoserver 实现地图空间查询2.源代码 demo 下载 效果图如下: 实现思路:首先利用 geoserver 发布的图斑 WFS 服务,通过 url 的 rest 请求,构造空间查询形式,获取 geojson 数据源:然后调用cesium api 的 Cesi

openlayers6结合geoserver实现地图矢量瓦片(附源码下载)

内容概览 1.基于openlayers6结合geoserver实现地图矢量瓦片2.源代码demo下载 效果图如下: 实现思路:利用Geoserver发布矢量切片服务,然后openlayers调用矢量瓦片服务渲染加载,geoserver发布矢量服务步骤自行百度搜索相关教程,网上很多.最后,通过地图点击事件交互,实现图形高亮以及气泡窗口显示信息详情效果. 具体实现过程 利用geoserver发布好的矢量瓦片服务预览效果,直接F12看源码,来对应整合到demo var geojsonLayer = n

基于Geoserver发布地图

Geoserver是著名的开源GIS软件之一.也是项目中常用的地图服务软件.基于geoserver和Openlayers就可以构建一个免费的开源GIS项目. Geoserver发布地图的步骤为: 1.      Geoserver启动 启动Geoserver,并登陆.登陆后界面如图所示 2.      新建工作区. 单击数据栏下的工作区,建立新的工作区,如下图所示,在Name中输入工作区的名字,本文建立的工作区为karl,命名空间未http://www.cxzx.com,此处的命名空间在做WFS

【百度地图API】多家地图API内存消耗对比测验(带源码)

原文:[百度地图API]多家地图API内存消耗对比测验(带源码) 任务描述: 啊,美妙的春节结束了.酸奶小妹和妈妈的山西平遥之旅也宣告成功!距离平遥古城7km,有一个同样身为“世界文化遗产”的寺庙,叫做“双林寺”.双林寺的精致.纯木质结构.保存完好等特点,让我不由得为之一振.这让我想到了,万事万物都需要对比,“取其精华,去其糟粕”. 双林寺如是,API也如是.这不,上班第一天,我就迫不及待地做起了API性能测试. 如何实现: 使用不同家的API,分别以随机新增覆盖物为测试用例,观察内存消耗变化.