/** * */ package org.geotools.cql; import java.io.IOException; import java.text.SimpleDateFormat; import org.apache.commons.io.FileUtils; import org.geotools.data.DataUtilities; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.geotools.geometry.jts.JTSFactoryFinder; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.MultiPolygon; import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.io.WKTReader; /** * This utility class provide the data required by the CQL/ECQL examples. * * @author Mauricio Pazos * */ final class DataExamples extends ECQLExamples { private DataExamples(){ // utility class } /** * Creates a feature that represent New York city * @return a Feature * @throws Exception */ static public SimpleFeature createCity() throws Exception { final SimpleFeatureType type = DataUtilities.createType("Location", "geometry:Point:srid=4326," + "cityName:String," + "over65YearsOld:Double," + "under18YearsOld:Double," + "population:Integer," + "lastEarthQuake:Date"); SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(type); GeometryFactory geometryFactory = JTSFactoryFinder .getGeometryFactory(null); Point point = geometryFactory.createPoint(new Coordinate(-17.2053, 11.9517)); featureBuilder.add(point); featureBuilder.add("New York"); featureBuilder.add(22.6); featureBuilder.add(13.4); featureBuilder.add(19541453); SimpleDateFormat dateFormatter = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss'Z'"); featureBuilder.add(dateFormatter.parse("1737-11-30T01:30:00Z")); SimpleFeature feature = featureBuilder.buildFeature(null); return feature; } public static SimpleFeature createCountry() throws Exception { final SimpleFeatureType type = DataUtilities.createType("Location", "geometry:Polygon:srid=4326," + "countryName:String," + "population:Integer," + "principalMineralResource:String" ); SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(type); WKTReader reader = new WKTReader(); MultiPolygon geometry = (MultiPolygon) reader.read(usaGeometry()); featureBuilder.add(geometry); featureBuilder.add("USA"); featureBuilder.add(307006550); featureBuilder.add("oil"); SimpleFeature feature = featureBuilder.buildFeature(null); return feature; } static private String usaGeometry() { try { return FileUtils.readFileToString( DataUtilities.urlToFile(DataExamples.class.getResource("usa-geometry.wkt")), "UTF-8"); } catch (IOException e) { throw new RuntimeException(e); } } /** * Show USA geometry can be loaded and used to make a SimpleFeature. */ public static void main(String[] args) { try { System.out.println(createCountry()); } catch (Exception e) { throw new RuntimeException(e); } } }