ENVIView::PixelLink

The PixelLink method links views by pixel for use with tools such as Pan, Fly, and Zoom, so that all linked views update locations at the same time. The PixelLink method is useful when georeferencing information is not available for use with ENVIView::GeoLink. You can have more than one linked set of views at a time (example: views 1 and 2 are one linked set, views 3 and 4 are a second linked set). A view may be a member of only one linked set at a time.

The specific ENVIView where you issue the PixelLink method becomes the lead (or anchor) view that determines the pixel location from which all linked views are centered. To specify a different ENVIView as the anchor, execute the PixelLink method on that view.

If you do not specify the Views argument and set the LINK_ALL keyword, then all existing views will be pixel linked. If you specify the Views argument when using the PixelLink method, then those views will be pixel linked.

Example

This is an interactive example that shows how to perform pixel linking with four images. Views are organized as follows:

Display Layers in Multiple Views

Copy and paste the following code into the IDL command line.

; Launch the application

e = ENVI()

 

; Open two ENVIRasters

file1 = FILEPATH('qb_boulder_msi', ROOT_DIR=e.ROOT_DIR, $

SUBDIRECTORY = ['data'])

raster1 = e.OpenRaster(file1)

 

; Display the rasters in four views

view1 = e.GetView()

layer1 = view1.CreateLayer(raster1)

 

view2 = e.CreateView()

layer2 = view2.CreateLayer(raster1)

 

view3 = e.CreateView()

layer3 = view3.CreateLayer(raster1, BANDS = [3, 1, 2])

 

view4 = e.CreateView()

layer4 = view4.CreateLayer(raster1, BANDS = [0, 2, 3])

Create a Pixel Link

  1. Pixel-link Views 1 (anchor) and 3.
  2. view1.PixelLink, view3

  3. Pan View 3. View 1 pans with it.
  4. view3.Pan, 50, 50

  5. Pan View 2. No other views pan with it.
  6. view2.Pan, 50, 50

Create a Second Pixel Link

  1. Link Views 2 (anchor) and 4.
  2. view2.PixelLink, view4

  3. Pan View 2. View 4 pans with it.
  4. view2.Pan, 50, 50

  5. Pan View 1. Views 1 and 3 pan, while 2 and 4 do not.
  6. view1.Pan, 50, 50

  7. Remove the link set of Views 2 and 4.
  8. view2.PixelLink, /REMOVE

  9. Link View 4 to View 1. View 3 is no longer in the linked group.
  10. view1.PixelLink, view4

  11. Add View 2 to the linked group (Views 1 and 4).
  12. view1.PixelLink, view2, /ADD

  13. Pan View 1. Views 2 and 4 also pan.
  14. view1.Pan, 100, -100

  15. Remove View 1 from the linked group.
  16. view1.PixelLink, /REMOVE

Remove All Views from the Pixel Link

  1. Remove all views.
  2. view2.PixelLink, /UNLINK_ALL

  3. Pan each view. Each one pans individually.
  4. view1.Pan, 20, 20

    view2.Pan, 30, -50

    view3.Pan, 10, -20

    view4.Pan, -20, 5

Syntax

ENVIView.PixelLink [, Keywords=value]

Arguments

Views

Specify an ENVIView, or an array of ENVIViews, to link by pixel with the current view.

Keywords

Keywords are applied only during the initial creation of the object.

ADD

Set this keyword to add views to an existing pixel-linked group of views. If you set this keyword on an ENVIView that is not part of an existing pixel-linked group, then a new pixel-linked group will be created.

ERROR

Set this keyword to a named variable that will contain any error message issued during execution of this routine. If no error occurs, the ERROR variable will be set to a null string (''). If an error occurs and the routine is a function, then the function result will be undefined.

When this keyword is not set and an error occurs, ENVI returns to the caller and execution halts. In this case, the error message is contained within !ERROR_STATE and can be caught using IDL's CATCH routine. See IDL Help for more information on !ERROR_STATE and CATCH.

See Manage Errors for more information on error handling in ENVI programming.

LINK_ALL

Set this keyword to link all views by pixel. This keyword takes precedence over the optional Views argument.

REMOVE

Set this keyword to remove the view from the pixel link. If the view to remove is the anchor view and is linked to two or more views, the anchor is reassigned to the first remaining view. If the view to remove is one of only two views, then the linked set is dissolved.

ROTATE_LINK

Use this keyword to establish a new rotate link by specifying which views will rotate together. Use the UPDATE_ROTATE_LINK thereafter to link or unlink views from the rotate link. Here are the options for using this keyword:

UNLINK_ALL

Set this keyword to unlink all of the views. This keyword takes precedence over the optional Views argument.

UPDATE_ROTATE_LINK

Use this keyword to update an existing rotate link (set with the ROTATE_LINK keyword) for the views specified by the Views argument. The views must be already linked to the anchor view on which the PixelLink method was invoked. Here are the options for using this keyword:

UPDATE_ZOOM_LINK

Use this keyword to update an existing zoom link (set with the ZOOM_LINK keyword) for the views specified by the Views argument. The views must be already linked to the anchor view on which the PixelLink method was invoked. Here are the options for using this keyword:

ZOOM_LINK

Use this keyword to establish a new zoom link, by specifying which views will zoom together. Use the UPDATE_ZOOM_LINK thereafter to link or unlink views from the zoom link. Here are the options for using this keyword:

Version History

ENVI 5.2

Introduced

ENVI 5.6

Added ROTATE_LINK and UPDATE_ROTATE_LINK keywords

API Version

4.2

See Also

ENVIView, ENVIView::GeoLink