{"id":7321,"date":"2018-09-19T07:31:06","date_gmt":"2018-09-19T10:31:06","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=7321"},"modified":"2018-09-19T08:53:17","modified_gmt":"2018-09-19T11:53:17","slug":"algebra-de-mapas-no-geoserver","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2018\/09\/19\/algebra-de-mapas-no-geoserver\/","title":{"rendered":"\u00c1lgebra de Mapas no GeoServer"},"content":{"rendered":"<p>O GeoServer 2.14 adiciona suporte a um pacote de \u00e1lgebra de mapas eficiente conhecido como Jiffle.  O Jiffle tem sido o trabalho de um ex-colaborador do GeoTools, Michael Bedwards, que foi recuperado, atualizado para suportar o Java 8 e integrado no jai-ext. <\/p>\n<p>A partir da\u00ed, o suporte foi adicionado ao m\u00f3dulo gt-process-raster do GeoTools e, como resultado, ao servi\u00e7o WPS do GeoServer, para ser usado diretamente ou como uma transforma\u00e7\u00e3o de renderiza\u00e7\u00e3o.<\/p>\n<p>A seguir as chamadas do Jiffle em um estilo SLD para executar um c\u00e1lculo de NDVI sobre os dados do Sentinel-2:<\/p>\n<pre>\r\n&lt;?xml&nbsp;version=\"1.0\"&nbsp;encoding=\"UTF-8\"?&gt;\r\n&lt;StyledLayerDescriptor&nbsp;xmlns=\"http:\/\/www.opengis.net\/sld\"&nbsp;\r\n&nbsp;&nbsp;&nbsp;xmlns:ogc=\"http:\/\/www.opengis.net\/ogc\"&nbsp;xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\"&nbsp;\r\n&nbsp;&nbsp;&nbsp;xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"&nbsp;xsi:schemaLocation=\"http:\/\/www.opengis.net\/sld\r\nhttp:\/\/schemas.opengis.net\/sld\/1.0.0\/StyledLayerDescriptor.xsd\"&nbsp;version=\"1.0.0\"&gt;\r\n&nbsp;&nbsp;&lt;NamedLayer&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;Name&gt;Sentinel2&nbsp;NDVI&lt;\/Name&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;UserStyle&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Title&gt;NDVI&lt;\/Title&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;FeatureTypeStyle&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Transformation&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ogc:Function&nbsp;name=\"ras:Jiffle\"&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ogc:Function&nbsp;name=\"parameter\"&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ogc:Literal&gt;coverage&lt;\/ogc:Literal&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/ogc:Function&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ogc:Function&nbsp;name=\"parameter\"&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ogc:Literal&gt;script&lt;\/ogc:Literal&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ogc:Literal&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nir&nbsp;=&nbsp;src[7];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vir&nbsp;=&nbsp;src[3];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest&nbsp;=&nbsp;(nir&nbsp;-&nbsp;vir)&nbsp;\/&nbsp;(nir&nbsp;+&nbsp;vir);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/ogc:Literal&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/ogc:Function&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/ogc:Function&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/Transformation&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Rule&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;RasterSymbolizer&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Opacity&gt;1.0&lt;\/Opacity&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ColorMap&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ColorMapEntry&nbsp;color=\"#000000\"&nbsp;quantity=\"-1\"\/&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ColorMapEntry&nbsp;color=\"#0000ff\"&nbsp;quantity=\"-0.75\"\/&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ColorMapEntry&nbsp;color=\"#ff00ff\"&nbsp;quantity=\"-0.25\"\/&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ColorMapEntry&nbsp;color=\"#ff0000\"&nbsp;quantity=\"0\"\/&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ColorMapEntry&nbsp;color=\"#ffff00\"&nbsp;quantity=\"0.5\"\/&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ColorMapEntry&nbsp;color=\"#00ff00\"&nbsp;quantity=\"1\"\/&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/ColorMap&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/RasterSymbolizer&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/Rule&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/FeatureTypeStyle&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/UserStyle&gt;\r\n&nbsp;&nbsp;&lt;\/NamedLayer&gt;\r\n&lt;\/StyledLayerDescriptor&gt;\r\n<\/pre>\n<p>O desempenho \u00e9 bom o suficiente para exibi\u00e7\u00e3o interativa, e o resultado \u00e9 o seguinte:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/09\/s2-ndvi.png\" alt=\"\" width=\"768\" height=\"512\" class=\"aligncenter size-full wp-image-7322\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/09\/s2-ndvi.png 768w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/09\/s2-ndvi-300x200.png 300w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2018\/09\/s2-ndvi-600x400.png 600w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/p>\n<p>Fonte: <a href=\"http:\/\/blog.geoserver.org\/2018\/08\/28\/geoserver-2-14-rc-released\/\" rel=\"noopener\" target=\"_blank\">GeoServer Blog<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O GeoServer 2.14 adiciona suporte a um pacote de \u00e1lgebra de mapas eficiente conhecido como Jiffle. O Jiffle tem sido o trabalho de um ex-colaborador do GeoTools, Michael Bedwards, que foi recuperado, atualizado para suportar o Java 8 e integrado&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2018\/09\/19\/algebra-de-mapas-no-geoserver\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":7324,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[208,218,326],"class_list":["post-7321","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-geoserver","tag-wfs","tag-wfs-t"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7321","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=7321"}],"version-history":[{"count":3,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7321\/revisions"}],"predecessor-version":[{"id":7335,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7321\/revisions\/7335"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/7324"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=7321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=7321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=7321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}