banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

State Of The Map 2024

#1 Wed 06 July 2016 08:00

jdesert
Juste Inscrit !
Date d'inscription: 5 Jul 2016
Messages: 1

QGIS et appel python: problème fonction st_srid(real) n'existe pas

Bonjour à tous,

Je suis tout nouveau sur ce forum mais aussi à toutes les problématiques QGIS et SIG.
Je m'y suis lancé la dedans avec confiance puisqu'il y a quelques années j'étais dans la programmation et que tous les trucs assez techniques ne me font pas peur en général.
Sauf que là, ça dépasse tout ce que j'avais imaginé lol.

J'essaie de rentrer dans un environnement de travail complexe avec
1° QGIS qui tape dans une base PostgreSQL (+POSTGis). Ca me permet de dessiner des polygones qui délimitent des bouts de carte
2° Un script python écrit par un pote qui parcourt les polygones pour appliquer des styles conditionnels et générer des images

La partie 1 fonctionne à merveille (c'est vraiment fou toutes les possibilités quand même).
Par contre, quand j'essaie de lancer le script python en partie 2, j'ai des erreurs sad

Les bouts de script incriminés :

Code:

    couche_bati = mapnik.Layer('Batiments')
    couche_bati.srs = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
    couche_bati.datasource = PostGIS(
        host='lol',
        user='lol',
        password='lol',
        dbname='gisdb',
        geometry_field ='way_area',
        table='(select p.*,st_intersection(p.way,ST_Transform(Fiches.the_geom,900913)) as way2 from planet_osm_polygon as p join Fiches on (ST_Covers(ST_Transform(Fiches.the_geom,900913),p.way)) where Fiches.id=''+territoire+'') as bati'
        ,extent_from_subquery='true'
        ,extent='(select ST_Extent(select ST_Transform(Fiches.the_geom,900913)) as way2 from Fiches where id=''+territoire+'')as extent'
        )

Et l'erreur que me donne l'execution du script python

Code:

File "./generation.py", line 75, in 
    ,extent='(select ST_Extent(select ST_Transform(Fiches.the_geom,900913)) as way2 from Fiches where id=''+territoire+'')as extent'
  File "/usr/lib/python2.7/dist-packages/mapnik/__init__.py", line 462, in PostGIS
    return CreateDatasource(keywords)
RuntimeError: Postgis Plugin: ERREUR:  la fonction st_srid(real) n'existe pas
LINE 1: SELECT ST_SRID("way_area") AS srid FROM planet_osm_polygon W...
               ^
HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.

J'ai essayé pas mal de trucs pour que ça marche mais rien n'a fonctionné (ce qui ne m'étonne pas trop vu que je ne comprends pas grand chose à ce que je fais concrètement).

Si vous avez des idées ou des questions, n'hésitez pas.
Pour préciser, mon environnement :
- QGIS 2.8
- Postgresql 9.5.3

Merci d'avance pour la lecture, j'espère que c'est pas trop indigeste,
JD

Hors ligne

 

#2 Wed 06 July 2016 11:33

gvellut
Participant actif
Lieu: Annecy
Date d'inscription: 13 Apr 2006
Messages: 112
Site web

Re: QGIS et appel python: problème fonction st_srid(real) n'existe pas

D'après le message d'erreur, way_area n'est pas un champ contenant une géométrie (nécessaire pour ST_SRID) mais un real.

Hors ligne

 

Pied de page des forums

Powered by FluxBB