{"id":8717,"date":"2020-04-02T07:30:28","date_gmt":"2020-04-02T10:30:28","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=8717"},"modified":"2020-03-25T11:29:10","modified_gmt":"2020-03-25T14:29:10","slug":"postgis-3-funcao-st_asgeojson","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2020\/04\/02\/postgis-3-funcao-st_asgeojson\/","title":{"rendered":"PostGIS 3:  Fun\u00e7\u00e3o ST_AsGeoJSON"},"content":{"rendered":"<p>Com o PostGIS 3.0, agora \u00e9 poss\u00edvel gerar recursos diretamente com GeoJSON, sem nenhum c\u00f3digo intermedi\u00e1rio, usando a nova fun\u00e7\u00e3o <a href=\"http:\/\/postgis.net\/docs\/manual-dev\/ST_AsGeoJSON.html\" rel=\"noopener noreferrer\" target=\"_blank\">ST_AsGeoJSON (record)<\/a>.<\/p>\n<p>O GeoJSON \u00e9 um formato de transporte comum, entre servidores e clientes da web, e at\u00e9 mesmo entre componentes de cadeias de processamento. Ser capaz de criar um GeoJSON \u00e9 importante para integrar diferentes partes em um aplicativo de geoprocessamento moderno.<\/p>\n<p>O PostGIS tem uma fun\u00e7\u00e3o chamada ST_AsGeoJSON(geometry), por\u00e9m faz um pouco menos do que a maioria dos usu\u00e1rios realmente precisa: ele utiliza uma geometria PostGIS e gera um GeoJSON &#8220;geometry object&#8221;, ou seja, um arquivo contendo apenas as geometrias, sem os atributos.<\/p>\n<p>O objeto de geometria GeoJSON \u00e9 apenas a forma do recurso, ele n\u00e3o inclui nenhuma outra informa\u00e7\u00e3o sobre o recurso que possa estar inclu\u00edda na tabela ou na consulta. Como resultado, os desenvolvedores gastaram muito tempo escrevendo c\u00f3digo para agrupar os resultados das ST_AsGeoJSON(geometry) com as colunas de uma tupla de resultado para criar \u201cobjetos de recurso\u201d do GeoJSON.<\/p>\n<p>A fun\u00e7\u00e3o ST_AsGeoJSON(record) examina a tupla de entrada e pega primeiro a coluna do tipo geometria para converter em uma geometria GeoJSON. O restante das colunas \u00e9 adicionado a Feature GeoJSON no properties. Veja:<\/p>\n<pre>\r\nSELECT ST_AsGeoJSON(subq.*) AS geojson \r\nFROM ( \r\n  SELECT ST_Centroid(geom), type, admin \r\n  FROM countries \r\n  WHERE name = 'Canada' \r\n) AS subq\r\n<\/pre>\n<pre>\r\n{\"type\": \"Feature\", \r\n \"geometry\": { \r\n    \"type\":\"Point\", \r\n    \"coordinates\":[-98.2939042718784,61.3764628013483] \r\n  }, \r\n  \"properties\": { \r\n    \"type\": \"Sovereign country\", \r\n    \"admin\": \"Canada\" \r\n  } \r\n}\r\n<\/pre>\n<p>Usando esta nova fun\u00e7\u00e3o GeoJSON, \u00e9 f\u00e1cil transmitir recursos diretamente do banco de dados para um mapa da Web com <a href=\"https:\/\/openlayers.org\/en\/latest\/examples\/geojson.html\" rel=\"noopener noreferrer\" target=\"_blank\">OpenLayers<\/a> ou <a href=\"https:\/\/leafletjs.com\/examples\/geojson\/\" rel=\"noopener noreferrer\" target=\"_blank\">Leaflet<\/a>, ou at\u00e9 mesmo consumi-los com <a href=\"https:\/\/openlayers.org\/en\/latest\/examples\/geojson.html\" rel=\"noopener noreferrer\" target=\"_blank\">ogr2ogr <\/a>para convers\u00e3o em outros formatos geoespaciais.<\/p>\n<p>Fonte: <a href=\"http:\/\/blog.cleverelephant.ca\/2019\/08\/postgis-3-geojson.html\" rel=\"noopener noreferrer\" target=\"_blank\">Clever Elephant Blog<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Com o PostGIS 3.0, agora \u00e9 poss\u00edvel gerar recursos diretamente com GeoJSON, sem nenhum c\u00f3digo intermedi\u00e1rio, usando a nova fun\u00e7\u00e3o ST_AsGeoJSON (record). O GeoJSON \u00e9 um formato de transporte comum, entre servidores e clientes da web, e at\u00e9 mesmo entre&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2020\/04\/02\/postgis-3-funcao-st_asgeojson\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":8517,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[342,212],"class_list":["post-8717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-geojson","tag-postgis"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8717","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=8717"}],"version-history":[{"count":1,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8717\/revisions"}],"predecessor-version":[{"id":8718,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8717\/revisions\/8718"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/8517"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=8717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=8717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=8717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}