Wenn ich eine einfache Abfrage versuche
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"
Ich erhalte diesen Fehler
Query preparation error on PRAGMA table_info(_tview): ambiguous column name: geometry
Wenn ich es ohne die st_length
Es funktioniert, um eine einfache Gruppe mit Zählungen zu erstellen.
Auch das Folgende funktioniert einwandfrei
Select sum(st_length(geometry)), count(*) From W_Mains_DSC_ExclAbandoned
Beispiele für die Teilmenge der Abfrage, die unabhängig voneinander funktionieren, jedoch nicht, wenn sie aneinandergereiht sind
Nur die Gesamtlänge
Nur die Gruppe
Wenn ich einfach die st_length
Ich habe es mit .geometry in ST_Intersects
und dies gibt korrekte Zählungen an, gibt aber das Pragma-Geom an Versuchen Sie einen Fehler, wenn die Summe hinzugefügt wird.
Kommentare
- ST_Length erfordert Projektionsinformationen (SRID), siehe gis.stackexchange.com/questions/35462/…
- Ihre erste Abfrage verweist auf zwei Tabellen mit der Spalte
geometry
. Sie müssen angeben, für welche Geometriespalte SieST_length()
ausführen möchten. Genau wie Sie die Tabelle für die SpalteNetwork
- angegeben haben, verstehe ich ' nicht, warum diese 2 Abfragen mit den Problemen funktionieren, wenn sie von selbst ausgeführt werden. Ich ' füge der Frage Screenshots hinzu.
- @she_weeds Entschuldigung, ich habe gerade festgestellt, dass es ohne die .geometry nicht ' gab keinen Fehler aus, aber ' gab keinen richtigen Wert für die Zählungen an, sodass der Schnittpunkt ' nicht funktionierte. Das Problem beim Ausführen der Länge der Leitungen im Netzwerkbereich führt jedoch immer noch zum gleichen Problem.
Antwort
Meiner Meinung nach benötigen Sie keine SRID , da Sie nicht mit ST_Length_Spheroid()
arbeiten.
Auf was @she_weeds zeigt, ist in der Tat richtig.
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"
Kommentare
- Danke – also musste es wissen, dass ' die Geometrie eines der Eingabedatensätze ist, für die wir die Länge benötigen.