TNTmips

HOME

FREE PRODUCTS
  TNTlite
  TNTatlas
  TNTsim3D

DOWNLOADS
  Release Version
  Development Version
  FTP
  Language Kits
  Sample Geodata
  Reseller Resources
  Promotional

DOCUMENTATION
  Tutorials
  Technical Guides
  Quick Guides

SITE MAP


PipelineTopographic.sml


# PipelineTopographic.sml

# Sample standalone script to demonstrate an image pipeline application
# using a single RVC source and a target consisting of several RVC raster objects.

# Script input: a DEM raster object in a Project File.
# Script output: RVC raster objects for Slope, Aspect, Shading, Profile Curvature,
# and Plan Curvature, computed using the SML classes equivalent to the Topographic
# Properties process in TNTmips.

# The FOCALTOPOGRAPHIC filter computes and creates output objects in the following order:
# Slope, Aspect, Shading, Profile Curvature, and Plan Curvature.  The FOCALTOPOGRAPHIC_SETTINGS
# class specifies which of these products should be computed and with what parameters.
# If the script computes more than one of these products, set up the pipeline target using an 
# ObjItemList (a hash of RVC_OBJITEMs returned by the DlgGetObjectSet() function).  Output objects 
# should be selected in the above order, and the number of objects prompted for must match the
# number of products the script tells the filter to produce. 

# 8 January 2008
# Revised 12 February 2008
# Randy Smith, MicroImages, Inc.

# Requires Version 2007:73 or later of the TNT products. 

numeric err;			# error number returned

# error checking procedure
proc ReportError(numeric linenum, numeric err) {
	printf("FAILED -line: %d, error: %d\n", linenum - 1, err);
	PopupError(err); 
	}

########################################  Main program  #########################################
clear();

# CHOOSE INPUT DEM
class RVC_RASTER DEM;				# the input Digital Elevation Model raster
GetInputRaster(DEM);

if (DEM.$Info.Type == "binary" or			# check for appropriate raster type
	DEM.$Info.Type == "16-bit color RGB" or
	DEM.$Info.Type == "16-bit color BGR" or
	DEM.$Info.Type == "24-bit color RGB" or
	DEM.$Info.Type == "24-bit color BGR") 
	{
	print("Binary or composite rasters cannot be used as input for this script.  Exiting now.");
	Exit();
	}

# Set processing parameters for topographic filter;
# In practice these settings could be read from a dialog window created by the script.
class IMAGE_PIPELINE_FILTER_FOCALTOPOGRAPHIC_SETTINGS settings;
settings.SetSurfaceFittingMethod("QLSF"); # use Quadratic least squares fit

settings.SetDoSlope(1);		# compute slope raster; 0 = don't compute
settings.SetSlopeDataType("FLOAT32");	# set slope raster to 32-bit floating point
settings.SetSlopeUnits("Degrees");	# compute slope in degrees rather than percent

settings.SetDoAspect(1);	# compute Aspect; 0 = don't compute
settings.SetAspectDataType("SINT16");	# set aspect raster to 16-bit signed integer

settings.SetDoShading(1);	# compute the shading raster; 0 = don't compute
settings.SetShadingDataType("UINT8");	# set shading raster to 8-bit unsigned integer
settings.SetShadingMethod("HighContrast");
settings.SetElevationAngleOfSun(60);	# sun elevation angle in degrees
settings.SetDirectionOfSun(300);		# set azimuth of direction to sun (clockwise from 0 at north)

settings.SetDoProfile(1);		# compute profile curvature
settings.SetDoPlan(1);		# compute plan curvature
settings.SetCurvatureDataType("FLOAT32");		# set curvature rasters to 32-bit floating point
settings.SetCurvatureUnits("RadiansPer100Meter");

# set labels for prompt dialog to select output objects;
# labels should be in the order shown, even if some are omitted.
class STRINGLIST labelList;	# list of labels for the selection dialog for the output objects
labelList.AddToEnd("Slope");
labelList.AddToEnd("Aspect");
labelList.AddToEnd("Shading");
labelList.AddToEnd("Profile");
labelList.AddToEnd("Plan");


# CHOOSE OUTPUT 
# Prompt for the output rasters using the labelList.
# DlgGetObjectSet populates a hash of ObjItems for the output; new rasters will then be created
# by the TARGET_RVC with the desired compression.  The ObjectPaths of the ObjItems are not
# valid until the output rasters are actually created by the pipeline.
class RVC_OBJITEM outObjItemList[];		# hash of object items for output
 
class STRING prompt$ = "Choose new raster objects for the output:";
err = DlgGetObjectSet(prompt$, "Raster", labelList, outObjItemList, "NewOnly,AllowAutoName");
if ( err < 0) 
	ReportError(_context.CurrentLineNum, err);


# PIPELINE SOURCE
# set the input DEM as the pipeline source using its ObjItem
class IMAGE_PIPELINE_SOURCE_RVC source_DEM(DEM.GetObjItem() );
err = source_DEM.Initialize();
if ( err < 0) 
	ReportError(_context.CurrentLineNum, err);
else 
	print("Source DEM initialized.");


# PIPELINE FILTER
# set up the topographic properties filter
class IMAGE_PIPELINE_FILTER_FOCALTOPOGRAPHIC topoFilt(source_DEM, settings);
err = topoFilt.Initialize();
if ( err < 0) 
	ReportError(_context.CurrentLineNum, err);
else
	print("Topographic filter initialized.");


# PIPELINE TARGET
# set output rasters as pipeline target using the ObjItem list returned by the DlgGetObjectSet function
class IMAGE_PIPELINE_TARGET_RVC target_rvc(topoFilt, outObjItemList);
target_rvc.SetCompression("DPCM", 0);
err = target_rvc.Initialize();
if ( err < 0) 
	ReportError(_context.CurrentLineNum, err);
else
	print("Target initialized.");


# EXECUTE the pipeline process
print("Processing...");
target_rvc.Process();

print("Done.");





Back Home ©MicroImages, Inc. 2008 Published in the United States of America
11th Floor - Sharp Tower, 206 South 13th Street, Lincoln NE 68508-2010   USA
Business & Sales: (402)477-9554  Support: (402)477-9562  Fax: (402)477-9559
Business info@microimages.com  Support support@microimages.com  Web webmaster@microimages.com

29 August 2008

page update: 24 Dec 07