Skip to content

Commit

Permalink
Merge pull request #6 from KaiVolland/writeStyle
Browse files Browse the repository at this point in the history
[WIP] Write QGIS Styles (qml)
  • Loading branch information
hwbllmnn committed Feb 27, 2019
2 parents ab0d665 + cd20f78 commit 34aa7a6
Show file tree
Hide file tree
Showing 7 changed files with 253 additions and 37 deletions.
10 changes: 5 additions & 5 deletions data/qmls/point_categories.qml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -53,7 +53,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -82,7 +82,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -111,7 +111,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -142,7 +142,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down
4 changes: 2 additions & 2 deletions data/qmls/point_multiple_symbols.qml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
<prop v="Pixel" k="outline_width_unit"/>
<prop v="diameter" k="scale_method"/>
<prop v="12" k="size"/>
<prop v="24" k="size"/>
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
<prop v="Pixel" k="size_unit"/>
<prop v="1" k="vertical_anchor_point"/>
Expand All @@ -38,7 +38,7 @@
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
<prop v="MM" k="outline_width_unit"/>
<prop v="diameter" k="scale_method"/>
<prop v="2" k="size"/>
<prop v="4" k="size"/>
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
<prop v="MM" k="size_unit"/>
<prop v="1" k="vertical_anchor_point"/>
Expand Down
12 changes: 6 additions & 6 deletions data/qmls/point_ranges.qml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -54,7 +54,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -83,7 +83,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -112,7 +112,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -141,7 +141,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down Expand Up @@ -172,7 +172,7 @@
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
Expand Down
6 changes: 3 additions & 3 deletions data/qmls/point_rules.qml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
<prop v="Pixel" k="outline_width_unit"/>
<prop v="diameter" k="scale_method"/>
<prop v="12" k="size"/>
<prop v="24" k="size"/>
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
<prop v="Pixel" k="size_unit"/>
<prop v="1" k="vertical_anchor_point"/>
Expand All @@ -45,7 +45,7 @@
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
<prop v="Pixel" k="outline_width_unit"/>
<prop v="diameter" k="scale_method"/>
<prop v="6" k="size"/>
<prop v="12" k="size"/>
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
<prop v="Pixel" k="size_unit"/>
<prop v="1" k="vertical_anchor_point"/>
Expand All @@ -67,7 +67,7 @@
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
<prop v="Pixel" k="outline_width_unit"/>
<prop v="diameter" k="scale_method"/>
<prop v="6" k="size"/>
<prop v="12" k="size"/>
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
<prop v="Pixel" k="size_unit"/>
<prop v="1" k="vertical_anchor_point"/>
Expand Down
23 changes: 7 additions & 16 deletions data/qmls/point_simple.qml
Original file line number Diff line number Diff line change
@@ -1,31 +1,22 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis simplifyMaxScale="1" simplifyDrawingTol="1" hasScaleBasedVisibilityFlag="0" styleCategories="AllStyleCategories" simplifyDrawingHints="0" simplifyLocal="1" simplifyAlgorithm="0" version="3.4.3-Madeira" maxScale="0" minScale="1e+8" labelsEnabled="0" readOnly="0">
<renderer-v2 forceraster="0" type="singleSymbol" symbollevels="0" enableorderby="0">
<qgis>
<renderer-v2 type="singleSymbol">
<symbols>
<symbol type="marker" alpha="1" force_rhr="0" name="0" clip_to_extent="1">
<layer locked="0" class="SimpleMarker" enabled="1" pass="0">
<symbol type="marker" name="0">
<layer class="SimpleMarker">
<prop k="angle" v="0"/>
<prop k="color" v="190,178,151,255"/>
<prop k="horizontal_anchor_point" v="1"/>
<prop k="joinstyle" v="bevel"/>
<prop k="name" v="circle"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="35,35,35,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0"/>
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="outline_width_unit" v="Pixel"/>
<prop k="size" v="4"/>
<prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
<prop k="size_unit" v="Pixel"/>
</layer>
</symbol>
</symbols>
<rotation/>
<sizescale/>
</renderer-v2>
</qgis>
97 changes: 97 additions & 0 deletions src/QGISStyleParser.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,4 +119,101 @@ describe('QMLStyleParser implements StyleParser', () => {
});
});

describe('#writeStyle', () => {
it('is defined', () => {
expect(styleParser.writeStyle).toBeDefined();
});
describe('PointSymbolizer', () => {
it('can write a simple QML PointSymbol', async () => {
expect.assertions(2);
const qml = fs.readFileSync( './data/qmls/point_simple.qml', 'utf8');
return styleParser.writeStyle(point_simple)
.then((qgisStyle: string) => {
expect(qgisStyle).toBeDefined();
expect(qgisStyle).toEqual(qml.trim());
});
});
// it('can write a QML PointSymbolizer with an external graphic', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/point_external_graphic.qml', 'utf8');
// return styleParser.writeStyle(point_external_graphic)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
// it('can write a QML PointSymbolizer with multiple symbols', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/point_multiple_symbols.qml', 'utf8');
// return styleParser.writeStyle(point_multiple_symbols)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
});
// describe('TextSymbolizer', () => {
// it('can write some basics of the QML Labeling for Points', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/point_label.qml', 'utf8');
// return styleParser.writeStyle(point_label)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
// });
// describe('LineSymbolizer', () => {
// it('can write a simple QML LineSymbol', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/line_simple.qml', 'utf8');
// return styleParser.writeStyle(line_simple)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
// });
// describe('FillSymbolizer', () => {
// it('can write a simple QML FillSymbol', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/polygon_simple.qml', 'utf8');
// return styleParser.writeStyle(polygon_simple)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
// });
// describe('Filter Parsing', () => {
// it('can write a rule based QML PointSymbolizer', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/point_rules.qml', 'utf8');
// return styleParser.writeStyle(point_rules)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
// it('can write a category based QML PointSymbolizer', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/point_categories.qml', 'utf8');
// return styleParser.writeStyle(point_categories)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
// it('can write a range based QML PointSymbolizer', async () => {
// expect.assertions(2);
// const qml = fs.readFileSync( './data/qmls/point_ranges.qml', 'utf8');
// return styleParser.writeStyle(point_ranges)
// .then((qgisStyle: string) => {
// expect(qgisStyle).toBeDefined();
// expect(qgisStyle).toEqual(qml);
// });
// });
// });
});

});
Loading

0 comments on commit 34aa7a6

Please sign in to comment.