Kiedy próbuję wykonać proste zapytanie

 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"  

Otrzymuję ten błąd

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

Kiedy spróbuję bez st_length działa w celu utworzenia prostej grupy z licznikami.

Również następujące elementy działają dobrze

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

Przykłady podzbioru zapytania, które działa niezależnie, ale nie w połączeniu ze sobą

Tylko całkowita długość

example1

Tylko grupa

example2

Gdy po prostu dodam st_length

example3

Próbowałem z .geometry w ST_Intersects i to daje poprawne zliczenia, ale daje pragma geome spróbuj błąd podczas dodawania sumy

example4

Komentarze

  • ST_Length wymaga informacji o projekcji (SRID) patrz gis.stackexchange.com/questions/35462/…
  • Twoje pierwsze zapytanie odwołuje się do dwóch tabel z kolumną geometry. Musisz określić, na której kolumnie geometrii chcesz wykonać ST_length(). Tak jak podałeś tabelę dla Network kolumny
  • To, czego nie robię ', nie rozumiem, dlaczego te 2 zapytania dotyczące problemów działają, gdy są uruchamiane samodzielnie. ' dodam zrzuty ekranu do pytania.
  • @she_weeds Przepraszam, właśnie zdałem sobie sprawę, że bez .geometry nie było ' t podaje błąd, ale również nie ' t podaje właściwą wartość dla zliczeń, więc przecięcie nie było ' t działające. Problem z uruchomieniem długości linii w obszarze sieci nadal jednak powoduje ten sam problem.

Odpowiedź

Moim zdaniem nie potrzebujesz żadnego SRID , ponieważ nie pracujesz z ST_Length_Spheroid().

@she_weeds wskazuje, że rzeczywiście poprawne.

 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"  

Komentarze

  • Dzięki – więc musiał wiedzieć, że ' to geometria jednego z wejściowych zestawów danych, dla których potrzebujemy długości.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *