>  Docs Center  >  Libraries  >  CATALYST  >  MAPCOORD__DEFINE
Libraries

MAPCOORD__DEFINE

MAPCOORD__DEFINE

Name


      MAPCOORD__DEFINE

Purpose



      The purpose of this object is to set up a map coordinate space for
      for other objects. The program assumes you will use MAP_PROJ_INIT
      to set up the map structure that is the basis for the map projection
      space. Additionally, the program can accommodate up to 20 map overlay
      objects. These are Catalyst objects that draw graphics in a map coordinate
      data space (examples are MAP_OUTLINE and MAP_GRID in the Catalyst "graphics"
      directory). The MAPCOORD object cannot, of course, draw map overlays. But,
      the CatImage object is written in such a way that if a MAPCOORD object
      is used to set up the data coordinate space, then if overlays are present
      in the map object, each map overlay object will have its DRAW method called
      in turn, in the order in which they are specified in the map overlay array.
      See the keywords SET_MAP_OVERLAY and SET_MO_POSITION for details.

Authors



        FANNING SOFTWARE CONSULTING BURRIDGE COMPUTING
        1645 Sheely Drive 18 The Green South
        Fort Collins Warborough, Oxon
        CO 80526 USA OX10 7DN, ENGLAND
        Phone: 970-221-0438 Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com E-mail: davidb@burridgecomputing.co.uk

Category



      Objects, Coordinates

Syntax



      theObject = Obj_New("MAPCOORD")

Arguments



      map_projection The name or the reference number of a valid CGTP map projection. See
                          the on-line documentation for MAP_PROJ_INIT for details. Default is 111,
                          Lambert Azimuthal with spherical datum.

Keywords


 
      CENTER_LATITUDE: The center latitude of the map projection.
     
      CENTER_LONGITUDE: The center longitude of the map projection.
     
      DATUM: The name or index number of the DATUM. "Sphere" by default. See
                          the on-line documentation for MAP_PROJ_INIT for details.
                         
      SPHERE_RADIUS: The radius, in meters, of the sphere used as the DATUM.
     
      SEMIMAJOR_AXIS: The distance, in meters, of the semi-major axis of the reference ellipsoid.
     
      SEMIMINOR_AXIS: The distance, in meters, of the semi-minor axis of the reference ellipsoid.
     
      LIMIT: A vector of limits for the map projection: [latmin, lonmin, latmax, lonmax].
     
      ZONE: The zone of UTM and State Plane projections.
     
      Any additional keywords defined for MAP_PROJ_INIT are allowed. And, in addition to those, the following:
 
      GRID_OBJECT: An overlay object, such as MAP_GRID, for drawing map grid lines. The MAPCOORD
                          object cannot draw grids, but provides a logical place to store such
                          an object. One advantage of storing the object here is that cleanup of
                          the object is possible without the user having to do it themselves.
                          This keyword is depreciated in favor of MAP_OVERLAY. If it is used,
                          and the OVERLAY_POSITION keyword is not defined, then OVERLAY_POSITION
                          is set to 1.
                     
      LATLON_RANGES: If this keyword is set, the XRANGE and YRANGE keywords are assumed to
                          be in units of longitude and latitude, respectively. The map structure returned
                          from Map_Proj_Init will be used to convert these values to the appropriate UV
                          coordinates for internal storage.
                     
      OUTLINE_OBJECT: An overlay object, such as MAP_OUTLINE, for drawing map outlines. The MAPCOORD
                          object cannot draw outlines, but provides a logical place to store such
                          an object. One advantage of storing the object here is that cleanup of
                          the object is possible without the user having to do it themselves.
                          This keyword is depreciated in favor of MAP_OVERLAY. If it is used,
                          and the OVERLAY_POSITION keyword is not defined, then OVERLAY_POSITION
                          is set to 0.
 
      PARENT: An object reference of the parent object. If provided, the MAPCOORD object
                          will add itself to the parent with the COORDS_OBJECT keyword to SETPROPERTY.
                          The parent should be a subclassed CATDATAATOM object.
      POSITION: A four-element array representing the position of the plot in the window.
                          Use normalized coordinates (0 to 1) in this order: [x0, y0, x1, y1]. The
                          default is [0,0,1,1].
                     
      MAP_OVERLAY: A 20-element object array of overlay objects. An overlay object
                          is an object that draws graphics in a map coordinate data space.
                         
                          Note: Overlay objects must be written with a DRAW method, and they must
                          have a MAP_OBJECT keyword in a SetProperty method. When they are added
                          to the MAPCOORD object, the MAPCOORD object will be made their parent
                          (so they are not accidentally destroyed) and the SetProperty method will
                          be called with the MAP_STRUCTURE keyword set equal to the MAPCOORD map structure.
     
      OVERLAY_POSITION: A scalar or vector with the same number of elements as MAP_OVERLAY.
                          This keyword is used to tell IDL where to store the object in the overlay
                          object array. It should be a number in the range of 0 to 19. If undefined,
                          the overlay object array is searched for invalid objects, and the overlay
                          object is stored at the lowest index containing an invalid object.
                         
      XRANGE: A two-element array representing the X range of the map projection in a 2D
                          Cartesian (x,y) coordinate system. These are sometimes called UV coordinates.
                          If undefined, the longitude range of -180 to 180 is used with the map structure
                          to create the XRANGE array.
      YRANGE: A two-element array representing the Y range of the map projection in a 2D
                          Cartesian (x,y) coordinate system. These are sometimes called UV coordinates.
                          If undefined, the latitude range of -90 to 90 is used with the map structure
                          to create the YRANGE array.
      _EXTRA: Any keywords appropriate for superclass INIT methods.

Superclasses



      CATCOORD
      CATATOM
      CATCONTAINER IDLITCOMPONENT
      IDL_CONTAINER

Class Structure



  class = { MAPCOORD, $
            overlays: ObjArr(20), $ ; A storage location for map overlays.
            map_projection_keywords: Ptr_New(), $ ; A storage location for MAP_PROJ_INIT keywords.
            center_latitude: 0.0D, $ ; The latitude at the center of the map projection.
            center_longitude:0.0D, $ ; The lontigude at the center of the map projection.
            limit: Ptr_New(), $ ; The limit of the map projection.
            zone: 0, $ ; The UTM zone of the map projection.
            theDatums: Ptr_New(), $ ; Information about available map datums.
            thisDatum: datumStruct, $ ; The particular datum structure for this map projection.
            theProjections: Ptr_New(), $ ; Information about available map projections.
            thisProjection: mapStruct, $ ; The particular map projection structure for this map projection.
            INHERITS CATCOORD $ ; The superclass object.
          }

Messages



  None.

Modification History



      Written by: David W. Fanning, 28 December 2008.
      Modified the way the map overlays were handled to be more flexible. 9 January 2009. DWF.
      Reworked the program to make it more flexible with a wide variety of GTCP map projections. 2 June 2009.
      Fixed some typos in the word "position". 10 June 2009. DWF.
      Had to make some modifications to accommodate UTM and State Plane projections. 28 August 2009. DWF.
      Removed the POSTITION, XRANGE, and YRANGE keywords from the SetProjection method, where they
          didn't really belong. 22 November 2009. DWF.
      Removed more vestiges of the MAP_STRUCTURE keyword in INIT method. 14 December 2009. DWF.
      Added MAP_PROJECTION keyword to GetProperty and SetProperty methods. 16 December 2009. DWF
      Added MAP_PROJ_KEYWORDS keyword to GetProperty and SetProperty methods. 22 December 2009. DWF.
      If LIMIT is changed in the SetProperty method AND XRANGE and YRANGE keywords are not used, then
          the xrange and yrange are updated to reflect the new limits. 28 Dec 2009. DWF.
      The map projection was not being set correctly if the map projection was passed as
          string value. 9 Feb 2010. DWF.
      Setting the SPHERE_RADIUS keyword on some methods accessed a non-existent field "datum'
          instead of the field "thisDatum". Fixed. 9 Feb 2010. DWF.
      Mis-spelled SEMIMINOR_AXES keyword in the GetProperty method. Fixed. 10 March 2010. DWF.
      Added ADD_GRID, ADD_OUTLINE, and DRAW_OVERLAYS keywords. 12 April 2010. DWF.
      Modified the way map overlays are added with MAP_OVERLAY keyword to INIT and SetProperty
          methods. 15 June 2010. DWF.
      Added ZONE keyword to the GetProperty method. 22 June 2010. DWF.
      Switch UTM datum from WGS84 to WALBECK to avoid UTM projection bug in all versions
            of IDL prior to IDL 8.2, when it is suppose to be fixed. For more information,
            see this article: http://www.idlcoyote.com/map_tips/utmwrong.php. 31 Oct 2011. DWF.



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
   Contact Us