{"id":1985,"date":"2015-12-10T16:23:39","date_gmt":"2015-12-10T15:23:39","guid":{"rendered":"https:\/\/www.opengis.ch\/?p=1985"},"modified":"2020-04-29T18:57:33","modified_gmt":"2020-04-29T16:57:33","slug":"geometry-generator-symbology","status":"publish","type":"post","link":"https:\/\/www.opengis.ch\/de\/2015\/12\/10\/geometry-generator-symbology\/","title":{"rendered":"Geometry generator symbology"},"content":{"rendered":"<p>December traditionally is an amazing time since the weather is usually quite forgiving to long working hours.<br \/>\nTherefore the first parts of our <a href=\"https:\/\/www.opengis.ch\/2015\/11\/02\/qgis-crowdfunding-2-5d-rendering\/\">recent crowdfunding project for 2.5D render<\/a>ing\u00a0have been merged into QGIS master and will be shipped with QGIS 2.14.<br \/>\nIt&#8217;s something of the sort of development that we really, really, really like here at OPENGIS.ch: an implementation that adds enormous flexibility and enables the user to use QGIS\u00a0in ways that we never thought of.<br \/>\n<strong>Say hello to geometry generators.<\/strong><br \/>\nGeometry generators allow to use expression syntax to generate a geometry on the fly during the rendering process. The resulting geometry does not have to match with the original geometry type and you can add several differently modified symbol layers on top of each other.<\/p>\n<h3>Examples<\/h3>\n<p>&nbsp;<br \/>\n\n<h3>How to use it<\/h3>\n<p>It couldn&#8217;t be easier\u00a0to\u00a0use. Open the symbology dialog. Choose <em>geometry generator<\/em> as symbol layer type. Choose what kind of symbol you would like to generate, write your expression and style it in whatever way you like.<br \/>\n<a href=\"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2015\/12\/Screenshot-from-2015-12-10-16-06-12.png?ssl=1\" rel=\"attachment wp-att-1989\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1989 size-medium\" src=\"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2015\/12\/Screenshot-from-2015-12-10-16-06-12.png?resize=300%2C203&#038;ssl=1\" alt=\"Configuration Dialog\" width=\"300\" height=\"203\" \/><\/a><br \/>\n&nbsp;<\/p>\n<h3>It&#8217;s your turn<\/h3>\n<p>Show the world what you can do with it.<\/p>\n<h3>Thanks<\/h3>\n<ul>\n<li>ADUGA<\/li>\n<li>Regional Council of Picardy<\/li>\n<li>Ville de Nyon<\/li>\n<li>Wetu GIT cc<\/li>\n<li>All other\u00a0crowdfunders<\/li>\n<\/ul>\n<p>Special thanks to\u00a0Nicolas Rochard and\u00a0 for the help to bring this project into shape. And to\u00a0Nyall Dawson for\u00a0his invaluable\u00a0inputs throughout the planning and reviewing process.<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<div style=\"clear:both\">\n<div style=\"float:left; width:40%\">Say hello to geometry generators, a new way to use expression syntax to generate a geometry on the fly during the rendering process.\n<\/div>\n<div style=\"float:right; width:60%\">\n<img decoding=\"async\" src=\"\/wp-content\/uploads\/2015\/12\/139aea6c-9b5a-11e5-9a07-dc0a982cc4af.png\"\/ height=200>\n<\/div>\n<\/div>\n","protected":false},"author":3,"featured_media":1987,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5,15],"tags":[125],"class_list":["post-1985","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-featured","category-qgis","tag-qgis-org"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":1867,"url":"https:\/\/www.opengis.ch\/de\/2015\/11\/02\/qgis-crowdfunding-2-5d-rendering\/","url_meta":{"origin":1985,"position":0},"title":"QGIS Crowdfunding: 2.5D Rendering","author":"Matthias Kuhn","date":"2. November 2015","format":false,"excerpt":"","rel":"","context":"In &quot;3D&quot;","block_context":{"text":"3D","link":"https:\/\/www.opengis.ch\/de\/category\/3d\/"},"img":{"alt_text":"2.5D rendering","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2015\/10\/title.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2015\/10\/title.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2015\/10\/title.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2015\/10\/title.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2245,"url":"https:\/\/www.opengis.ch\/de\/2017\/05\/10\/best-practices-for-writing-python-qgis-expression-functions\/","url_meta":{"origin":1985,"position":1},"title":"Best practices for writing Python QGIS Expression Functions","author":"Matthias Kuhn","date":"10. Mai 2017","format":false,"excerpt":"Recently there have been some questions and discussions about python based expression functions and how parameters like usesGeometry\u00a0 need\u00a0to be used. So I thought I'd quickly write down how this works. There is some intelligence If the geometry or a column is passed in as a parameter you do not\u2026","rel":"","context":"In &quot;Expressions&quot;","block_context":{"text":"Expressions","link":"https:\/\/www.opengis.ch\/de\/category\/programming\/expressions\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":15627,"url":"https:\/\/www.opengis.ch\/de\/2025\/06\/02\/xlsform-converter-unlock-a-world-of-surveys-with-our-brand-new-qgis-plugin\/","url_meta":{"origin":1985,"position":2},"title":"XLSForm Converter: unlock a world of surveys with our brand new QGIS plugin","author":"Mathieu","date":"2. Juni 2025","format":false,"excerpt":"Easily bring your XLSForm surveys into the QGIS and QField ecosystem. The plugin converts spreadsheets into fully prepared QGIS projects\u2014with media support, automatic form configuration, and one-click upload to QFieldCloud. Migrating to QField was never easier!","rel":"","context":"In &quot;Processing&quot;","block_context":{"text":"Processing","link":"https:\/\/www.opengis.ch\/de\/category\/gis\/qgis\/processing\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/xlsformconverter-qgis-qfield.webp?fit=1098%2C859&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/xlsformconverter-qgis-qfield.webp?fit=1098%2C859&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/xlsformconverter-qgis-qfield.webp?fit=1098%2C859&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/xlsformconverter-qgis-qfield.webp?fit=1098%2C859&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/xlsformconverter-qgis-qfield.webp?fit=1098%2C859&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2235,"url":"https:\/\/www.opengis.ch\/de\/2017\/05\/02\/qgis-expressions-engine-performance-boost\/","url_meta":{"origin":1985,"position":3},"title":"QGIS Expressions Engine: Performance boost","author":"Matthias Kuhn","date":"2. Mai 2017","format":false,"excerpt":"Expressions in QGIS are more and more widely used for all kinds of purposes. For example the recently introduced geometry generators allow drawing awesome effects with modified feature geometries on the fly. The last days at the QGIS developer meeting 2017, I spent some time looking into and improving the\u2026","rel":"","context":"In &quot;Expressions&quot;","block_context":{"text":"Expressions","link":"https:\/\/www.opengis.ch\/de\/category\/programming\/expressions\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2021,"url":"https:\/\/www.opengis.ch\/de\/2016\/02\/04\/increasing-the-stability-of-processing-algorithms\/","url_meta":{"origin":1985,"position":4},"title":"Increasing the stability of processing algorithms","author":"Matthias Kuhn","date":"4. Februar 2016","format":false,"excerpt":"Processing just got a new testing framework to improve\u00a0the long-term stability of this important plugin. And you can help to improve it, even if you are not a software developer! This is yet another piece in our never-stopping crusade to improve the stability and quality of the best\u00a0desktop GIS on\u2026","rel":"","context":"In &quot;C++&quot;","block_context":{"text":"C++","link":"https:\/\/www.opengis.ch\/de\/category\/programming\/cpp\/"},"img":{"alt_text":"pr","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2016\/02\/pr.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2016\/02\/pr.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2016\/02\/pr.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2016\/02\/pr.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3911,"url":"https:\/\/www.opengis.ch\/de\/2018\/05\/28\/how-to-filter-features-in-qgis-using-the-graphical-processing-modeler\/","url_meta":{"origin":1985,"position":5},"title":"How to filter features in QGIS using the graphical processing modeler","author":"Matthias Kuhn","date":"28. Mai 2018","format":false,"excerpt":"This article describes a new algorithm for the processing modeler called feature filter algorithm. If you are already familiar with ETL concepts and the graphical modeler, you can directly jump to the section the feature filter algorithm. Building workflows for repetitive tasks When building workflows for simple or complex geodata\u2026","rel":"","context":"In &quot;Expressions&quot;","block_context":{"text":"Expressions","link":"https:\/\/www.opengis.ch\/de\/category\/programming\/expressions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2018\/05\/modeller.png?fit=1016%2C497&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2018\/05\/modeller.png?fit=1016%2C497&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2018\/05\/modeller.png?fit=1016%2C497&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2018\/05\/modeller.png?fit=1016%2C497&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_shortlink":"https:\/\/wp.me\/pbdBtI-w1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/1985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/comments?post=1985"}],"version-history":[{"count":1,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/1985\/revisions"}],"predecessor-version":[{"id":11146,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/1985\/revisions\/11146"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/media?parent=1985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/categories?post=1985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/tags?post=1985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}