|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : janvier 2006 Messages : 166 ![]() |
Bonjour,
Je travailles sous PostGreSQL 9.0 et son extension spatiale PostGIS (sous windows XP) avec 4 go de Ram. Je souhaite exécuter la requête suivante mais visiblement, j'arrive à saturation de la mémoire vive donc échec de la requête. Code :
CREATE TABLE union_buff_eclat AS (SELECT st_geometryN(a.the_geom, generate_series(0, st_numgeometries(a.the_geom))) AS the_geom FROM "union_buff" a); Je ne sais pas comment faire pour optimiser cette requête, ou si tout simplement je dois repenser ma façon de traiter ce multipolygone conséquent. Si quelqu'un a des idées, je suis preneur. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 093 ![]() |
1) passer à la version 9 en 64 bits et mettre plus de RAM sur le serveur
2) tenter d'indexer, mais je suis pas sur que cela améliore les choses. Faites un essai 3) passer par des traitements intermédiaires par exemple par paquet de 100 lignes puis refaire un traitement sur ces lignes A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#3 |
|
Membre du Club
![]() Inscription : janvier 2006 Messages : 166 ![]() |
Merci pour la réponse mais:
Je me répond tout seul, le: Code :
generate_series(0, st_numgeometries(a.the_geom) Ma requête devient donc: Code :
CREATE TABLE union_buff_eclat AS (SELECT st_geometryN(a.the_geom, 1) AS the_geom FROM "union_buff" a); |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : janvier 2006 Messages : 166 ![]() |
En fait ma requête est totalement fausse, car elle ne génère qu'un seul polygone.
J'ai fait un test, mes polygones peuvent être traités par paquet de 500. Donc il faut que je puisse faire une boucle pour traiter les polygones 500 par 500 (43000 polygones au total). Or je n'ai pas encore été aussi loin dans mon apprentissage de PostGIS. Comment feriez-vous pour créer une boucle qui ajouterait mes polygones dans une couche. Merci |
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : janvier 2006 Messages : 232 ![]() |
bonjour , je créerai une fonction du type
Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre du Club
![]() Inscription : janvier 2006 Messages : 166 ![]() |
Merci pour cette réponse,
Mais je n'ai pas de gid seule la géométrie m'intéresse... J'ai tenté a tout hasard d'écrire une fonction (je ne connais pas du tout pl/pgsql) qui est fausse à coup sur. Code :
Si vous pouvez m'aiguiller.. |
||
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : janvier 2006 Messages : 166 ![]() |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com