rdf4j-postgis  Version 0.1.0.0
LiteralUtils Class Reference

Static Public Member Functions

static Geometry toGeometry (final org.opengis.geometry.Envelope envelope)
 
static Geometry toGeometry (final Envelope envelope)
 
static Geometry toGeometry (final Envelope2D envelope)
 
static Geometry toGeometry (final OctagonalEnvelope envelope)
 
static Geometry toGeometry (final Rectangle envelope)
 
static Geometry createGeometry (Coordinate[] coordinates, String geomtype, Integer srid)
 
static Geometry createGeometryCollection (List< Geometry > geometries, String geomtype, Integer srid)
 
static Geometry createGeometryCollection (Geometry[] geometries, String geomtype, Integer srid)
 
static Geometry createGeometry (List< Coordinate > coordarray, String geomtype, Integer srid)
 
static Geometry transform (Geometry sourcegeom, Geometry targetgeom)
 
static Double maxRasterValue (GridCoverage raster, Integer bandnum)
 
static Double arithmeticMeanRasterValue (GridCoverage raster, Integer bandnum)
 
static Double minRasterValue (GridCoverage raster, Integer bandnum)
 
static Boolean containsRasterValue (GridCoverage raster, Integer bandnum, Double value)
 
static Coordinate worldToRaster (GridCoverage raster, Double latitude, Double longitude) throws MismatchedDimensionException, TransformException
 
static GridCoverage cropRaster2 (GridCoverage raster, Double width, Double height, Double x, Double y) throws MismatchedDimensionException, TransformException
 

Member Function Documentation

◆ arithmeticMeanRasterValue()

static Double arithmeticMeanRasterValue ( GridCoverage  raster,
Integer  bandnum 
)
static
216  {
217  RenderedImage rendered=raster.render(null);
218  Double sum=0.,counter=0.;
219  for(int i=0;i<rendered.getSampleModel().getWidth();i++) {
220  for(int j=0;j<rendered.getSampleModel().getHeight();j++) {
221  sum+=(double) rendered.getData().getSample(i, j, bandnum);
222  counter++;
223  }
224  }
225  System.out.println("MeanRasterVal: "+(sum/counter));
226  return (sum/counter);
227  }

◆ containsRasterValue()

static Boolean containsRasterValue ( GridCoverage  raster,
Integer  bandnum,
Double  value 
)
static
244  {
245  RenderedImage rendered=raster.render(null);
246  for(int i=0;i<rendered.getSampleModel().getWidth();i++) {
247  for(int j=0;j<rendered.getSampleModel().getHeight();j++) {
248  if(rendered.getData().getSample(i, j, bandnum)==value) {
249  return true;
250  }
251  }
252  }
253  return false;
254  }

◆ createGeometry() [1/2]

static Geometry createGeometry ( Coordinate[]  coordinates,
String  geomtype,
Integer  srid 
)
static
117  {
118  GeometryFactory fac=new GeometryFactory();
119  Geometry geom;
120  switch(geomtype) {
121  case "Point":
122  geom= fac.createPoint(coordinates[0]);
123  geom.setSRID(srid);
124  return geom;
125  case "MultiPoint":
126  geom=fac.createMultiPointFromCoords(coordinates);
127  geom.setSRID(srid);
128  return geom;
129  case "LineString":
130  geom= fac.createLineString(coordinates);
131  geom.setSRID(srid);
132  return geom;
133  case "Polygon":
134  geom= fac.createPolygon(coordinates);
135  geom.setSRID(srid);
136  return geom;
137  case "MultiLineString":
138  List<LineString> list=new LinkedList<LineString>();
139  list.add(fac.createLineString(coordinates));
140  geom= fac.createMultiLineString(list.toArray(new LineString[0]));
141  geom.setSRID(srid);
142  return geom;
143  case "MultiPolygon":
144  List<Polygon> plist=new LinkedList<Polygon>();
145  plist.add(fac.createPolygon(coordinates));
146  geom= fac.createMultiPolygon(plist.toArray(new Polygon[0]));
147  geom.setSRID(srid);
148  return geom;
149  default:
150  return null;
151  }
152  }

Referenced by GeomCollFromText.construct(), GeomFromGeoHash.construct(), LineFromText.construct(), LineFromWKB.construct(), Polygon.construct(), LiteralUtils.createGeometry(), FlipCoordinates.operation(), Force2D.operation(), Force3D.operation(), Force3DM.operation(), Force4D.operation(), Multi.operation(), ShiftLongitude.operation(), LineSelfIntersectionPoint.operation(), LineFromMultiPoint.operation(), Dissolve.operation(), LineMerge.operation(), ForcePolygonCCW.operation(), ForcePolygonCW.operation(), GeoHashDatatype.read(), ShortestLine.relation(), AddZ.relation(), EnsureClosed.relation(), RemoveRepeatedPoints.relation(), MultiplyZ.relation(), SwapOrdinates.relation(), LongestLine.relation(), ShortestLine3D.relation(), AddPoint.relation(), SetEndPoint.relation(), SetStartPoint.relation(), SetPoint.relation(), RemovePoint.relation(), and LiteralUtils.transform().

◆ createGeometry() [2/2]

static Geometry createGeometry ( List< Coordinate >  coordarray,
String  geomtype,
Integer  srid 
)
static
163  {
164  return createGeometry(coordarray.toArray(new Coordinate[0]), geomtype,srid);
165  }
static Geometry createGeometry(Coordinate[] coordinates, String geomtype, Integer srid)
Definition: LiteralUtils.java:117

References LiteralUtils.createGeometry().

◆ createGeometryCollection() [1/2]

static Geometry createGeometryCollection ( Geometry[]  geometries,
String  geomtype,
Integer  srid 
)
static
158  {
159  GeometryFactory fac=new GeometryFactory();
160  return fac.createGeometryCollection(geometries);
161  }

◆ createGeometryCollection() [2/2]

static Geometry createGeometryCollection ( List< Geometry >  geometries,
String  geomtype,
Integer  srid 
)
static
154  {
155  return createGeometryCollection(geometries.toArray(new Geometry[0]), geomtype, srid);
156  }
static Geometry createGeometryCollection(List< Geometry > geometries, String geomtype, Integer srid)
Definition: LiteralUtils.java:154

Referenced by SharedPaths.relation().

◆ cropRaster2()

static GridCoverage cropRaster2 ( GridCoverage  raster,
Double  width,
Double  height,
Double  x,
Double  y 
) throws MismatchedDimensionException, TransformException
static
267  {
268  Coordinate coord=worldToRaster(raster, x, y);
269  Coordinate coord2=worldToRaster(raster, x+width, y+height);
270  Double xx=coord.getX();
271  Double yy=coord.getY();
272  xx=Double.valueOf(xx.intValue())-1;
273  yy=Double.valueOf(yy.intValue())-1;
274  Double widthh=coord2.getX()-x;
275  Double heightt=coord2.getY()-y;
276  if(widthh==0)
277  widthh=1.;
278  if(heightt==0)
279  heightt=1.;
280  RenderedImage rendered = raster.render(null);
281  ParameterBlock pbSubtracted = new ParameterBlock();
282  pbSubtracted.addSource(rendered);
283  pbSubtracted.add(xx.floatValue());
284  pbSubtracted.add(yy.floatValue());
285  pbSubtracted.add(widthh.floatValue());
286  pbSubtracted.add(heightt.floatValue());
287 
288  System.out.println(rendered.getMinX()+" "+rendered.getMinY());
289  System.out.println(rendered.getWidth()+" "+rendered.getHeight());
290  System.out.println(xx+" "+yy+" "+widthh+" "+heightt);
291  RenderedOp subtractedImage = JAI.create("crop",pbSubtracted);
292  final SampleDimension sd =raster.getSampleDimensions().get(0);
293  List<SampleDimension>sds=new LinkedList<SampleDimension>();
294  sds.add(sd);
295  GridExtent extent=new GridExtent(subtractedImage.getWidth(), subtractedImage.getHeight());
296  GridGeometry gridgeom=new GridGeometry(extent, PixelInCell.CELL_CENTER, raster.getGridGeometry().getGridToCRS(PixelInCell.CELL_CENTER), raster.getCoordinateReferenceSystem());
297  List<SampleDimension> dimensions=new LinkedList<SampleDimension>();
298  DefaultNameFactory fac=new DefaultNameFactory();
299  for(int i=0;i<subtractedImage.getNumBands();i++) {
300  dimensions.add(new SampleDimension(fac.createGenericName(null, "Dimension "+i),0.,new LinkedList<Category>()));
301  }
302  BufferedGridCoverage coverage=new BufferedGridCoverage(
303  gridgeom, dimensions, subtractedImage.getData().getDataBuffer());
304  return coverage;
305  }
static Coordinate worldToRaster(GridCoverage raster, Double latitude, Double longitude)
Definition: LiteralUtils.java:256

References LiteralUtils.worldToRaster().

◆ maxRasterValue()

static Double maxRasterValue ( GridCoverage  raster,
Integer  bandnum 
)
static
202  {
203  RenderedImage rendered=raster.render(null);
204  Double maxVal=Double.MIN_VALUE;
205  for(int i=0;i<rendered.getSampleModel().getWidth();i++) {
206  for(int j=0;j<rendered.getSampleModel().getHeight();j++) {
207  if(rendered.getData().getSample(i, j, bandnum)>maxVal) {
208  maxVal=(double) rendered.getData().getSample(i, j, bandnum);
209  }
210  }
211  }
212  System.out.println("MaxRasterVal: "+maxVal);
213  return maxVal;
214  }

◆ minRasterValue()

static Double minRasterValue ( GridCoverage  raster,
Integer  bandnum 
)
static
229  {
230  RenderedImage rendered=raster.render(null);
231  Double maxVal=Double.MAX_VALUE;
232  for(int i=0;i<rendered.getSampleModel().getWidth();i++) {
233  for(int j=0;j<rendered.getSampleModel().getHeight();j++) {
234  if(rendered.getData().getSample(i, j, bandnum)<maxVal) {
235  maxVal=(double) rendered.getData().getSample(i, j, bandnum);
236  }
237  }
238  }
239  System.out.println("MinRasterVal: "+maxVal);
240  return maxVal;
241  }

◆ toGeometry() [1/5]

static Geometry toGeometry ( final Envelope  envelope)
static
54  {
55  GeometryFactory gf = new GeometryFactory();
56  return gf.createPolygon(gf.createLinearRing(
57  new Coordinate[]{
58  new Coordinate(envelope.getMinX(), envelope.getMinY()),
59  new Coordinate(envelope.getMaxX(), envelope.getMinY()),
60  new Coordinate(envelope.getMaxX(), envelope.getMaxY()),
61  new Coordinate(envelope.getMinX(), envelope.getMaxY()),
62  new Coordinate(envelope.getMinX(), envelope.getMinY())
63  }), null);
64  }

◆ toGeometry() [2/5]

static Geometry toGeometry ( final Envelope2D  envelope)
static
66  {
67  GeometryFactory gf = new GeometryFactory();
68  return gf.createPolygon(gf.createLinearRing(
69  new Coordinate[]{
70  new Coordinate(envelope.getMinX(), envelope.getMinY()),
71  new Coordinate(envelope.getMaxX(), envelope.getMinY()),
72  new Coordinate(envelope.getMaxX(), envelope.getMaxY()),
73  new Coordinate(envelope.getMinX(), envelope.getMaxY()),
74  new Coordinate(envelope.getMinX(), envelope.getMinY())
75  }), null);
76  }

◆ toGeometry() [3/5]

static Geometry toGeometry ( final OctagonalEnvelope  envelope)
static
78  {
79  GeometryFactory gf = new GeometryFactory();
80  return gf.createPolygon(gf.createLinearRing(
81  new Coordinate[]{
82  new Coordinate(envelope.getMinX(), envelope.getMinY()),
83  new Coordinate(envelope.getMaxX(), envelope.getMinY()),
84  new Coordinate(envelope.getMaxX(), envelope.getMaxY()),
85  new Coordinate(envelope.getMinX(), envelope.getMaxY()),
86  new Coordinate(envelope.getMinX(), envelope.getMinY())
87  }), null);
88  }

◆ toGeometry() [4/5]

static Geometry toGeometry ( final org.opengis.geometry.Envelope  envelope)
static
41  {
42 
43  GeometryFactory gf = new GeometryFactory();
44  return gf.createPolygon(gf.createLinearRing(
45  new Coordinate[]{
46  new Coordinate(envelope.getLowerCorner().getDirectPosition().getCoordinate()[0], envelope.getLowerCorner().getDirectPosition().getCoordinate()[1]),
47  new Coordinate(envelope.getUpperCorner().getDirectPosition().getCoordinate()[0], envelope.getLowerCorner().getDirectPosition().getCoordinate()[1]),
48  new Coordinate(envelope.getUpperCorner().getDirectPosition().getCoordinate()[0], envelope.getUpperCorner().getDirectPosition().getCoordinate()[1]),
49  new Coordinate(envelope.getLowerCorner().getDirectPosition().getCoordinate()[0], envelope.getLowerCorner().getDirectPosition().getCoordinate()[1]),
50  new Coordinate(envelope.getLowerCorner().getDirectPosition().getCoordinate()[0], envelope.getLowerCorner().getDirectPosition().getCoordinate()[1])
51  }), null);
52  }

Referenced by OctagonalEnvelope.operation(), MakeBox2D.relation(), MakeBox3D.relation(), Expand.relation(), Contains.relation(), ContainsProperly.relation(), CoveredBy.relation(), Crosses.relation(), Disjoint.relation(), Equals.relation(), Intersection.relation(), Intersects.relation(), Overlaps.relation(), Touches.relation(), Within.relation(), and DWithin.relation().

◆ toGeometry() [5/5]

static Geometry toGeometry ( final Rectangle  envelope)
static
104  {
105  GeometryFactory gf = new GeometryFactory();
106  return gf.createPolygon(gf.createLinearRing(
107  new Coordinate[]{
108  new Coordinate(envelope.getMinX(), envelope.getMinY()),
109  new Coordinate(envelope.getMaxX(), envelope.getMinY()),
110  new Coordinate(envelope.getMaxX(), envelope.getMaxY()),
111  new Coordinate(envelope.getMinX(), envelope.getMaxY()),
112  new Coordinate(envelope.getMinX(), envelope.getMinY())
113  }), null);
114  }

◆ transform()

static Geometry transform ( Geometry  sourcegeom,
Geometry  targetgeom 
)
static
167  {
168  if(sourcegeom.getSRID()!=targetgeom.getSRID()) {
169  CoordinateReferenceSystem source;
170  if(sourcegeom.getSRID()==targetgeom.getSRID()) {
171  return sourcegeom;
172  }
173  try {
174  source = CRS.forCode("EPSG:"+sourcegeom.getSRID());
175  CoordinateReferenceSystem target = CRS.forCode("EPSG:"+targetgeom.getSRID()); // WGS 84 / World Mercator
176  CoordinateOperation operation = CRS.findOperation(source, target, null);
177  if (CRS.getLinearAccuracy(operation) > 100) {
178  // If the accuracy is coarser than 100 metres (or any other threshold at application choice)
179  // maybe the operation is not suitable. Decide here what to do (throw an exception, etc).
180  }
181  MathTransform mt = operation.getMathTransform();
182  List<Coordinate> coords=new LinkedList<Coordinate>();
183  for(Coordinate coord:targetgeom.getCoordinates()) {
184  DirectPosition resposition = new DirectPosition2D(20, 30); // 20°N 30°E (watch out axis order!)
185  mt.transform(new DirectPosition2D(coord.getY(),coord.getY()), resposition);
186  coords.add(new Coordinate(resposition.getCoordinate()[1],resposition.getCoordinate()[0]));
187  }
188  return LiteralUtils.createGeometry(coords, targetgeom.getGeometryType(), targetgeom.getSRID());
189 
190  } catch (FactoryException | MismatchedDimensionException | TransformException e) {
191  // TODO Auto-generated catch block
192  e.printStackTrace();
193  return null;
194  }
195  }else {
196  return sourcegeom;
197  }
198 
199 
200  }

References LiteralUtils.createGeometry().

Referenced by GeometricBinaryFunction.evaluate(), GeometricDoubleModifierIntegerFunction.evaluate(), GeometricModifierFunction.evaluate(), GeometricModifierGeometryIntegerFunction.evaluate(), GeometricRelationBinaryFunction.evaluate(), GeometricRelationDoubleBinaryFunction.evaluate(), GeometricRelationDoubleDoubleFunction.evaluate(), GeometricRelationDoubleFunction.evaluate(), GeometricRelationIntegerBinaryFunction.evaluate(), GeometricRelationIntegerFunction.evaluate(), GeometricRelationModifierFunction.evaluate(), GeometricRelationStringFunction.evaluate(), FullyWithinDistance.getMaxDistance(), BBOXDistance.relation(), BBOXEquals.relation(), BBOXIntersects.relation(), BBOXIsContainedBy.relation(), Distance3D.relation(), ShortestLine.relation(), WithinDistance3D.relation(), BBOXContains.relation(), BBOXLeftOf.relation(), BBOXOverlapsAbove.relation(), BBOXOverlapsBelow.relation(), BBOXOverlapsLeft.relation(), BBOXOverlapsRight.relation(), BBOXRightOf.relation(), BBOXAbove.relation(), BBOXBelow.relation(), Difference3D.relation(), BBOXFPIntersects.relation(), MaxDistance.relation(), OrderingEquals.relation(), ShortestLine3D.relation(), and SharedPaths.relation().

◆ worldToRaster()

static Coordinate worldToRaster ( GridCoverage  raster,
Double  latitude,
Double  longitude 
) throws MismatchedDimensionException, TransformException
static
256  {
257  GridGeometry gg2D = raster.getGridGeometry();
258  MathTransform gridToCRS = gg2D.getGridToCRS(PixelInCell.CELL_CENTER);
259  MathTransform crsToGrid = gridToCRS.inverse();
260  DirectPosition realPos=new DirectPosition2D(latitude, longitude);
261  DirectPosition gridPos = new DirectPosition2D();
262  DirectPosition res=crsToGrid.transform(realPos, gridPos);
263  Coordinate coord=new Coordinate(res.getCoordinate()[0],res.getCoordinate()[1]);
264  return coord;
265  }

Referenced by LiteralUtils.cropRaster2().