Suite

Comment interpoler les données manquantes des voisins dans PostGIS ?


J'ai un jeu de données avec des données ponctuelles dans un pays donné. Disons que mon jeu de données ressemble un peu à ceci :

tree_id | espèces | âge | geom ------------------------------ 0 | Frêne | nul|… 1 | Hêtre | 70 | … 2 | Frêne | 10 |… 3 | Hêtre | 70 | … 4 | Hêtre | nul| … 5 | Hêtre | 60 | … |… |… | …

Comme vous pouvez le voir, l'ensemble de données contient des données manquantes. Par exemple,tree_id 0n'a pas d'âge. Par conséquent, je voudrais interpoler ces valeurs manquantes dans un rayon de 100 mètres.

Je cherche la moyenne de l'espèce. Le résultat doit également inclure le nombre d'arbres échantillons utilisés. Un tableau de résultats pourrait alors ressembler à ceci :

tree_id | age_moy | échantillons --------------------------- 0 | 11.8 | 113 3 | 12.2 | 97 5 | 50,7 | 272… |… |…

Pourriez-vous me lancer avec un code de requête PostgreSQL, s'il vous plaît ?


Ok alors recommençons c'est la réponse pour faire ce que tu veux, mais cela ne sera utile que dans un contexte non significatif. Par exemple pour rendre une scène 3D où certaines données sont manquantes et que vous souhaitez dessiner un "arbre moyen local" pour chaque espèce.

Je suppose que votre table d'origine s'appelle "mytrees".

Créez deux alias a & b à partir de votre table mytrees, joignez b à une table si dans votre rayon de recherche, puis résumez les données pour chaque point à l'aide d'agrégats.

SELECT a.tree_id, a.species, avg(b.age) as age_avg, count(*) as sample, a.geom FROM mytrees a LEFT JOIN mytrees b ON ST_DWithin(a.geom,b.geom,100) AND a .species = b.species GROUP BY a.tree_id, a.species, a.geom ORDER BY a.tree_id

Encore un dernier avertissement, cela fonctionnera mais NE PAS L'UTILISER pour une analyse significative des données. Uniquement pour le rendu ou comme preuve de concept.

Edité : en utilisant ST_DWithin comme suggéré par John Barça, beaucoup plus facile


Voir la vidéo: 4- Gestion des réseaux deau avec QGIS et PostGIS - Régis Haubourg Oslandia (Octobre 2021).