Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
database:requetes-sql-utiles [2021/10/18 09:10] – [Différents calcul du rayon moyen d'un polygone] jpmilcent | database:requetes-sql-utiles [2024/05/25 07:44] (Version actuelle) – [Déterminer les groupes d'identifiant contigu] jpmilcent | ||
---|---|---|---|
Ligne 40: | Ligne 40: | ||
</ | </ | ||
- | ===== Calculer le rayon du cercle comprenant un polygon | + | ===== Calculer le rayon du cercle comprenant un polygone |
{{ : | {{ : | ||
<code sql> | <code sql> | ||
Ligne 65: | Ligne 65: | ||
- | ===== Différents | + | ===== Différents |
- | {{ : | + | {{ : |
Il est possible d' | Il est possible d' | ||
- | - la fonction '' | + | - la fonction '' |
- | - le calcul du rayon d'un cercle à partir de son aire : <code sql> | + | - la distance moyenne du centroïde du polygone a chaque point constituant son périmètre (trait vertical) : <code sql> |
- | La première méthode retourne un rayon plus grand que cela seconde méthode... | + | - le calcul du rayon d'un cercle à partir de son aire (trait horizontal) |
+ | |||
+ | La première méthode retourne un rayon plus grand que la seconde méthode, en moyenne la plus petite valeur obtenue étant avec le calcul du rayon d'un cercle à partir de son aire... | ||
+ | Nous avons retenu le calcul n°2. | ||
<code sql> | <code sql> | ||
Ligne 76: | Ligne 79: | ||
la.area_name, | la.area_name, | ||
la.area_code, | la.area_code, | ||
- | round(AVG(ST_Distance(st_centroid(la.geom), | + | round(AVG(ST_Distance(st_centroid(la.geom), |
round(|/ | round(|/ | ||
round(radius(ST_MinimumBoundingRadius(la.geom))) AS " | round(radius(ST_MinimumBoundingRadius(la.geom))) AS " | ||
Ligne 99: | Ligne 102: | ||
ST_MakePoint( | ST_MakePoint( | ||
ST_X(center(ST_MinimumBoundingRadius(la.geom))), | ST_X(center(ST_MinimumBoundingRadius(la.geom))), | ||
- | ST_Y(center(ST_MinimumBoundingRadius(la.geom))) + round(AVG(ST_Distance(st_centroid(la.geom), | + | ST_Y(center(ST_MinimumBoundingRadius(la.geom))) + round(AVG(ST_Distance(st_centroid(la.geom), |
), | ), | ||
2154 | 2154 | ||
Ligne 108: | Ligne 111: | ||
FROM ref_geo.l_areas | FROM ref_geo.l_areas | ||
WHERE id_type = ref_geo.get_id_area_type(' | WHERE id_type = ref_geo.get_id_area_type(' | ||
- | ) AS com_points | + | ) AS perimeters |
- | ON (la.id_area = com_points.id_area) | + | ON (la.id_area = perimeters.id_area) |
WHERE la.id_type = ref_geo.get_id_area_type(' | WHERE la.id_type = ref_geo.get_id_area_type(' | ||
GROUP BY la.id_area, la.geom, la.area_name, | GROUP BY la.id_area, la.geom, la.area_name, | ||
Ligne 178: | Ligne 181: | ||
</ | </ | ||
+ | ===== Déterminer les groupes d' | ||
+ | Requête SQL permettant de déterminer les groupes de suites d' | ||
+ | <code sql> | ||
+ | SELECT | ||
+ | grp, | ||
+ | " | ||
+ | " | ||
+ | COUNT(id_data) AS downloaded, | ||
+ | td.nbr AS to_download | ||
+ | FROM ( | ||
+ | SELECT | ||
+ | grp, | ||
+ | MIN(id) AS " | ||
+ | MAX(id) AS " | ||
+ | FROM ( | ||
+ | SELECT | ||
+ | id, | ||
+ | SUM(rst) OVER (ORDER BY id) AS grp | ||
+ | FROM ( | ||
+ | SELECT | ||
+ | id_synthese AS id, | ||
+ | CASE WHEN COALESCE(LAG(id_synthese + 10000) OVER (ORDER BY id_synthese), | ||
+ | FROM gn2pg_flavia.id_synthese_pole_invertebres AS ispi | ||
+ | LEFT JOIN gn2pg_flavia.data_json AS dj | ||
+ | ON ispi.id_synthese = dj.id_data | ||
+ | WHERE dj.id_data IS NULL | ||
+ | ORDER BY ispi.id_synthese ASC | ||
+ | ) AS t | ||
+ | ) AS t | ||
+ | GROUP BY grp | ||
+ | ORDER BY 1 | ||
+ | ) AS d | ||
+ | LEFT JOIN gn2pg_flavia.data_json AS dj | ||
+ | ON dj.id_data > d.min AND dj.id_data < d.max, | ||
+ | LATERAL ( | ||
+ | SELECT COUNT(id_synthese) AS nbr | ||
+ | FROM gn2pg_flavia.id_synthese_pole_invertebres | ||
+ | WHERE id_synthese > d.min AND id_synthese < d.max | ||
+ | ) AS td | ||
+ | WHERE td.nbr > 0 | ||
+ | GROUP BY d.grp, d." | ||
+ | ORDER BY d.grp; | ||
+ | </ | ||
+ | Résultats : | ||
+ | < | ||
+ | |grp|min | ||
+ | |---|----------|----------|----------|-----------| | ||
+ | |1 |5 839 897 | ||
+ | |2 |9 404 094 | ||
+ | |3 |15 444 377 |15 455 826 |2 454 |2 773 | | ||
+ | |4 |15 609 091 |15 609 795 |703 | ||
+ | |5 |16 335 991 |16 336 391 |1 | ||
+ | |6 |16 640 640 |16 641 280 |290 | ||
+ | </ |