Wanneer ik een eenvoudige query probeer

 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"  

Ik krijg deze foutmelding

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

Wanneer ik het probeer zonder de st_length het werkt om een eenvoudige groep met tellingen te maken.

Ook werkt alleen het volgende prima

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

Voorbeelden van de subset van de query die onafhankelijk werkt, maar niet als ze aan elkaar worden geregen

Alleen de totale lengte

example1

Alleen de groep

example2

Als ik gewoon de st_length toevoeg

example3

Ik heb geprobeerd met .geometry in de ST_Intersects en dit geeft de juiste tellingen, maar geeft de pragma-geome probeer de fout wanneer de som wordt opgeteld

example4

Opmerkingen

  • ST_Length vereist projectie-informatie (SRID) zie gis.stackexchange.com/questions/35462/…
  • Uw eerste zoekopdracht verwijst naar twee tabellen met de kolom geometry. U moet specificeren op welke geometriekolom u ST_length() wilt uitvoeren. Net zoals je de tabel hebt opgegeven voor de Network kolom
  • Wat ik niet ' begrijp, is waarom deze 2 Querys met de problemen werken als ze op zichzelf worden uitgevoerd. Ik ' zal schermgrepen aan de vraag toevoegen.
  • @she_weeds sorry, ik realiseerde me net dat het zonder de .geometry niet ' t gaf een fout maar was ook niet ' t gaf een juiste waarde voor de tellingen, dus het snijpunt werkte niet '. Het probleem met het uitvoeren van de lengte van de lijnen in het netwerkgebied geeft echter nog steeds hetzelfde probleem.

Antwoord

Naar mijn mening heb je geen SRID nodig omdat je niet werkt met ST_Length_Spheroid().

Waar @she_weeds naar verwijst is inderdaad correct.

 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"  

Reacties

  • Bedankt – dus het moest weten dat het ' de geometrie is van een van de invoergegevenssets waarvoor we de lengte nodig hebben.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *