Hi Mike, That's good to hear. I'll add that code to the VectorToRasterProcess class to deal with point data.
Thanks for being a guinea pig :) Michael On 13 April 2011 11:23, Mike O'Toole <[email protected]> wrote: > Hi Michael, > > Thank you for your help. I was able to use your code snippet. Worked great > for what I needed. Gave very good incite on the VectorToRasterProcess magic! > > Mike > > On Apr 5, 2011, at 4:43 AM, Michael Bedward wrote: > >> Hi Mike, >> >> I've just tried your code (slightly modified). The problem is a bug in >> VectorToRasterProcess. >> >> I'm not sure it's had much use with point features - other folk have >> used it for polygons and lines so you may be forging a new path :) I >> haven't worked out what the problem is but there is definitely a >> problem. However, I'm afraid I won't be able to get to it for some >> time. >> >> Meanwhile, if you don't mind getting your hands dirty with some JAI >> code you could rasterize your points as in the snippet below. If you >> try it, let me know how it goes. >> >> Michael >> >> >> GridCoverageFactory gcf = >> CoverageFactoryFinder.getGridCoverageFactory(null); >> WritableRaster raster = >> RasterFactory.createBandedRaster(DataBuffer.TYPE_FLOAT, numCols, >> numRows, 1, new java.awt.Point(0, 0)); >> GridCoverage2D cov = gcf.create("mycov", raster, new >> ReferencedEnvelope(minx, maxx, miny, maxy, crs)); >> >> GridGeometry2D gg = cov.getGridGeometry(); >> SimpleFeatureIterator iter = collection.features(); >> >> try { >> while (iter.hasNext()) { >> SimpleFeature feature = iter.next(); >> Geometry p = (Geometry) feature.getDefaultGeometry(); >> Float value = (Float) feature.getAttribute("value"); >> >> Coordinate pcoord = p.getCoordinate(); >> DirectPosition pos = new DirectPosition2D(pcoord.x, pcoord.y); >> >> GridCoordinates2D gc = gg.worldToGrid(pos); >> raster.setSample(gc.x, gc.y, 0, value); >> } >> } finally { >> iter.close(); >> } >> >> >> Michael >> >> On 2 April 2011 12:17, Mike O'Toole <[email protected]> wrote: >>> Thank You Michael. >>> >>> That solved my problem perfectly. I'm now having an issue with the evaluate >>> returning 0.0 every time. The following is a simplified version of my code. >>> I have a latitude, longitude, and value for points that I'm creating a >>> feature collection with. I then use the VectorToRasterProcess to create my >>> GridCoverage. I've read through all the documentation and can't seem to >>> figure out what I'm missing. Again pointing me in the right direction is >>> greatly appreciated. >>> >>> -Mike >>> >>> // Setup CRS >>> Hints hints = new Hints( Hints.CRS, DefaultEngineeringCRS.CARTESIAN_2D ); >>> GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( >>> hints ); >>> >>> SimpleFeatureType TYPE = >>> DataUtilities.createType("location","geom:Point,value:Float"); >>> >>> SimpleFeatureCollection collection = >>> FeatureCollections.newCollection("ExampleSetFeatureCollection"); >>> >>> // Loop and add features >>> Coordinate coord1 = new Coordinate( currentLat, currentLon); >>> Point point1 = geometryFactory.createPoint( coord1 ); >>> SimpleFeature feature = SimpleFeatureBuilder.build( TYPE, new Object[]{ >>> point1, currentDoubleValue.floatValue() }, null ); >>> collection.add( feature ); >>> >>> // Setup for process >>> ProgressListener progress = new ProgressWindow(null); >>> Dimension gridDim = new Dimension(1000,1000); >>> >>> GridCoverage2D gridCoverage = VectorToRasterProcess.process( >>> collection, >>> "value", >>> gridDim, >>> collection.getBounds(), >>> "ExampleSetGridCoverage", >>> progress); >>> >>> // Create point with known location from my raw data. >>> DirectPosition point = new >>> DirectPosition2D(DefaultEngineeringCRS.CARTESIAN_2D, 38.969614330552, >>> -121.512359247084); >>> float[] value = (float[]) gridCoverage.evaluate(point); >>> >>> // This shows the point to be 0.0 no matter the location I give it. >>> System.out.println("Known Point: Lat:38.969614330552 Lon:-121.512359247084 >>> value:" + value[0]); >>> >>> >>> On Mar 29, 2011, at 11:12 PM, Michael Bedward wrote: >>> >>>> Hi Mike, >>>> >>>> It's just Java's typing being a bit painful. A DirectPosition2D >>>> object is a Point2D object with geospatial extras. >>>> >>>> What I usually do use DirectPosition references instead which avoids >>>> the ambiguity... >>>> >>>> DirectPosition pos = new DirectPosition2D(myCRS, x, y); >>>> dest = cov.evaluate(pos, dest); >>>> >>>> The only hassle with this is that you can no longer say pos.x and >>>> pos.y. Instead you have to say pos.getOrdinate(0) and >>>> pos.getOrdinate(1) which is clunky. >>>> >>>> The other option of course is to explicitly cast... >>>> >>>> DirectPosition2D pos = new DirectPosition2D(myCRS, x, y); >>>> dest = cov.evaluate( (DirectPosition2D)pos, dest); >>>> >>>> Your mission is to decide which of these is the least worst :) >>>> >>>> Hope that helps, >>>> >>>> Michael >>>> >>>> >>>> On 30 March 2011 15:38, Mike O'Toole <[email protected]> wrote: >>>>> Hello all, >>>>> I'm brand new to GeoTools. I'm trying to use the evaluate() method on my >>>>> GridCoverge2D object. However I get a reference to evaluate is ambiguous >>>>> error. >>>>> Error: >>>>> reference to evaluate is ambiguous, both method >>>>> evaluate(org.opengis.geometry.DirectPosition,double[]) in >>>>> org.geotools.coverage.AbstractCoverage and method >>>>> evaluate(java.awt.geom.Point2D,double[]) in >>>>> org.geotools.coverage.grid.GridCoverage2D match >>>>> >>>>> Here is the code snippet: >>>>> DirectPosition2D nextPoint = new DirectPosition2D(sphericalMercator, x, >>>>> y); >>>>> >>>>> double[] dest = gridCoverage.evaluate(nextPoint, dest); >>>>> >>>>> Any help pointing me in the right direction is greatly appreciated and let >>>>> me know if more information is needed. >>>>> Thank You, >>>>> Mike >>>>> ------------------------------------------------------------------------------ >>>>> Enable your software for Intel(R) Active Management Technology to meet the >>>>> growing manageability and security demands of your customers. Businesses >>>>> are taking advantage of Intel(R) vPro (TM) technology - will your software >>>>> be a part of the solution? Download the Intel(R) Manageability Checker >>>>> today! http://p.sf.net/sfu/intel-dev2devmar >>>>> _______________________________________________ >>>>> Geotools-gt2-users mailing list >>>>> [email protected] >>>>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users >>>>> >>>>> >>> >>> > > ------------------------------------------------------------------------------ Forrester Wave Report - Recovery time is now measured in hours and minutes not days. Key insights are discussed in the 2010 Forrester Wave Report as part of an in-depth evaluation of disaster recovery service providers. Forrester found the best-in-class provider in terms of services and vision. Read this report now! http://p.sf.net/sfu/ibm-webcastpromo _______________________________________________ Geotools-gt2-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
