{"id":8719,"date":"2020-04-03T07:30:20","date_gmt":"2020-04-03T10:30:20","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=8719"},"modified":"2020-03-25T12:04:58","modified_gmt":"2020-03-25T15:04:58","slug":"postgis-3-st_asmvt","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2020\/04\/03\/postgis-3-st_asmvt\/","title":{"rendered":"PostGIS 3: Fun\u00e7\u00e3o ST_AsMVT"},"content":{"rendered":"<p>Vector Tiles \u00e9 <a href=\"https:\/\/info.crunchydata.com\/blog\/dynamic-vector-tiles-from-postgis\" rel=\"noopener noreferrer\" target=\"_blank\">uma novidade<\/a> no PostGIS, permitindo que grandes quantidades de dados din\u00e2micos sejam enviadas para renderiza\u00e7\u00e3o diretamente em clientes da Web e dispositivos m\u00f3veis e possibilitando mapas muito bonitos e altamente interativos.<\/p>\n<p>Desde a introdu\u00e7\u00e3o da <a href=\"https:\/\/postgis.net\/docs\/ST_AsMVT.html\" rel=\"noopener noreferrer\" target=\"_blank\">fun\u00e7\u00e3o ST_AsMVT()<\/a>, as pessoas t\u00eam gerado cada vez mais seus blocos diretamente no banco de dados e, como resultado, desejam que a gera\u00e7\u00e3o dos tiles seja cada vez mais r\u00e1pida.<\/p>\n<p>Cada consulta de gera\u00e7\u00e3o de tiles deve executar as seguintes etapas:<\/p>\n<ul>\n<li>Reunir todas as linhas relevantes para o tile<\/li>\n<li>Simplificar os dados adequadamente para corresponder \u00e0 resolu\u00e7\u00e3o do tile<\/li>\n<li>Recorte os dados nos limites do tile<\/li>\n<li>Codificar os dados no <a href=\"https:\/\/github.com\/mapbox\/vector-tile-spec\/tree\/master\/2.1\" rel=\"noopener noreferrer\" target=\"_blank\">formato MVT protobuf<\/a><\/li>\n<\/ul>\n<p>Para o PostGIS 3.0, o desempenho da gera\u00e7\u00e3o de tiles foi bastante aprimorado.<\/p>\n<ul>\n<li>Primeiro, o processo de recorte foi acelerado e tornado mais confi\u00e1vel ao integrar o <a href=\"https:\/\/github.com\/mapbox\/wagyu\" rel=\"noopener noreferrer\" target=\"_blank\">algoritmo de recorte wagyu<\/a> diretamente no PostGIS. Isso acelerou o recorte de pol\u00edgonos, em particular, e reduziu inst\u00e2ncias de geometrias inv\u00e1lidas.<\/li>\n<li>Segundo, as etapas de simplifica\u00e7\u00e3o e redu\u00e7\u00e3o de precis\u00e3o foram simplificadas, para evitar c\u00f3pias desnecess\u00e1rias e trabalhar em casos simples, como pontos e linhas curtas. Isso acelerou o manuseio de pontos e linhas simples.<\/li>\n<li>Finalmente, o agregado ST_AsMVT() foi tornado paralelamente agrad\u00e1vel, para que todo o trabalho acima possa ser paralelizado em v\u00e1rias CPUs, acelerando drasticamente a gera\u00e7\u00e3o de tiles com muita geometria de entrada.<\/li>\n<\/ul>\n<p>O suporte a vector tiles no PostGIS ficou t\u00e3o bom que mesmo projetos com requisitos de gera\u00e7\u00e3o massiva de blocos, como o projeto <a href=\"https:\/\/openmaptiles.org\/\" rel=\"noopener noreferrer\" target=\"_blank\">OpenMapTiles<\/a>, padronizaram seus tiles no PostGIS.<\/p>\n<p>Fonte: <a href=\"http:\/\/blog.cleverelephant.ca\/2019\/08\/postgis-3-mvt.html\" rel=\"noopener noreferrer\" target=\"_blank\">Clever Elephant Blog<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vector Tiles \u00e9 uma novidade no PostGIS, permitindo que grandes quantidades de dados din\u00e2micos sejam enviadas para renderiza\u00e7\u00e3o diretamente em clientes da Web e dispositivos m\u00f3veis e possibilitando mapas muito bonitos e altamente interativos. Desde a introdu\u00e7\u00e3o da fun\u00e7\u00e3o ST_AsMVT(),&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2020\/04\/03\/postgis-3-st_asmvt\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":8528,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[212,346],"class_list":["post-8719","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-postgis","tag-vector-tiles"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8719","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=8719"}],"version-history":[{"count":3,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8719\/revisions"}],"predecessor-version":[{"id":8722,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8719\/revisions\/8722"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/8528"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=8719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=8719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=8719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}