Java Examples for com.vividsolutions.jts.geom.Geometry
The following java examples will help you to understand the usage of com.vividsolutions.jts.geom.Geometry. These source code samples are taken from different open source projects.
Example 1
| Project: geogson-master File: JtsGeometryCollectionIterable.java View source code |
public static JtsGeometryCollectionIterable of(final GeometryCollection src) {
return new JtsGeometryCollectionIterable(new GeometryProvider() {
@Override
public int getNumGeometries() {
return src.getNumGeometries();
}
@Override
public Geometry getGeometryN(int n) {
return src.getGeometryN(n);
}
});
}Example 2
| Project: geotools-2.7.x-master File: ParamField.java View source code |
/**
* Factory method creating the appropriate ParamField for the supplied Param.
*
* @param param
* @return
*/
public static ParamField create(Parameter<?> parameter) {
if (Double.class.isAssignableFrom(parameter.type)) {
return new JDoubleField(parameter);
} else if (URL.class.isAssignableFrom(parameter.type)) {
if (parameter.metadata != null && parameter.metadata.get(Parameter.EXT) != null) {
return new JURLField(parameter);
} else {
JField field = new JField(parameter);
field.setSingleLine(true);
return field;
}
} else if (Boolean.class.isAssignableFrom(parameter.type)) {
JField field = new JField(parameter);
field.setSingleLine(true);
return field;
} else if (Number.class.isAssignableFrom(parameter.type)) {
JField field = new JField(parameter);
field.setSingleLine(true);
return field;
} else if (File.class.isAssignableFrom(parameter.type)) {
return new JFileField(parameter);
} else if (Geometry.class.isAssignableFrom(parameter.type)) {
return new JGeometryField(parameter);
} else {
// We got nothing special hope the converter api can deal
return new JField(parameter);
}
}Example 3
| Project: geotools-master File: WFSDiff.java View source code |
public ReferencedEnvelope batchModify(Name[] properties, Object[] values, Filter filter, FeatureReader<SimpleFeatureType, SimpleFeature> oldFeatures, ContentState contentState) throws IOException {
ReferencedEnvelope bounds = new ReferencedEnvelope(contentState.getFeatureType().getCoordinateReferenceSystem());
synchronized (batchModified) {
while (oldFeatures.hasNext()) {
SimpleFeature old = oldFeatures.next();
BoundingBox fbounds = old.getBounds();
if (fbounds != null) {
bounds.expandToInclude(new ReferencedEnvelope(fbounds));
}
for (int i = 0; i < properties.length; i++) {
Name propName = properties[i];
Object newValue = values[i];
old.setAttribute(propName, newValue);
if (newValue instanceof Geometry) {
Envelope envelope = ((Geometry) newValue).getEnvelopeInternal();
bounds.expandToInclude(envelope);
}
}
String fid = old.getID();
super.modify(fid, old);
batchModified.add(fid);
}
BatchUpdate batch = new BatchUpdate(properties, values, filter);
batchCommands.add(batch);
}
return bounds;
}Example 4
| Project: geotools-old-master File: ParamField.java View source code |
/**
* Factory method creating the appropriate ParamField for the supplied Param.
*
* @param param
* @return
*/
public static ParamField create(Composite parent, Parameter<?> parameter) {
if (Double.class.isAssignableFrom(parameter.type)) {
return new JDoubleField(parent, parameter);
} else if (URL.class.isAssignableFrom(parameter.type)) {
if (parameter.metadata != null && parameter.metadata.get(Parameter.EXT) != null) {
return new JURLField(parent, parameter);
} else {
JField field = new JField(parent, parameter);
field.setSingleLine(true);
return field;
}
} else if (Boolean.class.isAssignableFrom(parameter.type)) {
JField field = new JField(parent, parameter);
field.setSingleLine(true);
return field;
} else if (Number.class.isAssignableFrom(parameter.type)) {
JField field = new JField(parent, parameter);
field.setSingleLine(true);
return field;
} else if (File.class.isAssignableFrom(parameter.type)) {
return new JFileField(parent, parameter);
} else if (Geometry.class.isAssignableFrom(parameter.type)) {
return new JGeometryField(parent, parameter);
} else {
// We got nothing special hope the converter api can deal
return new JField(parent, parameter);
}
}Example 5
| Project: geotools-tike-master File: ProcessRunPage.java View source code |
public void aboutToDisplayPanel() {
page.removeAll();
page.setLayout(new GridLayout(0, 2));
Process process = this.factory.create(name);
final ProgressListener progress = new ProgressWindow(this.getJProcessWizard());
Map<String, Object> resultMap;
try {
resultMap = process.execute(paramMap, progress);
} catch (ProcessException ex) {
Logger.getLogger(ProcessRunPage.class.getName()).log(Level.SEVERE, "Error preparing panel", ex);
return;
}
// when we get here, the processing is over so show the result
JLabel title = new JLabel(factory.getTitle(name).toString());
page.add(title);
JLabel description = new JLabel("Your process results are below:");
page.add(description);
for (Entry<String, Object> entry : resultMap.entrySet()) {
Parameter<?> parameter = new Parameter(entry.getKey(), entry.getValue().getClass(), Text.text("Result"), Text.text("Result of process"));
JLabel label = new JLabel(entry.getKey());
page.add(label);
ParamWidget widget;
if (Double.class.isAssignableFrom(parameter.type)) {
widget = new JDoubleField(parameter);
} else if (Geometry.class.isAssignableFrom(parameter.type)) {
widget = new JGeometryField(parameter);
} else {
// We got nothing special, let's hope the converter api can deal
widget = new JField(parameter);
}
JComponent field = widget.doLayout();
widget.setValue(entry.getValue());
page.add(field);
}
}Example 6
| Project: geotools_trunk-master File: ParamField.java View source code |
/**
* Factory method creating the appropriate ParamField for the supplied Param.
*
* @param param
* @return
*/
public static ParamField create(Composite parent, Parameter<?> parameter) {
if (Double.class.isAssignableFrom(parameter.type)) {
return new JDoubleField(parent, parameter);
} else if (URL.class.isAssignableFrom(parameter.type)) {
if (parameter.metadata != null && parameter.metadata.get(Parameter.EXT) != null) {
return new JURLField(parent, parameter);
} else {
JField field = new JField(parent, parameter);
field.setSingleLine(true);
return field;
}
} else if (Boolean.class.isAssignableFrom(parameter.type)) {
JField field = new JField(parent, parameter);
field.setSingleLine(true);
return field;
} else if (Number.class.isAssignableFrom(parameter.type)) {
JField field = new JField(parent, parameter);
field.setSingleLine(true);
return field;
} else if (File.class.isAssignableFrom(parameter.type)) {
return new JFileField(parent, parameter);
} else if (Geometry.class.isAssignableFrom(parameter.type)) {
return new JGeometryField(parent, parameter);
} else {
// We got nothing special hope the converter api can deal
return new JField(parent, parameter);
}
}Example 7
| Project: geotoolkit-master File: PolygonHandlerTest.java View source code |
public static Geometry copyTo(final double x, final double y, final double w, final double h, final Geometry g) { if (g.getNumPoints() != 5) throw new IllegalArgumentException("Geometry must have 5 points"); if (!LinearRing.class.isAssignableFrom(g.getClass())) throw new IllegalArgumentException("Geometry must be linear ring"); Coordinate[] coords = g.getCoordinates(); coords[0].x = x; coords[0].y = y; coords[1].x = x + w; coords[1].y = y; coords[2].x = x + w; coords[2].y = y + h; coords[3].x = x; coords[3].y = y + h; coords[4].x = x; coords[4].y = y; return g; }
Example 8
| Project: geoserver-master File: SVGMapProducerTest.java View source code |
@Test
public void testHeterogeneousGeometry() throws Exception {
GeometryFactory gf = new GeometryFactory();
Point point = gf.createPoint(new Coordinate(10, 10));
LineString line = gf.createLineString(new Coordinate[] { new Coordinate(50, 50), new Coordinate(100, 100) });
Polygon polygon = gf.createPolygon(gf.createLinearRing(new Coordinate[] { new Coordinate(0, 0), new Coordinate(0, 200), new Coordinate(200, 200), new Coordinate(200, 0), new Coordinate(0, 0) }), null);
SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder();
ftb.setName("test");
ftb.add("geom", Geometry.class);
SimpleFeatureType type = ftb.buildFeatureType();
SimpleFeature f1 = SimpleFeatureBuilder.build(type, new Object[] { point }, null);
SimpleFeature f2 = SimpleFeatureBuilder.build(type, new Object[] { line }, null);
SimpleFeature f3 = SimpleFeatureBuilder.build(type, new Object[] { polygon }, null);
MemoryDataStore ds = new MemoryDataStore();
ds.createSchema(type);
ds.addFeatures(new SimpleFeature[] { f1, f2, f3 });
FeatureSource fs = ds.getFeatureSource("test");
final WMSMapContent map = new WMSMapContent();
map.getViewport().setBounds(new ReferencedEnvelope(-250, 250, -250, 250, null));
map.setMapWidth(300);
map.setMapHeight(300);
map.setBgColor(Color.red);
map.setTransparent(false);
Style basicStyle = getCatalog().getStyleByName("Default").getStyle();
map.addLayer(new FeatureLayer(fs, basicStyle));
SVGStreamingMapOutputFormat producer = new SVGStreamingMapOutputFormat();
StreamingSVGMap encodeSVG = producer.produceMap(map);
ByteArrayOutputStream out = new ByteArrayOutputStream();
encodeSVG.encode(out);
// System.out.println(out.toString());
String expectedDoc = "<?xml version=\"1.0\" standalone=\"no\"?>" + //
"<svg xmlns=\"http://www.w3.org/2000/svg\" " + //
" xmlns:xlink=\"http://www.w3.org/1999/xlink\" " + //
" stroke=\"green\" " + //
" fill=\"none\" " + //
" stroke-width=\"0.1%\" " + //
" stroke-linecap=\"round\" " + //
" stroke-linejoin=\"round\" " + //
" width=\"300\" " + //
" height=\"300\" " + //
" viewBox=\"-250.0 -250.0 500.0 500.0\" " + //
" preserveAspectRatio=\"xMidYMid meet\"> " + //
" <g id=\"test\" class=\"Default\"> " + //
" <use x=\"10\" y=\"-10\" xlink:href=\"#point\"/> " + //
" <path d=\"M50 -50l50 -50 \"/> " + //
" <path d=\"M0 0l0 -200 200 0 0 200 -200 0 Z\"/> " + //
" </g> " + "</svg> ";
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document expected = builder.parse(new InputSource(new StringReader(expectedDoc)));
Document result = builder.parse(new ByteArrayInputStream(out.toByteArray()));
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreAttributeOrder(true);
XMLUnit.setIgnoreComments(true);
XMLAssert.assertXMLEqual(expected, result);
}Example 9
| Project: activityinfo-master File: WkbGeometryProvider.java View source code |
@Override
@LogSlow(threshold = 200)
public List<AdminGeo> getGeometries(int adminLevelId) {
try {
List<AdminGeo> list = Lists.newArrayList();
DataInputStream in = new DataInputStream(openWkb(adminLevelId));
WKBReader wkbReader = new WKBReader(geometryFactory);
int count = in.readInt();
for (int i = 0; i != count; ++i) {
int id = in.readInt();
LOGGER.info("Reading geometry for admin entity " + id);
Geometry geometry = wkbReader.read(new DataInputInStream(in));
list.add(new AdminGeo(id, geometry));
}
return list;
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}Example 10
| Project: geodb-master File: UnionTest.java View source code |
@Test
public void extentOnePoint() throws SQLException {
union.add(createPoint(3, 5));
Object result = union.getResult();
assertThat(result, is(not(nullValue())));
Geometry envelope = GeoDB.gFromWKB((byte[]) result);
assertThat(envelope.getArea(), is(0.0));
assertThat(envelope, is(instanceOf(Point.class)));
assertThat((Point) envelope, is(equalTo(createPoint(3, 5))));
}Example 11
| Project: hibernate-orm-master File: GeometryEquality.java View source code |
private boolean test(Geometry geom1, Geometry geom2, boolean ignoreSRID) { if (geom1 == null) { return geom2 == null; } if (geom1.isEmpty()) { return geom2.isEmpty(); } if (!ignoreSRID && !equalSRID(geom1, geom2)) { return false; } if (geom1 instanceof GeometryCollection) { if (!(geom2 instanceof GeometryCollection)) { return false; } GeometryCollection expectedCollection = (GeometryCollection) geom1; GeometryCollection receivedCollection = (GeometryCollection) geom2; for (int partIndex = 0; partIndex < expectedCollection.getNumGeometries(); partIndex++) { Geometry partExpected = expectedCollection.getGeometryN(partIndex); Geometry partReceived = receivedCollection.getGeometryN(partIndex); if (!test(partExpected, partReceived, true)) { return false; } } return true; } else { return testSimpleGeometryEquality(geom1, geom2); } }
Example 12
| Project: secureOWS-master File: GeometryImpl.java View source code |
/**
* <p>
* The operation "distance" shall return the distance between this Geometry and another
* Geometry. This distance is defined to be the greatest lower bound of the set of distances
* between all pairs of points that include one each from each of the two Geometries. A
* "distance" value shall be a positive number associated to distance units such as meters or
* standard foot. If necessary, the second geometric object shall be transformed into the same
* coordinate reference system as the first before the distance is calculated.
* </p>
* <p>
* If the geometric objects overlap, or touch, then their distance apart shall be zero. Some
* current implementations use a "negative" distance for such cases, but the approach is neither
* consistent between implementations, nor theoretically viable.
* </p>
*/
public double distance(Geometry gmo) {
try {
com.vividsolutions.jts.geom.Geometry jtsThis = JTSAdapter.export(this);
com.vividsolutions.jts.geom.Geometry jtsThat = JTSAdapter.export(gmo);
return jtsThis.distance(jtsThat);
} catch (GeometryException e) {
LOG.logError(e.getMessage(), e);
return -1;
}
}Example 13
| Project: geowave-master File: FeatureBoundingBoxStatistics.java View source code |
@Override
protected Envelope getEnvelope(final SimpleFeature entry) {
// incorporate the bounding box of the entry's envelope
final Object o;
if ((persistedType != null) && (reprojectedType != null) && (transform != null)) {
o = FeatureDataUtils.defaultCRSTransform(entry, persistedType, reprojectedType, transform).getAttribute(getFieldName());
} else {
o = entry.getAttribute(getFieldName());
}
if ((o != null) && (o instanceof Geometry)) {
final Geometry geometry = (Geometry) o;
if (!geometry.isEmpty()) {
return geometry.getEnvelopeInternal();
}
}
return null;
}Example 14
| Project: jeql-master File: PointHandler.java View source code |
public Geometry read(EndianDataInputStream file, GeometryFactory geometryFactory, int contentLength) throws IOException, InvalidShapefileException {
// file.setLittleEndianMode(true);
//actual number of words read (word = 16bits)
int actualReadWords = 0;
int shapeType = file.readIntLE();
actualReadWords += 2;
if (shapeType != myShapeType)
throw new InvalidShapefileException("pointhandler.read() - handler's shapetype doesnt match file's");
double x = file.readDoubleLE();
double y = file.readDoubleLE();
double m, z = Double.NaN;
actualReadWords += 8;
if (shapeType == 11) {
z = file.readDoubleLE();
actualReadWords += 4;
}
if (shapeType >= 11) {
m = file.readDoubleLE();
actualReadWords += 4;
}
//verify that we have read everything we need
while (actualReadWords < contentLength) {
int junk2 = file.readShortBE();
actualReadWords += 1;
}
return geometryFactory.createPoint(new Coordinate(x, y, z));
}Example 15
| Project: OSMemory-master File: FastAreaTest.java View source code |
@Test
public void testInside() {
Geometry box = GeometryHelper.createBoxPolygon(1, 2, 1, 2);
FastArea fastArea = new FastArea(box, new MemoryStorage());
assertFalse(fastArea.coversNode(point(0, 0)));
assertTrue(fastArea.coversNode(point(1, 1)));
assertTrue(fastArea.coversNode(point(1, 2)));
assertTrue(fastArea.coversNode(point(1.5, 1.5)));
assertTrue(fastArea.coversNode(point(1, 1.5)));
}Example 16
| Project: SES-master File: RunwayParser.java View source code |
/* (non-Javadoc) * @see org.n52.ses.enrichment.parser.AIXMAbstractGeometryParser#parseGeometries(org.apache.xmlbeans.XmlObject) */ @Override protected List<Geometry> parseGeometries(XmlObject xmlO) throws XmlException, ParseException, GMLParseException { List<Geometry> geometries = new ArrayList<Geometry>(); // parse the feature's xml-document RunwayDocument runwayDoc = RunwayDocument.Factory.parse(xmlO.xmlText()); RunwayType runway = runwayDoc.getRunway(); // parse bounded by if (geometries.size() == 0 && runway.isSetBoundedBy()) { geometries.add(super.parseBoundedBy(runway.getBoundedBy())); } return null; }
Example 17
| Project: smos-box-master File: ProductNodeRenderer.java View source code |
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
final Component component = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (!(component instanceof JLabel)) {
return component;
}
final JLabel label = (JLabel) component;
if (value instanceof ProductNode) {
label.setText(((ProductNode) value).getDisplayName());
} else if (value instanceof Geometry) {
label.setText(((Geometry) value).toText().substring(0, 48).concat(" ..."));
} else {
label.setText("");
}
return label;
}Example 18
| Project: cids-server-master File: RemoteTester.java View source code |
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @param args the command line arguments
*
* @throws Throwable DOCUMENT ME!
*/
public static void main(final String[] args) throws Throwable {
// NOI18N
final String domain = "WUNDA_BLAU";
// security alles unsinn :-)
System.setSecurityManager(new RMISecurityManager() {
@Override
public void checkConnect(final String host, final int port) {
}
@Override
public void checkConnect(final String host, final int port, final Object context) {
}
});
// rmi registry lokaliseren
final java.rmi.registry.Registry rmiRegistry = LocateRegistry.getRegistry(1099);
// lookup des callservers
// NOI18N
final Remote r = (Remote) Naming.lookup("rmi://localhost/callServer");
// ich weiss, dass die server von callserver implementiert werden
final SearchService ss = (SearchService) r;
final CatalogueService cat = (CatalogueService) r;
final MetaService meta = (MetaService) r;
final UserService us = (UserService) r;
// System.out.println("server contacted :: "+r);
// Benutzergruppe anlegen (muss auf dem Server existieren)
// UserGroup ug = new UserGroup(0,"Administratoren",domain );
// user anlegen muss auf dem server existieren
// User u = new User(0, "admin",domain, ug );
// oder mit login
// ug_domain,ug_name,u_domain,u_name,password
// NOI18N
final User u = us.getUser(domain, "Administratoren", domain, "admin", "x");
// NOI18N
System.out.println(u + " user token retrieved");
// meta.getC
// Beispiel:
// hole alle Klassen einer Dom\u00E4ne
// hole dir dann f\u00FCr jede Klasse ein ObjektTemplate
// MetaClass[] cs = meta.getClasses(u,domain);
//
// for(int i=0;i<cs.length;i++)
// {
// System.out.println("NEW instance ::"+meta.getInstance(u,cs[i]));
//
// }
// System.out.println("!!getInstance durchgelaufen !!");
// Beispiel:
// Template f\u00FCr eine Object der ersten Klasse
// MetaObject mo = meta.getInstance(u,cs[0]);
// NOI18N
final MetaObject mo = meta.getMetaObject(u, 5646, 6, "WUNDA_BLAU");
// NOI18N
System.out.println("metaobject::" + mo);
// alle attribute des Objects
// ObjectAttribute[] attribs = mo.getAttribs();
// NOI18N
final java.util.Collection col1 = mo.getTraversedAttributesByType(Class.forName(""));
// NOI18N
final java.util.Collection col2 = mo.getAttributesByType(Class.forName("com.vividsolutions.jts.geom.Geometry"));
final java.util.Collection col3 = // NOI18N
mo.getAttributesByType(// NOI18N
Class.forName("com.vividsolutions.jts.geom.Geometry"), 1);
final java.util.Collection col4 = // NOI18N
mo.getAttributesByType(// NOI18N
Class.forName("com.vividsolutions.jts.geom.Geometry"), 2);
final java.util.Collection col5 = // NOI18N
mo.getAttributesByType(// NOI18N
Class.forName("com.vividsolutions.jts.geom.Geometry"), 3);
Iterator iter = col1.iterator();
// NOI18N
System.out.println("!!!!!!!!!!!! traversiert !!!!!!!!!!!!!!!!!!!");
while (iter.hasNext()) {
System.out.println(iter.next());
}
iter = col2.iterator();
// NOI18N
System.out.println("!!!!!!!!!!!! level 0 !!!!!!!!!!!!!!!!!!!");
while (iter.hasNext()) {
System.out.println(iter.next());
}
iter = col3.iterator();
// NOI18N
System.out.println("!!!!!!!!!!!! level 1 !!!!!!!!!!!!!!!!!!!");
while (iter.hasNext()) {
System.out.println(iter.next());
}
iter = col4.iterator();
// NOI18N
System.out.println("!!!!!!!!!!!! level 2 !!!!!!!!!!!!!!!!!!!");
while (iter.hasNext()) {
System.out.println(iter.next());
}
iter = col5.iterator();
// NOI18N
System.out.println("!!!!!!!!!!!! level 3 !!!!!!!!!!!!!!!!!!!");
while (iter.hasNext()) {
System.out.println(iter.next());
}
}Example 19
| Project: orbisgis-master File: GeometryTypeUtilTest.java View source code |
@Test
public void testDimensionSequence() throws Exception {
Geometry geom = wKTReader.read("POINT(0 0)");
CoordinateSequenceDimensionFilter cd = new CoordinateSequenceDimensionFilter();
geom.apply(cd);
assertTrue(cd.getDimension() == 2);
geom = wKTReader.read("LINESTRING(0 0, 0 0 1)");
cd = new CoordinateSequenceDimensionFilter();
geom.apply(cd);
assertTrue(cd.getDimension() == 3);
}Example 20
| Project: whitebox-geospatial-analysis-tools-master File: BufferVector.java View source code |
/**
* Used to execute this plugin tool.
*/
@Override
public void run() {
amIActive = true;
String inputFile;
String outputFile;
int progress;
int i, j, n, FID;
int oneHundredthTotal;
int numRecs;
ShapeType shapeType;
double bufferSize = 0;
GeometryFactory factory = new GeometryFactory();
com.vividsolutions.jts.geom.Geometry geometriesToBuffer = null;
if (args.length <= 0) {
showFeedback("Plugin parameters have not been set.");
return;
}
inputFile = args[0];
outputFile = args[1];
bufferSize = Double.parseDouble(args[2]);
if (bufferSize < 0) {
showFeedback("The buffer size has not been set properly.");
return;
}
// check to see that the inputHeader and outputHeader are not null.
if ((inputFile == null) || (outputFile == null)) {
showFeedback("One or more of the input parameters have not been set properly.");
return;
}
try {
// set up the input shapefile.
ShapeFile input = new ShapeFile(inputFile);
shapeType = input.getShapeType();
numRecs = input.getNumberOfRecords();
oneHundredthTotal = numRecs / 100;
// set up the output files of the shapefile and the dbf
ShapeFile output = new ShapeFile(outputFile, ShapeType.POLYGON);
output.setProjectionStringFromOtherShapefile(input);
DBFField fields[] = new DBFField[1];
fields[0] = new DBFField();
fields[0].setName("FID");
fields[0].setDataType(DBFField.DBFDataType.NUMERIC);
fields[0].setFieldLength(10);
fields[0].setDecimalCount(0);
String DBFName = output.getDatabaseFile();
DBFWriter writer = new DBFWriter(new File(DBFName));
writer.setFields(fields);
if (shapeType.getBaseType() == ShapeType.POLYGON) {
progress = 0;
ArrayList<com.vividsolutions.jts.geom.Polygon> polygons = new ArrayList<>();
com.vividsolutions.jts.geom.Geometry[] recJTSPoly = null;
n = 0;
for (ShapeFileRecord record : input.records) {
if (record.getShapeType() != ShapeType.NULLSHAPE) {
recJTSPoly = record.getGeometry().getJTSGeometries();
for (int a = 0; a < recJTSPoly.length; a++) {
polygons.add((com.vividsolutions.jts.geom.Polygon) recJTSPoly[a]);
}
}
n++;
if (n >= oneHundredthTotal) {
n = 0;
if (cancelOp) {
cancelOperation();
return;
}
progress++;
updateProgress("Reading shapefile data:", progress);
}
}
// create an array of polygons
com.vividsolutions.jts.geom.Polygon[] polygonArray = new com.vividsolutions.jts.geom.Polygon[polygons.size()];
for (i = 0; i < polygons.size(); i++) {
polygonArray[i] = polygons.get(i);
}
polygons.clear();
geometriesToBuffer = factory.createMultiPolygon(polygonArray);
} else if (shapeType.getBaseType() == ShapeType.POLYLINE) {
ArrayList<LineString> lineStringList = new ArrayList<>();
com.vividsolutions.jts.geom.Geometry[] recJTSPoly = null;
progress = 0;
n = 0;
for (ShapeFileRecord record : input.records) {
if (record.getShapeType() != ShapeType.NULLSHAPE) {
recJTSPoly = record.getGeometry().getJTSGeometries();
for (int a = 0; a < recJTSPoly.length; a++) {
lineStringList.add((com.vividsolutions.jts.geom.LineString) recJTSPoly[a]);
}
}
n++;
if (n >= oneHundredthTotal) {
n = 0;
if (cancelOp) {
cancelOperation();
return;
}
progress++;
updateProgress("Reading shapefile data:", progress);
}
}
// create an array of polygons
com.vividsolutions.jts.geom.LineString[] lineStringArray = new com.vividsolutions.jts.geom.LineString[lineStringList.size()];
for (i = 0; i < lineStringList.size(); i++) {
lineStringArray[i] = lineStringList.get(i);
}
lineStringList.clear();
geometriesToBuffer = factory.createMultiLineString(lineStringArray);
} else if (shapeType.getBaseType() == ShapeType.POINT || shapeType.getBaseType() == ShapeType.MULTIPOINT) {
ArrayList<com.vividsolutions.jts.geom.Point> pointList = new ArrayList<>();
com.vividsolutions.jts.geom.Geometry[] recJTSPoly = null;
n = 0;
progress = 0;
for (ShapeFileRecord record : input.records) {
if (record.getShapeType() != ShapeType.NULLSHAPE) {
recJTSPoly = record.getGeometry().getJTSGeometries();
for (int a = 0; a < recJTSPoly.length; a++) {
pointList.add((com.vividsolutions.jts.geom.Point) recJTSPoly[a]);
}
}
n++;
if (n >= oneHundredthTotal) {
n = 0;
if (cancelOp) {
cancelOperation();
return;
}
progress++;
updateProgress("Reading shapefile data:", progress);
}
}
// create an array of polygons
com.vividsolutions.jts.geom.Point[] pointArray = new com.vividsolutions.jts.geom.Point[pointList.size()];
for (i = 0; i < pointList.size(); i++) {
pointArray[i] = pointList.get(i);
}
pointList.clear();
geometriesToBuffer = factory.createMultiPoint(pointArray);
}
updateProgress("Buffering data (progress will not be updated):", -1);
com.vividsolutions.jts.geom.Geometry buffer = geometriesToBuffer.buffer(bufferSize);
progress = 0;
updateProgress("Creating new shapefile:", -1);
if (buffer instanceof com.vividsolutions.jts.geom.MultiPolygon) {
MultiPolygon mpBuffer = (MultiPolygon) buffer;
FID = 0;
n = 0;
for (int a = 0; a < mpBuffer.getNumGeometries(); a++) {
com.vividsolutions.jts.geom.Geometry g = mpBuffer.getGeometryN(a);
if (g instanceof com.vividsolutions.jts.geom.Polygon) {
com.vividsolutions.jts.geom.Polygon bufferPoly = (com.vividsolutions.jts.geom.Polygon) g;
ArrayList<ShapefilePoint> pnts = new ArrayList<>();
int[] parts = new int[bufferPoly.getNumInteriorRing() + 1];
Coordinate[] buffCoords = bufferPoly.getExteriorRing().getCoordinates();
if (!Topology.isLineClosed(buffCoords)) {
System.out.println("Exterior ring not closed.");
}
if (Topology.isClockwisePolygon(buffCoords)) {
for (i = 0; i < buffCoords.length; i++) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
} else {
for (i = buffCoords.length - 1; i >= 0; i--) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
}
for (int b = 0; b < bufferPoly.getNumInteriorRing(); b++) {
parts[b + 1] = pnts.size();
buffCoords = bufferPoly.getInteriorRingN(b).getCoordinates();
if (!Topology.isLineClosed(buffCoords)) {
System.out.println("Interior ring not closed.");
}
if (Topology.isClockwisePolygon(buffCoords)) {
for (i = buffCoords.length - 1; i >= 0; i--) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
} else {
for (i = 0; i < buffCoords.length; i++) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
}
}
PointsList pl = new PointsList(pnts);
whitebox.geospatialfiles.shapefile.Polygon wbPoly = new whitebox.geospatialfiles.shapefile.Polygon(parts, pl.getPointsArray());
output.addRecord(wbPoly);
FID++;
Object[] rowData = new Object[1];
rowData[0] = new Double(FID);
writer.addRecord(rowData);
if (cancelOp) {
cancelOperation();
return;
}
n++;
progress = (int) (n * 100.0 / mpBuffer.getNumGeometries());
updateProgress("Creating new shapefile:", progress);
} else {
// I'm really hoping this is never hit.
}
}
} else if (buffer instanceof com.vividsolutions.jts.geom.Polygon) {
com.vividsolutions.jts.geom.Polygon pBuffer = (com.vividsolutions.jts.geom.Polygon) buffer;
com.vividsolutions.jts.geom.Geometry g = pBuffer.getGeometryN(0);
if (g instanceof com.vividsolutions.jts.geom.Polygon) {
ArrayList<ShapefilePoint> pnts = new ArrayList<>();
int[] parts = new int[pBuffer.getNumInteriorRing() + 1];
Coordinate[] buffCoords = pBuffer.getExteriorRing().getCoordinates();
if (Topology.isClockwisePolygon(buffCoords)) {
for (i = 0; i < buffCoords.length; i++) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
} else {
for (i = buffCoords.length - 1; i >= 0; i--) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
}
for (int b = 0; b < pBuffer.getNumInteriorRing(); b++) {
parts[b + 1] = pnts.size();
buffCoords = pBuffer.getInteriorRingN(b).getCoordinates();
if (Topology.isClockwisePolygon(buffCoords)) {
for (i = buffCoords.length - 1; i >= 0; i--) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
} else {
for (i = 0; i < buffCoords.length; i++) {
pnts.add(new ShapefilePoint(buffCoords[i].x, buffCoords[i].y));
}
}
}
PointsList pl = new PointsList(pnts);
whitebox.geospatialfiles.shapefile.Polygon wbPoly = new whitebox.geospatialfiles.shapefile.Polygon(parts, pl.getPointsArray());
output.addRecord(wbPoly);
Object[] rowData = new Object[1];
rowData[0] = new Double(1);
writer.addRecord(rowData);
} else {
// I'm really hoping this is never hit.
}
}
output.write();
writer.write();
// returning a header file string displays the image.
returnData(outputFile);
} catch (OutOfMemoryError oe) {
myHost.showFeedback("An out-of-memory error has occurred during operation.");
} catch (Exception e) {
myHost.showFeedback("An error has occurred during operation. See log file for details.");
myHost.logException("Error in " + getDescriptiveName(), e);
} finally {
updateProgress("Progress: ", 0);
// tells the main application that this process is completed.
amIActive = false;
myHost.pluginComplete();
}
}Example 21
| Project: androidol-master File: GeoRSS.java View source code |
/**
*
*/
public ArrayList<Geometry> parseGeometries(InputStream inputStream) {
try {
// Get a SAXParser from the SAXPArserFactory.
SAXParserFactory saxParserFac = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserFac.newSAXParser();
// Get the XMLReader of the SAXParser we created.
XMLReader xmlReader = saxParser.getXMLReader();
// Create a new ContentHandler and apply it to the XML-Reader.
GeoRSSHandler georssHandler = new GeoRSSHandler();
xmlReader.setContentHandler(georssHandler);
// Parse the georss content
xmlReader.parse(new InputSource(inputStream));
return georssHandler.getParsedGeometries();
} catch (Exception e) {
Util.printErrorMessage(e.toString());
return null;
}
}Example 22
| Project: com.opendoorlogistics-master File: ShapeIndex.java View source code |
private void countGeoms(Geometry g) {
if (g != null) {
if (GeometryCollection.class.isInstance(g)) {
int n = g.getNumGeometries();
for (int i = 0; i < n; i++) {
countGeoms(g.getGeometryN(i));
}
} else if (Point.class.isInstance(g)) {
pointsCount++;
} else if (LineString.class.isInstance(g)) {
linestringsCount++;
} else if (Polygon.class.isInstance(g)) {
pointsCount++;
}
}
}Example 23
| Project: georefine-master File: Intersects.java View source code |
public void write(JSONWriter writer, Properties options) throws JSONException {
writer.object();
writer.key("description");
writer.value("first geometry has at least one point in common with second geometry (opposite of disjoint)");
writer.key("params");
writer.value("Geometry a, Geometry b");
writer.key("returns");
writer.value("true/false");
writer.endObject();
}Example 24
| Project: geoserver-old-master File: AbstractGeometryTypeBinding.java View source code |
public Object parse(ElementInstance instance, Node node, Object value) throws Exception {
try {
if (node.hasAttribute("srsName")) {
CRS.decode(node.getAttributeValue("srsName").toString());
}
} catch (NoSuchAuthorityCodeException e) {
throw new WFSException("Invalid Authority Code: " + e.getAuthorityCode(), "InvalidParameterValue");
}
Geometry geometry = (Geometry) super.parse(instance, node, value);
if (geometry != null) {
//1. ensure a crs is set
if (geometry.getUserData() == null) {
//no crs set for the geometry, did we inherit one from a parent?
if (crs != null) {
geometry.setUserData(crs);
} else {
// for the moment we don't do anything since we miss the information
// to infer the CRS from the feature type
}
}
//2. ensure the coordinates of the geometry fall into valid space defined by crs
CoordinateReferenceSystem crs = (CoordinateReferenceSystem) geometry.getUserData();
if (crs != null)
try {
JTS.checkCoordinatesRange(geometry, crs);
} catch (PointOutsideEnvelopeException e) {
throw new WFSException(e, "InvalidParameterValue");
}
}
return geometry;
}Example 25
| Project: geoserver_trunk-master File: AbstractGeometryTypeBinding.java View source code |
public Object parse(ElementInstance instance, Node node, Object value) throws Exception {
try {
if (node.hasAttribute("srsName")) {
CRS.decode(node.getAttributeValue("srsName").toString());
}
} catch (NoSuchAuthorityCodeException e) {
throw new WFSException("Invalid Authority Code: " + e.getAuthorityCode(), "InvalidParameterValue");
}
Geometry geometry = (Geometry) super.parse(instance, node, value);
if (geometry != null) {
//1. ensure a crs is set
if (geometry.getUserData() == null) {
//no crs set for the geometry, did we inherit one from a parent?
if (crs != null) {
geometry.setUserData(crs);
} else {
// for the moment we don't do anything since we miss the information
// to infer the CRS from the feature type
}
}
//2. ensure the coordinates of the geometry fall into valid space defined by crs
CoordinateReferenceSystem crs = (CoordinateReferenceSystem) geometry.getUserData();
if (crs != null)
try {
JTS.checkCoordinatesRange(geometry, crs);
} catch (PointOutsideEnvelopeException e) {
throw new WFSException(e, "InvalidParameterValue");
}
}
return geometry;
}Example 26
| Project: geotools-cookbook-master File: BufferProcess.java View source code |
public Map<String, Object> execute(Map<String, Object> input, ProgressListener monitor) {
if (started)
throw new IllegalStateException("Process can only be run once");
started = true;
if (monitor == null)
monitor = new NullProgressListener();
try {
monitor.started();
monitor.setTask(Text.text("Grabbing arguments"));
monitor.progress(10.0f);
Object value = input.get(BufferFactory.GEOM1.key);
if (value == null) {
throw new NullPointerException("geom1 parameter required");
}
if (!(value instanceof Geometry)) {
throw new ClassCastException("geom1 requied Geometry, not " + value);
}
Geometry geom1 = (Geometry) value;
value = input.get(BufferFactory.BUFFER.key);
if (value == null) {
throw new ClassCastException("geom1 requied Geometry, not " + value);
}
if (!(value instanceof Number)) {
throw new ClassCastException("buffer requied number, not " + value);
}
Double buffer = ((Number) value).doubleValue();
monitor.setTask(Text.text("Processing Buffer"));
monitor.progress(25.0f);
if (monitor.isCanceled()) {
// user has canceled this operation
return null;
}
Geometry resultGeom = geom1.buffer(buffer);
monitor.setTask(Text.text("Encoding result"));
monitor.progress(90.0f);
Map<String, Object> result = new HashMap<String, Object>();
result.put(BufferFactory.RESULT.key, resultGeom);
// same as 100.0f
monitor.complete();
return result;
} catch (Exception eek) {
monitor.exceptionOccurred(eek);
return null;
} finally {
monitor.dispose();
}
}Example 27
| Project: jena-sparql-api-master File: LinkGeomizer.java View source code |
public static Map<Triple, Geometry> geomize(Iterable<Triple> triples, LookupService<Node, Geometry> lookupServiceSubjects, LookupService<Node, Geometry> lookupServiceObjects) { Map<Triple, Geometry> result = new HashMap<Triple, Geometry>(); Set<Node> subjects = new HashSet<Node>(); Set<Node> objects = new HashSet<Node>(); for (Triple triple : triples) { subjects.add(triple.getSubject()); objects.add(triple.getObject()); } Map<Node, Geometry> mapSubjects = lookupServiceSubjects.apply(subjects); Map<Node, Geometry> mapObjects = lookupServiceObjects.apply(objects); System.out.println("mapSubjects: " + mapSubjects); System.out.println("mapObjects: " + mapObjects); GeometryFactory gf = new GeometryFactory(new PrecisionModel(PrecisionModel.FLOATING), 4326); for (Triple triple : triples) { Geometry gs = mapSubjects.get(triple.getSubject()); Geometry go = mapObjects.get(triple.getObject()); if (gs == null || go == null) { continue; } Coordinate[] coordinates = DistanceOp.nearestPoints(gs, go); // Point ps = GeometryFactory.createPointFromInternalCoord(points[0], gs); // Point po = GeometryFactory.createPointFromInternalCoord(points[1], go); LineString lineString = gf.createLineString(coordinates); result.put(triple, lineString); } return result; }
Example 28
| Project: maxwell-master File: GeometryColumnDef.java View source code |
@Override
public Object asJSON(Object value) {
Geometry geometry = null;
if (value instanceof Geometry) {
geometry = (Geometry) value;
} else if (value instanceof byte[]) {
byte[] bytes = (byte[]) value;
// mysql sprinkles 4 mystery bytes on top of the GIS data.
bytes = Arrays.copyOfRange(bytes, 4, bytes.length);
final WKBReader reader = new WKBReader();
try {
geometry = reader.read(bytes);
} catch (ParseException e) {
throw new RuntimeException("Could not parse geometry: " + e);
}
} else {
throw new RuntimeException("Could not parse geometry column value: " + value);
}
return geometry.toText();
}Example 29
| Project: openjump-core-rels-master File: WarpImageToFencePlugIn.java View source code |
/**
*@inheritDoc
*/
public boolean execute(PlugInContext context) throws Exception {
RasterImageLayer rLayer = (RasterImageLayer) LayerTools.getSelectedLayerable(context, RasterImageLayer.class);
if (rLayer == null) {
//$NON-NLS-1$
context.getWorkbenchFrame().warnUser(I18N.get("pirol.plugIns.EditAttributeByFormulaPlugIn.no-layer-selected"));
return false;
}
Geometry fence = SelectionTools.getFenceGeometry(context);
Envelope envWanted = fence.getEnvelopeInternal();
rLayer.setEnvelope(envWanted);
return true;
}Example 30
| Project: spatial_statistics_for_geotools_udig-master File: FlipLineFeatureCollection.java View source code |
public SimpleFeature next() throws NoSuchElementException {
SimpleFeature feature = delegate.next();
for (Object attribute : feature.getAttributes()) {
if (attribute instanceof Geometry) {
Geometry geometry = (Geometry) attribute;
attribute = geometry.reverse();
}
builder.add(attribute);
}
return builder.buildFeature(feature.getID());
}Example 31
| Project: wikibrain-master File: ContainmentIndex.java View source code |
public void insert(int id, Geometry geometry) { for (int i = 0; i < bufferWidths.length; i++) { Geometry exp = geometry.buffer(bufferWidths[i]); Envelope env = exp.getEnvelopeInternal(); synchronized (indexes[i]) { indexes[i].insert(env, id); expanded[i].put(id, exp); } synchronized (geometries) { geometries.put(id, geometry); } } }
Example 32
| Project: cismap-commons-master File: GeomFromWktConverterTest.java View source code |
@Test
public void testConvertForward() throws Exception {
System.out.println("TEST " + getCurrentMethodName());
final GeomFromWktConverter conv = new GeomFromWktConverter();
final String wkt = "POINT(1.13 2)";
Geometry resGeom = conv.convertForward(wkt, new String[] { "4326" });
assertNotNull(resGeom);
assertEquals(4326, resGeom.getSRID());
assertEquals(1, resGeom.getCoordinates().length);
assertEquals(new Coordinate(1.13, 2), resGeom.getCoordinates()[0]);
assertEquals("Point", resGeom.getGeometryType());
final String ewkt = "SRID=3021;POINT(1.13 2)";
resGeom = conv.convertForward(ewkt, new String[] { "4326" });
assertNotNull(resGeom);
assertEquals(3021, resGeom.getSRID());
assertEquals(1, resGeom.getCoordinates().length);
assertEquals(new Coordinate(1.13, 2), resGeom.getCoordinates()[0]);
assertEquals("Point", resGeom.getGeometryType());
}Example 33
| Project: jeo-master File: GeobufReader.java View source code |
com.vividsolutions.jts.geom.Geometry decode(Geometry g) { switch(g.getType()) { case POINT: return decodePoint(g); case LINESTRING: return decodeLine(g); case POLYGON: return decodePolygon(g); case MULTIPOINT: return decodeMultiPoint(g); case MULTILINESTRING: return decodeMultiLine(g); case MULTIPOLYGON: return decodeMultiPolygon(g); case GEOMETRYCOLLECTION: return decodeCollection(g); default: throw new UnsupportedOperationException(); } }
Example 34
| Project: geo-platform-master File: GPGeometryAdapter.java View source code |
@Override
public G unmarshal(String val) throws Exception {
WKTReader wktReader = new WKTReader();
Geometry the_geom = wktReader.read(val);
if (the_geom.getSRID() == 0) {
the_geom.setSRID(4326);
}
try {
return (G) the_geom;
} catch (ClassCastException e) {
throw new ParseException("WKT val is a " + the_geom.getClass().getName());
}
}Example 35
| Project: liquibase-spatial-master File: GeometryType.java View source code |
/**
* @see liquibase.datatype.LiquibaseDataType#objectToSql(java.lang.Object,
* liquibase.database.Database)
*/
@Override
public String objectToSql(final Object value, final Database database) {
final String returnValue;
if (value instanceof Geometry) {
// TODO: Tailor the output for the database.
returnValue = ((Geometry) value).toText();
} else if (value instanceof String) {
returnValue = value.toString();
} else if (value instanceof DatabaseFunction) {
returnValue = value.toString();
} else if (value == null || value.toString().equalsIgnoreCase("null")) {
returnValue = null;
} else {
throw new UnexpectedLiquibaseException("Cannot convert type " + value.getClass() + " to a Geometry value");
}
return returnValue;
}Example 36
| Project: anti-piracy-android-app-master File: GeometryDeserializer.java View source code |
public Geometry parseGeometry(JsonParser parser) throws JsonParseException, IOException { if (parser.getCurrentToken() != JsonToken.START_OBJECT) return null; String typeName = null; ArrayNode coordinates = null; while (parser.nextToken() != JsonToken.END_OBJECT) { String name = parser.getCurrentName(); if ("type".equals(name)) { parser.nextToken(); typeName = parser.getText(); } else if ("coordinates".equals(name)) { parser.nextToken(); coordinates = parser.readValueAsTree(); } else { parser.nextToken(); parser.skipChildren(); } } Geometry geometry = null; if (typeName.equals("Point")) { geometry = geometryFactory.createPoint(new Coordinate(coordinates.get(0).asDouble(), coordinates.get(1).asDouble())); } else if (typeName.equals("MultiPoint")) { geometry = geometryFactory.createMultiPoint(parseLineString(coordinates)); } else if (typeName.equals("LineString")) { geometry = geometryFactory.createLineString(parseLineString(coordinates)); } else if (typeName.equals("MultiLineString")) { geometry = geometryFactory.createMultiLineString(parseLineStrings(coordinates)); } else if (typeName.equals("Polygon")) { geometry = parsePolygonCoordinates(coordinates); } else if (typeName.equals("MultiPolygon")) { geometry = geometryFactory.createMultiPolygon(parsePolygons(coordinates)); } else if (typeName.equals("GeometryCollection")) { geometry = geometryFactory.createGeometryCollection(parseGeometries(coordinates)); } return geometry; }
Example 37
| Project: cta-otp-master File: Components.java View source code |
/**
* Get polygons covering the components of the graph. The largest component (in terms of number
* of nodes) will not overlap any other components (it will have holes); the others may overlap
* each other.
*
* @param modes
* @return
*/
@Secured({ "ROLE_USER" })
@GET
@Path("/polygons")
@Produces({ MediaType.APPLICATION_JSON })
public GraphComponentPolygons getComponentPolygons(@DefaultValue("TRANSIT,WALK") @QueryParam("modes") TraverseModeSet modes, @QueryParam("date") String date, @QueryParam("time") String time, @DefaultValue("") @QueryParam("bannedRoutes") String bannedRoutes, @QueryParam("routerId") String routerId) {
RoutingRequest options = new RoutingRequest(modes);
if (bannedRoutes.length() > 0) {
options.setBannedRoutes(bannedRoutes);
}
Graph graph = graphService.getGraph(routerId);
long dateTime = DateUtils.toDate(date, time, graph.getTimeZone()).getTime();
if (cachedPolygons == null || dateTime != cachedDateTime || !options.equals(cachedOptions)) {
cachedOptions = options;
cachedDateTime = dateTime;
cachedPolygons = AnalysisUtils.getComponentPolygons(graph, options, dateTime);
}
GraphComponentPolygons out = new GraphComponentPolygons();
out.components = new ArrayList<GraphComponent>();
for (Geometry geometry : cachedPolygons) {
GraphComponent component = new GraphComponent();
component.polygon = geometry;
out.components.add(component);
}
return out;
}Example 38
| Project: ddf-master File: GeometryAdapter.java View source code |
public static GeometryElement marshalFrom(Attribute attribute) throws CatalogTransformerException {
GeometryElement element = new GeometryElement();
element.setName(attribute.getName());
if (attribute.getValue() != null) {
for (Serializable value : attribute.getValues()) {
if (!(value instanceof String)) {
continue;
}
String wkt = (String) value;
WKTReader wktReader = new WKTReader(geometryFactory);
Geometry jtsGeometry = null;
try {
jtsGeometry = wktReader.read(wkt);
} catch (ParseException e) {
throw new CatalogTransformerException("Could not transform Metacard to XML. Invalid WKT.", e);
}
JTSToGML311GeometryConverter converter = new JTSToGML311GeometryConverter();
@SuppressWarnings("unchecked") JAXBElement<AbstractGeometryType> gmlElement = (JAXBElement<AbstractGeometryType>) converter.createElement(jtsGeometry);
GeometryElement.Value geoValue = new GeometryElement.Value();
geoValue.setGeometry(gmlElement);
((GeometryElement) element).getValue().add(geoValue);
}
}
return element;
}Example 39
| Project: disconnected-content-explorer-android-master File: GeometryDeserializer.java View source code |
public Geometry parseGeometry(JsonParser parser) throws JsonParseException, IOException { if (parser.getCurrentToken() != JsonToken.START_OBJECT) return null; String typeName = null; ArrayNode coordinates = null; while (parser.nextToken() != JsonToken.END_OBJECT) { String name = parser.getCurrentName(); if ("type".equals(name)) { parser.nextToken(); typeName = parser.getText(); } else if ("coordinates".equals(name)) { parser.nextToken(); coordinates = parser.readValueAsTree(); } else { parser.nextToken(); parser.skipChildren(); } } Geometry geometry = null; if (typeName.equals("Point")) { geometry = geometryFactory.createPoint(new Coordinate(coordinates.get(0).asDouble(), coordinates.get(1).asDouble())); } else if (typeName.equals("MultiPoint")) { geometry = geometryFactory.createMultiPoint(parseLineString(coordinates)); } else if (typeName.equals("LineString")) { geometry = geometryFactory.createLineString(parseLineString(coordinates)); } else if (typeName.equals("MultiLineString")) { geometry = geometryFactory.createMultiLineString(parseLineStrings(coordinates)); } else if (typeName.equals("Polygon")) { geometry = parsePolygonCoordinates(coordinates); } else if (typeName.equals("MultiPolygon")) { geometry = geometryFactory.createMultiPolygon(parsePolygons(coordinates)); } else if (typeName.equals("GeometryCollection")) { geometry = geometryFactory.createGeometryCollection(parseGeometries(coordinates)); } return geometry; }
Example 40
| Project: fiware-cepheus-master File: Geospatial.java View source code |
/**
* Inject in Esper Configuration geospatial methods and classes
* @param configuration
*/
public static void registerConfiguration(Configuration configuration) {
// Inject methods to create Geometry variables
configuration.addPlugInSingleRowFunction("polygon", Geospatial.class.getName(), "createPolygon");
configuration.addPlugInSingleRowFunction("point", Geospatial.class.getName(), "createPoint");
configuration.addPlugInSingleRowFunction("geometry", Geospatial.class.getName(), "readGeometry");
// Register Geometry class
configuration.addImport(Geometry.class.getName());
}Example 41
| Project: GeoEnrichment-master File: SearchShapefilePolygon.java View source code |
public void visit(final Feature feature) {
final Geometry geometry = (Geometry) feature.getProperty(m_geometryName).getValue();
if (point.within(geometry)) {
m_found = true;
for (final ColumnInterface column : columnList) {
final Property property = feature.getProperty(column.getQualifier());
if (property != null) {
column.setWeight(column.toDouble(property.getValue()));
}
}
}
}Example 42
| Project: geofence-master File: GeometryUtility.java View source code |
/**
* Project geometry.
*
* @param originalGeom
* the original geom
* @param srcCRSCode
* the src crs code
* @param trgCRSCode
* the trg crs code
* @return the geometry
* @throws NoSuchAuthorityCodeException
* the no such authority code exception
* @throws FactoryException
* the factory exception
* @throws MismatchedDimensionException
* the mismatched dimension exception
* @throws TransformException
* the transform exception
*/
public static Geometry projectGeometry(Geometry originalGeom, String srcCRSCode, String trgCRSCode) throws NoSuchAuthorityCodeException, FactoryException, MismatchedDimensionException, TransformException {
Geometry projectedGeometry = null;
final MathTransform transform = CRS.findMathTransform(CRS.decode(srcCRSCode, true), CRS.decode(trgCRSCode, true), true);
// converting geometries into a linear system
try {
projectedGeometry = JTS.transform(originalGeom, transform);
} catch (Exception e) {
GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(PrecisionModel.FLOATING), 4326);
WKTReader reader = new WKTReader(geometryFactory);
try {
Polygon worldCutPolygon = (Polygon) reader.read("POLYGON((-180 -89.9, -180 89.9, 180 89.9, 180 -89.9, -180 -89.9))");
projectedGeometry = JTS.transform(originalGeom.intersection(worldCutPolygon), transform);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
return projectedGeometry;
}Example 43
| Project: GeoGig-master File: SpatialOps.java View source code |
/**
* Creates and returns a geometry out of bounds (a point if bounds.getSpan(0) ==
* bounds.getSpan(1) == 0D, a polygon otherwise), setting the bounds
* {@link BoundingBox#getCoordinateReferenceSystem() CRS} as the geometry's
* {@link Geometry#getUserData() user data}.
*
* @param bounds the bounding box to build from
* @return the newly constructed geometry
*/
public static Geometry toGeometry(final BoundingBox bounds) {
if (bounds == null) {
return null;
}
Geometry geom;
if (bounds.getSpan(0) == 0D && bounds.getSpan(1) == 0D) {
geom = gfac.createPoint(new Coordinate(bounds.getMinX(), bounds.getMinY()));
} else {
geom = JTS.toGeometry(bounds, gfac);
}
geom.setUserData(bounds.getCoordinateReferenceSystem());
return geom;
}Example 44
| Project: geomajas-project-client-gwt-master File: GeometryUtilsCommand.java View source code |
@Override
public void execute(final GeometryUtilsRequest request, final GeometryUtilsResponse response) throws Exception {
if (request.getGeometries() != null && request.getGeometries().length > 0) {
int geomCount = request.getGeometries().length;
log.debug("GeometryUtilsCommand for " + geomCount + " geometries.");
if (request.getActionFlags() == 0) {
response.setGeometries(request.getGeometries());
}
// convert to internal
Geometry[] lastResult = new Geometry[geomCount];
org.geomajas.geometry.Geometry[] dtoGeoms = request.getGeometries();
for (int i = 0; i < geomCount; i++) {
lastResult[i] = converter.toInternal(dtoGeoms[i]);
}
List<Geometry[]> intermediateResults = new ArrayList<Geometry[]>();
// do merge before buffer
if ((request.getActionFlags() & GeometryUtilsRequest.ACTION_MERGE) > 0) {
lastResult = merge(lastResult);
intermediateResults.add(lastResult);
}
if ((request.getActionFlags() & GeometryUtilsRequest.ACTION_BUFFER) > 0) {
lastResult = buffer(lastResult, request.getBuffer(), request.getBufferQuadrantSegments());
intermediateResults.add(lastResult);
}
// -- other actions here
// ----------------------------------------------------------
List<org.geomajas.geometry.Geometry> dtoResult = new ArrayList<org.geomajas.geometry.Geometry>();
if (request.isIntermediateResults()) {
for (Geometry[] geometries : intermediateResults) {
for (Geometry geometry : geometries) {
dtoResult.add(converter.toDto(geometry));
}
}
} else {
for (Geometry geometry : lastResult) {
dtoResult.add(converter.toDto(geometry));
}
}
response.setGeometries(dtoResult.toArray(new org.geomajas.geometry.Geometry[dtoResult.size()]));
}
}Example 45
| Project: geopaparazzi-master File: PrecisionReducerCoordinateOperation.java View source code |
public Coordinate[] edit(Coordinate[] coordinates, Geometry geom) {
if (coordinates.length == 0)
return null;
Coordinate[] reducedCoords = new Coordinate[coordinates.length];
// copy coordinates and reduce
for (int i = 0; i < coordinates.length; i++) {
Coordinate coord = new Coordinate(coordinates[i]);
targetPM.makePrecise(coord);
reducedCoords[i] = coord;
}
// remove repeated points, to simplify returned geometry as much as possible
CoordinateList noRepeatedCoordList = new CoordinateList(reducedCoords, false);
Coordinate[] noRepeatedCoords = noRepeatedCoordList.toCoordinateArray();
/**
* Check to see if the removal of repeated points collapsed the coordinate
* List to an invalid length for the type of the parent geometry. It is not
* necessary to check for Point collapses, since the coordinate list can
* never collapse to less than one point. If the length is invalid, return
* the full-length coordinate array first computed, or null if collapses are
* being removed. (This may create an invalid geometry - the client must
* handle this.)
*/
int minLength = 0;
if (geom instanceof LineString)
minLength = 2;
if (geom instanceof LinearRing)
minLength = 4;
Coordinate[] collapsedCoords = reducedCoords;
if (removeCollapsed)
collapsedCoords = null;
// return null or orginal length coordinate array
if (noRepeatedCoords.length < minLength) {
return collapsedCoords;
}
// ok to return shorter coordinate array
return noRepeatedCoords;
}Example 46
| Project: geoserver-2.0.x-master File: AbstractGeometryTypeBinding.java View source code |
public Object parse(ElementInstance instance, Node node, Object value) throws Exception {
try {
if (node.hasAttribute("srsName")) {
CRS.decode(node.getAttributeValue("srsName").toString());
}
} catch (NoSuchAuthorityCodeException e) {
throw new WFSException("Invalid Authority Code: " + e.getAuthorityCode(), "InvalidParameterValue");
}
Geometry geometry = (Geometry) super.parse(instance, node, value);
if (geometry != null) {
//1. ensure a crs is set
if (geometry.getUserData() == null) {
//no crs set for the geometry, did we inherit one from a parent?
if (crs != null) {
geometry.setUserData(crs);
} else {
// for the moment we don't do anything since we miss the information
// to infer the CRS from the feature type
}
}
//2. ensure the coordinates of the geometry fall into valid space defined by crs
CoordinateReferenceSystem crs = (CoordinateReferenceSystem) geometry.getUserData();
if (crs != null)
try {
JTS.checkCoordinatesRange(geometry, crs);
} catch (PointOutsideEnvelopeException e) {
throw new WFSException(e, "InvalidParameterValue");
}
}
return geometry;
}Example 47
| Project: geoserver-enterprise-master File: GeometryProcessWPSTest.java View source code |
@Test
public void testExecuteBuffer() throws Exception {
String xml = "<wps:Execute service='WPS' version='1.0.0' xmlns:wps='http://www.opengis.net/wps/1.0.0' " + "xmlns:ows='http://www.opengis.net/ows/1.1'>" + "<ows:Identifier>JTS:buffer</ows:Identifier>" + "<wps:DataInputs>" + "<wps:Input>" + "<ows:Identifier>geom</ows:Identifier>" + "<wps:Data>" + "<wps:ComplexData mimeType=\"application/wkt\">" + "<![CDATA[POINT(0 0)]]>" + "</wps:ComplexData>" + "</wps:Data>" + "</wps:Input>" + "<wps:Input>" + "<ows:Identifier>distance</ows:Identifier>" + "<wps:Data>" + "<wps:LiteralData>1</wps:LiteralData>" + "</wps:Data>" + "</wps:Input>" + "<wps:Input>" + "<ows:Identifier>capStyle</ows:Identifier>" + "<wps:Data>" + "<wps:LiteralData>Round</wps:LiteralData>" + "</wps:Data>" + "</wps:Input>" + "</wps:DataInputs>" + "<wps:ResponseForm>" + " <wps:RawDataOutput mimeType=\"application/wkt\">" + " <ows:Identifier>result</ows:Identifier>" + " </wps:RawDataOutput>" + " </wps:ResponseForm>" + "</wps:Execute>";
MockHttpServletResponse response = postAsServletResponse("wps", xml);
// System.out.println(response.getOutputStreamContent());
assertEquals("application/wkt", response.getContentType());
Geometry g = new WKTReader().read(response.getOutputStreamContent());
assertTrue(g instanceof Polygon);
}Example 48
| Project: gig-master File: SpatialOps.java View source code |
/**
* Creates and returns a geometry out of bounds (a point if bounds.getSpan(0) ==
* bounds.getSpan(1) == 0D, a polygon otherwise), setting the bounds
* {@link BoundingBox#getCoordinateReferenceSystem() CRS} as the geometry's
* {@link Geometry#getUserData() user data}.
*
* @param bounds the bounding box to build from
* @return the newly constructed geometry
*/
public static Geometry toGeometry(final BoundingBox bounds) {
if (bounds == null) {
return null;
}
Geometry geom;
if (bounds.getSpan(0) == 0D && bounds.getSpan(1) == 0D) {
geom = gfac.createPoint(new Coordinate(bounds.getMinX(), bounds.getMinY()));
} else {
geom = JTS.toGeometry(bounds, gfac);
}
geom.setUserData(bounds.getCoordinateReferenceSystem());
return geom;
}Example 49
| Project: hale-master File: SpatiaLiteSupportVersion4.java View source code |
/** * @see eu.esdihumboldt.hale.io.jdbc.spatialite.internal.AbstractSpatiaLiteSupport#getGeometryType(java.lang.Object) */ @Override protected Class<? extends Geometry> getGeometryType(Object type) { Integer geomType = Integer.class.cast(type); Class<? extends Geometry> geometryClass = null; int geomSelector = geomType % 1000; switch(geomSelector) { case 1: geometryClass = Point.class; break; case 2: geometryClass = LineString.class; break; case 3: geometryClass = Polygon.class; break; case 4: geometryClass = MultiPoint.class; break; case 5: geometryClass = MultiLineString.class; break; case 6: geometryClass = MultiPolygon.class; break; case 7: geometryClass = GeometryCollection.class; break; case 0: geometryClass = Geometry.class; break; default: // should never happen break; } return geometryClass; }
Example 50
| Project: InSpider-master File: GeneralizeWriter.java View source code |
@Override
public void run() {
logger.debug("starting");
try {
CopyManager copyManager = new CopyManager(connection);
StringBuilder queryBuilder = new StringBuilder("copy ");
queryBuilder.append(destination);
queryBuilder.append(" (");
for (int i = 0; i < columnNames.length; i++) {
if (i != 0) {
queryBuilder.append(", ");
}
queryBuilder.append(columnNames[i]);
}
if (columnNames.length > 0) {
queryBuilder.append(", ");
}
queryBuilder.append("geometry) from stdin csv");
CopyIn copyIn = copyManager.copyIn(queryBuilder.toString());
CopyInOutputStream outputStream = new CopyInOutputStream(copyIn);
Writer writer = new OutputStreamWriter(outputStream, "utf-8");
PrintWriter printWriter = new PrintWriter(writer);
logger.debug("database connection established");
long featureCounter = 0;
for (; ; ) {
Event event = eventQueue.take();
logger.debug("event received");
if (event instanceof GeometryResult) {
GeometryResult geometryResult = (GeometryResult) event;
Geometry geometry = geometryResult.getGeometry();
String[] columnValues = geometryResult.getColumnValues();
for (int i = 0; i < geometry.getNumGeometries(); i++) {
String wkt = wktWriter.write(geometry.getGeometryN(i));
org.postgis.Geometry pgGeometry = PGgeometry.geomFromString(wkt);
pgGeometry.setSrid(28992);
featureCounter++;
for (int j = 0; j < columnValues.length; j++) {
if (j != 0) {
printWriter.print(',');
}
String columnValue = columnValues[j];
if (columnValue != null) {
printWriter.print('"');
printWriter.print(columnValue);
printWriter.print('"');
}
}
if (columnValues.length > 0) {
printWriter.print(',');
}
printWriter.print('"');
printWriter.print(binaryWriter.writeHexed(pgGeometry));
printWriter.println('"');
}
semaphore.release();
logger.debug("geometry received (" + semaphore.availablePermits() + ")");
} else if (event instanceof Finalize) {
logger.debug("finalize event received");
break;
} else {
logger.debug("Unknown event type: " + event.getClass().getCanonicalName());
}
}
printWriter.close();
logger.debug("finished: " + featureCounter + " geometries written");
semaphore.release();
} catch (Exception e) {
logger.debug("couldn't write generalized geometrie", e);
}
}Example 51
| Project: ISDM-master File: JTSTools.java View source code |
/**
* Create a JTS Polygon form a GMLShape.
* @param shape
* The shape to convert.
* @return Polygon geometry.
* @throws ValidationException
*/
public static Geometry shapeToPolygon(GMLShape shape) throws ValidationException {
LineSequencer seq = new LineSequencer();
for (GMLDirectedEdge e : shape.getEdges()) {
Coordinate[] coord = new Coordinate[2];
coord[0] = nodeToCoordinate(e.getStartNode());
coord[1] = nodeToCoordinate(e.getEndNode());
if (coord[0].equals(coord[1])) {
throw new ValidationException(e.getEdge().getID(), "Zero length edge.");
}
seq.add(geomFactory.createLineString(coord));
}
try {
if (!seq.isSequenceable()) {
throw new ValidationException(shape.getID(), "Outline is not a single line.");
}
} catch (AssertionFailedException e) {
throw new ValidationException(shape.getID(), "Could not get outline: " + e.getMessage());
}
Geometry line = seq.getSequencedLineStrings();
CoordinateList coord = new CoordinateList(line.getCoordinates());
coord.closeRing();
// CHECKSTYLE:OFF:MagicNumber
if (coord.size() < 4) {
// CHECKSTYLE:ON:MagicNumber
throw new ValidationException(shape.getID(), "Degenerate Shape");
}
Geometry ring = geomFactory.createLinearRing(coord.toCoordinateArray());
return geomFactory.createPolygon((LinearRing) ring, null);
}Example 52
| Project: lod4wfs-master File: TestGeoTools.java View source code |
public static void main(String[] args) throws ParseException, NoSuchAuthorityCodeException, FactoryException, IOException, SchemaException, java.text.ParseException {
String wktGeometry = "POLYGON ((-61.6866679999999974 17.0244409999999995, -61.8872220000000013 17.1052740000000014, -61.7944490000000002 17.1633299999999984, -61.6866679999999974 17.0244409999999995)) POLYGON ((-61.7291719999999984 17.6086080000000003, -61.8530579999999972 17.5830540000000006, -61.8730619999999973 17.7038879999999992, -61.7291719999999984 17.6086080000000003))";
WKTReader wktR = new WKTReader();
Geometry geom = wktR.read(wktGeometry);
// write JTS to string
GMLWriter gmlW = new GMLWriter(true);
gmlW.setSrsName("<http://www.opengis.net/def/crs/EPSG/0/4326>");
String gml = gmlW.write(geom);
System.out.println(gml);
GeometryBuilder gb = new GeometryBuilder(gml);
WKTParser wktp = new WKTParser(gb);
wktp.parse(wktGeometry);
}Example 53
| Project: lodes-processor-master File: Blocks.java View source code |
public void load(File blockShapefile, Geometry boundary) throws IOException, FactoryException { System.out.println("loading " + blockShapefile.getName()); PreparedPolygon preparedBoundary = null; if (boundary != null) preparedBoundary = new PreparedPolygon((Polygonal) boundary); Map map = new HashMap(); map.put("url", blockShapefile.toURI().toURL()); DataStore dataStore = DataStoreFinder.getDataStore(map); SimpleFeatureSource featureSource = dataStore.getFeatureSource(dataStore.getTypeNames()[0]); SimpleFeatureType schema = featureSource.getSchema(); CoordinateReferenceSystem shpCRS = schema.getCoordinateReferenceSystem(); MathTransform transform = CRS.findMathTransform(shpCRS, wgsCRS, true); SimpleFeatureCollection collection = featureSource.getFeatures(); SimpleFeatureIterator iterator = collection.features(); Integer skippedFeatures = 0; Integer clipedFeatures = 0; try { while (iterator.hasNext()) { try { SimpleFeature feature = iterator.next(); String geoId = (String) feature.getAttribute("GEOID10"); Long areaLand = (Long) feature.getAttribute("ALAND10"); Long areaWater = (Long) feature.getAttribute("AWATER10"); Double percentLand = (double) (areaLand / (areaLand + areaWater)); Geometry geom = JTS.transform((Geometry) feature.getDefaultGeometry(), transform); Point centroid = geom.getCentroid(); if (preparedBoundary == null || (preparedBoundary.contains(centroid))) lodesBlocks.put(geoId, new IndicatorItem(geoId, geom, percentLand)); else clipedFeatures++; } catch (Exception e) { skippedFeatures++; System.out.println(e.toString()); continue; } } } finally { iterator.close(); } dataStore.dispose(); System.out.println("Features imported: " + lodesBlocks.size() + "(" + skippedFeatures + " skipped, " + clipedFeatures + " outside survey area)"); }
Example 54
| Project: magnificent-mileage-master File: GraphUtils.java View source code |
private static GeometryCollection geometryCollectionFromVertices(Graph graph) {
GeometryFactory gf = GeometryUtils.getGeometryFactory();
Collection<Vertex> vertices = graph.getVertices();
Geometry[] points = new Geometry[vertices.size()];
int i = 0;
for (Vertex v : vertices) {
points[i++] = gf.createPoint(v.getCoordinate());
}
GeometryCollection geometries = new GeometryCollection(points, gf);
return geometries;
}Example 55
| Project: MapStoreMobile-master File: GsonUtil.java View source code |
public static Gson createFeatureGson() {
Type resourceListType = new TypeToken<List<Resource>>() {
}.getType();
Type attributeListType = new TypeToken<List<Attribute>>() {
}.getType();
return new GsonBuilder().disableHtmlEscaping().registerTypeAdapter(// GeoStore compliant typeAdapter
resourceListType, new GeoStoreResourceTypeAdapter()).registerTypeAdapter(attributeListType, new GeoStoreAttributeTypeAdapter()).registerTypeHierarchyAdapter(// GeoJson serializer/deserializer
Geometry.class, new GeometryJsonSerializer()).registerTypeHierarchyAdapter(Geometry.class, new GeometryJsonDeserializer()).create();
}Example 56
| Project: occurrence-master File: ContainsUDF.java View source code |
public BooleanWritable evaluate(Text geometryAsWKT, Double latitude, Double longitude) {
isContained.set(false);
try {
// sanitize the input
if (geometryAsWKT == null || latitude == null || longitude == null || latitude > 90 || latitude < -90 || longitude > 180 || longitude < -180) {
return isContained;
}
String geoWKTStr = geometryAsWKT.toString();
Geometry geom = geometryCache.get(geoWKTStr);
if (geom == null) {
geom = wktReader.read(geoWKTStr);
geometryCache.put(geoWKTStr, geom);
}
// support any geometry - up to the user to make a sensible query
Geometry point = geometryFactory.createPoint(new Coordinate(longitude, latitude));
isContained.set(geom.contains(point));
} catch (ParseException e) {
LOG.error("Invalid geometry received: {}", geometryAsWKT.toString(), e);
} catch (Exception e) {
LOG.error("Error applying UDF", e);
}
return isContained;
}Example 57
| Project: olca-modules-master File: MultiGeometryTest.java View source code |
@Test
public void noIntersection() throws Exception {
String kml = Tests.getKml("multipolygon.kml");
KmlFeature feature = KmlFeature.parse(kml);
Geometry multi = feature.geometry;
Geometry noIntersect = Tests.createPolygon(COORDS_NO_INTERSECT);
double area = multi.intersection(noIntersect).getArea();
Assert.assertEquals(0d, area, 0d);
}Example 58
| Project: OpenTripPlanner-master File: ShapefileBoundaryResolver.java View source code |
@Override
public String resolve(double x, double y) {
System.out.println("x=" + x + ", y=" + y);
FeatureIterator<Feature> iterator = collection.features();
while (iterator.hasNext()) {
SimpleFeature feature = (SimpleFeature) iterator.next();
Geometry geom = (Geometry) feature.getDefaultGeometry();
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
Coordinate coord = new Coordinate(x, y);
Point point = geometryFactory.createPoint(coord);
//System.out.println("checking "+point.toString());
if (geom.contains(point)) {
return feature.getAttribute(this.nameField).toString();
}
}
return null;
}Example 59
| Project: Planner-master File: ShapefileBoundaryResolver.java View source code |
@Override
public String resolve(double x, double y) {
System.out.println("x=" + x + ", y=" + y);
FeatureIterator<Feature> iterator = collection.features();
while (iterator.hasNext()) {
SimpleFeature feature = (SimpleFeature) iterator.next();
Geometry geom = (Geometry) feature.getDefaultGeometry();
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
Coordinate coord = new Coordinate(x, y);
Point point = geometryFactory.createPoint(coord);
//System.out.println("checking "+point.toString());
if (geom.contains(point)) {
return feature.getAttribute(this.nameField).toString();
}
}
return null;
}Example 60
| Project: ps-framework-master File: GeoJSONEncoding.java View source code |
@Override
public <T> String encode(T object) throws EncodeException {
if (object instanceof Geometry) {
GeoJtsConverter converter = new GeoJtsConverter();
GeoObject geo = converter.fromJts((Geometry) object);
GeoJsonEncoder encoder = GeoJsonEncoder.create();
return encoder.encode(geo);
} else {
throw new EncodeException("Cannot encode " + object.getClass().getSimpleName() + " as GeoJSON");
}
}Example 61
| Project: spatial4j-master File: JtsBinaryCodecTest.java View source code |
Geometry randomGeometry(int points) {
//a circle
JtsSpatialContext ctx = (JtsSpatialContext) super.ctx;
GeometricShapeFactory gsf = new GeometricShapeFactory(ctx.getGeometryFactory());
gsf.setCentre(new Coordinate(0, 0));
//diameter
gsf.setSize(180);
gsf.setNumPoints(points);
return gsf.createCircle();
}Example 62
| Project: udig-community-master File: TargetLayerDissolveValidator.java View source code |
/**
* Check the target geometry compatibility for dissolve operation.
*
* @return
*/
@Override
public boolean validGeometryCompatible(ILayer sourceLayer) {
SimpleFeatureType sourceType = sourceLayer.getSchema();
GeometryDescriptor firstGeomAttr = sourceType.getGeometryDescriptor();
Class<? extends Geometry> sourceGeomClass = (Class<? extends Geometry>) firstGeomAttr.getType().getBinding();
Class<? extends Geometry> targetGeomClass = null;
if (targetLayer != null) {
SimpleFeatureType targetType = targetLayer.getSchema();
GeometryDescriptor secondGeomAttr = targetType.getGeometryDescriptor();
targetGeomClass = (Class<? extends Geometry>) secondGeomAttr.getType().getBinding();
} else {
targetGeomClass = this.targetGeometryClass;
}
if (targetGeomClass.equals(Geometry.class)) {
return true;
}
if ((sourceGeomClass.equals(Polygon.class) || sourceGeomClass.equals(MultiPolygon.class)) && (!targetGeomClass.equals(Polygon.class) && !targetGeomClass.equals(MultiPolygon.class))) {
return false;
}
if ((sourceGeomClass.equals(LineString.class) || sourceGeomClass.equals(MultiLineString.class)) && (!targetGeomClass.equals(LineString.class) && !targetGeomClass.equals(MultiLineString.class))) {
return false;
}
if ((sourceGeomClass.equals(Point.class) || sourceGeomClass.equals(MultiPoint.class)) && (!targetGeomClass.equals(Point.class) && !targetGeomClass.equals(MultiPoint.class))) {
return false;
}
return true;
}Example 63
| Project: vtm-master File: JtsLayer.java View source code |
protected void addPolygon(Task t, Geometry g, MeshBucket ml, LineBucket ll) {
mGeom.clear();
mGeom.startPolygon();
CoordinatePath p = CoordinatePath.create(g);
if (mMinX > 0 || mMinY > 0)
p.generalize(mMinX, mMinY);
if (transformPath(t.position, mGeom, p) < 3)
return;
if (!mClipper.clip(mGeom))
return;
mSimpVW.simplify(mGeom, 0.1f);
mSimpDP.simplify(mGeom, 0.5f);
ll.addLine(mGeom);
ml.addMesh(mGeom);
}Example 64
| Project: ddf-catalog-master File: GeometryAdapter.java View source code |
public static GeometryElement marshalFrom(Attribute attribute) throws CatalogTransformerException {
GeometryElement element = new GeometryElement();
element.setName(attribute.getName());
if (attribute.getValue() != null) {
for (Serializable value : attribute.getValues()) {
if (!(value instanceof String)) {
continue;
}
String wkt = (String) value;
WKTReader wktReader = new WKTReader(geometryFactory);
Geometry jtsGeometry = null;
try {
jtsGeometry = wktReader.read(wkt);
} catch (ParseException e) {
throw new CatalogTransformerException("Could not transform Metacard to XML. Invalid WKT.", e);
}
JTSToGML311GeometryConverter converter = new JTSToGML311GeometryConverter();
@SuppressWarnings("unchecked") JAXBElement<AbstractGeometryType> gmlElement = (JAXBElement<AbstractGeometryType>) converter.createElement(jtsGeometry);
GeometryElement.Value geoValue = new GeometryElement.Value();
geoValue.setGeometry(gmlElement);
((GeometryElement) element).getValue().add(geoValue);
}
}
return element;
}Example 65
| Project: GoFleetLSServer-master File: GeoUtil.java View source code |
public static com.vividsolutions.jts.geom.Geometry getGeometry(PositionType position) { Geometry g = null; if (position.getPoint() != null) { if (position.getPoint().getCoord() != null && position.getPoint().getCoord().getX() != null) { g = geomFact.createPoint(new Coordinate(position.getPoint().getCoord().getX().doubleValue(), position.getPoint().getCoord().getY().doubleValue())); } else if (position.getPoint().getPos() != null && position.getPoint().getPos().getValue() != null && position.getPoint().getPos().getValue().size() == 2) { g = geomFact.createPoint(new Coordinate(position.getPoint().getPos().getValue().get(0), position.getPoint().getPos().getValue().get(1))); } } else if (position.getPolygon() != null) { PolygonType polygon = position.getPolygon(); List<LinearRing> interiorRings = new LinkedList<LinearRing>(); polygon.getInterior(); // TODO LinearRing[] holes = interiorRings.toArray(new LinearRing[] {}); List<Coordinate> coordinateList = new LinkedList<Coordinate>(); AbstractRingPropertyType exterior = polygon.getExterior().getValue(); LinearRingType ring = (LinearRingType) exterior.getRing().getValue(); for (CoordType coord : ring.getCoord()) { coordinateList.add(new Coordinate(coord.getX().doubleValue(), coord.getY().doubleValue())); } Coordinate[] coordinates = coordinateList.toArray(new Coordinate[] {}); LinearRing shell = geomFact.createLinearRing(coordinates); g = geomFact.createPolygon(shell, holes); } return g; }
Example 66
| Project: Mason-master File: GeoToolsImporter.java View source code |
public static void read(final URL input, GeomVectorField field, final Bag masked) throws FileNotFoundException {
try {
Map<String, Serializable> connectParameters = new HashMap<String, Serializable>();
connectParameters.put("url", input);
DataStore dataStore = DataStoreFinder.getDataStore(connectParameters);
// we are now connected
String[] typeNames = dataStore.getTypeNames();
String typeName = typeNames[0];
FeatureSource<SimpleFeatureType, SimpleFeature> featureSource;
FeatureCollection<SimpleFeatureType, SimpleFeature> collection;
FeatureIterator<SimpleFeature> iterator;
featureSource = dataStore.getFeatureSource(typeName);
collection = featureSource.getFeatures();
iterator = collection.features();
try {
while (iterator.hasNext()) {
SimpleFeature feature = iterator.next();
Geometry geometry = (Geometry) feature.getDefaultGeometry();
MasonGeometry mg = new MasonGeometry(geometry);
mg.addAttributes(readAttributes(feature, masked));
field.addGeometry(mg);
}
} finally {
if (iterator != null) {
iterator.close();
}
}
} catch (Exception e) {
System.out.println("Exception in GeoToolsImportor::ingest:");
e.printStackTrace();
}
}Example 67
| Project: cassandra-lucene-index-master File: GeospatialUtilsJTS.java View source code |
/**
* Returns the {@link JtsGeometry} represented by the specified WKT text.
*
* @param context the JTS spatial context
* @param string the WKT text
* @return the parsed geometry
*/
public static JtsGeometry geometryFromWKT(JtsSpatialContext context, String string) {
if (StringUtils.isBlank(string)) {
throw new IndexException("Shape shouldn't be blank");
}
try {
GeometryFactory geometryFactory = context.getGeometryFactory();
WKTReader reader = new WKTReader(geometryFactory);
Geometry geometry = reader.read(string);
return context.makeShape(geometry);
} catch (ParseExceptionIllegalArgumentException | e) {
throw new IndexException(e, "Shape '%s' is not parseable", string);
}
}Example 68
| Project: cids-custom-switchon-master File: NamedAreaIconFactory.java View source code |
@Override
public Icon getLeafObjectNodeIcon(final ObjectTreeNode otn) {
try {
final CidsBean bean = otn.getMetaObject().getBean();
final Geometry geom = (Geometry) bean.getProperty("area.geo_field");
final Envelope env = geom.getEnvelopeInternal();
final double scale = Math.min(16 / env.getWidth(), 16 / env.getHeight());
final double xoff = 0 - (scale * env.getMinX());
final double yoff = env.getMaxY() * scale;
final AffineTransform at = new AffineTransform(scale, 0, 0, -scale, xoff, yoff);
final LiteShape shape = new LiteShape(geom, at, false);
final int dw = (int) Math.ceil(geom.getEnvelopeInternal().getWidth() * scale);
final int dh = (int) Math.ceil(geom.getEnvelopeInternal().getHeight() * scale);
final BufferedImage biShape = new BufferedImage(dw, dh, BufferedImage.TYPE_INT_ARGB);
final Graphics2D g2dShape = (Graphics2D) biShape.getGraphics();
final Paint paint = new Color(153, 153, 255);
g2dShape.setPaint(paint);
g2dShape.fill(shape);
g2dShape.setPaint(Color.BLACK);
g2dShape.draw(shape);
final BufferedImage bi = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
final Graphics2D g2d = (Graphics2D) bi.getGraphics();
final int x = (bi.getWidth() - biShape.getWidth()) / 2;
final int y = (bi.getHeight() - biShape.getHeight()) / 2;
g2d.drawImage(biShape, x, y, null);
return new ImageIcon(bi);
} catch (final Exception e) {
LOG.error("cannot create catchment area icon", e);
return null;
}
}Example 69
| Project: constellation-master File: CrsAdjustFilterVisitor.java View source code |
@Override
public Object visit(final Literal expression, final Object extraData) {
Object obj = expression.getValue();
try {
if (obj instanceof BoundingBox) {
BoundingBox bbox = (BoundingBox) obj;
if (CRS.equalsIgnoreMetadata(bbox.getCoordinateReferenceSystem(), baseCrs)) {
final Envelope e = CRS.transform(bbox, replacementCrs);
final BoundingBox rbbox = new DefaultBoundingBox(replacementCrs);
rbbox.setBounds(new DefaultBoundingBox(e));
obj = rbbox;
}
} else if (obj instanceof Geometry) {
Geometry geo = (Geometry) obj;
geo = (Geometry) geo.clone();
final CoordinateReferenceSystem geoCrs = JTS.findCoordinateReferenceSystem(geo);
if (geoCrs == null) {
JTS.setCRS(geo, replacementCrs);
} else if (CRS.equalsIgnoreMetadata(geoCrs, baseCrs)) {
geo = JTS.transform(geo, CRS.findMathTransform(baseCrs, replacementCrs));
JTS.setCRS(geo, replacementCrs);
}
obj = geo;
}
} catch (FactoryExceptionTransformException | ex) {
Logging.getLogger("org.constellation.wfs.ws").log(Level.SEVERE, null, ex);
}
return getFactory(extraData).literal(obj);
}Example 70
| Project: DBSCAN4LBSN-master File: PrecisionReducerCoordinateOperation.java View source code |
public Coordinate[] edit(Coordinate[] coordinates, Geometry geom) {
if (coordinates.length == 0)
return null;
Coordinate[] reducedCoords = new Coordinate[coordinates.length];
// copy coordinates and reduce
for (int i = 0; i < coordinates.length; i++) {
Coordinate coord = new Coordinate(coordinates[i]);
targetPM.makePrecise(coord);
reducedCoords[i] = coord;
}
// remove repeated points, to simplify returned geometry as much as possible
CoordinateList noRepeatedCoordList = new CoordinateList(reducedCoords, false);
Coordinate[] noRepeatedCoords = noRepeatedCoordList.toCoordinateArray();
/**
* Check to see if the removal of repeated points collapsed the coordinate
* List to an invalid length for the type of the parent geometry. It is not
* necessary to check for Point collapses, since the coordinate list can
* never collapse to less than one point. If the length is invalid, return
* the full-length coordinate array first computed, or null if collapses are
* being removed. (This may create an invalid geometry - the client must
* handle this.)
*/
int minLength = 0;
if (geom instanceof LineString)
minLength = 2;
if (geom instanceof LinearRing)
minLength = 4;
Coordinate[] collapsedCoords = reducedCoords;
if (removeCollapsed)
collapsedCoords = null;
// return null or orginal length coordinate array
if (noRepeatedCoords.length < minLength) {
return collapsedCoords;
}
// ok to return shorter coordinate array
return noRepeatedCoords;
}Example 71
| Project: ecdr-master File: MultiPolygon.java View source code |
@Override
public Map toJsonMap() {
Map map = new HashMap();
if (TYPE.equals(getGeometry().getGeometryType())) {
map.put(TYPE_KEY, TYPE);
List<List> listOfPolygons = new ArrayList<List>();
for (int i = 0; i < getGeometry().getNumGeometries(); i++) {
List polygon = buildJsonPolygon((com.vividsolutions.jts.geom.Polygon) getGeometry().getGeometryN(i));
listOfPolygons.add(polygon);
}
map.put(COORDINATES_KEY, listOfPolygons);
} else {
throw new UnsupportedOperationException("Geometry is not a " + TYPE);
}
return map;
}Example 72
| Project: eMonocot-master File: LocationTest.java View source code |
/**
*
*/
@Test
public final void testCompareGeography() throws Exception {
List<Geometry> list = new ArrayList<Geometry>();
list.add(Location.EUROPE.getEnvelope());
list.add(Location.AFRICA.getEnvelope());
list.add(Location.CHINA.getEnvelope());
list.add(Location.MACARONESIA.getEnvelope());
list.add(Location.EASTERN_CANADA.getEnvelope());
list.add(Location.FRA.getEnvelope());
list.add(Location.ABT.getEnvelope());
list.add(Location.GRB.getEnvelope());
list.add(Location.IRE.getEnvelope());
list.add(Location.ALG.getEnvelope());
GeometryCollection geometryCollection = new GeometryCollection(list.toArray(new Geometry[list.size()]), new GeometryFactory());
Coordinate[] envelope = geometryCollection.getEnvelope().getCoordinates();
for (Coordinate c : envelope) {
logger.debug(Math.round(c.x) + " " + Math.round(c.y));
}
}Example 73
| Project: gazetteer-master File: GeometryUtils.java View source code |
public static Geometry parseGeometry(JSONObject geom) {
if (geom != null) {
String type = geom.optString("type").toLowerCase();
JSONArray coords = geom.getJSONArray("coordinates");
switch(type) {
case "point":
return factory.createPoint(new Coordinate(coords.getDouble(0), coords.getDouble(1)));
case "linestring":
return getLineStringGeometry(coords);
case "polygon":
return getPolygonGeometry(coords);
case "multipolygon":
return getMultiPolygonGeometry(coords);
}
}
return null;
}Example 74
| Project: geostore-master File: XMultiPolygonAdapter.java View source code |
/*
* (non-Javadoc) @see javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal(java.lang.Object)
*/
@Override
public MultiPolygon unmarshal(String val) throws ParseException {
WKTReader wktReader = new WKTReader();
Geometry the_geom = wktReader.read(val);
if (the_geom.getSRID() == 0) {
the_geom.setSRID(4326);
}
try {
return (MultiPolygon) the_geom;
} catch (ClassCastException e) {
throw new ParseException("WKT val is a " + the_geom.getClass().getName());
}
}Example 75
| Project: gvnix-master File: QuerydslUtilsBeanGeoImpl.java View source code |
@Override
public <T> BooleanBuilder createPredicateByAnd(PathBuilder<T> entity, Map<String, Object> searchArgs) {
BooleanBuilder predicate = super.createPredicateByAnd(entity, searchArgs);
if (searchArgs == null || searchArgs.isEmpty()) {
return predicate;
}
// Build the predicate
for (Entry<String, Object> entry : searchArgs.entrySet()) {
String key = entry.getKey();
// searchArgs can contain dtt_bbox attribute
if (key.equals(DatatablesUtilsBeanGeoImpl.BOUNDING_BOX_PARAM)) {
// Getting bbox to Search
String bBoxToSearch = ((String[]) entry.getValue())[0];
Geometry bBoxGeometry = null;
try {
bBoxGeometry = getConversionService().convert(bBoxToSearch, Geometry.class);
} catch (Exception e) {
try {
bBoxGeometry = getConversionService().convert(String.format("POLYGON((%s))", bBoxToSearch), Geometry.class);
} catch (Exception e1) {
throw new RuntimeException(String.format("Error getting map Bounding Box on QuerydslUtils from string: '%s'", bBoxToSearch), e);
}
}
// Getting fields to filter using bbox
if (searchArgs.get(DatatablesUtilsBeanGeoImpl.BOUNDING_BOX_FIELDS_PARAM) != null && bBoxGeometry != null) {
String bBoxFields = ((String[]) searchArgs.get(DatatablesUtilsBeanGeoImpl.BOUNDING_BOX_FIELDS_PARAM))[0];
String[] separatedFields = StringUtils.split(bBoxFields, ",");
for (String field : separatedFields) {
predicate.or(createIntersectsExpression(entity, field, bBoxGeometry));
}
}
}
}
return predicate;
}Example 76
| Project: h2gis-master File: SpatialResultSetImpl.java View source code |
@Override public Geometry getGeometry(int columnIndex) throws SQLException { Object field = getObject(columnIndex); if (field == null) { return (Geometry) field; } if (field instanceof Geometry) { return (Geometry) field; } else { throw new SQLException("The column " + getMetaData().getColumnName(columnIndex) + " is not a Geometry"); } }
Example 77
| Project: jgrasstools-master File: TestVectorTransformer.java View source code |
public void testVectorTransformer() throws Exception {
SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder();
b.setName("test");
b.setCRS(DefaultGeographicCRS.WGS84);
b.add("the_geom", Point.class);
b.add("id", Integer.class);
DefaultFeatureCollection newCollection = new DefaultFeatureCollection();
SimpleFeatureType type = b.buildFeatureType();
SimpleFeatureBuilder builder = new SimpleFeatureBuilder(type);
Point point = GeometryUtilities.gf().createPoint(new Coordinate(0, 0));
Object[] values = new Object[] { point, 1 };
builder.addAll(values);
SimpleFeature feature = builder.buildFeature(type.getTypeName() + ".0");
newCollection.add(feature);
OmsVectorTransformer transformer = new OmsVectorTransformer();
transformer.inVector = newCollection;
transformer.pTransX = 1.0;
transformer.pTransY = -1.0;
transformer.process();
SimpleFeatureCollection outFeatures = transformer.outVector;
Geometry g = FeatureUtilities.featureCollectionToGeometriesList(outFeatures, false, null).get(0);
Coordinate coord = g.getCoordinate();
assertEquals(coord.x, 1.0, 0.00001);
assertEquals(coord.y, -1.0, 0.00001);
}Example 78
| Project: josm-conflation-plugin-master File: SymDiffMatcher.java View source code |
/** * The score is a linear function of the symmetric difference: 1 if the shapes perfectly * overlap; 0 if the shapes do not overlap at all. * @param target the feature to match * @param candidate the feature to compare with the target * @return candidates with a score greater than 0 (typically all the candidates). */ public double match(Geometry target, Geometry candidate) { Geometry targetGeom = (Geometry) target.clone(); Geometry candidateGeom = (Geometry) candidate.clone(); if (targetGeom.isEmpty() || candidateGeom.isEmpty()) { //avoid div by 0 in centre-of-mass calc [Jon Aquino] return 0; } return MatcherUtil.toScoreFromSymDiffArea(targetGeom.getArea(), candidateGeom.getArea(), targetGeom.symDifference(candidateGeom).getArea()); }
Example 79
| Project: mapfish-print-master File: AbstractFeatureSourceLayerPlugin.java View source code |
@Override
public Style load(final MfClientHttpRequestFactory requestFactory, final FeatureSource featureSource) {
if (featureSource == null) {
throw new IllegalArgumentException("Feature source cannot be null");
}
String geomType = Geometry.class.getSimpleName().toLowerCase();
if (featureSource.getSchema() != null) {
geomType = featureSource.getSchema().getGeometryDescriptor().getType().getBinding().getSimpleName();
}
String styleRef = styleString;
if (styleRef == null) {
styleRef = geomType;
}
final StyleParser styleParser = AbstractFeatureSourceLayerPlugin.this.parser;
return template.getStyle(styleRef).or(styleParser.loadStyle(template.getConfiguration(), requestFactory, styleRef)).or(template.getConfiguration().getDefaultStyle(geomType));
}Example 80
| Project: mobilitytestbed-master File: InterpolableTimeKmlItemBuilder.java View source code |
@Override
public KmlItem buildKmlItem() throws SQLException {
logger.info("Preparing visualizations: " + this.getClass().getSimpleName());
TimeKmlItem kmlItem;
if (interpolated)
kmlItem = getInterpolatedTimeKmlItem();
else
kmlItem = getNonInterpolatedTimeKmlItem();
String sql = "SELECT " + " * FROM " + schemaName + "." + tableName + " " + whereClause + " ORDER BY from_time";
ResultSet resultSet = connection.executeQueryWithFetchSize(sql, 10000);
while (resultSet.next()) {
String id = getRecordId(resultSet);
Geometry geom = getGeometry(resultSet, "geom");
Timestamp timestamp = resultSet.getTimestamp("from_time");
kmlItem.addTimeGeometry(id, convertJTSCoordinatesToKmlCoordinates(geom.getCoordinates()), timestamp.getTime(), descriptionFactory.createDescription(resultSet));
}
//logger.info(this.getClass().getSimpleName()+" finishes building.");
return kmlItem;
}Example 81
| Project: onebusaway-application-modules-master File: BoundingBoxController.java View source code |
@RequestMapping()
public ModelAndView index() {
GeometryFactory gf = new GeometryFactory();
List<Polygon> polygons = new ArrayList<Polygon>();
Map<String, CoordinateBounds> agencies = _agencyService.getAgencyIdsAndCoverageAreas();
for (CoordinateBounds cb : agencies.values()) {
Envelope e = new Envelope(cb.getMinLon(), cb.getMaxLon(), cb.getMinLat(), cb.getMaxLat());
Polygon p = (Polygon) gf.toGeometry(e);
polygons.add(p);
}
MultiPolygon mp = gf.createMultiPolygon(polygons.toArray(new Polygon[0]));
Geometry hull = mp.convexHull();
Envelope env = hull.getEnvelopeInternal();
ModelAndView mv = new ModelAndView("bounding-box.jspx");
mv.addObject("minY", env.getMinY());
mv.addObject("minX", env.getMinX());
mv.addObject("maxY", env.getMaxY());
mv.addObject("maxX", env.getMaxX());
mv.addObject("hullWKT", hull.toText());
return mv;
}Example 82
| Project: OSM2World-master File: CAGUtil.java View source code |
/**
* takes a polygon outline, "subtracts" a collection of other polygon outlines,
* and returns a collection of polygons that covers the difference area.
*
* The result polygons should cover the area that was
* within the original polygon (excluding its holes),
* but not within a subtracted polygon.
*
* @return
* polygons without self-intersections, but maybe with holes
*/
public static final Collection<PolygonWithHolesXZ> subtractPolygons(SimplePolygonXZ basePolygon, List<? extends SimplePolygonXZ> subtractPolygons) {
List<Geometry> remainingGeometry = Collections.singletonList((Geometry) polygonXZToJTSPolygon(basePolygon));
for (SimplePolygonXZ subtractPolygon : subtractPolygons) {
Polygon jtsSubtractPolygon = polygonXZToJTSPolygon(subtractPolygon);
if (!jtsSubtractPolygon.isValid())
continue;
List<Geometry> newRemainingGeometry = new ArrayList<Geometry>(1);
for (Geometry g : remainingGeometry) {
Geometry newG = g.difference(jtsSubtractPolygon);
if (newG instanceof GeometryCollection) {
for (int i = 0; i < ((GeometryCollection) newG).getNumGeometries(); i++) {
newRemainingGeometry.add(((GeometryCollection) newG).getGeometryN(i));
}
} else {
newRemainingGeometry.add(newG);
}
}
remainingGeometry = newRemainingGeometry;
}
Collection<PolygonWithHolesXZ> result = new ArrayList<PolygonWithHolesXZ>();
for (Geometry g : remainingGeometry) {
result.addAll(polygonsXZFromJTSGeometry(g));
}
return result;
}Example 83
| Project: snap-desktop-master File: CorrelativeFieldSelectorTest.java View source code |
@Test
public void testUpdatePointDataSource() throws Exception {
final BindingContext bindingContext = new BindingContext();
bindingContext.getPropertySet().addProperties(Property.create("pointDataSource", VectorDataNode.class));
bindingContext.getPropertySet().addProperties(Property.create("dataField", AttributeDescriptor.class));
final CorrelativeFieldSelector correlativeFieldSelector = new CorrelativeFieldSelector(bindingContext);
final Product product = new Product("name", "type", 10, 10);
product.getVectorDataGroup().add(new VectorDataNode("a", createFeatureType(Geometry.class)));
product.getVectorDataGroup().add(new VectorDataNode("b", createFeatureType(Point.class)));
assertEquals(0, correlativeFieldSelector.pointDataSourceList.getItemCount());
assertEquals(0, correlativeFieldSelector.dataFieldList.getItemCount());
correlativeFieldSelector.updatePointDataSource(product);
assertEquals(3, correlativeFieldSelector.pointDataSourceList.getItemCount());
assertEquals(0, correlativeFieldSelector.dataFieldList.getItemCount());
correlativeFieldSelector.pointDataSourceProperty.setValue(product.getVectorDataGroup().get("b"));
assertEquals(3, correlativeFieldSelector.dataFieldList.getItemCount());
}Example 84
| Project: SOS-master File: OmObservationTest.java View source code |
@Test
public final void should_have_SpatialFilteringProfileParameter() throws OwsExceptionReport {
OmObservation omObservation = new OmObservation();
NamedValue<Geometry> namedValue = new NamedValue<Geometry>();
namedValue.setName(new ReferenceType(OmConstants.PARAM_NAME_SAMPLING_GEOMETRY));
namedValue.setValue(new GeometryValue(JTSHelper.createGeometryFromWKT("POINT (34.5 76.4)", Constants.EPSG_WGS84)));
// test no parameter is set
assertFalse(omObservation.isSetParameter());
assertFalse(omObservation.isSetSpatialFilteringProfileParameter());
omObservation.addParameter(namedValue);
// test with set SpatialFilteringProfile parameter
assertTrue(omObservation.isSetParameter());
assertTrue(omObservation.isSetSpatialFilteringProfileParameter());
assertThat(omObservation.getSpatialFilteringProfileParameter(), is(equalTo(namedValue)));
}Example 85
| Project: sql-layer-master File: GeoWKT.java View source code |
@Override
protected void doEvaluate(TExecutionContext context, LazyList<? extends ValueSource> inputs, ValueTarget output) {
String wkt = inputs.get(0).getString();
WKTReader reader = (WKTReader) context.preptimeObjectAt(READER_CONTEXT_POS);
try {
Geometry geometry = reader.read(wkt);
output.putObject(geometry);
} catch (ParseException e) {
throw new InvalidSpatialObjectException(e.getMessage());
}
}Example 86
| Project: street-master File: ElementGeometry.java View source code |
private LatLon findCenterPoint() {
try {
Geometry geom = JTSConst.toGeometry(this);
if (!geom.isValid())
return null;
if (geom instanceof Polygonal) {
return JTSConst.toLatLon(geom.getInteriorPoint());
} else if (geom instanceof Lineal) {
LengthIndexedLine lil = new LengthIndexedLine(geom);
return JTSConst.toLatLon(lil.extractPoint(geom.getLength() / 2.0));
}
} catch (IllegalArgumentException e) {
return null;
}
return null;
}Example 87
| Project: StreetComplete-master File: ElementGeometry.java View source code |
private LatLon findCenterPoint() {
try {
Geometry geom = JTSConst.toGeometry(this);
if (!geom.isValid())
return null;
if (geom instanceof Polygonal) {
return JTSConst.toLatLon(geom.getInteriorPoint());
} else if (geom instanceof Lineal) {
LengthIndexedLine lil = new LengthIndexedLine(geom);
return JTSConst.toLatLon(lil.extractPoint(geom.getLength() / 2.0));
}
} catch (IllegalArgumentException e) {
return null;
}
return null;
}Example 88
| Project: wheelmap-android-master File: SmallestSurroundingRectangle.java View source code |
public static Polygon get(Geometry geom, GeometryFactory gf) { Geometry hull_ = (new ConvexHull(geom)).getConvexHull(); if (!(hull_ instanceof Polygon)) return null; Polygon convHull = (Polygon) hull_; Coordinate c = geom.getCentroid().getCoordinate(); Coordinate[] coords = convHull.getExteriorRing().getCoordinates(); double minArea = Double.MAX_VALUE, minAngle = 0.0; Polygon ssr = null; Coordinate ci = coords[0], cii; for (int i = 0; i < coords.length - 1; i++) { cii = coords[i + 1]; double angle = Math.atan2(cii.y - ci.y, cii.x - ci.x); Polygon rect = (Polygon) Rotation.get(convHull, c, -1.0 * angle, gf).getEnvelope(); double area = rect.getArea(); if (area < minArea) { minArea = area; ssr = rect; minAngle = angle; } ci = cii; } return Rotation.get(ssr, c, minAngle, gf); }
Example 89
| Project: WPS-master File: GTBinZippedWKT64Parser.java View source code |
/**
* @throws RuntimeException
* if an error occurs while writing the stream to disk or
* unzipping the written file
* @see org.n52.wps.io.IParser#parse(java.io.InputStream)
*/
@Override
public GTVectorDataBinding parse(InputStream stream, String mimeType, String schema) {
try {
String fileName = "tempfile" + UUID.randomUUID() + ".zip";
String tmpDirPath = System.getProperty("java.io.tmpdir");
File tempFile = new File(tmpDirPath + File.separatorChar + fileName);
// mark tempFile for final delete
finalizeFiles.add(tempFile);
try {
FileOutputStream outputStream = new FileOutputStream(tempFile);
byte buf[] = new byte[4096];
int len;
while ((len = stream.read(buf)) > 0) {
outputStream.write(buf, 0, len);
}
outputStream.close();
stream.close();
} catch (FileNotFoundException e) {
System.gc();
LOGGER.error(e.getMessage(), e);
throw new RuntimeException(e);
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
System.gc();
throw new RuntimeException(e);
}
// mark for final delete
finalizeFiles.add(tempFile);
stream.close();
List<File> wktFiles = IOUtils.unzip(tempFile, "wkt");
// mark for final delete
finalizeFiles.addAll(wktFiles);
if (wktFiles == null || wktFiles.size() == 0) {
throw new RuntimeException("Cannot find a shapefile inside the zipped file.");
}
//set namespace namespace
List<Geometry> geometries = new ArrayList<Geometry>();
//please not that only 1 geometry is returned. If multiple geometries are included, perhaps use the read(String wktstring) method
for (int i = 0; i < wktFiles.size(); i++) {
File wktFile = wktFiles.get(i);
Reader fileReader = new FileReader(wktFile);
WKTReader2 wktReader = new WKTReader2();
com.vividsolutions.jts.geom.Geometry geometry = wktReader.read(fileReader);
geometries.add(geometry);
}
CoordinateReferenceSystem coordinateReferenceSystem = CRS.decode("EPSG:4326");
SimpleFeatureCollection inputFeatureCollection = createFeatureCollection(geometries, coordinateReferenceSystem);
return new GTVectorDataBinding(inputFeatureCollection);
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
throw new RuntimeException("An error has occurred while accessing provided data", e);
} catch (ParseException e) {
LOGGER.error(e.getMessage(), e);
throw new RuntimeException("An error has occurred while accessing provided data", e);
} catch (NoSuchAuthorityCodeException e) {
LOGGER.error(e.getMessage(), e);
throw new RuntimeException("An error has occurred while accessing provided data", e);
} catch (FactoryException e) {
LOGGER.error(e.getMessage(), e);
throw new RuntimeException("An error has occurred while accessing provided data", e);
}
}Example 90
| Project: geolatte-common-master File: EntityClassReaderTest.java View source code |
@Test
public void NoShapeDoubleShapeTest() {
PointSequence points = PointCollectionFactory.create(new double[] { 8, 9, 9, 10, 10, 11 }, DimensionalFlag.d2D, CrsId.UNDEFINED);
LineString shape2 = new LineString(points);
points = PointCollectionFactory.create(new double[] { 5, 6, 6, 7, 7, 8 }, DimensionalFlag.d2D, CrsId.UNDEFINED);
LineString shape = new LineString(points);
Object noShape = new TestFeatureNoShape("Antwerpen", 128, new String[] { "Belgium", "Flanders" }, 5, "sub", "subsub");
Object doubleShape = new TestFeatureDoubleShape("Antwerpen", 128, new String[] { "Belgium", "Flanders" }, shape, 5, shape2, "sub");
reader = EntityClassReader.getClassReaderFor(noShape.getClass());
try {
Geometry test = reader.getGeometry(noShape);
Assert.assertNull(test);
} catch (InvalidObjectReaderException e) {
Assert.fail("No Exception should be thrown when no one geometry is present");
}
reader = EntityClassReader.getClassReaderFor(doubleShape.getClass());
try {
Geometry geom = reader.getGeometry(doubleShape);
Assert.assertTrue(geom == shape2 || geom == shape);
} catch (InvalidObjectReaderException e) {
Assert.fail("No Exception should be thrown when more than one geometry is present");
}
}Example 91
| Project: archive-ddf-spatial-master File: GmlGeometryConverter.java View source code |
@Override
public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {
Geometry geometry = (Geometry) value;
GMLWriter gmlWriter = new GMLWriter();
String gmlXml = gmlWriter.write(geometry);
// Copy the GML XML into the writer
XmlPullParser parser = null;
try {
parser = XppFactory.createDefaultParser();
new HierarchicalStreamCopier().copy(new XppReader(new StringReader(gmlXml), parser), writer);
} catch (XmlPullParserException e) {
LOGGER.warn(ERROR_SERIALIZING_MSG, e);
}
}Example 92
| Project: DataHubSystem-master File: NominatimGeocoderTest.java View source code |
/**
* Test the getBoundariesWKT() operation of the NominatimGeocoder.
* The test consists in a call with "france" as search query that shall
* contains paris, noumea, and shall not contains berlin.
* @throws ParseException
*/
@Test
public void getBoundariesWKTFrance() throws ParseException {
XmlDocument document = getDocument("france.xml");
String wkt_france = this.geocoder.computeWKT(document);
Assert.assertNotNull(wkt_france, "France geometry not found.");
document = getDocument("paris.xml");
String wkt_paris = this.geocoder.computeWKT(document);
Assert.assertNotNull(wkt_paris, "Paris geometry not found.");
WKTReader reader = new WKTReader();
Geometry france = reader.read(wkt_france);
Geometry paris = reader.read(wkt_paris);
// Test paris place is inside "France"
Assert.assertTrue(france.contains(paris), "Paris geometry is not inside france");
// Check Noumea france territory in also inside france
document = getDocument("noumea.xml");
String wkt_noumea = this.geocoder.computeWKT(document);
Assert.assertNotNull(wkt_noumea, "Nouméa geometry not found.");
Geometry noumea = reader.read(wkt_noumea);
Assert.assertTrue(france.contains(noumea), "Nouméa geometry is not inside france");
// Check berlin is outside france
document = getDocument("berlin.xml");
String wkt_berlin = this.geocoder.computeWKT(document);
Assert.assertNotNull(wkt_berlin, "Berlin geometry not found.");
Geometry berlin = reader.read(wkt_berlin);
Assert.assertFalse(france.contains(berlin), "Berlin geometry is found inside france");
}Example 93
| Project: deegree-securityproxy-master File: GeometryRetrieverImpl.java View source code |
private Geometry retrieveGeometryForLayer(List<GeometryFilterInfo> geometryFilterInfos, String layerName) throws ParseException {
for (GeometryFilterInfo wcsGeometryFilterInfo : geometryFilterInfos) {
if (layerName.equals(wcsGeometryFilterInfo.getLayerName())) {
String geometryString = wcsGeometryFilterInfo.getGeometryString();
if (geometryString != null)
return parseGeometry(geometryString);
}
}
return null;
}Example 94
| Project: elassandra-master File: MultiLineStringBuilder.java View source code |
@Override
public Shape build() {
final Geometry geometry;
if (wrapdateline) {
ArrayList<LineString> parts = new ArrayList<>();
for (BaseLineStringBuilder<?> line : lines) {
BaseLineStringBuilder.decompose(FACTORY, line.coordinates(false), parts);
}
if (parts.size() == 1) {
geometry = parts.get(0);
} else {
LineString[] lineStrings = parts.toArray(new LineString[parts.size()]);
geometry = FACTORY.createMultiLineString(lineStrings);
}
} else {
LineString[] lineStrings = new LineString[lines.size()];
Iterator<BaseLineStringBuilder<?>> iterator = lines.iterator();
for (int i = 0; iterator.hasNext(); i++) {
lineStrings[i] = FACTORY.createLineString(iterator.next().coordinates(false));
}
geometry = FACTORY.createMultiLineString(lineStrings);
}
return jtsGeometry(geometry);
}Example 95
| Project: elasticgeo-master File: ElasticFeatureTypeBuilder.java View source code |
@Override
public SimpleFeatureType buildFeatureType() {
if (attributes != null) {
String defaultGeometryName = null;
for (ElasticAttribute attribute : attributes) {
if (attribute.isUse()) {
final String attributeName;
if (attribute.getUseShortName()) {
attributeName = attribute.getShortName();
} else {
attributeName = attribute.getName();
}
AttributeDescriptor att = null;
if (Geometry.class.isAssignableFrom(attribute.getType())) {
final Integer srid = attribute.getSrid();
try {
if (srid != null) {
attributeBuilder.setCRS(CRS.decode("EPSG:" + srid));
attributeBuilder.setName(attributeName);
attributeBuilder.setBinding(attribute.getType());
att = attributeBuilder.buildDescriptor(attributeName, attributeBuilder.buildGeometryType());
final ElasticGeometryType geometryType = attribute.getGeometryType();
att.getUserData().put(GEOMETRY_TYPE, geometryType);
if (attribute.isDefaultGeometry() != null && attribute.isDefaultGeometry()) {
defaultGeometryName = attributeName;
}
}
} catch (Exception e) {
String msg = "Error occured determing srid for " + attribute.getName();
LOGGER.log(Level.WARNING, msg, e);
}
} else {
attributeBuilder.setName(attributeName);
attributeBuilder.setBinding(attribute.getType());
att = attributeBuilder.buildDescriptor(attributeName, attributeBuilder.buildType());
}
if (att != null && attribute.getDateFormat() != null) {
att.getUserData().put(DATE_FORMAT, attribute.getDateFormat());
}
if (att != null) {
att.getUserData().put(FULL_NAME, attribute.getName());
att.getUserData().put(ANALYZED, attribute.getAnalyzed());
att.getUserData().put(NESTED, attribute.isNested());
add(att);
}
}
}
if (defaultGeometryName != null) {
setDefaultGeometry(defaultGeometryName);
}
}
return super.buildFeatureType();
}Example 96
| Project: elasticsearch-master File: MultiLineStringBuilder.java View source code |
@Override
public Shape build() {
final Geometry geometry;
if (wrapdateline) {
ArrayList<LineString> parts = new ArrayList<>();
for (LineStringBuilder line : lines) {
LineStringBuilder.decompose(FACTORY, line.coordinates(false), parts);
}
if (parts.size() == 1) {
geometry = parts.get(0);
} else {
LineString[] lineStrings = parts.toArray(new LineString[parts.size()]);
geometry = FACTORY.createMultiLineString(lineStrings);
}
} else {
LineString[] lineStrings = new LineString[lines.size()];
Iterator<LineStringBuilder> iterator = lines.iterator();
for (int i = 0; iterator.hasNext(); i++) {
lineStrings[i] = FACTORY.createLineString(iterator.next().coordinates(false));
}
geometry = FACTORY.createMultiLineString(lineStrings);
}
return jtsGeometry(geometry);
}Example 97
| Project: geosummly-master File: GeoJSONReader.java View source code |
/**
* Decode a geojson file for the sampling state
*/
public ArrayList<BoundingBox> decodeForSampling(String file) throws IOException, JSONException {
MfGeoFactory mfFactory = new MfGeoFactory() {
public MfFeature createFeature(String id, MfGeometry geometry, JSONObject properties) {
return new SamplingFeatureTemplate(id, geometry, properties);
}
};
MfGeoJSONReader reader = new MfGeoJSONReader(mfFactory);
ArrayList<BoundingBox> data = new ArrayList<BoundingBox>();
File f = new File(file);
InputStream in = new FileInputStream(f);
String str = IOUtils.toString(in);
in.close();
//decode geojson file given as a String
MfGeo result = reader.decode(str);
MfFeatureCollection collection = (MfFeatureCollection) result;
//all the geojson features
ArrayList<MfFeature> coll = (ArrayList<MfFeature>) collection.getCollection();
SamplingFeatureTemplate feature;
MfGeometry featureGeometry;
Geometry jts;
Polygon polygon;
double north;
double east;
double south;
double west;
BoundingBox b;
for (MfFeature mf : coll) {
feature = (SamplingFeatureTemplate) mf;
//get the feature geometry
featureGeometry = feature.getMfGeometry();
jts = featureGeometry.getInternalGeometry();
//feature geometry is a polygon
polygon = (Polygon) jts;
//get the bbox coordinates
north = polygon.getExteriorRing().getPointN(0).getCoordinate().y;
east = polygon.getExteriorRing().getPointN(1).getCoordinate().x;
south = polygon.getExteriorRing().getPointN(2).getCoordinate().y;
west = polygon.getExteriorRing().getPointN(3).getCoordinate().x;
b = new BoundingBox(north, east, south, west);
data.add(b);
}
//Set the matrix indices
//First row and col indices are equal to 1
int size = (int) Math.sqrt(data.size());
int i = 1;
int j = 1;
for (BoundingBox box : data) {
box.setRow(i);
box.setColumn(j);
j++;
if (//row complete, continue with the next row
j > size) {
i++;
j = 1;
}
}
return data;
}Example 98
| Project: geowebcache-master File: RasterMaskTestUtils.java View source code |
public static GeometryRasterMaskBuilder buildSampleFilterMatrix(final TileLayer layer, final String gridsetId, final int maxMaskLevel) throws Exception {
final Geometry entries[] = createSampleEntries();
final GridSubset gridSubset = layer.getGridSubset(layer.getGridSubsets().iterator().next());
final int[] metaTilingFactors = layer.getMetaTilingFactors();
GeometryRasterMaskBuilder matrix = new GeometryRasterMaskBuilder(gridSubset, metaTilingFactors, maxMaskLevel);
try {
for (Geometry geom : entries) {
matrix.setMasksForGeometry(geom);
}
} finally {
matrix.disposeGraphics();
}
logImages(new File("target"), matrix);
return matrix;
}Example 99
| Project: gt-jdbc-monetdb-master File: MonetDBFilterToSQL.java View source code |
@Override
protected void visitLiteralGeometry(Literal expression) throws IOException {
// evaluate the literal and store it for later
Geometry geom = (Geometry) evaluateLiteral(expression, Geometry.class);
if (geom instanceof LinearRing) {
//postgis does not handle linear rings, convert to just a line string
geom = geom.getFactory().createLineString(((LinearRing) geom).getCoordinateSequence());
}
out.write("GeomFromText('");
out.write(geom.toText());
if (currentSRID == null && currentGeometry != null) {
// if we don't know at all, use the srid of the geometry we're comparing against
// (much slower since that has to be extracted record by record as opposed to
// being a constant)
out.write("', SRID(\"" + currentGeometry.getLocalName() + "\"))");
} else {
out.write("', " + currentSRID + ")");
}
}Example 100
| Project: hibernate-demos-master File: SpatialDemo.java View source code |
@SuppressWarnings("unchecked")
public List<Project> getProjects(String wktFilter) throws Exception {
final Session s = openSession();
s.getTransaction().begin();
final Geometry filter = wktToGeometry(wktFilter);
final Query query = s.createQuery("FROM Project p WHERE WITHIN(p.location, :filter) = TRUE");
query.setParameter("filter", filter);
final List<Project> projects = query.list();
s.getTransaction().commit();
s.close();
return projects;
}Example 101
| Project: jai-ext-master File: VectorBinarizeRIF.java View source code |
/**
* Creates a new instance of VectorBinarizeOpImage in the rendered layer.
*
* @param paramBlock parameter block with parameters minx, miny, width height, geometry and coordtype
*
* @param renderHints optional rendering hints which may be used to pass an {@code ImageLayout} object containing a {@code SampleModel} to use
* when creating destination tiles
*/
public RenderedImage create(ParameterBlock paramBlock, RenderingHints renderHints) {
int minx = paramBlock.getIntParameter(VectorBinarizeDescriptor.MINX_ARG);
int miny = paramBlock.getIntParameter(VectorBinarizeDescriptor.MINY_ARG);
int width = paramBlock.getIntParameter(VectorBinarizeDescriptor.WIDTH_ARG);
int height = paramBlock.getIntParameter(VectorBinarizeDescriptor.HEIGHT_ARG);
Object obj = paramBlock.getObjectParameter(VectorBinarizeDescriptor.GEOM_ARG);
PreparedGeometry pg = null;
if (obj instanceof Polygonal) {
// defensively copy the input Geometry
Geometry g = (Geometry) ((Geometry) obj).clone();
pg = PreparedGeometryFactory.prepare(g);
} else if (obj instanceof PreparedGeometry) {
pg = (PreparedGeometry) obj;
} else {
throw new IllegalArgumentException("The geometry must be a JTS polygon or multipolygon");
}
// get the tile size from the image layout
Dimension tileSize = null;
if (renderHints != null && renderHints.containsKey(JAI.KEY_IMAGE_LAYOUT)) {
ImageLayout il = (ImageLayout) renderHints.get(JAI.KEY_IMAGE_LAYOUT);
if (il != null) {
tileSize = new Dimension(il.getTileWidth(null), il.getTileHeight(null));
}
}
if (tileSize == null) {
tileSize = JAI.getDefaultTileSize();
}
// sample model wise we only build bw images
SampleModel sm = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, tileSize.width, tileSize.height, 1);
boolean antiAliasing = VectorBinarizeOpImage.DEFAULT_ANTIALIASING;
Object antiAlias = paramBlock.getObjectParameter(VectorBinarizeDescriptor.ANTIALIASING_ARG);
if (antiAlias != null && antiAlias instanceof Boolean) {
antiAliasing = ((Boolean) antiAlias).booleanValue();
}
return new VectorBinarizeOpImage(sm, renderHints, minx, miny, width, height, pg, antiAliasing);
}