Skip to content

Instantly share code, notes, and snippets.

@dwins
Created October 7, 2010 01:54
Show Gist options
  • Save dwins/614421 to your computer and use it in GitHub Desktop.
Save dwins/614421 to your computer and use it in GitHub Desktop.
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
<NamedLayer>
<UserStyle>
<FeatureTypeStyle>
<Rule>
<ogc:Filter>
<ogc:PropertyIsNull>
<ogc:PropertyName>bridge</ogc:PropertyName>
</ogc:PropertyIsNull>
</ogc:Filter>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#FF0000</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<Rule>
<ogc:Filter>
<ogc:Not>
<ogc:PropertyIsNull>
<ogc:PropertyName>bridge</ogc:PropertyName>
</ogc:PropertyIsNull>
</ogc:Not>
</ogc:Filter>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#0000FF</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.Serializable;
import java.net.URL;
import java.util.HashMap;
import javax.imageio.ImageIO;
import org.geotools.data.DataStore;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.map.DefaultMapContext;
import org.geotools.renderer.lite.StreamingRenderer;
import org.geotools.styling.SLDParser;
import org.geotools.styling.Style;
import org.neo4j.gis.spatial.geotools.data.Neo4jSpatialDataStoreFactory;
import static java.awt.RenderingHints.*;
import static java.util.Arrays.asList;
import static org.geotools.factory.CommonFactoryFinder.getStyleFactory;
public class NeoStyling {
public static void main(String[] args) {
try {
HashMap<String, Serializable> params = new HashMap<String, Serializable>();
params.put(
Neo4jSpatialDataStoreFactory.URLP.key,
"file:../neo4j-spatial/target/var/neo4j-db/neostore.id"
);
DataStore store = new Neo4jSpatialDataStoreFactory().createDataStore(params);
SimpleFeatureSource layer = store.getFeatureSource("highway");
System.out.println(asList(store.getTypeNames()));
System.out.println(asList(store.getSchema("highway").getAttributeDescriptors()));
URL styleURL = new File("neo.sld").toURI().toURL();
Style style = new SLDParser(getStyleFactory(null), styleURL).readXML()[0];
StreamingRenderer renderer = new StreamingRenderer();
RenderingHints hints = new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);
hints.put(KEY_TEXT_ANTIALIASING, VALUE_TEXT_ANTIALIAS_ON);
renderer.setJava2DHints(hints);
DefaultMapContext context = new DefaultMapContext();
renderer.setContext(context);
context.addLayer(new org.geotools.map.FeatureLayer(layer, style));
ReferencedEnvelope bounds = layer.getBounds();
Rectangle displaySize = new Rectangle(0, 0, 800, 800);
BufferedImage image = new BufferedImage(
displaySize.width,
displaySize.height,
BufferedImage.TYPE_INT_ARGB
);
Graphics2D graphics = image.createGraphics();
renderer.paint(graphics, displaySize, bounds);
graphics.dispose();
ImageIO.write(image, "png", new File("sample.png"));
store.dispose();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment