NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi BillI thought about your suggestion below but I couldn't proceed without any example. So if you have an example please send me a snippet. Most of the field variables associated with unionSet are package protected so it's not simple to play with ranges. I shifted my data for now untill I figure out some other way. Also I post part of my code below.. Please all send me any comment/suggestions you might have.. This code display precipitation data covering North America but it has a global base map to goes with it. As you see in the code, I use BufferedImage.subimage method to get North America out of global image. Why do I do this? ..because given a global base map, I couldn't get a sub region using available methods of BaseMapAdapter or ShapefileAdapter classes. With 4 months of visad exploration this is all I have :-)
thanks nihat //setting tuple propertiesCoordinateSystem cs = RealTupleType.LatitudeLongitudeTuple.getCoordinateSystem();
latitude = RealType.getRealType(yLabel); longitude = RealType.getRealType(xLabel);RealTupleType domainTuple = new RealTupleType(RealType.Longitude,RealType.Latitude,cs,null);
//domainSet is created for the data to be displayed. latlon holds lat/lon of data grids visad.Set domainSet = new Gridded2DSet((RealTupleType)domainTuple,latlon,nlon,nlat);
FunctionType contourFunction = new FunctionType(domainTuple,contourField); FunctionType shadedFunction = new FunctionType(domainTuple,shadedField); FlatField contourFlatField = new FlatField(contourFunction,domainSet); contourFlatField.setSamples(dataField); FlatField shadedFlatField = new FlatField(shadedFunction,domainSet); shadedFlatField.setSamples(contourFlatField.getFloats(false)); //use either a shapefile or a McIDAS file for map..//ShapefileAdapter bma = new ShapefileAdapter("/xstor1/ShapeFiles/World/world.shp"); //ShapefileAdapter bma = new ShapefileAdapter("/xstor1/ShapeFiles/World/admin98/admin98.shp");
BaseMapAdapter bma = new BaseMapAdapter("/home/fcst/mcidas/OUTLSUPW"); // Create the ScalarMaps: column to XAxis, row to YAxis and pixel to RGB // Use ScalarMap(ScalarType scalar, DisplayRealType display_scalar) pixMap = new ScalarMap( shadedField, Display.RGB ); contMap = new ScalarMap( contourField, Display.IsoContour ); colMap = new ScalarMap( longitude, Display.XAxis); rowMap = new ScalarMap( latitude, Display.YAxis); //Add scalar maps to display display.addMap( colMap ); display.addMap( rowMap ); display.addMap( contMap ); display.addMap( pixMap ); // The ContourControl // Note that we get the control from the IsoContour map ContourControl isoControl = (ContourControl) contMap.getControl();if(base != -99 || highValue != -999 || lowValue != -999 || interval != -999){
// ...and set the lines with the method isoControl.setContourInterval(interval, lowValue, highValue, base); } isoControl.enableLabels(true); isoControl.setLabelSize(4.0); // Create a data reference and set the FlatField as our data DataReferenceImpl contourDataRef = new DataReferenceImpl("contour"); DataReferenceImpl shadedDataRef = new DataReferenceImpl("shaded"); DataReferenceImpl atlasDataRef = new DataReferenceImpl("map"); shadedDataRef.setData(shadedFlatField ); contourDataRef.setData(contourFlatField); UnionSet bma1= bma.getData(); atlasDataRef.setData(bma1); // Add references to display display.addReference(atlasDataRef); display.addReference(shadedDataRef); display.addReference(contourDataRef);//Set the aspect ratio.. xSize ySize are the display window dimensions. magFactor =3 seem to cover entire display area ProjectionControlJ2D projectionControl = (ProjectionControlJ2D)display.getProjectionControl();
double xRange =magFactor*(double) ((double)xSize/Math.max(xSize,ySize)); double yRange= magFactor*(double) ((double)ySize/Math.max(xSize,ySize)); projectionControl.setAspect(new double[] {xRange,yRange});//these vars get me the sub region I want out of a global image. The numbers 20 and 60 are there to get some padding around the image // this works only if I use magFactor =3 and the basemap is global. Otherwise get the entire image
int xx1 = (int)(xlow*(xSize/2)+xSize/2); int xx2 = (int)(xhigh*(xSize/2)+xSize/2)+20; int yy1 = ySize-(int)(ylow*(ySize/2)+ySize/2); int yy2 = ySize-(int)(yhigh*(ySize/2)+ySize/2)-60; //finally get subimageBufferedImage dd = display.getImage(true).getSubimage(xx1,yy2,(xx2-xx1),(yy1-yy2));
Bill Hibbard wrote:
Hi Nihat, Someone else may come up with an easier answer, but I'd write a method to essentially clone the UnionSet except for the numerical adjustment to longitude values. In the time it would take to dream up something clever, you could write this little method (assuming the Sets in your UnionSet are all of the same class). Good luck, Bill On Mon, 21 Aug 2006, ncubukcu wrote:Hi What is the easiest way to shift a base map? I read in a shapefile which takes 180deg longitude as starting point whereas all my data starts from 0deg longitude. So I need to shift either my data fields or the base map. (I would prefer the basemap) This is what I get otherwise: Thanks a lot in advance... nihat
============================================================================== To unsubscribe visad, visit: http://www.unidata.ucar.edu/mailing-list-delete-form.html ==============================================================================
visad
archives: