När jag försöker med en enkel fråga

 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"  

Jag får detta fel

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

När jag försöker utan st_length det fungerar för att skapa en enkel grupp med räkningar.

Också följande fungerar bra

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

Exempel på delmängden av frågan som fungerar oberoende men inte när de strängas ihop

Bara den totala längden

exempel1

Bara gruppen

exempel2

När jag bara lägger till st_length

exempel3

Jag har försökt med .geometry i ST_Intersects och detta ger korrekta räkningar men ger pragma-geomet försök fel när summan läggs till

exempel4

Kommentarer

  • ST_Length kräver projektionsinformation (SRID) se gis.stackexchange.com/questions/35462/…
  • Din första fråga hänvisar till två tabeller med kolumnen geometry. Du måste ange vilken geometriska kolumn du vill utföra ST_length() på. Precis som du angav tabellen för Network -kolumnen
  • Vad jag inte ' inte förstår är varför dessa 2 frågor med frågorna fungerar när de körs av sig själva. Jag ' Jag lägger till skärmgrepp till frågan.
  • @she_weeds ledsen att jag bara insåg att utan .geometry var det inte ' t som gav ett fel men också ' t gav ett korrekt värde för räkningarna så korsningen fungerade inte '. Problemet med att köra längden på raderna i nätverksområdet ger fortfarande samma problem.

Svar

Enligt min mening behöver du inget SRID eftersom du inte arbetar med ST_Length_Spheroid().

Vad @she_weeds pekar på är verkligen 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

  • Tack – så det behövde veta att det ' är geometrin för en av de ingångsdata som vi behöver längden för.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *