Terminologia para dados espaciais do Amazon Redshift - Amazon Redshift

Terminologia para dados espaciais do Amazon Redshift

Os termos a seguir são usados para descrever algumas funções espaciais do Amazon Redshift.

Caixa delimitadora

Uma caixa delimitadora de uma geometria ou geografia é definida como o produto cruzado (entre dimensões) das extensões das coordenadas de todos os pontos da geometria ou geografia. Para geometrias bidimensionais, a caixa delimitadora é um retângulo que inclui completamente todos os pontos da geometria. Por exemplo, uma caixa delimitadora do polígono POLYGON((0 0,1 0,0 2,0 0)) é o retângulo que é definido pelos pontos (0, 0) e (1, 2) como seus cantos inferior esquerdo e superior direito. O Amazon Redshift pré-calcula e armazena uma caixa delimitadora dentro de uma geometria para acelerar predicados geométricos e junções espaciais. Por exemplo, se as caixas delimitadoras de duas geometrias não se cruzam, então essas duas geometrias não podem se cruzar e não podem estar no conjunto de resultados de uma junção espacial usando o predicado ST_Intersects.

Você pode usar funções espaciais para adicionar (AddBBox), descartar (DropBBox) e determinar o suporte (SupportsBBox) para uma caixa delimitadora. O Amazon Redshift oferece suporte ao pré-cálculo de caixas delimitadoras para todos os subtipos de geometria.

O exemplo a seguir mostra como atualizar geometrias existentes em uma tabela para armazená-las com uma caixa delimitadora. Se o cluster estiver na versão 1.0.26809 ou posterior do cluster, todas as novas geometrias serão criadas com uma caixa delimitadora pré-computada por padrão.

UPDATE my_table SET geom = AddBBox(geom) WHERE SupportsBBox(geom) = false;

Depois de atualizar geometrias existentes, recomendamos que você execute o comando VACUUM na tabela atualizada. Para ter mais informações, consulte VACUUM.

Para definir se as geometrias são codificadas com uma caixa delimitadora durante uma sessão, consulte default_geometry_encoding.

Validade geométrica

Os algoritmos geométricos usados pelo Amazon Redshift assumem que a geometria de entrada é uma geometria válida. Se uma entrada para um algoritmo não é válida, então o resultado é indefinido. A seção a seguir descreve as definições de validade geométrica usadas pelo Amazon Redshift para cada subtipo de geometria.

Point

Um ponto será considerado válido se uma das seguintes condições for true:

  • O ponto é o ponto vazio.

  • Todas as coordenadas de ponto são números finitos de ponto flutuante.

Um ponto pode ser o ponto vazio.

Linestring

Uma linestring será considerada válida se uma das seguintes condições for true:

  • A linestring está vazia; isto é, não contém nenhum ponto.

  • Todos os pontos em uma linestring não vazio têm coordenadas que são números de ponto flutuante finito.

  • A linestring, se não vazia, deve ser unidimensional; isto é, não pode degenerar até um ponto.

Uma linestring não pode conter pontos vazios.

Uma linestring pode ter pontos consecutivos duplicados.

Uma linestring pode ter auto-interseções.

Polígono

Um polígono será considerado válido se uma das seguintes condições for true:

  • O polígono está vazio; isto é, não contém anéis.

  • Se não estiver vazio, um polígono será válido se todas as condições a seguir forem true:

    • Todos os anéis do polígono são válidos. Um anel será considerado válido se todas as condições a seguir forem true:

      • Todos os pontos do anel têm coordenadas que são números de ponto flutuante finitos.

      • O anel está fechado; isto é, seu primeiro ponto e seu último ponto coincidem.

      • O anel não tem nenhuma auto-intersecção.

      • O anel é bidimensional.

    • Os anéis do polígono têm orientações consistentes. Ou seja, se você atravessar qualquer anel, o interior do polígono está à sua direita ou à sua esquerda. Isso significa que, se o anel externo de um polígono for orientado no sentido horário ou anti-horário, todos os anéis internos do polígono devem ter a mesma orientação no sentido anti-horário ou no sentido horário.

    • Todos os anéis interiores devem estar dentro do anel externo do polígono.

    • Os anéis interiores não podem ser aninhados; isto é, um anel interior não pode estar dentro de outro anel interior.

    • Os anéis internos e externos podem se cruzar somente em um número finito de pontos.

    • O interior do polígono deve ser simplesmente conectado.

Um polígono não pode conter pontos vazios.

Multiponto

Um multiponto será considerado válido se uma das seguintes condições for true:

  • O multiponto está vazio; isto é, não contém nenhum ponto.

  • Um multiponto não está vazio, e todos os pontos são válidos de acordo com a definição de validade de ponto.

Um multiponto pode conter um ou mais pontos vazios.

Um multiponto pode ter pontos duplicados.

Multilinestring

Uma multilinestring será considerada válida se uma das seguintes condições for verdadeira:

  • A multilinestring está vazia; isto é, não contém linhas de linha.

  • Todas as linestrings em uma multilinestring não vazia são válidas de acordo com a definição de validade de linestring.

Uma multilinestring não vazia que consiste em apenas linhas vazias é considerada válida.

Uma linestring vazia em uma multilinestring não afeta sua validade.

Uma multilinestring pode ter linestrings com pontos consecutivos duplicados.

Um multilinestring pode ter auto-interseções.

Uma multilinestring não pode conter pontos vazios.

Multipolígono

Um multipolígono será considerado válido se uma das seguintes condições for true:

  • O multipolígono não contém nenhum polígono (está vazio).

  • O multipolígono não está vazio e todas as opções a seguir são true:

    • Todos os polígonos no multipolígono são válidos.

    • Não há dois polígonos no multipolígono que podem se cruzar em um número infinito de pontos. Em particular, isso implica que o interior de quaisquer dois polígonos não podem se cruzar e que eles podem tocar somente em um número finito de pontos.

Um polígono vazio em um multipolígono não invalida um multipolígono.

Um multipolígono não pode conter pontos vazios.

Coleção de geometria

Uma coleção de geometria será considerada válida se uma das seguintes condições for true:

  • A coleção de geometria está vazia; isto é, ela não contém nenhuma geometria.

  • Todas as geometrias em uma coleção de geometria não vazia são válidas.

Esta definição ainda se aplica, embora de forma recursiva, para coleções de geometria aninhadas.

Uma coleção de geometria pode conter pontos vazios e multipontos com pontos vazios.

Simplicidade geométrica

Os algoritmos geométricos usados pelo Amazon Redshift assumem que a geometria de entrada é uma geometria válida. Se uma entrada para um algoritmo não é válida, então a verificação de simplicidade é indefinida. A seção a seguir descreve as definições de simplicidade geométrica usadas pelo Amazon Redshift para cada subtipo de geometria.

Point

Um ponto válido será considerado simples se uma das seguintes condições for true:

  • Um ponto válido é sempre considerado simples.

  • Um ponto vazio é considerado simples.

Linestring

Uma linestring válida será considerada simples se uma das seguintes condições for true:

  • A linestring está vazia.

  • A linestring não está vazia e todas as condições a seguir são true:

    • Não tem pontos consecutivos duplicados.

    • Ela não tem auto-interseções, exceto possivelmente por seu primeiro ponto e último ponto, que pode coincidir. Em outras palavras, a linestring não pode ter auto-interseções exceto em pontos de limite.

Polígono

Um polígono válido é considerado simples se não contiver quaisquer pontos consecutivos duplicados.

Multiponto

Um multiponto válido será considerado simples se uma das seguintes condições for true:

  • O multiponto está vazio; isto é, não contém nenhum ponto.

  • Dois pontos não vazios do multiponto não coincidem.

Multilinestring

Uma multilinestring válida será considerada simples se uma das seguintes condições for true:

  • A multilinestring está vazia.

  • A multilinestring está vazia e todas as condições a seguir são true:

    • Todas as suas linhas são simples.

    • Quaisquer duas linestrings da multilinestring não se cruzam, exceto em pontos que são pontos de limite das duas linestrings.

Uma multilinestring não vazia que consiste apenas em linestrings vazias é considerada vazia.

Uma linestring vazia em uma multilinestring não afeta sua simplicidade.

Uma linestring fechada em uma multilinestring não pode cruzar com qualquer outra linestring na multilinestring.

Uma multilinestring não pode ter linestrings com pontos consecutivos duplicados.

Multipolígono

Um multipolígono válido é considerado simples se não contiver quaisquer pontos consecutivos duplicados.

Coleção de geometria

Uma coleção de geometria válida será considerada simples se uma das seguintes condições for true:

  • A coleção de geometria está vazia; isto é, ela não contém nenhuma geometria.

  • Todas as geometrias em uma coleção de geometria não vazia são simples.

Esta definição ainda se aplica, embora de forma recursiva, para coleções de geometria aninhadas.

H3

O H3 é um sistema de grade de indexação geoespacial hierárquico, que oferece uma maneira de indexar coordenadas espaciais com resolução de até um metro quadrado. Os dados indexados podem ser unidos em conjuntos de dados diferentes e agregados em níveis de precisão distintos. O H3 possibilita uma grande variedade de algoritmos e otimizações com base na grade, inclusive vizinhos mais próximos, caminho mais curto, suavização de gradiente e muito mais. Os índices H3 se referem a células que podem ser hexágonos ou pentágonos. O espaço é subdividido hierarquicamente dada uma resolução. O H3 dá suporte a 16 resoluções de 0 a 15, inclusive. Com 0 sendo o mais aproximado e 15 sendo o mais preciso.

O Amazon Redshift oferece as seguintes funções espaciais H3: