--SELECT gid, id, prec_plani, nom, code_insee, statut, canton, arrondisst, depart, region, popul, multican, geometrie FROM ign_bd_topo.commune; --SELECT ceiling (( ST_xmax ( ST_Extent (geometrie)) - ST_xmin ( ST_Extent (geometrie))) / 533 ) as width, ceiling (( ST_ymax ( ST_Extent (geometrie)) - ST_ymin ( ST_Extent (geometrie))) / 600 ) as height, ST_Extent (geometrie) as thee FROM ign_bd_topo.commune TRUNCATE export.grille_500m; --CREATE TABLE export.grille_500m(gid SERIAL PRIMARY KEY); --SELECT AddGeometryColumn('export', 'grille_500m', 'geometrie', 310024140, 'POLYGON', 2); INSERT INTO export.grille_500m(geometrie) SELECT DISTINCT slice FROM (SELECT ST_translate(ref.boxrep, hor.n*width, ver.n*height) AS slice FROM (SELECT ST_xmin(ST_Extent(geometrie)) AS xstart, ST_xmin(ST_Extent(geometrie)) AS ystart, ST_SetSRID(CAST('BOX(588681.1 6137110.7,589181.1 6137610.7)' AS box2d), 310024140) AS boxrep, ceiling((ST_xmax(ST_Extent(geometrie)) - ST_xmin(ST_Extent(geometrie)))/533) AS width, ceiling((ST_ymax(ST_Extent(geometrie)) - ST_ymin(ST_Extent(geometrie)))/600) AS height FROM ign_bd_topo.commune) AS ref, generate_series(1,533) AS hor(n), generate_series(1,600) AS ver(n)) foo INNER JOIN ign_bd_topo.commune ON st_intersects(foo.slice, commune.geometrie)-- WHERE commune.code_insee LIKE '34%' ; --CREATE INDEX geom_index_grille_500m ON export.grille_500m USING gist(geometrie); -- SELECT sum(area2d(geometrie))/(500*500) FROM ign_bd_topo.commune;