// Creation d'une grille import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.LinearRing; import com.vividsolutions.jump.feature.*; import com.vividsolutions.jump.workbench.ui.GUIUtil; import com.vividsolutions.jump.workbench.ui.MultiInputDialog; dialog = new MultiInputDialog(wc.workbench.frame, "ParamĨtres de la grille", true); dialog.addDoubleField("Pas de la grille en x", 10000.0, 12); dialog.addDoubleField("Pas de la grille en y", 10000.0, 12); GUIUtil.centreOnWindow(dialog); dialog.setVisible(true); if (dialog.wasOKPressed()) { dx = dialog.getDouble("Pas de la grille en x"); dy = dialog.getDouble("Pas de la grille en y"); } else return; env = wc.layerManager.getEnvelopeOfAllLayers(true); double xm = Math.floor(env.minX/dx)*dx; double ym = Math.floor(env.minY/dy)*dy; double xM = Math.ceil(env.maxX/dx)*dx; double yM = Math.ceil(env.maxY/dy)*dy; fs = new FeatureSchema(); fs.addAttribute("GEOMETRY", AttributeType.GEOMETRY); fs.addAttribute("NUM", AttributeType.STRING); fs.addAttribute("TYPE", AttributeType.STRING); ds = new FeatureDataset(fs); gf = new GeometryFactory(); for (double x = xm ; x <= xM-dx ; x+=dx) { for (double y = yM ; y >= ym+dy ; y-=dy) { poly = gf.createPolygon(gf.createLinearRing(new Coordinate[]{ new Coordinate(x, y), new Coordinate(x+dx, y), new Coordinate(x+dx, y-dy), new Coordinate(x, y-dy), new Coordinate(x, y), }), new LinearRing[0]); f = new BasicFeature(fs); f.setGeometry(poly); f.setAttribute("NUM", ""+x+"-"+y); ds.add(f); } } wc.layerManager.addLayer("Travail", "GRILLE", ds);