Xander,

You could have a look at using GDAL's virtual format (VRT) to point to your original data and specify the nodata value in the VRT (you could even get exotic by using TILEINDEXs of VRTS).

Another option is to instead use the PROCESSING "LUT=..." directive. This may allow you to specify the target nodata value as well as the source nodata value when you tweak the directive for each of your elevation layers. But I haven't tried it...

Best Regards,
Brent Fraser


On 12/27/2011 9:04 AM, Enzmann, Alexander R. wrote:
Brent,

Thanks for the tips.  Was able to make some progress.

A couple of quick notes on the source data - it is either text based (.asc) or 
GeoTIFF.  In either case, individual pixels are 16 bit signed values (meters).  
The intended use is to use it as terrain (WMS access to terrain information in 
.bil or .tif formats), not to generate colored images.  So while GDAL is great 
for turning the source uncompressed data into LZW compressed GeoTIFF files, the 
tools for shading/coloring aren't useful in this application.

OFFSITE might work if I can figure out how to use it for a 16 bit signed value 
instead of RGB.  If I try something like this:
     OFFSITE -9999
The parse fails.  Using a color like this:
    OFFSITE 0 0 0
Gives a useable result, pulling content from the coarse (SRTM30) terrain when 
there are negative values in the higher resolution terrain.  I suspect it works 
for the wrong reason (e.g., negative values in the source data are mapped to 
the color 0).

However, it isn't quite the right result.  What I'm really looking for is the 
ability to specify the value(s) where the source data has missing values 
(typically -9999 or -32768) or a range of data to ignore (Google Earth Fusion 
allows this) such as: -32768:-20000,-9999,0.

Xander

This is a nearly working .map file:

# Query that would pull a piece of the earth:
MAP
   NAME "ASTER"
   EXTENT -180 -90 180 90
   SIZE 512 512
   UNITS DD
   IMAGETYPE bil

   PROJECTION
     "init=epsg:4326"
   END

   OUTPUTFORMAT
     NAME "asc"
     DRIVER "GDAL/AAIGrid"
     MIMETYPE "application/asc"
     EXTENSION "asc"
     IMAGEMODE INT16
   END

   OUTPUTFORMAT
     NAME "bil"
     DRIVER "GDAL/EHdr"
     MIMETYPE "image/bil"
     EXTENSION "bil"
     IMAGEMODE INT16
   END

   OUTPUTFORMAT
     NAME "bil16"
     DRIVER "GDAL/EHdr"
     MIMETYPE "application/bil16"
     EXTENSION "bil"
     IMAGEMODE INT16
   END

   OUTPUTFORMAT
     NAME "gtiff_16"
     DRIVER "GDAL/GTiff"
     MIMETYPE "image/tiff"
     EXTENSION "tif"
     IMAGEMODE INT16
   END

   WEB
     IMAGEPATH "/tmp/"
     IMAGEURL "/tmp/"
     LOG "/tmp/srtm.err"
     METADATA
       wms_title "ASTER Terrain"
       "ows_enable_request" "*"
     END
   END

   #
   # Coarse (30 ArcSecond) terrain.  There is worldwide coverage, so this
   # is good for areas uncovered by SRTM data, as well as for high
   # scale values.
   #
   LAYER
     NAME "aster"
     TILEINDEX "SRTM30/bathmetry.shp"
     TYPE RASTER
     STATUS ON

     METADATA
       "wms_title" "SRTM 30 ArcSecond Bathmetry"
       "wms_group_title" "aster"
       "wms_srs" "epsg:4326"
       "wms_style" "Default"
       "wms_extent" "-180 -90 180 90"
     END

     MAXSCALEDENOM 1000000000
     MINSCALEDENOM          1
   END

   #
   # Moderate resolution (1 ArcSecond) terrain.  Coverage is available worldwide
   # for most land areas between latitudes -80 and +80.
   #
   LAYER
     NAME "aster"
     TILEINDEX "/mcgi/Terrain/asterz.shp"
     TYPE RASTER
     PROCESSING "RESAMPLE=BICUBIC"
     STATUS ON

     METADATA
       "wms_title" "ASTER 1 ArcSecond Terrain"
       "wms_group_title" "aster"
       "wms_srs" "epsg:4326"
       "wms_style" "Default"
       "wms_extent" "-180 -80 180 80"
     END

     MAXSCALEDENOM 1000000
     OFFSITE 0 0 0
   END

END

-----Original Message-----
From: Brent Fraser [mailto:[email protected]]
Sent: Friday, December 23, 2011 9:01 PM
To: Enzmann, Alexander R.
Cc: [email protected]
Subject: Re: [mapserver-users] Multi-Resolution Terrain Map File

   You could use the OFFSITE value in the higher resolution layer.
Basically in this scheme, mapserver would render each layer, and any
place with an OFFSITE value would show the value from the layer under
it.

   A more basic problem is how do you want the elevation value to be
rendered  to a visible image?  You could use GDAL to pre-process the
SRTM DEMs (http://www.perrygeo.net/wordpress/?p=7), or use mapserver to
classify the DEM values to colors on the fly.

Best Regards,
Brent Fraser

How do I construct a map file that can handle different resolutions of
terrain, with fallback to lower resolution when a no-value is found?  In
Google Earth Fusion, I can specify multiple terrain sources and tell it
which value(s) represent missing data, and it will then process the
terrain, checking for availability of each type of terrain, falling back
if there isn't any in a geographic area and falling back if there is
missing data.

For simple fallback based on area coverage, I can use a map file like the
one below (using 30 Arcsecond SRTM and 1 Arcsecond DTED).  Now, what would
I need to do to have it use/interpolate data from the 30 Arcsecond values
when there is a missing data/NODATA/hole in the DTED?  In the file below,
gdaltindex has been used to generate the coverage shapefiles.

The example below is a simple one, and it would be really helpful to be
able to have multiple terrain sources and a way to automatically fill
voids the same way that transparency works with raster image layers.
Specifying that terrain values are posts and not pixels would be good too,
but lower priority.

Xander



_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to