Lorsque jessaie une requête simple

 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"  

Jobtiens cette erreur

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

Quand je lessaye sans st_length cela fonctionne pour créer un groupe simple avec des nombres.

Aussi juste ce qui suit fonctionne très bien

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

Exemples de sous-ensemble de la requête qui fonctionnent indépendamment mais pas lorsquils sont liés ensemble

Juste la longueur totale

exemple1

Juste le groupe

exemple2

Quand jajoute simplement la longueur_st

exemple3

Jai essayé avec .geometry dans le ST_Intersects et cela donne des comptes corrects mais donne le pragma geome erreur dessai lorsque la somme est ajoutée

exemple4

Commentaires

  • ST_Length nécessite des informations de projection (SRID) voir gis.stackexchange.com/questions/35462/…
  • Votre première requête fait référence à deux tables avec la colonne geometry. Vous devez spécifier la colonne de géométrie sur laquelle vous souhaitez effectuer ST_length(). Tout comme vous avez spécifié le tableau de la colonne Network
  • Ce que je ne ' que je ne comprends pas, cest pourquoi ces 2 les requêtes avec les problèmes fonctionnent lorsquelles sont exécutées par elles-mêmes. ' Je vais ajouter des captures décran à la question.
  • @she_weeds désolé Je viens de réaliser que sans le .geometry ce nétait pas ' t donnant une erreur mais ' t donnant une valeur correcte pour les décomptes donc lintersection ne fonctionnait pas '. Le problème lié à lexécution de la longueur des lignes dans la zone réseau pose toujours le même problème.

Réponse

À mon avis, vous navez pas besoin de SRID car vous ne travaillez pas avec ST_Length_Spheroid().

Ce que @she_weeds pointe est en effet 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"  

Commentaires

  • Merci – il fallait donc savoir que ' est la géométrie de lun des jeux de données dentrée dont nous avons besoin de la longueur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *