Quando tento uma consulta simples

 SELECT "Water_Service_Area_Boundaries_Non_Cadastral"."Network", count(*), sum(st_length(geometry)) FROM "W_Mains_DSC_ExclAbandoned", "Water_Service_Area_Boundaries_Non_Cadastral" WHERE ST_Intersects("Water_Service_Area_Boundaries_Non_Cadastral", "W_Mains_DSC_ExclAbandoned") GROUP BY "Water_Service_Area_Boundaries_Non_Cadastral"."Network"  

Recebo este erro

Query preparation error on PRAGMA table_info(_tview): ambiguous column name: geometry 

Quando tento sem o st_length funciona para criar um grupo simples com contagens.

Além disso, apenas o seguinte funciona bem

  Select sum(st_length(geometry)), count(*) From W_Mains_DSC_ExclAbandoned  

Exemplos do subconjunto da consulta que funcionam independentemente, mas não quando agrupados

Apenas o comprimento total

example1

Apenas o grupo

exemplo2

Quando eu simplesmente adiciono st_length

exemplo3

Eu tentei com .geometria no ST_Intersects e isso dá contagens corretas, mas dá o pragma geome tente o erro quando a soma for adicionada

exemplo4

Comentários

  • ST_Length requer informações de projeção (SRID), consulte gis.stackexchange.com/questions/35462/…
  • Sua primeira consulta faz referência a duas tabelas com a coluna geometry. Você precisa especificar em qual coluna de geometria deseja executar ST_length(). Assim como você especificou a tabela para a Network coluna
  • O que eu não ' não entendo é porque esses 2 consultas com os problemas funcionam quando executadas por si mesmas. Eu ' adicionarei capturas de tela à pergunta.
  • @she_weeds desculpe, acabei de perceber que sem a geometria não era ' t dando um erro, mas também não ' dando um valor adequado para as contagens, de modo que a intersecção não ' está funcionando. O problema de percorrer o comprimento das linhas na área de rede ainda apresenta o mesmo problema.

Resposta

Na minha opinião, você não precisa de nenhum SRID porque não está trabalhando com ST_Length_Spheroid().

O que @she_weeds está apontando é realmente correto.

 SELECT ws."Network", count(ws."Network"), sum(st_length(ws.geometry)) FROM "Water_Service_Area_Boundaries_Non_Cadastral" AS ws, "W_Mains_DSC_ExclAbandoned" AS wmain WHERE ST_Intersects(ws.geometry, wmain.geometry) GROUP BY ws."Network"  

Comentários

  • Obrigado, então ele precisava saber que é ' a geometria de um dos conjuntos de dados de entrada para os quais precisamos do comprimento.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *