home products news downloads documentation support gallery online maps resellers search
TNTmips Downloads Menu

HOME

CONTACT US

CURRENT RELEASE
  TNT 2013

DEVELOPMENT VERSION
  TNT 2014

TNTmips Pro
PRIOR RELEASES
  TNT 2012

FREE SOFTWARE
  TNTmips Free
  TNTatlas
  TNTsdk

MORE DOWNLOADS
  HASP Key Driver
  Screen Recorder
  TNT Language Kits
  Sample Geodata
  TNT Scripts

DOCUMENTATION
  TNTmips Tutorials
  Tutorial Datasets
  Technical Guides
  Scripts
  Quick Guides

MORE INFO
  Download FAQs
  FTP
  Download Managers
  Find Reseller

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. 2013 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

25 March 2009

page update: 26 May 11