Temos recursos de dados de pesquisa que contêm informações 3D parciais.
O exemplo mais comum seria um LineString 2D representando uma estrada, que contém informações de elevação em determinados pontos em que foi pesquisada. Outros exemplos incluem formas de telhado - Um MultiLineString em que alguns pontos-chave têm uma elevação atribuída a partir do plano de construção, mas não todos.
Usando o PostGIS, qual modelo de dados você recomendaria para armazenar esse tipo de informação, para mantê-lo o mais acessível possível, sem perder ou gerar informações interpoladas?
Respostas:
Você pode armazenar os valores Z não medidos como
'nan'::float8
. Por exemplo:No entanto, isso pode causar problemas, pois os valores de NaN nem sempre são testados ou manipulados pelos desenvolvedores de software. Por exemplo, o PostGIS não pode analisar a versão WKT acima
fonte
Crie uma coluna de geometria secundária com três dimensões para conter os vértices da cadeia de linhas que possuem os valores de três ordenadas (triplas). Para que esse esquema funcione, as seguintes suposições são assumidas:
A geometria válida deve ser suficiente para não permitir pontos duplicados em cadeias de linhas e nenhuma interseção automática. Portanto, cada coordenada se comportará como uma chave de primery para identificar o vértice na geometria de origem.
Isso também está correto no modelo relacional:
Para o caso de várias linhas, as coisas podem ser um pouco mais difíceis, já que agora deve ter uma tabela adicional com uma chave primária composta:
A chave primária acima evitará inserções de índices de geometria duplicados para uma determinada geometria. O gatilho / verificação impedirá índices inválidos. Também as linhas aqui devem ser de dados de origem, dada a chave estrangeira. Todas as regras anteriores se aplicam.
Uma simplificação seria o uso de uma coluna adicional, mas não da geometria de tipo, mas do mesmo tipo de valor Z declarado como matriz.
fonte