Pages: 1
- Sujet précédent - PostgreSQL : Lisser des données : sélection unique par polygone - Sujet suivant
#1 Fri 17 July 2009 13:48
- aantonin
- Juste Inscrit !
- Date d'inscription: 22 Jun 2009
- Messages: 7
PostgreSQL : Lisser des données : sélection unique par polygone
Bonjour,
J'aurai besoin d'un peu d'aide
J'ai deux BD :
- Occsol : constitué de plusieurs habitats constitués eux même de plusieurs polygones
- Relevés espèces patrimoniales floristiques : constitué de plusieurs points d'observation pour les différentes espèces
Et j'aimerai arriver à faire en sorte d'avoir la répartition des espèces par habitats mais en ne la comptant qu'une fois par polygone
Voici un exemple illustré :
> J'ai 5 relevés pour une espèce qui tombe dans 1 habitat avec lui-même 4 polygones. La répartition des relevés est la suivante :
polygone 1: 2 relevés
polygone 2: 1 relevés
polygone 3: 0 relevés
polygone 4: 2 relevés
Total des relevés pour l'espèce dans l'habitat: 5 relevés
Et j'aimerai faire en sorte que cela me donne :
polygone 1: 1 relevés
polygone 2: 1 relevés
polygone 3: 0 relevés
polygone 4: 1 relevés
Total des relevés pour l'espèce dans l'habitat: 3 relevés
Cela pour toutes les espèces afin de "lisser" mes données et supprimer certains biais dû aux méthodes d'échantillonnage
Voici la formule "allégée" (un seul milieu) que j'utilise pour avoir la répartissant de tous les relevés sans lissage :
SELECT znieffflore.cbn_taxon, count(Aeroports) as Aeroports
FROM(
SELECT znieffflore.cbn_taxon,
CASE WHEN int_06='Aeroports' THEN 1 END AS Aeroports
FROM znieffflore, ocsol
WHERE st_intersects(znieffflore.geometrie, ocsol.geometrie)) sous_reql, znieffflore, ocsol
where znieffflore.précision_ <> 'lieudit'
GROUP BY znieffflore.cbn_taxon
EDIT : sachant que j'ai un "gid" unique (=numéro) pour chaque polygone
Merci d'avance pour votre aide
Bien cordialement
Dernière modification par aantonin (Mon 20 July 2009 08:53)
Hors ligne
#2 Mon 20 July 2009 16:48
- aantonin
- Juste Inscrit !
- Date d'inscription: 22 Jun 2009
- Messages: 7
Re: PostgreSQL : Lisser des données : sélection unique par polygone
Bonjour,
Je viens de trouver la réponse à mon post précédent : il suffit en fait de compte combien de fois le polygone sur lequel est présent l'espèce apparait dans le milieu. Pour ce faire, il suffit d'utiliser un distinct
Je me permet donc de mettre ici ma requête final si quelqu'un en as l'utilité :
SELECT mnhn_taxon, count(distinct "311") as "311", count(distinct "312") as "312"
FROM(
SELECT znieffflore.mnhn_taxon,
CASE WHEN cde_06='311' THEN ocsol.gid END AS "311",
CASE WHEN cde_06='312' THEN ocsol.gid END AS "312"
FROM znieffflore, ocsol
WHERE st_intersects(znieffflore.geometrie, ocsol.geometrie) AND cde_06 IN ('311','312') and znieffflore.lib__zone_ = 'Points') sous_reql
GROUP BY mnhn_taxon
Encore merci
Bien cordialement
Dernière modification par aantonin (Mon 20 July 2009 17:13)
Hors ligne
Pages: 1
- Sujet précédent - PostgreSQL : Lisser des données : sélection unique par polygone - Sujet suivant