wms根据sld,sld_body请求地图

一 正常加载wms

var wmsLayer=new ol.layer.Tile({
        source: new ol.source.TileWMS({
            url: 'http://192.168.0.103:8090/geoserver/nkstarTax/wms',
            params: {'FORMAT': 'image/png',
                'VERSION': '1.1.1',
                tiled: true,
                LAYERS: 'nkstarTax:jgnsr',
                style:''

            }
        })
    });
点图层默认的geoserver中样式是红色的。

二 根据sld_body加载

function get_sld(layername){
var sld='<?xml version="1.0" encoding="UTF-8"?>'+
'<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">'+
        '<sld:UserLayer>'+
   '<sld:LayerFeatureConstraints>'+
    '<sld:FeatureTypeConstraint/>'+
    '</sld:LayerFeatureConstraints>'+
    '<sld:Name>'+layername+'</sld:Name>'+ //举个例子而已,可以对sld中变量通过参数注入的形式修改,即动态的sld
    '<sld:UserStyle>'+
    '<sld:Title/>'+
    '<sld:FeatureTypeStyle>'+
    '<sld:Name>group 0</sld:Name>'+
    '<sld:FeatureTypeName>Feature</sld:FeatureTypeName>'+
    '<sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>'+
    '<sld:SemanticTypeIdentifier>simple</sld:SemanticTypeIdentifier>'+
    '<sld:Rule>'+
    '<sld:Name>default rule</sld:Name>'+
    '<sld:PointSymbolizer>'+
    '<sld:Graphic>'+
    '<sld:Mark>'+
    '<sld:WellKnownName>circle</sld:WellKnownName>'+
    '<sld:Fill>'+
    '<sld:CssParameter name="fill">#FFFFFF</sld:CssParameter>'+
    '<sld:CssParameter name="fill-opacity">0.4</sld:CssParameter>'+
    '</sld:Fill>'+
    '<sld:Stroke>'+
    '<sld:CssParameter name="stroke">#0080FF</sld:CssParameter>'+
    '<sld:CssParameter name="stroke-width">1.2</sld:CssParameter>'+
    '</sld:Stroke>'+
    '</sld:Mark>'+
    '<sld:Size>5</sld:Size>'+
    '</sld:Graphic>'+
    '</sld:PointSymbolizer>'+
   '</sld:Rule>'+
    '</sld:FeatureTypeStyle>'+
    '</sld:UserStyle>'+
    '</sld:UserLayer>'+
    '</sld:StyledLayerDescriptor>';
return sld;
}

wmsLayer=new ol.layer.Tile({
    source: new ol.source.TileWMS({
        url: 'http://192.168.0.103:8090/geoserver/nkstarTax/wms',
        params: {'FORMAT': 'image/png',
            'VERSION': '1.1.1',
            tiled: true,
            sld_body:get_sld('nkstarTax:v_wggl_jgnsr')
        }
    })
});




注意:sld_body,sld请求时,与 layer,style参数不能共用,在提交sld_body时,已经没有wms的layer,style参数了,细心朋友发现,get_sld()方法里,<name></name>中绑定了图层名称了。
效果如下;

三 根据sld加载

3.1 在geoserver中发布一个sld,发布成功后,通过url,sld是可以访问的,如下图:

注意:发布的 sld的<name>标签已经绑定了图层名称了。
 wmsLayer=new ol.layer.Tile({
        source: new ol.source.TileWMS({
            url: 'http://192.168.0.103:8090/geoserver/nkstarTax/wms',
            params: {'FORMAT': 'image/png',
                'VERSION': '1.1.1',
                tiled: true,
                sld:'http://192.168.0.103:8090/geoserver/styles/jgnsr.sld'
            }
        })
    });

注意:同样是有sld地址,没有layer和style参数。
效果如下:



四 三种方式请求对比

正常wms的getMap请求,传入layer和style,如果要设置好样式sld文件,就要在geoserver上把发布的图层绑定这个sld。如果在某些情况下,希望同样的数据图层在不同情况下显示两套样式,只能把数据发布两遍,分别绑定一个sld。  结论:只适合底图,不适合变化图层,因为比较死板冗余。
sld_body:可以在前台以字符串形式拼写sld,具有极大的灵活性。举个例子,我某个数据有一月,二月,三月利润金额字段,现在需要点击a按钮显示一月专题图,点击b按钮显示二月专题图等。非常灵活。数据就一套,前台根据业务不同,提交不同的sld_body即可。  缺点,前台拼写基于js的限制,容易拼写错误,且新手不好找错哪了。最好生成一个正常的,在js上变字符,参数空出来,不要自己写。
sld:同样一套数据只发布一遍,只需要多发布几个sld文件,根据业务绑定这个sld文件即可。灵活性比sld_body稍微差点,但是xml的格式非常清晰,在geoserver发布,可以让服务器检查,预览,不太出错。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
这段代码是什么意思-- Create table create table CUX_WMS_PO_TRANSACTION_HEADER ( erp_message_no VARCHAR2(60) not null, po_number VARCHAR2(20) not null, erp_order_type VARCHAR2(20) not null, org_code VARCHAR2(20) not null, header_id NUMBER not null, supplier_code VARCHAR2(240) not null, asn_num VARCHAR2(200) not null, last_update_date DATE, last_updated_by NUMBER, creation_date DATE, created_by NUMBER, last_update_login NUMBER, operatives VARCHAR2(50) not null, return_code VARCHAR2(200), return_mesg VARCHAR2(400), isinwarehouse NUMBER, remark VARCHAR2(200), character5 VARCHAR2(200), isinspectionresults NUMBER, remark2 VARCHAR2(150), remark3 VARCHAR2(150), remark4 VARCHAR2(150) ) tablespace APPS_TS_TX_DATA pctfree 10 initrans 1 maxtrans 255 storage ( initial 16K next 8K minextents 1 maxextents unlimited pctincrease 0 ); -- Add comments to the columns comment on column CUX_WMS_PO_TRANSACTION_HEADER.erp_message_no is '接口编号'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.po_number is '采购订单号'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.erp_order_type is '事务处理类型'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.org_code is 'OU-ID'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.header_id is '采购订单头id'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.supplier_code is '供应商编码'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.asn_num is 'wms号'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.operatives is '操作员'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.return_code is '反馈代码'; comment on column CUX_WMS_PO_TRANSACTION_HEADER.return_mesg is '反馈信息'; -- Create/Recreate indexes create index WMS_PO_TRANSACTION_HEADER_N1 on CUX_WMS_PO_TRANSACTION_HEADER (CREATION_DATE, DECODE(RETURN_CODE,'S','S','E')) tablespace APPS_TS_TX_DATA pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K next 128K minextents 1 maxextents unlimited pctincrease 0 ); create unique index WMS_PO_TRANSACTION_HEADER_U1 on CUX_WMS_PO_TRANSACTION_HEADER (ERP_MESSAGE_NO) tablespace APPS_TS_TX_DATA pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K next 128K minextents 1 maxextents unlimited pctincrease 0 );
06-04

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值