Message posté par : Lucie D.
----------------------------------------
Bon, j'ai le code, mais j'ai un léger décalage entre mes carreaux dû au fait que
generate_series fonctionne avec des entiers...
Une idée de fonction qui me permettrait de générer des séries avec des coordonnées non
entières?
Merci!! =^_^=
-----------------
Code :
create index l_grille_origine_100m_geom_gist on
a_detc_smabb_strategie_fonciere.l_grille_origine_100m using gist(geom);
drop table if exists a_detc_smabb_strategie_fonciere.l_grille_origine_100m_emprise;
create table a_detc_smabb_strategie_fonciere.l_grille_origine_100m_emprise
as select ST_Multi(ST_Envelope(ST_Union(geom)))::geometry(MultiPolygon,2154) as geom
from a_detc_smabb_strategie_fonciere.l_grille_origine_100m;
drop table if exists a_detc_smabb_strategie_fonciere.l_perimetre_etude_emprise;
create table a_detc_smabb_strategie_fonciere.l_perimetre_etude_emprise
as select ST_Multi(ST_Envelope(ST_Union(geom)))::geometry(MultiPolygon,2154) as geom
from a_detc_smabb_strategie_fonciere.l_perimetre_etude;
drop table if exists a_detc_smabb_strategie_fonciere.l_grille_origine_100m_extend;
create table a_detc_smabb_strategie_fonciere.l_grille_origine_100m_extend as
with coord as
(
select ST_Xmin(b.geom) + (ceil((ST_Xmin(a.geom)-ST_Xmin(b.geom))::numeric/100)*100) as
xmin,
ST_Xmax(b.geom) + (ceil((ST_Xmax(a.geom)-ST_Xmax(b.geom))::numeric/100)*100) as xmax,
ST_Ymin(b.geom) + (ceil((ST_Ymin(a.geom)-ST_Ymin(b.geom))::numeric/100)*100) as ymin,
ST_Ymax(b.geom) + (ceil((ST_Ymax(a.geom)-ST_Ymax(b.geom))::numeric/100)*100) as ymax
from a_detc_smabb_strategie_fonciere.l_perimetre_etude_emprise as a,
a_detc_smabb_strategie_fonciere.l_grille_origine_100m_emprise as b
),
diagonale_simple as
(
select generate_series(xmin::integer,xmax::integer-1,100) AS xmin_box,
generate_series(ymin::integer,ymax::integer-1,100) AS ymin_box
from coord
),
grille as
(
SELECT DISTINCT t1.xmin_box, t2.ymin_box
FROM diagonale_simple as t1 CROSS JOIN diagonale_simple as t2
)
select xmin_box||'_'||ymin_box::character varying(80) AS id,
ST_Multi(ST_SetSRID(ST_MakeBox2D(ST_Point(xmin_box,ymin_box),ST_Point(xmin_box +
100,ymin_box + 100)),2154))::geometry(MultiPolygon,2154) AS geom
FROM grille
WHERE xmin_box IS NOT NULL AND ymin_box IS NOT NULL;
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=334188#p334188
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net