Quando provo una query semplice

 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"  

Ottengo questo errore

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

Quando provo senza st_length funziona per creare un gruppo semplice con i conteggi.

Anche solo quanto segue funziona bene

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

Esempi del sottoinsieme della query che funzionano indipendentemente ma non quando messi insieme

Solo la lunghezza totale

esempio1

Solo il gruppo

esempio2

Quando aggiungo semplicemente st_length

esempio3

Ho provato con .geometry in ST_Intersects e questo dà i conteggi corretti ma dà il pragma geome prova lerrore quando viene aggiunta la somma

esempio4

Commenti

  • ST_Length richiede informazioni sulla proiezione (SRID) vedere gis.stackexchange.com/questions/35462/…
  • La tua prima query fa riferimento a due tabelle con la colonna geometry. Devi specificare su quale colonna della geometria desideri eseguire ST_length(). Proprio come hai specificato la tabella per la Network colonna
  • Quello che non ' non capisco, allora è il motivo per cui questi 2 le query con i problemi funzionano quando vengono eseguite da sole. ' aggiungerò screenshot alla domanda.
  • @she_weeds mi dispiace, mi sono appena reso conto che senza il .geometry non era ' t dava un errore ma ' t dava un valore appropriato per i conteggi, quindi lintersezione ' non funzionava. Il problema con lesecuzione della lunghezza delle linee nellarea di rete dà comunque lo stesso problema.

Risposta

Secondo me non hai bisogno di alcun SRID perché non stai lavorando con ST_Length_Spheroid().

Ciò su cui @she_weeds sta puntando è davvero corretto.

 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"  

Commenti

  • Grazie -quindi era necessario sapere che ' è la geometria di uno dei set di dati di input per cui abbiamo bisogno della lunghezza.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *