我正在使用webGIS (2.1.1)、GeoWebCache(1.2.6)、OpenLayers(2.11)、GeoExt开发一个应用程序。我的所有层都是通过GeoWebCache充当wms的。任何层的示例定义如下:
var My_Layer = new OpenLayers.Layer.WMS( "My_Layer",
"http://my-ip + my-port/geoserver/gwc/service/wms",
{layers: 'layer-name',transparent: "true",format: "image/png",
tileSize: new OpenLayers.Size(256,256),
tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom },
{ isBaseLayer: false, visibility:false} );一切都很顺利,直到现在。但是,当我计划提前一点尝试实现MapFish打印模块时.输出pdf为空白!我收到以下错误消息:
java.io.IOException:从.读取图像时出错(status=400)。
我找了很多东西。根据这,一种选择是将我的层作为TMS层访问。但是我不想要静态图像层,而不是GeoServer WMS映射层。
另一个发现这里的选项是使用这里,但这限制了使用不同规模的数据,因为我的数据范围太大了。因此,在特定的比例上,如果用户想要获取整个地图区域的打印(可能在A0文件中),而这在Openlayers中是不可完全可见的,这并不能解决这个问题。
因此,问题是,在不使用TMS或GeoWebCache层的情况下,我如何才能做到这一点?
编辑#1:对不起,我迟到了,因为我不在办公室。下面是我的config.yaml文件。我觉得没有错误,这可以打印我的WMS层,直接来自GeoServer。
dpis: [75, 150, 300]
outputFormats:
- pdf
scales:
- 10000
- 25000
- 50000
- 100000
hosts:
- !localMatch
dummy: true
- !ipMatch
ip: www.camptocamp.org
- !dnsMatch
host: labs.metacarta.com
port: 80
- !dnsMatch
host: terraservice.net
port: 80
- !dnsMatch
host: sigma.openplans.org
- !dnsMatch
host: demo.mapfish.org
layouts:
A4 portrait:
metaData:
title: 'Arunava TopoMap PDF'
author: 'Arunava print module'
subject: 'Map layout'
keywords: 'map,print'
creator: 'Arunava'
mainPage:
pageSize: A4
rotation: true
items:
- !text
text: '${mapTitle} ${now MM.dd.yyyy}'
fontSize: 20
spacingAfter: 30
- !map
spacingAfter: 30
width: 440
height: 600
- !scalebar
type: bar
maxSize: 100
barBgColor: white
fontSize: 8
align: right
- !text
font: Helvetica
fontSize: 9
align: right
text: '1:${scale}'
footer: *commonFooter
A2 portrait:
metaData:
title: 'Arunava TopoMap PDF'
author: 'Arunava print module'
subject: 'Map layout'
keywords: 'map,print'
creator: 'Arunava'
mainPage:
pageSize: A2
rotation: true
items:
- !text
text: '${mapTitle} ${now MM.dd.yyyy}'
fontSize: 20
spacingAfter: 30
- !map
spacingAfter: 30
width: 880
height: 1200
- !scalebar
type: bar
maxSize: 100
barBgColor: white
fontSize: 8
align: right
- !text
font: Helvetica
fontSize: 9
align: right
text: '1:${scale}'
footer: *commonFooter发布于 2012-04-30 03:31:49
如果没有进一步的调试,400错误太模糊,无法提供太多帮助。根据经验,我可以告诉您,我以前见过一个问题,geowebcache服务器不喜欢为您请求的wms层提供服务。Mapfish试图用不同的瓷砖大小做一些奇怪的事情(最终你会得到10%的阈值错误)。您的日志是否显示它请求的图像?你能去我们浏览器里的那个瓷砖看看服务器到底说了些什么吗?这就是我最终是如何暴露我的问题的。
为了便于调试,我还创建了一个独立的映射鱼日志,以便更容易地查找映射鱼问题。使用Geoserver管理屏幕找出您正在使用的日志配置文件,然后在该log4j.properties文件中为映射鱼添加一个单独的文件附录,并将所有的org.mapfish活动都指向它。这使得调试更加容易。
最后,我个人的努力:在您的config.yaml中,不使用 outputFormats: pdf,而是使用formats:'pdf‘。
尽管所有的文档都描述了outputFormat (这正是客户机“spec”中所需要的),但实际的服务器配置是使用'formats‘变量。我已经提交了一个补丁,以便在文档中更清楚地说明这一点,但在此之前,让我们将此说明作为指南。如果您想进入图像输出,这是关键。
https://stackoverflow.com/questions/9937811
复制相似问题