{"id":6320,"date":"2016-11-29T07:30:43","date_gmt":"2016-11-29T10:30:43","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=6320"},"modified":"2016-11-25T09:48:58","modified_gmt":"2016-11-25T12:48:58","slug":"criacao-de-sql-view-no-geoserver-usando-parametros","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2016\/11\/29\/criacao-de-sql-view-no-geoserver-usando-parametros\/","title":{"rendered":"Cria\u00e7\u00e3o de SQL View no GeoServer usando par\u00e2metros"},"content":{"rendered":"<p>A maneira tradicional de usar os dados de um banco de dados \u00e9 configurar uma tabela ou uma vis\u00e3o como uma nova camada no GeoServer. A partir do GeoServer 2.1.0 o usu\u00e1rio tem a possibilidade de criar uma nova camada, especificando uma consulta SQL, sem a necessidade de realmente criar uma view no banco de dados.<\/p>\n<p>Uma SQL View parametrizada \u00e9 baseada em uma consulta SQL que cont\u00e9m par\u00e2metros cujos valores podem ser dinamicamente fornecido juntamente com as requisi\u00e7\u00f5es WMS ou WFS. Um par\u00e2metro \u00e9 vinculado por sinais %, pode ter um valor padr\u00e3o e deve ter sempre uma express\u00e3o regular de valida\u00e7\u00e3o.<\/p>\n<p>Para seu melhor entendimento, vamos criar uma camada a partir de um SQL View parametrizada:<\/p>\n<p>1. A fim de criar uma SQL View parametrizada execute as <a href=\"http:\/\/www.fernandoquadro.com.br\/html\/2016\/10\/07\/usando-sql-view-no-geoserver\/\" target=\"_blank\">etapas 1 e 2 do post anterior<\/a> e depois insira os seguintes par\u00e2metros:<\/p>\n<pre>\r\nSELECT date_part('year'::text, t1.obs_datetime) AS obs_year, t1.storm_num, t1.storm_name, t1.wind, t2.wind AS wind_end, t1.press, t2.press AS press_end, t1.obs_datetime, t2.obs_datetime AS obs_datetime_end, st_makeline(t1.geom, t2.geom) AS geom\r\nFROM storm_obs t1\r\nJOIN ( SELECT storm_obs.id, storm_obs.storm_num, storm_obs.storm_name, storm_obs.wind, storm_obs.press, storm_obs.obs_datetime, storm_obs.geom\r\n           FROM storm_obs) t2 ON (t1.obs_datetime + '06:00:00'::interval) = t2.obs_datetime AND t1.storm_name::text = t2.storm_name::text\r\nWHERE\r\n        date_part('year'::text, t1.obs_datetime) BETWEEN <u>%MIN_OBS_YEAR%<\/u> AND <u>%MAX_OBS_YEAR%<\/u>\r\nORDER BY date_part('year'::text, t1.obs_datetime), t1.storm_num, t1.obs_datetime\r\n<\/pre>\n<p>2. Clique sobre os par\u00e2metros do SQL. O GeoServer ir\u00e1 criar automaticamente os campos com os par\u00e2metros especificados na vis\u00e3o:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_guess_params.png\" alt=\"sqlviews_parametricsql_guess_params\" width=\"600\" height=\"141\" class=\"aligncenter size-full wp-image-6360\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_guess_params.png 600w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_guess_params-300x71.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>3. Preencha alguns valores padr\u00e3o para os par\u00e2metros, de modo que GeoServer possa executar a consulta e inspecionar os resultados nas pr\u00f3ximas etapas. Defina 2020 para MAX_OBS_YEAR e 0 para MIN_OBS_YEAR.<\/p>\n<p>4. Atualize os atributos, verifique o SRID e publique a camada. Na configura\u00e7\u00e3o atribuia o estilo <em>storm_track_interval estilo<\/em> \u00e0 camada como estilo padr\u00e3o.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_publishing.png\" alt=\"sqlviews_parametricsql_publishing\" width=\"299\" height=\"323\" class=\"aligncenter size-full wp-image-6361\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_publishing.png 299w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_publishing-278x300.png 278w\" sizes=\"auto, (max-width: 299px) 100vw, 299px\" \/><\/p>\n<p>5. Clique em OpenLayers na tela de pr\u00e9-visualiza\u00e7\u00e3o da camada <em>v_storm_track_interval<\/em>.<\/p>\n<p>6. \u00c0 primeira vista voc\u00ea n\u00e3o vai ver nada, j\u00e1 que a camada est\u00e1 usando os par\u00e2metros padr\u00e3o para os anos de observa\u00e7\u00e3o. Especifique dois anos para a exibi\u00e7\u00e3o adicionando este par\u00e2metro no final do Pedido GetMap:<\/p>\n<pre>\r\n&viewparams=MIN_OBS_YEAR:2000;MAX_OBS_YEAR:2000\r\n<\/pre>\n<p>Voc\u00ea deve obter uma requisi\u00e7\u00e3o como esta:<\/p>\n<pre>\r\nhttp:\/\/localhost:8083\/geoserver\/geosolutions\/wms?service=WMS&version=1.1.0&request=GetMap&layers=geosolutions:v_storm_track_interval&styles=&bbox=-180.0,-90.0,180.0,90.0&width=660&height=330&srs=EPSG:4326&format=application\/openlayers<em>&viewparams=MIN_OBS_YEAR:2000;MAX_OBS_YEAR:2000<\/em>\r\n<\/pre>\n<p>7. Agora voc\u00ea \u00e9 capaz de ver os furac\u00f5es e tamb\u00e9m escolher dinamicamente o intervalo de anos de observa\u00e7\u00e3o de seu interesse.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_preview.png\" alt=\"sqlviews_parametricsql_preview\" width=\"579\" height=\"326\" class=\"aligncenter size-full wp-image-6362\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_preview.png 579w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/11\/sqlviews_parametricsql_preview-300x169.png 300w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><\/p>\n<p>Fonte: <a href=\"http:\/\/geoserver.geo-solutions.it\/edu\/en\/adding_data\/add_sqllayers.html\" target=\"_blank\">GeoSolutions<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A maneira tradicional de usar os dados de um banco de dados \u00e9 configurar uma tabela ou uma vis\u00e3o como uma nova camada no GeoServer. A partir do GeoServer 2.1.0 o usu\u00e1rio tem a possibilidade de criar uma nova camada,&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2016\/11\/29\/criacao-de-sql-view-no-geoserver-usando-parametros\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":6322,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[208],"class_list":["post-6320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-geoserver"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/6320","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=6320"}],"version-history":[{"count":9,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/6320\/revisions"}],"predecessor-version":[{"id":6366,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/6320\/revisions\/6366"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/6322"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=6320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=6320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=6320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}