It seems strange to make a new module for one class.
Could you wrap this up as a process that produces a FeatureCollection of Hex in 
response to some parameters?

Jody

On 24/05/2010, at 4:27 PM, Michael Bedward wrote:

> Hi folks,
> 
> In response to a question on the user list I unearthed some old code
> for creating hexagonal grids (tesselation of hexagonal polygons) and
> reworked it for GeoTools 2.7.
> 
> As I'm sure you know, hexagonal lattices have that advantage that each
> cell's immediate neighbours are equidistant. I've used them in the
> past for ecological simulations.
> 
> The code can create a lattice as a SimpleFeatureCollection where you
> control hexagon size and orientation. Here's an example...
> http://imagebin.org/98114
> 
> The code for that is below.
> 
> Would anyone have any objections to me placing this code in a new
> unsupported module ?
> 
> cheers
> Michael
> 
> public class HexagonalLattice {
> 
>    public static void main(String[] args) {
>        SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
>        typeBuilder.setName("hextype");
>        typeBuilder.add("hexagon", Polygon.class,
> (CoordinateReferenceSystem)null);
>        typeBuilder.add("color", Color.class);
>        final SimpleFeatureType TYPE = typeBuilder.buildFeatureType();
> 
>        final Envelope bounds = new Envelope(0, 100, 0, 100);
> 
>        HexagonAttributeSetter attributeSetter = new
> HexagonAttributeSetter(TYPE) {
>            public void setAttributes(Hexagon h, Map<String, Object>
> attributes) {
>                int g = (int) (255 * h.getCenter().x / bounds.getWidth());
>                int b = (int) (255 * h.getCenter().y / bounds.getHeight());
>                attributes.put("color", new Color(0, g, b));
>            }
>        };
> 
>        final double sideLen = 5.0;
> 
>        SimpleFeatureCollection lattice =
> Hexagons.createLattice(bounds, sideLen, Orientation.FLAT,
> attributeSetter);
> 
>        DefaultMapContext map = new DefaultMapContext();
>        map.addLayer(lattice, createStyle("color"));
>        JMapFrame.showMap(map);
>    }
> 
>    private static Style createStyle(String propName) {
>        FilterFactory2 ff2 = CommonFactoryFinder.getFilterFactory2(null);
>        StyleFactory sf = CommonFactoryFinder.getStyleFactory(null);
> 
>        Stroke stroke = sf.createStroke(ff2.literal(Color.BLACK),
> ff2.literal(1.0));
>        Fill fill = sf.createFill(ff2.property(propName));
>        PolygonSymbolizer sym = sf.createPolygonSymbolizer(stroke, fill, null);
>        return SLD.wrapSymbolizers(sym);
>    }
> }
> 
> ------------------------------------------------------------------------------
> 
> _______________________________________________
> Geotools-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-devel


------------------------------------------------------------------------------

_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to