Add a separate test case for write
This commit is contained in:
committed by
Bart van den Eijnden
parent
91e834674c
commit
429a2e455b
@@ -1,6 +1,5 @@
|
|||||||
goog.provide('ol.parser.ogc.SLD');
|
goog.provide('ol.parser.ogc.SLD');
|
||||||
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
||||||
goog.require('ol.parser.ogc.SLD_v1_0_0_GeoServer');
|
|
||||||
goog.require('ol.parser.ogc.Versioned');
|
goog.require('ol.parser.ogc.Versioned');
|
||||||
|
|
||||||
|
|
||||||
@@ -10,13 +9,6 @@ goog.require('ol.parser.ogc.Versioned');
|
|||||||
ol.ENABLE_SLD_1_0_0 = true;
|
ol.ENABLE_SLD_1_0_0 = true;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @define {boolean} Whether to enable SLD version 1.0.0.
|
|
||||||
* GeoServer profile.
|
|
||||||
*/
|
|
||||||
ol.ENABLE_SLD_1_0_0_GEOSERVER = true;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
@@ -30,9 +22,6 @@ ol.parser.ogc.SLD = function(opt_options) {
|
|||||||
if (ol.ENABLE_SLD_1_0_0) {
|
if (ol.ENABLE_SLD_1_0_0) {
|
||||||
this.parsers['v1_0_0'] = ol.parser.ogc.SLD_v1_0_0;
|
this.parsers['v1_0_0'] = ol.parser.ogc.SLD_v1_0_0;
|
||||||
}
|
}
|
||||||
if (ol.ENABLE_SLD_1_0_0_GEOSERVER) {
|
|
||||||
this.parsers['v1_0_0_GEOSERVER'] = ol.parser.ogc.SLD_v1_0_0_GeoServer;
|
|
||||||
}
|
|
||||||
goog.base(this, opt_options);
|
goog.base(this, opt_options);
|
||||||
};
|
};
|
||||||
goog.inherits(ol.parser.ogc.SLD, ol.parser.ogc.Versioned);
|
goog.inherits(ol.parser.ogc.SLD, ol.parser.ogc.Versioned);
|
||||||
|
|||||||
@@ -84,7 +84,8 @@ ol.parser.ogc.SLD_v1 = function() {
|
|||||||
'TextSymbolizer': function(node, rule) {
|
'TextSymbolizer': function(node, rule) {
|
||||||
var config = {};
|
var config = {};
|
||||||
this.readChildNodes(node, config);
|
this.readChildNodes(node, config);
|
||||||
config.color = config.fill.fillColor;
|
config.color = goog.isDef(config.fill) ? config.fill.fillColor :
|
||||||
|
ol.parser.ogc.SLD_v1.defaults_.fontColor;
|
||||||
delete config.fill;
|
delete config.fill;
|
||||||
config.zIndex = this.featureTypeCounter;
|
config.zIndex = this.featureTypeCounter;
|
||||||
rule.symbolizers.push(
|
rule.symbolizers.push(
|
||||||
@@ -639,7 +640,8 @@ ol.parser.ogc.SLD_v1.defaults_ = {
|
|||||||
haloColor: '#FFFFFF',
|
haloColor: '#FFFFFF',
|
||||||
haloOpacity: 1,
|
haloOpacity: 1,
|
||||||
haloRadius: 1,
|
haloRadius: 1,
|
||||||
fillColor: '#808080'
|
fillColor: '#808080',
|
||||||
|
fontColor: '#000000'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
goog.provide('ol.parser.ogc.SLD_v1_0_0_GeoServer');
|
|
||||||
|
|
||||||
goog.require('goog.functions');
|
|
||||||
goog.require('goog.object');
|
|
||||||
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @constructor
|
|
||||||
* @extends {ol.parser.ogc.SLD_v1_0_0}
|
|
||||||
*/
|
|
||||||
ol.parser.ogc.SLD_v1_0_0_GeoServer = function() {
|
|
||||||
goog.base(this);
|
|
||||||
this.profile = 'GeoServer';
|
|
||||||
goog.object.extend(this.readers['http://www.opengis.net/sld'], {
|
|
||||||
'Priority': function(node, obj) {
|
|
||||||
var ogcreaders = this.readers['http://www.opengis.net/ogc'];
|
|
||||||
var value = ogcreaders._expression.call(this, node);
|
|
||||||
if (value) {
|
|
||||||
obj.priority = value;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'VendorOption': function(node, obj) {
|
|
||||||
if (!goog.isDef(obj.vendorOptions)) {
|
|
||||||
obj.vendorOptions = {};
|
|
||||||
}
|
|
||||||
obj.vendorOptions[node.getAttribute('name')] =
|
|
||||||
this.getChildValue(node);
|
|
||||||
},
|
|
||||||
'TextSymbolizer': goog.functions.sequence(
|
|
||||||
this.readers['http://www.opengis.net/sld']['TextSymbolizer'],
|
|
||||||
function(node, rule) {
|
|
||||||
var symbolizer = rule.symbolizers[rule.symbolizers.length - 1];
|
|
||||||
if (!goog.isDef(symbolizer.graphic)) {
|
|
||||||
symbolizer.graphic = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
});
|
|
||||||
};
|
|
||||||
goog.inherits(ol.parser.ogc.SLD_v1_0_0_GeoServer,
|
|
||||||
ol.parser.ogc.SLD_v1_0_0);
|
|
||||||
@@ -4,12 +4,13 @@ goog.provide('ol.test.parser.ogc.SLD_v1_0_0');
|
|||||||
describe('ol.parser.ogc.SLD_v1_0_0', function() {
|
describe('ol.parser.ogc.SLD_v1_0_0', function() {
|
||||||
|
|
||||||
var parser = new ol.parser.ogc.SLD();
|
var parser = new ol.parser.ogc.SLD();
|
||||||
|
var obj;
|
||||||
|
|
||||||
describe('reading and writing', function() {
|
describe('reading and writing', function() {
|
||||||
it('Handles reading', function(done) {
|
it('Handles reading', function(done) {
|
||||||
var url = 'spec/ol/parser/ogc/xml/sld_v1_0_0.xml';
|
var url = 'spec/ol/parser/ogc/xml/sld_v1_0_0.xml';
|
||||||
afterLoadXml(url, function(xml) {
|
afterLoadXml(url, function(xml) {
|
||||||
var obj = parser.read(xml);
|
obj = parser.read(xml);
|
||||||
expect(obj.version).to.equal('1.0.0');
|
expect(obj.version).to.equal('1.0.0');
|
||||||
var style = obj.namedLayers['AAA161'].userStyles[0];
|
var style = obj.namedLayers['AAA161'].userStyles[0];
|
||||||
expect(style).to.be.a(ol.style.Style);
|
expect(style).to.be.a(ol.style.Style);
|
||||||
@@ -50,13 +51,23 @@ describe('ol.parser.ogc.SLD_v1_0_0', function() {
|
|||||||
'#000000');
|
'#000000');
|
||||||
expect(first.getSymbolizers()[2].getFontFamily().getValue()).to.equal(
|
expect(first.getSymbolizers()[2].getFontFamily().getValue()).to.equal(
|
||||||
'Arial');
|
'Arial');
|
||||||
// TODO add tests for haloRadius and haloColor
|
expect(first.getSymbolizers()[2].getStroke()).to.be.a(ol.style.Stroke);
|
||||||
|
expect(first.getSymbolizers()[2].getStroke().getColor().getValue())
|
||||||
|
.to.equal('#ffffff');
|
||||||
|
expect(first.getSymbolizers()[2].getStroke().getWidth().getValue())
|
||||||
|
.to.equal(6);
|
||||||
var second = style.rules_[1];
|
var second = style.rules_[1];
|
||||||
expect(second.filter_).to.be.a(ol.expr.Comparison);
|
expect(second.filter_).to.be.a(ol.expr.Comparison);
|
||||||
expect(second.getSymbolizers().length).to.equal(2);
|
expect(second.getSymbolizers().length).to.equal(2);
|
||||||
expect(second.getSymbolizers()[0]).to.be.a(ol.style.Fill);
|
expect(second.getSymbolizers()[0]).to.be.a(ol.style.Fill);
|
||||||
expect(second.getSymbolizers()[1]).to.be.a(ol.style.Stroke);
|
expect(second.getSymbolizers()[1]).to.be.a(ol.style.Stroke);
|
||||||
window.console.log(parser.write(obj));
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('Handles write', function(done) {
|
||||||
|
var url = 'spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml';
|
||||||
|
afterLoadXml(url, function(xml) {
|
||||||
|
expect(goog.dom.xml.loadXml(parser.write(obj))).to.xmleql(xml);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -64,7 +75,7 @@ describe('ol.parser.ogc.SLD_v1_0_0', function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
goog.require('goog.net.XhrIo');
|
goog.require('goog.dom.xml');
|
||||||
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
goog.require('ol.parser.ogc.SLD_v1_0_0');
|
||||||
goog.require('ol.parser.ogc.SLD');
|
goog.require('ol.parser.ogc.SLD');
|
||||||
goog.require('ol.expr.Call');
|
goog.require('ol.expr.Call');
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<sld:StyledLayerDescriptor xmlns:sld="http://www.opengis.net/sld" version="1.0.0"
|
||||||
|
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<sld:NamedLayer>
|
||||||
|
<sld:Name>AAA161</sld:Name>
|
||||||
|
<sld:UserStyle>
|
||||||
|
<sld:FeatureTypeStyle>
|
||||||
|
<sld:Rule>
|
||||||
|
<sld:Name>stortsteen</sld:Name>
|
||||||
|
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
|
||||||
|
<ogc:PropertyIsEqualTo>
|
||||||
|
<ogc:PropertyName>CTE</ogc:PropertyName>
|
||||||
|
<ogc:Literal>V0305</ogc:Literal>
|
||||||
|
</ogc:PropertyIsEqualTo>
|
||||||
|
</ogc:Filter>
|
||||||
|
<sld:MaxScaleDenominator>49999.99999999999</sld:MaxScaleDenominator>
|
||||||
|
<sld:PolygonSymbolizer>
|
||||||
|
<sld:Fill>
|
||||||
|
<sld:CssParameter name="fill">#ffffff</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||||
|
</sld:Fill>
|
||||||
|
</sld:PolygonSymbolizer>
|
||||||
|
<sld:LineSymbolizer>
|
||||||
|
<sld:Stroke>
|
||||||
|
<sld:CssParameter name="stroke">#000000</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="stroke-width">1</sld:CssParameter>
|
||||||
|
</sld:Stroke>
|
||||||
|
</sld:LineSymbolizer>
|
||||||
|
<sld:TextSymbolizer>
|
||||||
|
<sld:Label><ogc:Literal xmlns:ogc="http://www.opengis.net/ogc"
|
||||||
|
>A</ogc:Literal><ogc:PropertyName
|
||||||
|
xmlns:ogc="http://www.opengis.net/ogc"
|
||||||
|
>FOO</ogc:PropertyName><ogc:Literal
|
||||||
|
xmlns:ogc="http://www.opengis.net/ogc"
|
||||||
|
>label</ogc:Literal></sld:Label>
|
||||||
|
<sld:Font>
|
||||||
|
<sld:CssParameter name="font-family">Arial</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="font-size">14</sld:CssParameter>
|
||||||
|
</sld:Font>
|
||||||
|
<sld:Halo>
|
||||||
|
<sld:Radius>3</sld:Radius>
|
||||||
|
<sld:Fill>
|
||||||
|
<sld:CssParameter name="fill">#ffffff</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||||
|
</sld:Fill>
|
||||||
|
</sld:Halo>
|
||||||
|
<sld:Fill>
|
||||||
|
<sld:CssParameter name="fill">#000000</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||||
|
</sld:Fill>
|
||||||
|
</sld:TextSymbolizer>
|
||||||
|
</sld:Rule>
|
||||||
|
<sld:Rule>
|
||||||
|
<sld:Name>betonbekleding</sld:Name>
|
||||||
|
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
|
||||||
|
<ogc:PropertyIsLessThan>
|
||||||
|
<ogc:PropertyName>CTE</ogc:PropertyName>
|
||||||
|
<ogc:Literal>1000</ogc:Literal>
|
||||||
|
</ogc:PropertyIsLessThan>
|
||||||
|
</ogc:Filter>
|
||||||
|
<sld:MaxScaleDenominator>49999.99999999999</sld:MaxScaleDenominator>
|
||||||
|
<sld:PolygonSymbolizer>
|
||||||
|
<sld:Fill>
|
||||||
|
<sld:CssParameter name="fill">#ffff00</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||||
|
</sld:Fill>
|
||||||
|
</sld:PolygonSymbolizer>
|
||||||
|
<sld:LineSymbolizer>
|
||||||
|
<sld:Stroke>
|
||||||
|
<sld:CssParameter name="stroke">#0000ff</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="stroke-width">1</sld:CssParameter>
|
||||||
|
</sld:Stroke>
|
||||||
|
</sld:LineSymbolizer>
|
||||||
|
</sld:Rule>
|
||||||
|
</sld:FeatureTypeStyle>
|
||||||
|
</sld:UserStyle>
|
||||||
|
</sld:NamedLayer>
|
||||||
|
<sld:NamedLayer>
|
||||||
|
<sld:Name>Second Layer</sld:Name>
|
||||||
|
<sld:UserStyle>
|
||||||
|
<sld:FeatureTypeStyle>
|
||||||
|
<sld:Rule>
|
||||||
|
<sld:Name>first rule second layer</sld:Name>
|
||||||
|
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
|
||||||
|
<ogc:Or>
|
||||||
|
<ogc:Not>
|
||||||
|
<ogc:PropertyIsLessThanOrEqualTo>
|
||||||
|
<ogc:PropertyName>FOO</ogc:PropertyName>
|
||||||
|
<ogc:Literal>5000</ogc:Literal>
|
||||||
|
</ogc:PropertyIsLessThanOrEqualTo>
|
||||||
|
</ogc:Not>
|
||||||
|
<ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
|
||||||
|
<ogc:PropertyName>cat</ogc:PropertyName>
|
||||||
|
<ogc:Literal>*dog.food!*good</ogc:Literal>
|
||||||
|
</ogc:PropertyIsLike>
|
||||||
|
<ogc:PropertyIsBetween>
|
||||||
|
<ogc:PropertyName>number</ogc:PropertyName>
|
||||||
|
<ogc:LowerBoundary>
|
||||||
|
<ogc:Literal>1064866676</ogc:Literal>
|
||||||
|
</ogc:LowerBoundary>
|
||||||
|
<ogc:UpperBoundary>
|
||||||
|
<ogc:Literal>1065512599</ogc:Literal>
|
||||||
|
</ogc:UpperBoundary>
|
||||||
|
</ogc:PropertyIsBetween>
|
||||||
|
</ogc:Or>
|
||||||
|
</ogc:Filter>
|
||||||
|
<sld:MaxScaleDenominator>10000</sld:MaxScaleDenominator>
|
||||||
|
<sld:PointSymbolizer>
|
||||||
|
<sld:Graphic>
|
||||||
|
<sld:Mark>
|
||||||
|
<sld:WellKnownName>star</sld:WellKnownName>
|
||||||
|
<sld:Fill>
|
||||||
|
<sld:CssParameter name="fill">lime</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="fill-opacity">1</sld:CssParameter>
|
||||||
|
</sld:Fill>
|
||||||
|
<sld:Stroke>
|
||||||
|
<sld:CssParameter name="stroke">olive</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
|
||||||
|
<sld:CssParameter name="stroke-width">2</sld:CssParameter>
|
||||||
|
</sld:Stroke>
|
||||||
|
</sld:Mark>
|
||||||
|
<sld:Size><ogc:PropertyName xmlns:ogc="http://www.opengis.net/ogc"
|
||||||
|
>SIZE</ogc:PropertyName></sld:Size>
|
||||||
|
</sld:Graphic>
|
||||||
|
</sld:PointSymbolizer>
|
||||||
|
</sld:Rule>
|
||||||
|
</sld:FeatureTypeStyle>
|
||||||
|
</sld:UserStyle>
|
||||||
|
</sld:NamedLayer>
|
||||||
|
</sld:StyledLayerDescriptor>
|
||||||
Reference in New Issue
Block a user