Chapter 11. Referência Raster

Table of Contents

As funções abaixo são as que um usuário do PostGIS Raster vai precisar e que estão disponíveis no momento no PostGIS Raster. Existem outras funções que precisam das funções suporte para os objetos raster que não são de uso geral.

raster é um novo tipo PostGIS para armazenar e analizar dados raster.

Para carregar rasters de arquivos raster, por favor, vá para Section 10.1, “Carregando e criando dados matriciais”

Para os exemplos nessa referência, nós usaremos uma table raster de rasters simulados - Formados com o seguinte código

CREATE TABLE dummy_rast(rid integer, rast raster);
INSERT INTO dummy_rast(rid, rast)
VALUES (1,
('01' -- little endian (uint8 ndr)
||
'0000' -- version (uint16 0)
||
'0000' -- nBands (uint16 0)
||
'0000000000000040' -- scaleX (float64 2)
||
'0000000000000840' -- scaleY (float64 3)
||
'000000000000E03F' -- ipX (float64 0.5)
||
'000000000000E03F' -- ipY (float64 0.5)
||
'0000000000000000' -- skewX (float64 0)
||
'0000000000000000' -- skewY (float64 0)
||
'00000000' -- SRID (int32 0)
||
'0A00' -- width (uint16 10)
||
'1400' -- height (uint16 20)
)::raster
),
-- Raster: 5 x 5 pixels, 3 bands, PT_8BUI pixel type, NODATA = 0
(2,  ('01000003009A9999999999A93F9A9999999999A9BF000000E02B274A' ||
'41000000007719564100000000000000000000000000000000FFFFFFFF050005000400FDFEFDFEFEFDFEFEFDF9FAFEF' ||
'EFCF9FBFDFEFEFDFCFAFEFEFE04004E627AADD16076B4F9FE6370A9F5FE59637AB0E54F58617087040046566487A1506CA2E3FA5A6CAFFBFE4D566DA4CB3E454C5665')::raster);

11.1. Tipos de suporte de dados raster

Abstract

Essa seção lista os tipos de dados PostgreSQL criados especificamente para suportar a funcionalidade raster.

  • geomval — Um tipo de dado espacial com dois campos - geom (possuindo objeto geométrico) e val (possuindo um valor de pixel de precisão dupla de uma banda raster).
  • addbandarg — Um tipo composto usado como entrada na função ST_AddBand definindo os atributos e valor inicial da nova banda.
  • rastbandarg — Um tipo composto para usar quando for preciso expressar um raster e um índice de banda desse raster.
  • raster — raster spatial data type.
  • reclassarg — Um tipo composto usado como entrada dentro da função ST_Reclass definindo o comportamento da reclassificação.
  • summarystats — Um tipo composto retornado pelas funções ST_SummaryStats e ST_SummaryStatsAgg.
  • unionarg — Um tipo composto usado como entrada dentro da função ST_Union definindo as bandas a serem processadas e o comportamento da operação UNIÃO.

11.2. Gerenciamento Raster

  • AddRasterConstraints — Adds raster constraints to a loaded raster table for a specific column that constrains spatial ref, scaling, blocksize, alignment, bands, band type and a flag to denote if raster column is regularly blocked. The table must be loaded with data for the constraints to be inferred. Returns true if the constraint setting was accomplished and issues a notice otherwise.
  • DropRasterConstraints — Derruba as restrições raster PostGIS que se referem a uma tabela de coluna raster. É útil se você precisar recarregar dados ou atualizar os dados da sua coluna raster.
  • AddOverviewConstraints — Marca uma coluna raster como sendo um resumo de outra.
  • DropOverviewConstraints — Desmarca uma coluna raster de ser um resumo de outra.
  • PostGIS_GDAL_Version — Relata a versão da biblioteca GDAL em uso pelo PostGIS
  • PostGIS_Raster_Lib_Build_Date — Relata a data da biblioteca raster construída completa.
  • PostGIS_Raster_Lib_Version — Relata a versão raster completa e constrói informações de configuração.
  • ST_GDALDrivers — Returns a list of raster formats supported by PostGIS through GDAL. Only those formats with can_write=True can be used by ST_AsGDALRaster
  • ST_Contour — Generates a set of vector contours from the provided raster band, using the GDAL contouring algorithm.
  • ST_InterpolateRaster — Interpolates a gridded surface based on an input set of 3-d points, using the X- and Y-values to position the points on the grid and the Z-value of the points as the surface elevation.
  • UpdateRasterSRID — Altera o SRID de todos os rasters na coluna e tabela do usuário especificado.
  • ST_CreateOverview — Cria uma resolução de versão reduzida de uma dada cobertura raster.

11.3. Construtores Raster

  • ST_AddBand — Retorna um raster com nova banda(s) do tipo dado adicionado com o valor inicial com a localização do índice. Se nenhum índice for especificado, a banda é adicionada ao final.
  • ST_AsRaster — Converte uma geometria PostGIS para um raster PostGIS.
  • ST_Band — Retorna uma ou mais bandas de um raster existente como um novo raster. Útil para a construção de novos rasters a partir de rasters existentes.
  • ST_MakeEmptyCoverage — Cover georeferenced area with a grid of empty raster tiles.
  • ST_MakeEmptyRaster — Retorna um raster vazio (sem bandas) das dimensões dadas (width & height), o X e Y do superior esquerdo, tamanho de pixel e rotação (scalex, scaley, skewx & skewy) e sistema de referência (srid). Se um raster passar, retorna um novo raster com o mesmo tamanho, alinhamento e SRID. Se o srid é deixado de fora, a referência espacial se torna desconhecida (0).
  • ST_Tile — Retorna um conjunto de rasters resultante de uma divisão do raster de entrada baseado nas dimensões desejadas nos rasters de saída.
  • ST_Retile — Retorna um conjunto de tiles configuradas de uma cobertura raster aleatória.
  • ST_FromGDALRaster — Retorna um raster de um arquivo raster GDAL suportado.

11.4. Assessores Raster

  • ST_GeoReference — Retorna os metadados georreferenciados no formato GDAL ou ESRI como é comumente visto em um arquivo mundo. O padrão é GDAL.
  • ST_Height — Retorna a altura do raster em pixeis.
  • ST_IsEmpty — Retorna verdadeiro se o raster estiver vazio (largura = 0 e altura = 0). Senão, retorna falso.
  • ST_MemSize — Retorna a quantidade de espaço (em bytes) que o raster pega.
  • ST_MetaData — Retorna metadados básicos sobre um objeto raster como um tanho pixel, rotação (skew), esquerda superior, inferior etc.
  • ST_NumBands — Retorna o número de bandas no objeto raster.
  • ST_PixelHeight — Retorna a altura do pixel em unidades geométricas do sistema de referência espacial.
  • ST_PixelWidth — Retorna a largura do pixel em unidades geométricas do sistema de referência espacial.
  • ST_ScaleX — Retorna o componente X da largura do pixel em unidades do sistema de referência coordenadas.
  • ST_ScaleY — Retorna o componente Y da altura do pixel em unidades do sistema de referência coordenadas.
  • ST_RasterToWorldCoord — Retorna o canto superior esquerdo do raster como X e Y geométricos (longitude e latitude) dada a coluna e linha. Coluna e linha começam em 1.
  • ST_RasterToWorldCoordX — Retorna a coordenada geométrica X superior esquerda de um raster, coluna ou linha. A numeração das colunas e linhas começam no 1.
  • ST_RasterToWorldCoordY — Retorna a coordenada geométrica Y superior esquerda de um raster, coluna e linha. A numeração das colunas e linhas começam no 1.
  • ST_Rotation — Retorna a rotação do raster em radianos.
  • ST_SkewX — Retorna o desvio X georreferência (ou parâmetro e rotação).
  • ST_SkewY — Retorna o desvio Y georreferência (ou parâmetro e rotação).
  • ST_SRID — Retorna o identificador de referência espacial como definido na tabela spatial_ref_sys.
  • ST_Summary — Retorna um texto resumo dos conteúdos do raster.
  • ST_UpperLeftX — Retorna a coordenada X superior esquerda na ref. espacial projetada.
  • ST_UpperLeftY — Retorna a coordenada Y superior esquerda na ref. espacial projetada.
  • ST_Width — Retorna a largura do raster em pixeis.
  • ST_WorldToRasterCoord — Retorna o canto superior esquerdo como coluna e linha dados os X e Y geométricos (longitude e latitude) ou um ponto expressado na coordenada do sistema de referência espacial do raster.
  • ST_WorldToRasterCoordX — Retorna a coluna no raster do ponto (pt) ou uma coordenada X e Y (xw, yw) representada no sistema de referência espacial mundial de raster.
  • ST_WorldToRasterCoordY — Retorna a linha no raster do ponto (pt) ou uma coordenada X e Y (xw, yw) representada no sistema de referência espacial global de raster.

11.5. Assessores de banda raster

  • ST_BandMetaData — Retorna os metadados básicos para uma banda raster especificada. banda número 1 é assumida se nenhuma for especificada.
  • ST_BandNoDataValue — Retorna o valor em uma dada banda que não representa nenhum valor. Se nenhuma banda número 1 for assumida.
  • ST_BandIsNoData — Retorna verdadeiro se a banda estiver repleta somente de valores nodata.
  • ST_BandPath — Retorna o caminho do arquivo do sistema para uma banda armazenada em um sistema de arquivos. Se nenhum número de banda for especificado, usa-se 1.
  • ST_BandFileSize — Returns the file size of a band stored in file system. If no bandnum specified, 1 is assumed.
  • ST_BandFileTimestamp — Returns the file timestamp of a band stored in file system. If no bandnum specified, 1 is assumed.
  • ST_BandPixelType — Retorna o tipo pixel para uma dada banda. Se nenhum número de banda for especificado, usa-se 1.
  • ST_MinPossibleValue — Retorna o número de bandas no objeto raster.
  • ST_HasNoBand — Retorna verdade se não existirem bandas com números dados. Se nenhum número de banda for especificado, então assume-se a banda 1.

11.6. Assessores e Setters de Pixel Raster

  • ST_PixelAsPolygon — Retorna o polígono que limita o pixel para uma linha e coluna específicas.
  • ST_PixelAsPolygons — Retorna o polígono que limita cada pixel de uma banda raster ao longo do valor, as coordenadas raster X e Y de cada pixel.
  • ST_PixelAsPoint — Retorna um ponto geométrico do canto superior esquerdo do pixel.
  • ST_PixelAsPoints — Retorna um ponto geométrico para cada pixel de uma banda raster junto com o valor, as coordenas raster X e Y de cada pixel. As coordenadas do ponto são do ponto esquerdo superior do pixel.
  • ST_PixelAsCentroid — Retorna o centroide (ponto) da área representada por um pixel.
  • ST_PixelAsCentroids — Retorna o centroide (ponto geométrico) para cada pixel de uma banda raster junto com o valor, as coordenas raster X e Y de cada pixel. O ponto é o centroide da área representada por um pixel.
  • ST_Value — Retorna o valor da banda dada com a colunax, linhay pixel ou em um ponto específico. Os números de banda começam em 1 e assumem-se 1 se não especificados. Se exclude_nodata_value for falso, então todos os pixeis, inclusive os nodata, são considerados para intersectar e retornar valor. Se exclude_nodata_value não passar então lê dos metadados do raster.
  • ST_NearestValue — Retorna o valor não-NODATA mais próximo de um dado pixel de banda especificado por uma colunax e linhay ou um ponto geométrico expressado no mesmo sistema de coordenada referência do raster.
  • ST_SetZ — Returns a geometry with the same X/Y coordinates as the input geometry, and values from the raster copied into the Z dimension using the requested resample algorithm.
  • ST_SetM — Returns a geometry with the same X/Y coordinates as the input geometry, and values from the raster copied into the M dimension using the requested resample algorithm.
  • ST_Neighborhood — Retorna um arranjo de precisão 2-D dobrada dos valores não-NODATA em torno da banda de pixel especificada ou por uma colunaX e linhaY ou um ponto geométrico expressado no mesmo sistema de coordenada de referência especial como o raster.
  • ST_SetValue — Retorna o raster modificado resultante do valor de uma banda em uma dada colunax, linhay pixel ou os pixeis que intersectam uma geometria específica. Os números de banda começam no 1 e são assumidos como 1 se não estiverem especificados.
  • ST_SetValues — Retorna o raster modificado resultante dos valores de uma dada banda.
  • ST_DumpValues — Obtenha os valores da banda específica como um arranjo 2-dimensional.
  • ST_PixelOfValue — Obtenha as coordenadas colunax, linhay do pixel cujos valores são iguais ao valor de pesquisa.

11.7. Editores Raster

  • ST_SetGeoReference — Coloque os parâmetros Georeference 6 em uma única chamada. Os números deverão ser separadospor espaço branco. Aceita entrar no formato GDAL ou ESRI. O padrão é GDAL.
  • ST_SetRotation — Põe a rotação do raster em radianos.
  • ST_SetScale — Coloca os tamanhos X e Y dos pixeis em unidades do sistema referencial de coordenadas. Número unidades/pixel largura/altura.
  • ST_SetSkew — Coloca as georreferências X e Y distorcidas (ou parâmetro de rotação). Se somente um passar, coloca o X e o Y no mesmo valor.
  • ST_SetSRID — Coloca o SRID de um raster em um srid inteiro específico definido na tabela spatial_ref_sys.
  • ST_SetUpperLeft — Sets the value of the upper left corner of the pixel of the raster to projected X and Y coordinates.
  • ST_Resample — Resample um raster usando um algorítimo específico, novas dimensões, um canto aleatório da grade e um conjunto de rasters georreferenciando atributos definidos ou emprestados de outro raster.
  • ST_Rescale — Resample a raster by adjusting only its scale (or pixel size). New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline, Lanczos, Max or Min resampling algorithm. Default is NearestNeighbor.
  • ST_Reskew — Resample um raster ajustando somente sua inclinação (ou tamanho de pixel). Novos valores de pixel são calculados usando o algorítimo NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline ou Lanczos. O padrão é NearestNeighbor.
  • ST_SnapToGrid — Resample um raster encaixando-o em uma grade. Novos valores de pixel são calculados usando o algorítimo NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline ou Lanczos. O padrão é NearestNeighbor.
  • ST_Resize — Redimensiona largura/altura novas para um raster
  • ST_Transform — Reprojeta um raster em um sistema de referência espacial conhecido para outro usando um algorítimo resampling especificado. As opções são NearestNeighbor, Bilinear, Cubic, CubicSpline, Lanczos com o padrão sendo NearestNeighbor.

11.8. Editores de Banda Raster

  • ST_SetBandNoDataValue — Coloca o valor da banda que não representa nenhum dado. A banda 1 é assumida se nenhuma banda for especificada. Para marcar uma banda como tendo nenhum valor nodata, coloca ele = NULL.
  • ST_SetBandIsNoData — Coloca a bandeira isnodata da banda como VERDADE.
  • ST_SetBandPath — Update the external path and band number of an out-db band
  • ST_SetBandIndex — Update the external band number of an out-db band

11.9. Análises e Estatísticas de Banda Raster

  • ST_Count — Retorna o número de pixeis em uma banda dada de um raster ou cobertura raster. Se nenhuma banda for especificada, o padrão é usar a banda 1. Se exclude_nodata_value for verdade, contará somente pixeis que não são iguais ao valor nodata.
  • ST_CountAgg — Agregado. Retorna o número de pixeis em uma banda dada de um raster ou cobertura raster. Se nenhuma banda for especificada, o padrão é usar a banda 1. Se exclude_nodata_value for verdade, contará somente pixeis que são diferentes ao valor NODATA.
  • ST_Histogram — Retorna um conjunto de registros que resumem um raster ou distribuição de dados de cobertura raster intervalos bin separados. O número de bins é auto calculado.
  • ST_Quantile — Calcula quantiles para um raster ou cobertura de tabela raster no contexto da amostra ou população. Assim, um valor poderia ser examinado para estar na porcentagem 25%, 50%, 75% do raster.
  • ST_SummaryStats — Retorna as estatísticas resumidas consistindo de count, sum, mean, stddev, min, max para uma dada banda raster de um raster ou cobertura raster. A banda 1 é assumida se nenhuma banda for especificada.
  • ST_SummaryStatsAgg — Agregado. Retorna as estatísticas resumidas consistindo de count, sum, mean, stddev, min, max para uma dada banda raster de um conjunto de rasters. A banda 1 é assumida se nenhuma banda for especificada.
  • ST_ValueCount — Retorna o conjunto de registros contendo uma banda pixel de valor e conta do número de pixeis em uma dada banda de um raster (ou uma cobertura raster) que tem um dado conjunto de valores. Usa-se a banda 1 se nenhuma for especificada. Por padrão pixeis de valor nodata não são contados. Todos os outros valores no pixel são saída e os valores de pixeis são arredondados para o inteiro mais próximo.

11.10. Raster Inputs

  • ST_RastFromWKB — Return a raster value from a Well-Known Binary (WKB) raster.
  • ST_RastFromHexWKB — Return a raster value from a Hex representation of Well-Known Binary (WKB) raster.

11.11. Raster Outputs

  • ST_AsBinary/ST_AsWKB — Return the Well-Known Binary (WKB) representation of the raster.
  • ST_AsHexWKB — Return the Well-Known Binary (WKB) in Hex representation of the raster.
  • ST_AsGDALRaster — Return the raster tile in the designated GDAL Raster format. Raster formats are one of those supported by your compiled library. Use ST_GDALDrivers() to get a list of formats supported by your library.
  • ST_AsJPEG — Retorna as bandas tile raster selecionadas como uma única Joint Photographic Exports Group (JPEG) image (byte arranjo). Se nenhuma banda for especificada e 1 ou mais que 3 bandas, então somente a primeira banda é usada. Se somente 3 bandas, então todas as 3 bandas serão usadas para mapear par RGB.
  • ST_AsPNG — Retorna as bandas tile raster selecionadas como um gráfico de rede portátil (PNG) imagem (byte array). Se as bandas raster 1, 3 ou 4 e nenhum banda for especificado, então todas as bandas são usadas. Se mais 2 ou mais que 4 bandas e nenhuma banda forem especificadas, então somente a banda 1 é usada. As bandas são mapeadas para espeço RGB ou RGBA.
  • ST_AsTIFF — Return the raster selected bands as a single TIFF image (byte array). If no band is specified or any of specified bands does not exist in the raster, then will try to use all bands.

11.12. Processamento Raster

  • ST_Clip — Returns the raster clipped by the input geometry. If band number is not specified, all bands are processed. If crop is not specified or TRUE, the output raster is cropped. If touched is set to TRUE, then touched pixels are included, otherwise only if the center of the pixel is in the geometry it is included.
  • ST_ColorMap — Cria um novo raster de até quatro bandas 8BUI (grayscale, RGB, RGBA) do raster fonte e uma banda específica. A banda 1 usada se não especificado.
  • ST_Grayscale — Creates a new one-8BUI band raster from the source raster and specified bands representing Red, Green and Blue
  • ST_Intersection — Retorna uma raster ou conjunto de pares de valores de pixeis de geometria representando a porção dividida de dois rasters ou a interseção geométrica de uma vetorização do raster e uma geometria.
  • ST_MapAlgebra (callback function version) — Versão função retorno - Retorna um raster de uma banda dado um ou mais rasters de entrada, os índices e uma função retorno de um usuário específico.
  • ST_MapAlgebra (expression version) — Versão expressão - Retorna um raster de uma banda dado um ou mais rasters de entrada, índices de banda e uma ou mais expressões SQL de usuários específicos.
  • ST_MapAlgebraExpr — Versão de banda raster 1: Cria uma nova banda raster formada pela aplicação de ma operação algébrica válida do PostgreSQL na banda raster de entrada de um tipo de pixel fornecido. A banda 1 é assumida se nenhuma banda for especificada.
  • ST_MapAlgebraExpr — Versão de banda raster 2: Cria uma banda raster nova formada pela aplicação de uma operação algébrica válida PostgreSQL nas duas bandas raster de entrada e do tipo de pixel fornecido. A banda 1 de cada raster é assumida se nenhum número de bandas for especificado. O raster resultante será alinhado (escala, inclinação e cantos de pixel) na grade definida pelo primeiro raster e tem sua extensão definida pelo parâmetro "extenttype". O valores para "extenttype" pode ser: INTERSEÇÃO, UNIÃO, PRIMEIRO, SEGUNDO.
  • ST_MapAlgebraFct — Versão de banda raster 1: Cria uma nova banda raster formada pela aplicação de uma função válida do PostgreSQL na banda raster de entrada de um tipo de pixel fornecido. A banda 1 é assumida se nenhuma banda for especificada.
  • ST_MapAlgebraFct — Versão de banda 2 - Cria uma nova banda raster um formada pela aplicação de uma função PostgreSQL na 2 entrada de bandas raster e do tipo de pixel fornecido. A banda 1 é assumida se nenhuma banda for especificada. Tipo de extensão torna-se INTERSEÇÃO se não especificada.
  • ST_MapAlgebraFctNgb — Versão 1-banda: o vizinho mais próximo no mapa algébrico usando a função de usuário definido PostgreSQL. Retorna um raster cujos valores são o resultado de uma função usuário PLPGSQL envolvendo uma vizinhança de valores da banda raster de entrada.
  • ST_Reclass — Cria um novo raster composto por tipos de banda reclassificados do original. A nband pode ser alterada. Se nenhuma nband for especificada, usa-se a 1. Todas as outras bandas são retornadas inalteradas. Use caso: converta uma banda 16BUI para 8BUI e então adiante para uma renderização mais simples como formatos visíveis.
  • ST_Union — Retorna a união de um conjunto de tiles raster em um único raster composto de 1 ou mais bandas.

11.13. Funções retorno de mapa algébrico embutido

  • ST_Distinct4ma — Função de processamento raster que calcula o resumo de valores únicos de pixel em uma vizinhança.
  • ST_InvDistWeight4ma — Função de processamento raster que interpola um valor de pixel de uma vizinhança.
  • ST_Max4ma — Função de processamento raster que calcula o valor máximo de pixel em uma vizinhança.
  • ST_Mean4ma — Função de processamento raster que calcula o menor valor de pixel em uma vizinhança.
  • ST_Min4ma — Função de processamento raster que calcula o valor mínimo de pixel em uma vizinhança.
  • ST_MinDist4ma — Função de processamento raster que retorna a distância mínima (em números de pixeis) entre o pixel de interesse e um pixel vizinho de interesse com valor.
  • ST_Range4ma — Função de processamento raster que calcula a varição de valores de pixel em uma vizinhança.
  • ST_StdDev4ma — Função de processamento raster que calcula o padrão de divergência de valores de pixel em uma vizinhança.
  • ST_Sum4ma — Função de processamento raster que calcula o resumo de todos os valores de pixel em uma vizinhança.

11.14. Processamento Raster

  • ST_Aspect — Retorna o aspecto (em graus) de uma banda raster de elevação. Útil para analisar terrenos.
  • ST_HillShade — Retorna a iluminação hipotética de uma banda raster de elevação usando as entradas de azimute, altitude, claridade e escala fornecidas.
  • ST_Roughness — Retorna um raster com a "robustez" calculada de um DEM.
  • ST_Slope — Retorna o declive (em graus) de uma banda raster de elevação. Útil para analisar terrenos.
  • ST_TPI — Retorna um raster com o índice de posição topográfico calculado.
  • ST_TRI — Retorna um raster com o índice de aspereza do terreno calculado.

11.15. Raster para Geometria

  • Box3D — Retorna a representação da caixa 3d da caixa encerrada do raster.
  • ST_ConvexHull — Retorna o casco convexo da geometria do raster incluindo valores iguais ao BandNoDataValue. Para rasters com formas normais e não desviadas, o resultado é o mesmo que ST_Envelope, então só é útil para rasters com formas irregulares ou desviados.
  • ST_DumpAsPolygons — Retorna um conjunto de linhas geomval (geom,val), de uma dada banda raster. Se nenhum número de banda for especificado, o número de banda torna-se 1.
  • ST_Envelope — Retorna a representação de polígono da extensão do raster.
  • ST_MinConvexHull — Retorna a geometria de casco convexo do raster excluindo os pixeis SEM DADOS.
  • ST_Polygon — Retorna um multipolígono formado pela união de pixeis que têm um valor que não é um valor sem dados. Se um número de banda for especificado, usa-se 1.

11.16. Operadores Raster

  • && — Retorna VERDADE se a caixa limitadora de A intersecta a caixa limitadora de B.
  • &< — Retorna VERDADE se uma caixa limitadora de A está à esquerda da de B.
  • &> — Retorna VERDADE se uma caixa limitadora de A está à direita da de B.
  • = — Retorna VERDADEse a caixa limitadora de A for a mesma de B. Utiliza precisão dupla de caixa limitadora.
  • @ — Retorna VERDADEse a caixa limitadora de A estiver contida pela de B. Utiliza precisão dupla de caixa limitadora.
  • ~= — Retorna VERDADE se a caixa limitadora de A é a mesma de B.
  • ~ — Retorna TRUE se a caixa delimitadora de A estiver contida na do B. Utiliza caixa delimitadora de precisão dupla.

11.17. Relações raster e raster de banda espacial

  • ST_Contains — Retorna verdade se nenhum ponto do raster rasteB estiver no exterior do raster rastA e pelo menos um ponto do interior do rastB estiver no interior do rastA.
  • ST_ContainsProperly — Retorna verdade se o rastB intersectar o interior do rastA, mas não o limite ou exterior do ratA.
  • ST_Covers — Retorna verdade se nenhum ponto do rastB estiver de fora do rastA.
  • ST_CoveredBy — Retorna verdade se nenhum ponto do rastA estiver de fora do rastB.
  • ST_Disjoint — Retorna verdade se raster rastA não intersectar espacialmente com o rastB.
  • ST_Intersects — Retorna verdade se o raster rastA intersectar espacialmente com o raster rastB.
  • ST_Overlaps — Retorna verdade se o raster rastA e rastB se intersectam, mas um deles não contém o outro completamente.
  • ST_Touches — Retorna verdade se o raster rastA e rastB têm pelo menos um ponto em comum, mas seus interiores não se intersectarem.
  • ST_SameAlignment — Retorna verdade se os rasters têm a mesma inclinação, escala, referência espacial, e deslocamento (pixeis podem ser colocados na mesma grade sem cortar eles) e falso se eles não notificarem problemas detalhados.
  • ST_NotSameAlignmentReason — Retorna a declaração de texto se os rasters estiverem alinhados e se não tiverem, uma razão do porquê.
  • ST_Within — Retorna verdade se nenhum ponto do raster rastA estiver no exterior do raster rastB e pelo menos um ponto do interior do rastA estiver no interior do rastB.
  • ST_DWithin — Retorna verdade se os rasters rastA e rastB estiverem dentro da distância especificada de cada um.
  • ST_DFullyWithin — Retorna verdade se os rasters rastA e rastB estiverem completamente dentro da distância especificada de cada um.

11.18. Raster Tips

Abstract

This section documents various gotchas and tips related to PostGIS Raster.

11.18.1. Out-DB Rasters

11.18.1.1. Directory containing many files

When GDAL opens a file, GDAL eagerly scans the directory of that file to build a catalog of other files. If this directory contains many files (e.g. thousands, millions), opening that file becomes extremely slow (especially if that file happens to be on a network drive such as NFS).

To control this behavior, GDAL provides the following environment variable: GDAL_DISABLE_READDIR_ON_OPEN. Set GDAL_DISABLE_READDIR_ON_OPEN to TRUE to disable directory scanning.

In Ubuntu (and assuming you are using PostgreSQL's packages for Ubuntu), GDAL_DISABLE_READDIR_ON_OPEN can be set in /etc/postgresql/POSTGRESQL_VERSION/CLUSTER_NAME/environment (where POSTGRESQL_VERSION is the version of PostgreSQL, e.g. 9.6 and CLUSTER_NAME is the name of the cluster, e.g. maindb). You can also set PostGIS environment variables here as well.

# environment variables for postmaster process
# This file has the same syntax as postgresql.conf:
#  VARIABLE = simple_value
#  VARIABLE2 = 'any value!'
# I. e. you need to enclose any value which does not only consist of letters,
# numbers, and '-', '_', '.' in single quotes. Shell commands are not
# evaluated.
POSTGIS_GDAL_ENABLED_DRIVERS = 'ENABLE_ALL'

POSTGIS_ENABLE_OUTDB_RASTERS = 1

GDAL_DISABLE_READDIR_ON_OPEN = 'TRUE'
                    

11.18.1.2. Maximum Number of Open Files

The maximum number of open files permitted by Linux and PostgreSQL are typically conservative (typically 1024 open files per process) given the assumption that the system is consumed by human users. For Out-DB Rasters, a single valid query can easily exceed this limit (e.g. a dataset of 10 year's worth of rasters with one raster for each day containing minimum and maximum temperatures and we want to know the absolute min and max value for a pixel in that dataset).

The easiest change to make is the following PostgreSQL setting: max_files_per_process. The default is set to 1000, which is far too low for Out-DB Rasters. A safe starting value could be 65536 but this really depends on your datasets and the queries run against those datasets. This setting can only be made on server start and probably only in the PostgreSQL configuration file (e.g. /etc/postgresql/POSTGRESQL_VERSION/CLUSTER_NAME/postgresql.conf in Ubuntu environments).

...
# - Kernel Resource Usage -

max_files_per_process = 65536           # min 25
                                        # (change requires restart)
...
                    

The major change to make is the Linux kernel's open files limits. There are two parts to this:

  • Maximum number of open files for the entire system

  • Maximum number of open files per process

11.18.1.2.1. Maximum number of open files for the entire system

You can inspect the current maximum number of open files for the entire system with the following example:

$ sysctl -a | grep fs.file-max
fs.file-max = 131072
                    

If the value returned is not large enough, add a file to /etc/sysctl.d/ as per the following example:

$ echo "fs.file-max = 6145324" >> /etc/sysctl.d/fs.conf

$ cat /etc/sysctl.d/fs.conf
fs.file-max = 6145324

$ sysctl -p --system
* Applying /etc/sysctl.d/fs.conf ...
fs.file-max = 2097152
* Applying /etc/sysctl.conf ...

$ sysctl -a | grep fs.file-max
fs.file-max = 6145324
                    
11.18.1.2.2. Maximum number of open files per process

We need to increase the maximum number of open files per process for the PostgreSQL server processes.

To see what the current PostgreSQL service processes are using for maximum number of open files, do as per the following example (make sure to have PostgreSQL running):

$ ps aux | grep postgres
postgres 31713  0.0  0.4 179012 17564 pts/0    S    Dec26   0:03 /home/dustymugs/devel/postgresql/sandbox/10/usr/local/bin/postgres -D /home/dustymugs/devel/postgresql/sandbox/10/pgdata
postgres 31716  0.0  0.8 179776 33632 ?        Ss   Dec26   0:01 postgres: checkpointer process
postgres 31717  0.0  0.2 179144  9416 ?        Ss   Dec26   0:05 postgres: writer process
postgres 31718  0.0  0.2 179012  8708 ?        Ss   Dec26   0:06 postgres: wal writer process
postgres 31719  0.0  0.1 179568  7252 ?        Ss   Dec26   0:03 postgres: autovacuum launcher process
postgres 31720  0.0  0.1  34228  4124 ?        Ss   Dec26   0:09 postgres: stats collector process
postgres 31721  0.0  0.1 179308  6052 ?        Ss   Dec26   0:00 postgres: bgworker: logical replication launcher

$ cat /proc/31718/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             15738                15738                processes
Max open files            1024                 4096                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       15738                15738                signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us
                    

In the example above, we inspected the open files limit for Process 31718. It doesn't matter which PostgreSQL process, any of them will do. The response we are interested in is Max open files.

We want to increase Soft Limit and Hard Limit of Max open files to be greater than the value we specified for the PostgreSQL setting max_files_per_process. In our example, we set max_files_per_process to 65536.

In Ubuntu (and assuming you are using PostgreSQL's packages for Ubuntu), the easiest way to change the Soft Limit and Hard Limit is to edit /etc/init.d/postgresql (SysV) or /lib/systemd/system/postgresql*.service (systemd).

Let's first address the SysV Ubuntu case where we add ulimit -H -n 262144 and ulimit -n 131072 to /etc/init.d/postgresql.

...
case "$1" in
    start|stop|restart|reload)
        if [ "$1" = "start" ]; then
            create_socket_directory
        fi
    if [ -z "`pg_lsclusters -h`" ]; then
        log_warning_msg 'No PostgreSQL clusters exist; see "man pg_createcluster"'
        exit 0
    fi

    ulimit -H -n 262144
    ulimit -n 131072

    for v in $versions; do
        $1 $v || EXIT=$?
    done
    exit ${EXIT:-0}
        ;;
    status)
...

Now to address the systemd Ubuntu case. We will add LimitNOFILE=131072 to every /lib/systemd/system/postgresql*.service file in the [Service] section.

...
[Service]

LimitNOFILE=131072

...

[Install]
WantedBy=multi-user.target
...

After making the necessary systemd changes, make sure to reload the daemon

systemctl daemon-reload