User Tools

Site Tools


api:dk11:activex:tatukgis_xdk11.itgis_layerpixel.loop_double_itgis_shape_wordbool

ITGIS_LayerPixel.Loop method

DK11 for ActiveX | TatukGIS_XDK11.ITGIS_LayerPixel.Loop | Methods | Properties

Prepares enumerator to iterate the layer through the linear shape. Lines are interpreted as-line-flow for terrain profile like analysis. Pixels are treated as points.

Available also on: Delphi | .NET | Java.

Syntax

// C#
public ITGIS_LayerPixelEnumeratorFactory Loop(
  double _pixelsize,
  ITGIS_Shape _shape,
  WordBool _writable
);
' VisualBasic
Public Function Loop(
  ByVal _pixelsize As Double,
  ByVal _shape As ITGIS_Shape,
  ByVal _writable As WordBool
) As ITGIS_LayerPixelEnumeratorFactory
// Oxygene
public
  function Loop(
    _pixelsize : Double;
    _shape : ITGIS_Shape;
    _writable : WordBool
  ) : ITGIS_LayerPixelEnumeratorFactory;

Parameters

Name Type Description
_pixelsize double
Double
minimum requested size of image pixel; by providing 0 a maximum possible resolution will be used, which is also a fastest method if a layer is full in-memory because in such situation a pointer to existing memory will be used
_shape ITGIS_Shape if not nil, then only pixels within the shape will be found
_writable WordBool if true than layer will post back any changes in locked area; if write is not possible then TGIS_PixelItem.Writable will be set accordingly

Result

Type Description
ITGIS_LayerPixelEnumeratorFactory Pixel item returned row by row, column by column with the except:<list type=“bullet”><item>if _shape is liner then pixel are returned as-line-flow order.</item><item>if _shape is point or multi-point then pixels are returned in a point-by-point order</item></list>

Remarks

_pixelsize

By providing _pixelsize=0, a native layer resolution is requested. This is also the fastest method if a layer is fully in-memory because, in such situation, a pointer to existing memory is used

Example

General way to query for terrain profile:

foreach (TatukGIS.NDK.TGIS_PixelItem px in lp.Loop(0, line, false))
{
  Memo.AppendText(
    String.Format("Distance: {0}, Height:{1}\r\n", px.Distance, px.Value)
  );
}

General way to query for pixels within polygon and modifying value:

foreach (TGIS_PixelItem px in lp.Loop(polygon.Extent, 0, polygon, "T", true))
{
  px.Color = TGIS_Color.Red;
}

References

2020/05/28 09:04

Page Tools