Skip to main content

Descrição

Lê um documento GeoJSON FeatureCollection e produz uma linha por feature. Cada linha tem o seguinte esquema fixo: Cada geometria é armazenada no tipo Geometry do ClickHouse (um Variant). Os tipos de geometria GeoJSON compatíveis são Point, LineString, MultiLineString, Polygon e MultiPolygon. Os outros dois tipos de geometria GeoJSON, GeometryCollection e MultiPoint, não podem ser representados pelo tipo Geometry; por padrão, a leitura de um deles na coluna geometry gera uma exceção, mas isso pode ser alterado para inserir NULL — veja Tratamento de tipos de geometria não compatíveis abaixo. Por padrão, a coluna geometry é NULL apenas quando a geometria de uma feature é um JSON null explícito; com input_format_geojson_unsupported_geometry_handling = 'null', ela também é NULL para um tipo de geometria não compatível. A estrutura do documento é validada: o type de nível superior deve ser FeatureCollection, e cada elemento de features deve ter type Feature. As coordenadas devem obedecer às invariantes de forma do GeoJSON — um LineString (e cada linha de um MultiLineString) deve ter pelo menos duas posições, e um anel de Polygon (e cada anel de um MultiPolygon) deve ser fechado e ter pelo menos quatro posições. Documentos malformados são rejeitados, em vez de serem carregados silenciosamente. Outras chaves no objeto FeatureCollection (como name ou crs) e outras chaves dentro de cada objeto Feature (como bbox) são ignoradas. A ordem das chaves é flexível: o type de nível superior pode aparecer antes ou depois do array features, e, dentro de um objeto de geometria, coordinates pode aparecer antes ou depois de type. A inferência de esquema retorna o esquema fixo acima, portanto DESCRIBE e SELECT ... FROM format(...) funcionam sem uma definição de tabela.

Exemplo de uso

Considere o seguinte arquivo GeoJSON london.geojson, com uma combinação de tipos de geometria:
Podemos consultar o arquivo e inspecionar os tipos geométricos:
Query
Response
A extensão de arquivo .geojson é detectada automaticamente, portanto o argumento de formato pode ser omitido:
Query
Podemos usar variantType para verificar o tipo subjacente de cada objeto Geometry:
Query
Response
E podemos extrair os dados subjacentes assim:
Query
Response
Ao acessar uma subcoluna Geometry, o valor é retornado quando a linha contém esse tipo; caso contrário, retorna o valor padrão do tipo — (0,0) para Point e [] para os tipos baseados em Array — portanto, use variantType(geometry) para identificar qual deles está definido. Também podemos fazer a ingestão de dados GeoJSON em uma tabela:
Query
Em seguida, faça a consulta por tipo de feature:
Query
Response
Também podemos inferir o esquema dos dados GeoJSON sem uma definição de tabela:
Query
Response

Tratamento de tipos de geometria não compatíveis

Alguns tipos de geometria GeoJSON válidos — como GeometryCollection e MultiPoint — não podem ser representados pelo tipo Geometry do ClickHouse. Você pode controlar o que acontece quando uma dessas geometrias precisa ser armazenada na coluna geometry usando a configuração input_format_geojson_unsupported_geometry_handling. Os valores possíveis são:
  • 'throw' — lançar uma exceção (padrão)
  • 'null' — inserir um valor NULL na coluna geometry e continuar a análise
Esse tratamento se aplica apenas quando a coluna geometry é lida. Quando geometry não é uma coluna de saída solicitada (por exemplo, SELECT id FROM ...), uma geometria não compatível ainda é validada quanto à sua integridade estrutural, mas não aciona esse tratamento — ela não lança exceção nem insere NULL, porque nenhum valor de geometria é materializado.
Last modified on July 2, 2026