Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Mon 05 January 2015 14:34

Vincent.lametro
Juste Inscrit !
Date d'inscription: 8 Dec 2014
Messages: 9

[PostGis] La fonction ST_makevalid (geometry) n'existe pas

Bonjour à tous,

Je tente d'intégrer le cadastre dans une base de donnée PostGis via Qqis et le module cadastre.

Je suis en :
- QGIS 2.4.0 Chugiak
- PostGres 8.4
- PostGis 1.4 edit 1.0 en fait ...

Et j'ai la série de messages d'erreurs suivante :

Code:

ERREUR:  la fonction st_makevalid(geometry) n'existe pas
LINE 6: ...000'), 'YYYYMMDD'), ST_Multi(ST_CollectionExtract(ST_MakeVal...
                                                             ^
HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.

Code:

-- geo_commune: utilisation de max et non distinct on pour compatibilite sqlite
INSERT INTO "public".geo_commune
( geo_commune, annee, object_rid, idu, tex2, creat_date, update_dat, geom, lot)
SELECT '2014'||SUBSTRING(idu,1,3), '2014', object_rid, idu, tex2, to_date(to_char(creat_date,'00000000'), 'YYYYMMDD'), to_date(to_char(update_date,'00000000'), 'YYYYMMDD'), ST_Multi(ST_CollectionExtract(ST_MakeValid(geom),3)), '059'
FROM "public".commune_id
JOIN (SELECT idu as t_idu, MAX(update_date) AS t_update_date, MAX(creat_date) AS t_creat_date FROM "public".commune_id GROUP BY idu, tex2) t2
ON idu = t2.t_idu AND update_date = t2.t_update_date AND creat_date = t2.t_creat_date
GROUP BY tex2, idu, update_date, creat_date, geom, object_rid
ORDER BY tex2, idu, update_date DESC, creat_date DESC

Code:

Traceback (most recent call last):
  File "C:/Users/christophe_v/.qgis2/python/plugins\cadastre\cadastre_dialogs.py", line 1059, in processImport
    qi.endImport()
  File "C:/Users/christophe_v/.qgis2/python/plugins\cadastre\cadastre_import.py", line 787, in endImport
    shutil.rmtree(rep)
  File "C:\PROGRA~1\QGISCH~1\apps\Python27\lib\shutil.py", line 252, in rmtree
    onerror(os.remove, fullname, sys.exc_info())
  File "C:\PROGRA~1\QGISCH~1\apps\Python27\lib\shutil.py", line 250, in rmtree
    os.remove(fullname)
WindowsError: [Error 5] Acc�s refus: u'W:\\SIT\\referentiels\\Cadastre\\2014\\BDDATA_VERIF\\temp\\cad_edigeo_source_mbhpto\\edigeoGK059000AA01.tar.bz2'


Version de Python :
2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)]


Version de QGIS :
2.4.0-Chugiak Chugiak, 8fdd08a

Chemin vers Python : ['C:/PROGRA~1/QGISCH~1/apps/qgis/./python/plugins\\processing', 'C:/PROGRA~1/QGISCH~1/apps/qgis/./python', u'C:/Users/christophe_v/.qgis2/python', u'C:/Users/christophe_v/.qgis2/python/plugins', 'C:/PROGRA~1/QGISCH~1/apps/qgis/./python/plugins', 'C:\\PROGRA~1\\QGISCH~1\\bin\\python27.zip', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\DLLs', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\plat-win', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\lib-tk', 'C:\\PROGRA~1\\QGISCH~1\\bin', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\PIL', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\jinja2-2.7.2-py2.7.egg', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\markupsafe-0.23-py2.7-win-amd64.egg', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\pytz-2012j-py2.7.egg', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\win32', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\Pythonwin', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\Shapely-1.2.18-py2.7-win-amd64.egg', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\six-1.3.0-py2.7.egg', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\xlrd-0.9.2-py2.7.egg', 'C:\\PROGRA~1\\QGISCH~1\\apps\\Python27\\lib\\site-packages\\xlwt-0.7.5-py2.7.egg', 'C:\\Users\\christophe_v\\.qgis2\\python\\plugins\\cadastre/forms', 'C:\\Users\\christophe_v\\.qgis2\\python\\plugins\\mmqgis/forms', 'C:\\PROGRA~1\\QGISCH~1\\apps\\qgis\\python\\plugins\\fTools\\tools']

On dirait qu'il appel une fonction qui  n'existe pas dans ma version de PostGis. La fonction st_makevalid n'apparait que dans la version 2.0. Et on dirait aussi qu'il bug sur le format de la date.

Mais impossible de trouver comment résoudre tout cela, d'où ma demande de coups de pouce ;-)

Merci beaucoup !

PS : je précise l'import en spatialite fonctionne parfaitement.

Dernière modification par Vincent.lametro (Mon 05 January 2015 15:15)

Hors ligne

 

#2 Mon 05 January 2015 15:00

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1220
Site web

Re: [PostGis] La fonction ST_makevalid (geometry) n'existe pas

Bonjour,

en effet, la fonction recherchée n'existe pas dans votre ancienne version de PostGIS. Si vous ne pouvez pas mettre votre serveur de base de données à niveau, vous pouvez créer dasn votre base de donnée une fonction du même nom.
Par exemple la fonction proposée ci-dessous, trés utilisée avant l'existence de st_makevalid :

http://www.sogis1.so.ch/sogis/dl/postgi … ometry.sql

Pensez bien à la renommer st_makevalid.

Vous n'êtes pas à l’abri que d'autres fonctions utilisées par le plugin n'existe pas dans votre version de PostGis ou de PostgreSQL.

Dernière modification par MathieuB (Mon 05 January 2015 15:01)


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#3 Mon 05 January 2015 15:07

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: [PostGis] La fonction ST_makevalid (geometry) n'existe pas

Bonjour,

PostGIS 1.4 : Je crois que j'étais pas né à l'époque où elle est sortie smile

Plus sérieusement, pourquoi ne pas penser à la mettre à jour au moins à la version 1.5 ? Voire à la 2.x ? Idem pour PostgreSQL, passer à une version plus récente vous donnera une amélioration des performances **très** sensible.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#4 Mon 05 January 2015 15:14

Vincent.lametro
Juste Inscrit !
Date d'inscription: 8 Dec 2014
Messages: 9

Re: [PostGis] La fonction ST_makevalid (geometry) n'existe pas

Merci mathieu, je vai regarder ça voir si cela fonctionne !

Yves : Ne rigolez pas j'ai fait une erreur de frappe on est 1.0 pour Postgis ... nous sommes entrain de regarder pour migrer en 1.5 ;-)

Merci de votre aide.

Hors ligne

 

#5 Mon 05 January 2015 16:11

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: [PostGis] La fonction ST_makevalid (geometry) n'existe pas

Bonjour,

Je rejoins Yves pour vous inviter à installer une version récente: ca se fait facilement, ainsi que la migration d'éventuelles anciennes données.

Vous perdrez moins de temps, il me semble, que de faire marcher une version aussi ancienne avec des outils SIG récents.

Nicolas

Hors ligne

 

#6 Mon 05 January 2015 18:05

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1220
Site web

Re: [PostGis] La fonction ST_makevalid (geometry) n'existe pas

+1


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

Pied de page des forums

Powered by FluxBB