{"id":5199,"date":"2016-05-09T07:28:20","date_gmt":"2016-05-09T10:28:20","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=5199"},"modified":"2016-05-09T17:02:00","modified_gmt":"2016-05-09T20:02:00","slug":"crie-estilos-no-geoserver-com-ysld","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2016\/05\/09\/crie-estilos-no-geoserver-com-ysld\/","title":{"rendered":"Crie estilos no GeoServer com YSLD"},"content":{"rendered":"<p>Alguns anos atr\u00e1s, Mike Pumphrey ministrou uma palestra no FOSS4G intitulada <a href=\"http:\/\/2009.foss4g.org\/presentations\/#presentation_46\" target=\"_blank\">\u201cStyled Layer Descriptor, or How I Learned To Stop Worrying and Love XML\u201d<\/a>. Nesta palestra ele descreveu algumas das caracter\u00edsticas mais interessantes da sintaxe SLD para se utilizar ao criar estilos de mapas no GeoServer. Veja:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/sld_file.png\" alt=\"sld_file\" width=\"810\" height=\"392\" class=\"aligncenter size-full wp-image-5208\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/sld_file.png 810w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/sld_file-300x145.png 300w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/sld_file-768x372.png 768w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/sld_file-600x290.png 600w\" sizes=\"auto, (max-width: 810px) 100vw, 810px\" \/><\/p>\n<p>Isso na verdade \u00e9 um conjunto de marca\u00e7\u00f5es XML apenas para criar pontos vermelhos com contorno preto. Ser\u00e1 que n\u00e3o podemos fazer melhor? Na verdade n\u00f3s podemos.<\/p>\n<p>Houveram alguns esfor\u00e7os ao longo dos anos para fazer melhorias na forma como criar estilo no GeoServer. Uma dessas tentativas not\u00e1vel foi adaptar o uso de CSS para utilizar na defini\u00e7\u00e3o de estilo do mapa. \u00c0 primeira vista, este parece ser um ajuste perfeito: mapas baseados na web podem usar estilos baseados na web! E, na verdade, a <a href=\"http:\/\/suite.opengeo.org\/docs\/latest\/geoserver\/extensions\/css\/\" target=\"_blank\">extens\u00e3o de estilo CSS para GeoServer<\/a> \u00e9 uma ferramenta poderosa para a convers\u00e3o de marca\u00e7\u00e3o CSS para SLD.<\/p>\n<p>Embora existam problemas, pois o CSS usa um modelo de pintura diferente do SLD, por isso n\u00e3o \u00e9 poss\u00edvel converter livremente um estilo CSS para SLD e vice-versa. Ao gerar estilo no formato SLD normalmente se t\u00eam muito mais regras do que no CSS, de modo que um conversor inverso seria necess\u00e1rio para identificar os despedimentos e elimin\u00e1-los. Devido a engine de renderiza\u00e7\u00e3o ter sido constru\u00edda sobre o modelo de SLD, gera este problema, e reescrever a engine n\u00e3o era vi\u00e1vel.<\/p>\n<p>Ent\u00e3o a quest\u00e3o tornou-se: existe uma maneira de simplificar a sintaxe, e permanecer fiel ao modelo de renderiza\u00e7\u00e3o existente?<\/p>\n<p>Foi ent\u00e3o que a equipe do OpenGeo Suite veio com a seguinte ideia: por que n\u00e3o adaptar uma linguagem de marca\u00e7\u00e3o existente? Foi ent\u00e3o que pensaram no YAML, linguagem na qual j\u00e1 estavam familiarizados. Esta ideia foi analisada por um tempo, e meses mais tarde, surgiu como um componente do <a href=\"http:\/\/boundlessgeo.com\/2014\/12\/composer\/\" target=\"_blank\">OpenGeo Su\u00edte Compositor<\/a>: YSLD.<\/p>\n<p>Lembra do exemplo de SLD acima? Agora veja como ficou o YSLD:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/ysld_file.png\" alt=\"ysld_file\" width=\"808\" height=\"220\" class=\"aligncenter size-full wp-image-5209\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/ysld_file.png 808w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/ysld_file-300x82.png 300w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/ysld_file-768x209.png 768w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/ysld_file-600x163.png 600w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" \/><\/p>\n<p>Muito melhor, n\u00e3o \u00e9? Mais f\u00e1cil de ler, mais compacto e com muito menos complexidade, isso \u00e9 certo.<\/p>\n<p>H\u00e1 outras vantagens do YSLD. Ao contr\u00e1rio do XML, YSLD n\u00e3o possui esquema, de modo que a ordena\u00e7\u00e3o dos componentes n\u00e3o \u00e9 importante. E, pela primeira vez, voc\u00ea pode definir uma marca\u00e7\u00e3o que se repete em todo o documento com uma vari\u00e1vel, para que possa reutiliz\u00e1-la em todo documento.<\/p>\n<p>O YSLD \u00e9 totalmente intercambi\u00e1vel com o SLD, pois est\u00e1 de acordo com a engine do SLD \u200b\u200be em conformidade com os padr\u00f5es OGC.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/YSLDexample2.png\" alt=\"YSLDexample2\" width=\"831\" height=\"240\" class=\"aligncenter size-full wp-image-5207\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/YSLDexample2.png 831w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/YSLDexample2-300x87.png 300w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/YSLDexample2-768x222.png 768w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/YSLDexample2-600x173.png 600w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/p>\n<p>A vers\u00e3o do YSLD est\u00e1 dispon\u00edvel no OpenGeo Suite desde a sua vers\u00e3o 4.5 e estar\u00e1 dispon\u00edvel no GeoServer a partir da vers\u00e3o 2.9.<\/p>\n<p>Fonte: <a href=\"http:\/\/boundlessgeo.com\/2014\/12\/ysld\/\" target=\"_blank\">Boundless<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alguns anos atr\u00e1s, Mike Pumphrey ministrou uma palestra no FOSS4G intitulada \u201cStyled Layer Descriptor, or How I Learned To Stop Worrying and Love XML\u201d. Nesta palestra ele descreveu algumas das caracter\u00edsticas mais interessantes da sintaxe SLD para se utilizar ao&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2016\/05\/09\/crie-estilos-no-geoserver-com-ysld\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":5202,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,24,13],"tags":[223,214],"class_list":["post-5199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-geoserver","category-gis","category-sld","tag-gis","tag-sld"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/5199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=5199"}],"version-history":[{"count":13,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/5199\/revisions"}],"predecessor-version":[{"id":5245,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/5199\/revisions\/5245"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/5202"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=5199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=5199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=5199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}