Table of Contents

Class RasterLayer

Namespace
ThinkGeo.Core
Assembly
ThinkGeo.Core.dll

This abstract class is the basis for all image-based layers in the system.

public abstract class RasterLayer : Layer
Inheritance
RasterLayer
Derived
Inherited Members

Remarks

This abstract class is the basis for all image-based layers in the system. Its methods and properties deal with image manipulation. Currently, some classes that inherit from this are EcwRasterLayer, MrSidRasterLayer, GridRasterLayer and so on.

When creating your own RasterLayer, you need only to set a RasterSource and create a useful constructor; the class will take care of the rest. There are no required abstract members. It may be helpful for you to add additional properties specific to your Image.

Constructors

RasterLayer()

This is a constructor for the class. If you use this constructor, you should set the properties you need manually.

protected RasterLayer()

Remarks

If you use this constructor, you should set the properties you need manually.

Properties

ImageSource

This property gets and sets the Image used by the RasterLayer.

public RasterSource ImageSource { get; protected set; }

Property Value

RasterSource

This property gets the Image used by the RasterLayer.

Remarks

The set for this property is protected and only intended to be used by developers who are creating their own ImageSources. This is the main property to set for developers who are creating their own RasterLayer derivatives.

IsOpenCore

This property returns true if the RasterLayer is open and false if it is not.

protected override bool IsOpenCore { get; }

Property Value

bool

This property returns true if the RasterLayer is open and false if it is not.

Remarks

Various methods on the RasterLayer require that it be in an open state. If one of those methods is called when the state is not open, then the method will throw an exception. To enter the open state, you must call the RasterLayer's Open method. The method will raise an exception if the current RasterLayer is already open.

LowerThreshold

This property gets and sets the lower threshold in the scale at which to display the image.

public double LowerThreshold { get; set; }

Property Value

double

This property gets the lower threshold in the scale at which to display the image.

Remarks

Below the lower threshold in scale, the image will not be displayed. This, in conjunction with the UpperThreshold property, allows you to create a band in which it is suitable to display the image source. By default, the upper threshold is double.max and lower threshold is double.min. This means the image should always display.

Projection

Gets the projection of the layer.

public override Projection Projection { get; }

Property Value

Projection

ScaleFactor

The scale factor when drawing the primitive image. For example I am looking for an image with 100100px, If the ScaleFactor is set to 2, it means the component will get the image with 200200px. We want to keep it as 1 (by default) for most cases.

public double ScaleFactor { get; set; }

Property Value

double

UpperThreshold

This property gets and sets the upper threshold in the scale at which to display the image.

public double UpperThreshold { get; set; }

Property Value

double

This property gets the upper threshold in the scale at which to display the image.

Remarks

Above the upper threshold in scale, the image will not be displayed. This, in conjunction with the LowerThreshold property, allows you to create a band in which it is suitable to display the image source. By default, the upper threshold is double.max and lower threshold is double.min. This means the image should always display.

Methods

CloseCore()

This method opens the RasterLayer so that it is initialized and ready to use.

protected override void CloseCore()

Remarks

The close method plays an important role in the life cycle of the RasterLayer. It may be called after drawing to release any memory and other resources that were allocated since the Open method was called.

If you override this method, it is recommended that you take the following things into account: This method may be called multiple times, so we suggest you write the method so that that a call to a closed RasterLayer is ignored and does not generate an error. We also suggest that in the Close you free all resources that have been opened. Remember that the object will not be destroyed, but will be re-opened possibly in the near future.

DrawCore(GeoCanvas, Collection<SimpleCandidate>)

This method will draw the image from the NativeImage source based on the parameters provided.

protected override void DrawCore(GeoCanvas canvas, Collection<SimpleCandidate> labelsInAllLayers)

Parameters

canvas GeoCanvas

This parameter is the GeoCanvas used to Draw the RasterLayer.

labelsInAllLayers Collection<SimpleCandidate>

This parameter is not used for ImageLayers.

Remarks

The DrawCore method will be called when the layer is being drawn. It will determine if the image is within the extent and the threshold defined. If these parameters are met, it will query the RasterSource for an image and then apply the other various properties (such as transparency, etc.) on the image. Lastly, it will draw the image on the NativeImage or native image passed into the method.

GetBoundingBoxCore()

This method returns the bounding box of the RasterLayer.

protected override RectangleShape GetBoundingBoxCore()

Returns

RectangleShape

This method returns the bounding box of the RasterLayer.

Remarks

This method returns the bounding box of the RasterLayer.

Exceptions

InvalidOperationException

In the event you attempt to call this method on a image layer which has not been opened, it will throw an InvalidOperationException.

GetHorizontalResolution()

This method returns the horizontal resolution of the image.

public float GetHorizontalResolution()

Returns

float

This method returns the horizontal resolution of the image.

Remarks

This method returns the horizontal resolution of the image.

Exceptions

InvalidOperationException

In the event you attempt to call this method on a image layer which has not been opened, it will throw an InvalidOperationException.

GetVerticalResolution()

This method returns the vertical resolution of the image.

public float GetVerticalResolution()

Returns

float

This method returns the vertical resolution of the image.

Remarks

This method returns the vertical resolution of the image.

Exceptions

InvalidOperationException

In the event you attempt to call this method on a image layer which has not been opened, it will throw an InvalidOperationException.

IsDrawingNeededCore(double)

protected override bool IsDrawingNeededCore(double currentScale)

Parameters

currentScale double

Returns

bool

OpenCore()

This method opens the RasterLayer so that it is initialized and ready to use.

protected override void OpenCore()

Remarks

The open method plays an important rol,e as it is responsible for initializing the RasterLayer. Most methods on the RasterLayer will throw an exception if the state of the RasterLayer is not opened. When the map draws each layer, it will open the RasterLayer as one of its first steps; then, after it is finished drawing with that layer, it will close it. In this way, we are sure to release all resources used by the RasterLayer.

Exceptions

InvalidOperationException

In the event you attempt to call this method on a image source which has already been opened, it will throw an InvalidOperationException.