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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Thu 11 May 2017 16:42

MonsieurJ
Participant occasionnel
Lieu: Montpellier
Date d'inscription: 8 Dec 2016
Messages: 28

Raster2pgsql et questions concernant le traitement de 17k rasters

Bonjour,
Je viens vers vous aujourd'hui avec un problème et des questions pour la suite (après la résolutions de mon problème). Voici ma commande :

Code:

raster2pgsql -d -I -C -M -s 2154 /chemin/vers/mon/raster.tif schema.table | psql Mabase

J'ai isolé le problème, ça vient de la partie raster2pgsql, qui même lancée sans le " |psql " avec " > out.sql " à la place me renvoi :

Code:

ERROR: Unable to read raster file: /chemin/vers/mon/raster.tif

Je ne comprend pas où se situe le problème, j'ai essayé avec d'autre raster et j'ai toujours ce problème, pas moyen d'avoir un fichier SQL ou de l'importer dans ma base.

Pour la suite disons que c'est plus des avis d'experts SIG / Base de Données Spatial que je cherche :
Cette commande raster2pgsql s'intègre dans une boucle afin d'importer 17.000 rasters dans ma base, mon but étant d'appliquer leurs valeurs à une maille de points (correspondant aux centroïds des pixels des rasters), et donc de générer une table avec autant d'attribut que j'ai de raster au départ. J'ai un peu peur qu'avec un telle nombre d'attributs, mais aussi de tuples (j'ai oublié de précisé que mes rasters couvrent une zone relativement grande) j'atteigne les limites de Postgresql.

Pour quelques précisions supplémentaires :
Je suis sous Ubuntu 16
Base postgresql/postgis 9.5
les raster sont générés avec GRASS 7.2

Hors ligne

 

#2 Thu 11 May 2017 18:56

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

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Bonsoir,

Avez-vous regardé les droits des fichiers rasters et répertoires:
le message d'erreur est clair: raster2pgsql ne voit pas le fichier raster en question.
Est-ce que GDAL arrive a lire ces rasters ?

Je ne suis pas sur de comprendre ce que vous voulez produire en sortie. Les 17k rasters couvrent la meme zone ou ils représentent une mosaique et vous voulez les 17000 valeurs sous chaque pixel ?
Si c'est juste calculer des valeurs en chaque pixel des raster, vous irez plus vite avec GDAL directement (ou GRASS aussi, mais je connais moins).

Un petit exemple serait le bienvenu

Nicolas

Hors ligne

 

#3 Fri 12 May 2017 08:29

MonsieurJ
Participant occasionnel
Lieu: Montpellier
Date d'inscription: 8 Dec 2016
Messages: 28

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Bonjour,

Oui les droits des fichiers sont bien ouvert et oui GDAL arrive à lire ces rasters.
Oui les 17k rasters couvrent la même zone, il représente une même information dans le temps que je veux garder en détails, les 17.000 valeurs de chaque pixels.

Hors ligne

 

#4 Fri 12 May 2017 11:38

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

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Bonjour,

Perso, je resterai avec un format raster pour cela, qui gère les séries temporelles (ou Lidar/pointcloud), avec un array de 17000 valeurs par pixels
(si vous faites ca sous pg, créez une colonne de type array[int] contenant les 17000 valeurs par pixel plutot que 17000 colonnes ! ca sera inutilisable sinon.)

Je vois que GRASS a un module pour les séries temporelles: https://grasswiki.osgeo.org/wiki/Tempor … processing

Quelles sont l'extension et la résolution des rasters ? (combien de pixels au final ?)

Nicolas

Hors ligne

 

#5 Fri 12 May 2017 11:50

MonsieurJ
Participant occasionnel
Lieu: Montpellier
Date d'inscription: 8 Dec 2016
Messages: 28

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Bonjour,

Je dois absolument passez par pg car cette données doit être utilisé par une application web en développement (voilà pourquoi je dois rester dans le flou au niveau des détails). Je n'avais pas pensé à créer une colonne array, merci pour la piste, par contre se sera du float (oui je ne fais pas dans le simple).
Je m'étais penché sur le modules de séries temporelles de GRASS qui m'a semblé une évidence au départ mais malheureusement cela ne s'adresse qu'à de l'analyse au sein de GRASS et pas vraiment à une exploitation externe.
Pour l'extension, rien de très fantaisiste, je travaille en GeoTiff, pour la résolution c'est du 0,50 x 0,50 mètre, sur une petite surface pour la phase de développement (18.419.100 pixels) mais qui va être 25 fois plus grande en production.

Merci des conseils en tout cas,

Monsieur_J

Hors ligne

 

#6 Fri 12 May 2017 12:01

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

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Merci pour ces précisions.

Sans demander trop de détail sur l'appli, le fait que ce soit une appli web ne veut pas dire que seule des données venant de pg peuvent etre traitées wink

On peut imaginer un service web qui renvoie les valeurs correspondant à un pixel ou un ensemble de pixels envoyés par le client apres avoir lancé une commande gdal ou grass pour avoir la synthese des valeurs aux points demandés.

Sur une base PG, la volumétrie finale serait de 460 477 500 de points dans la table, ce qui n'est pas choquant: un serveur bien dimensionné sait très bien gérer ce volume. Une colonne de type array[float] de 17000 valeurs serait aussi gérable il me semble (et indexable)
D'autres structures plus complexes peuvent etre envisagées, comme du jsonb qui permet de gérer plusieurs attributs pour un meme point. (compressé et indexable aussi).

Une autre solution que je vois est de passer par pointCloud (https://github.com/pgpointcloud/pointcloud) et son extension spatiale: ca m'a l'air tout indiqué pour ce genre de données. Vous pourrez faire des requêtes spatiales comme avec des données géo classiques.
L'avantage que j'y vois est la scalabilité: cette extension est faite pour gérer des milliards ou centaines de milliards de points portant chacun potentiellement des centaines d'information.

Nicolas

Hors ligne

 

#7 Fri 12 May 2017 12:04

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

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Sinon, vous utilisez quelle version de postgis et postgis_raster ? (select postgis_full_version(); )

vous auriez un exemple de 3/4 raster (éventuellement sur une toute petite zone) ?

Nico

Hors ligne

 

#8 Fri 12 May 2017 13:26

MonsieurJ
Participant occasionnel
Lieu: Montpellier
Date d'inscription: 8 Dec 2016
Messages: 28

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Disons que mon objectif c'est d'avoir pour une zone données une moyenne pour chaque attribut (un instant t), un tableau simple au finale, pour l'affichage d'une courbe sur notre interface web. L'utilisateur spécifie la zone, les statistiques sur celle-ci se font au sein du serveur, et lui retourne les résultat sous forme de courbe. J'ai peur qu'en utilisant GDAL ou GRASS, et du coup en traitant du raster, la requête prenne trop de temps et fasse fuir nos utilisateurs. C'est pour ça que je vois plutôt cette information en vecteur.
Du coup on s'est entendu avec le dev web de ma boîte pour que je lui créé une fonction SQL avec comme paramètre les informations permettant de définir la zone à résumé et ressort un JSON que lui récupère pour générer sa courbe.

Je vais essayer de créer le maillage de point avec l'attribut array au sein de GRASS et importé cette donnée au sein de ma base, vu que GRASS ne peux exporter vers une base de données que du vecteur (si je ne me trompe pas)

Pour ce qui est des versions (merci pour la requête wink ) voilà  le retour :
POSTGIS="2.2.1 r14555"
GEOS="3.5.1-CAPI-1.9.1 r4246"
PROJ="Rel. 4.9.2, 08 September 2015"
GDAL="GDAL 1.11.3, released 2015/09/16"
LIBXML="2.9.3"
LIBJSON="0.11.99" RASTER

Hors ligne

 

#9 Mon 15 May 2017 15:04

MonsieurJ
Participant occasionnel
Lieu: Montpellier
Date d'inscription: 8 Dec 2016
Messages: 28

Re: Raster2pgsql et questions concernant le traitement de 17k rasters

Bonjour,
Pour venir faire un point sur la solution que j'ai adopté (ça en inspirera peut être certains). Finalement, dans mon script python pour GRASS j'ai intégrer une commande vectorisation en point de mes rasters, ainsi que leur sorti vers ma base PostgreSQL/postGis. je suis en train de faire une fonction Pl/pgsql pour rassembler tout cela dans un attribut de type Array.

Monsieur_J

Hors ligne

 

Pied de page des forums

Powered by FluxBB