Hello everybody, I'm really sorry if this post will be very long, but I swear I've spent a lot of time (days!) in trying to exactly understand this, also reading the sourcecode, but I'm a little bit stuck!
In my application I need to read data from a srtm90 tif file of extension 5 lat * 5 lon put in a raster of 6000x6000 pixels, 2 bytes per pixel. This data will then be used as a heightmap texture for terrain rendering. I have no problems in reading data using RasterIO function, I can also keep 72mb of raster data in system memory performing only one IO operation (so that I don't have to mess with async operations) but: 1. I can't keep a 72MB texture in video memory (but the whole terrain extension should be rendered if the viewer is high enough), so I have to read a resampled lower resolution versions of the full terrain. (Actually more than one depending on the height of the viewpoint), and a full resolution version of a small piece of terrain that must be updated fast(only for small rectangular chunks) almost every time the user moves on the terrain. 2. I'll map my terrain on a plane. This means that I need to transform data to some projected coordinate system. Suppose UTM, with the proper zone (I don't mind the deformations at the borders...). Calling RasterIO in the proper way would solve problem 1, as it is exposing exactly the interface I need. The big issue is that it would be performing IO operations all the time, while I want to perform 1 single IO operation and then resample on that data. So first question: Is there a way of telling RasterIO to completely cache data and never access disk? RasterIO would not solve problem 2, as I would get unprojected data as result, unless I get unprojected data and then I execute the projection. I don't think it's the correct approach, also because RasterIO only allows me only to read unprojected rectangular data, while I want to read projected rectangular data that would become trapezoidal if unprojected. I've also spent time with the Warping functions, but I can't figure out how to perform what I need. For what I've seen I should initialize a GDALWarpOperation with GDALWarpOptions so that: - hSrcDS is my source dataset - hDstDS is NULL, cause I want to warp to a buffer - pfnTransformer must be set so that it can map from pixel / line unprojected to pixel / line projected. I can use GDALCreateGenImgProjTransformer but I have no destination dataset so I can't figure out how to set it up. Then I can't exactly understand the WarpRegionToBuffer API. Suppose I need to sample in an output buffer of size W x H a region that in the projected coordinate system (so after the transform) is of size A x B. How should I set nDstXSize and nDstYSize? I would expect being able to specify both those couples of params because I should be able to get any region and to put it in any buffer performing the appropriate resampling. But that function is a little bit confusing me. can anyone help me?:-) thanks _______________________________________________ gdal-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/gdal-dev
