How To: Create minimum bounding rectangle arc for ARCDFAD DSnnnP coverage


You can use GENERATE with the LINE subcommand to create the Minimum Bounding Rectangle (MBR) for a DSnnnP coverage in preparation for ARCDFAD conversion.


  1. Determine the lowest XMIN and YMIN between the L and P coverages, and the highest XMAX and YMAX between the coverages. You can automate this process with AML.

    /* USAGE: &RUN EXTENTS <cover_1,cover_2,...,cover_n>
    /* PURPOSE: This AML determines the lowest XMIN, the lowest YMIN,
    /* the highest XMAX, and the highest YMAX among a group of
    /* coverages.
    /* NOTES: The <cover_1,cover_2,...,cover_n> argument has a limit
    /* of 4096 characters.
    /* This is not an ESRI supported AML. Please use at your own risk.
    /* Also, please make a backup of your data before running this AML
    /* and carefully check the output. This is just a skeleton AML with
    /* no real error checking. It is meant only as a guide to developing an
    /* AML specific to your data inputs and desired outputs.
    /*Capture the comma delimited list of coverages from &RUN command ...
    &args covlist:REST

    /*Check proper usage ...
    &if [null %covlist%] &then
    &call usage
    &call analyze
    &routine analyze

    /*Get extents of first coverage ...
    &sv covlist = [unquote %covlist%]
    &describe [extract 1 %covlist%]
    &sv .xmin = %DSC$XMIN%
    &sv .ymin = %DSC$YMIN%
    &sv .xmax = %DSC$XMAX%
    &sv .ymax = %DSC$YMAX%

    /*Create a list omitting first coverage ...
    &sv covlist2 = [unquote [after [quote %covlist%] [extract 1 %covlist%]]]

    /*Compare each coverage to previous to determine the lowest extent
    /*minimums and highest maximums ...
    &do i &list %covlist2%
    &describe %i%
    &if %.xmin% > %DSC$XMIN% &then &sv .xmin = %DSC$XMIN%
    &if %.ymin% > %DSC$YMIN% &then &sv .ymin = %DSC$YMIN%
    &if %.xmax% < %DSC$XMAX% &then &sv .xmax = %DSC$XMAX%
    &if %.ymax% < %DSC$YMAX% &then &sv .ymax = %DSC$YMAX%
    &ty The extents for all input datasets are:
    &ty %.xmin% %.ymin% %.xmax% %.ymax%

    &routine usage
    &ty No input coverage(s) specified.
    &ty USAGE: &RUN EXTENTS <cover_1,cover_2,...,cover_n>

  2. Use GENERATE with the LINE subcommand. Create a temporary coverage with the MBR arc using the min and max extents of all data.

    GENERATE tempcov
    <xmin> <ymin>
    <xmin> <ymax>
    <xmax> <ymax>
    <xmax> <ymin>
    <xmin> <ymin>

  3. BUILD the temporary coverage for LINE. This will create the .AAT INFO file.
  4. If any arcs of the DSnnnP coverage have a cover-ID of 1, they will conflict with the MBR arc's ID. You can avoid this by doing the following before using GET:

    CALC the DSnnnP-ID = DSnnnP-ID + 1

  5. In ARCEDIT, make the temporary coverage the edit coverage with EDITFEATURE ARC and GET the DSnnnP coverage arcs. Save the edits and quit.
  6. Store a backup of the DSnnnP coverage outside the workspace to be converted with ARCDFAD. Then COPY the temporary coverage to the ARCDFAD workspace, using the original DSnnnP name.

    DFAD 1-C data has extents that encompass 1 whole decimal degree. For example, a DFAD data set could have an extent such as:

    xmin = 20
    ymin = 30
    xmax = 21
    ymax = 31

    However, the ARCDFAD converter does not check for such an extent. It will convert data even if it has an x and y extent that exceeds or is less than a full decimal degree. Appropriate data extents can be checked in the DFAD format specifications.