Når jeg prøver en simpel forespørgsel

 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"  

Jeg får denne fejl

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

Når jeg prøver det uden st_length det fungerer at oprette en simpel gruppe med optællinger.

Også bare følgende fungerer fint

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

Eksempler på undersættet af forespørgslen, der fungerer uafhængigt, men ikke når de strækkes sammen

Bare den samlede længde

eksempel1

Bare gruppen

eksempel2

Når jeg blot tilføjer st_length

eksempel3

Jeg har prøvet med .geometry i ST_Intersects og dette giver korrekte optællinger, men giver pragma-geomet prøv fejl, når summen tilføjes

eksempel4

Kommentarer

  • ST_Length kræver projektionsinformation (SRID) se gis.stackexchange.com/questions/35462/…
  • Din første forespørgsel henviser til to tabeller med kolonnen geometry. Du skal angive, hvilken geometrisk kolonne du vil udføre ST_length() på. Ligesom du angav tabellen til Network kolonnen
  • Hvad jeg ikke ' ikke forstår, er hvorfor disse 2 forespørgsler med problemerne fungerer, når de køres af sig selv. Jeg ' Jeg tilføjer skærmgreb til spørgsmålet.
  • @she_weeds ked af, at jeg lige indså, at uden .geometry var det ikke ' t giver en fejl, men også ' t giver en korrekt værdi for tællingerne, så skæringspunktet fungerede ikke ' t. Problemet med at køre længden af linjerne i netværksområdet giver dog stadig det samme problem.

Svar

Efter min mening har du ikke brug for noget SRID fordi du ikke arbejder med ST_Length_Spheroid().

Hvad @she_weeds peger på er faktisk korrekt.

 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"  

Kommentarer

  • Tak – så det var nødvendigt at vide, at det ' er geometrien på et af de inputdatasæt, vi har brug for længden til.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *