
        NAME:    Dissolve
        Adjacent Polygons, v. 1.8a    (Click Name to Download) 
        
        Aka:  diss_adjac.avx
        
        Last modified:  
        March 22, 2006 
        
        TOPICS:  ArcView 3.x,
        polygon, dissolve, merge, union, eliminate, adjacent, combine, sliver, 
        attribute
        
        AUTHOR: 
        Jeff Jenness
        
          Wildlife Biologist, GIS
          Analyst
          
          Jenness Enterprises
          
          3020 N. Schevene Blvd.
          Flagstaff, 
          AZ 86004
          (928) 607-4638
          jeffj@jennessent.com 
        
        
        DESCRIPTION:  This
        extension enables the user to eliminate small polygons by combining them
        with larger adjacent polygons.  You begin by specifying a size
        limit and the extension will eliminate all polygons smaller than this
        limit.  The extension creates a new shapefile of combined polygons
        so your original polygon theme is not altered.  All attributes of
        the larger polygon will be saved.
        This function is especially useful for eliminating
        small sliver polygons that may be created during digitizing, and is also
        useful for projects that require a set of polygons that are all greater
        than a particular size.
        All or only selected records:  You can 
        either analyze all the polygons in the polygon theme to see if they 
        should be dissolved or only a selected subset of polygons.
        Option to use attribute values:  You can 
        choose which adjacent polygon to dissolve in to based purely on the size 
        of the polygon, or you can dissolve only into polygons with identical 
        attribute values.
        Combine with either largest or smallest adjacent 
        polygon, or with polygon with longest adjacent border:  You may 
        specify which larger polygon you want your small polygons to be combined 
        with based on the size or border length of the adjacent polygons. If two 
        small polygons combine, and the new polygon is larger than your 
        specified limit, then that new polygon will not be combined into any 
        larger adjacent polygons.
        Two options for "Adjacent":  This 
        extension allows you to define "adjacent" as meaning that the two 
        polygons share either a common border or a common point. If you imagine 
        a chess board, two same-colored squares that touch each other diagonally 
        are adjacent at a single point. This extension gives you the option to 
        decide whether that type of adjacency is good enough for your purposes, 
        or if you need the two polygons to share a common boundary. 
        Report of polygon actions:  After the 
        extension finishes, you will get a report of all the small polygons that 
        were eliminated and which larger polygon they were combined with. This 
        report is saved to the hard drive as a text file.
        Requires:  This extension requires at 
        least a single polygon theme present in a view. It will ask for a field 
        with unique values for each feature, but such a field is not necessary.
        This extension also requires that the file 
        "avdlog.dll" be present in the ArcView/BIN32 directory (or 
        $AVBIN/avdlog.dll) and that the Dialog Designer extension be located in 
        your ArcView/ext32 directory, which they usually are if you're running 
        AV 3.1 or better. The Dialog Designer doesn't have to be loaded; it just 
        has to be available. If you are running AV 3.0a, you can download the 
        appropriate files for free from ESRI at:
        
        
        http://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.viewPatch&PID=25&MetaID=483 
        Recommended Citation Format: For those who wish 
        to cite this extension, the author recommends something similar to:
        Jenness, J. 2006. Dissolve adjacent polygons 
        (diss_adjac.avx) extension for ArcView 3.x, v. 1.8a. Jenness Enterprises. 
        Available at:
        
        http://www.jennessent.com/arcview/dissolve_adjacent_polys.htm.
        
        Please let me know if you cite this extension in a 
        publication (jeffj@jennessent.com). 
        I will update the citation list to include any publications that I am 
        told about.
        Updates: Version 1.4 (Oct. 7, 2003) changes 
        some of the algorithms to make it run faster, and changes the method of 
        identifying adjacent polygons so that it doesn’t occasionally miss 
        polygons that lie completely within another polygon. Also several 
        cosmetic changes
        Version 1.5 (Dec. 11, 2003) fixes a bug that caused 
        the extension to hang if it encountered multiple null polygons. Also 
        gives the user the option to only consider a selected subset of polygons 
        to dissolve.
        Version 1.51 (Jan. 29, 2004) corrects a bug in which 
        it was incorrectly identifying adjacent polygons that only touched at a 
        single vertex.
        
      Version 1.52 (February 28, 2004) adds the option to 
      combine small polygons with adjacent polygon having the longest common 
      border. 
      Version 1.7 (February 7, 2005) adds the option to 
      dissolve based on common attribute values, plus adds a Table menu item to 
      add record numbers to the table.
      Version 1.8 (March 10, 2006) corrects a bug that could 
      occur if the ID field contained a long alias, as well as adds a function 
      for searching for errors in the scripts.
      Version 1.8a (March 22, 2006) corrects a bug caused by 
      the last revision. Sorry about that!
 
      
        General Instructions:
        1)  Begin by placing the "diss_adjac.avx"
        file into the ArcView extensions directory
        (../../Av_gis30/Arcview/ext32/).
        
        2)  After starting ArcView,
        load the extension by
        clicking on File à  Extensions…
        , scrolling down through the list of available extensions, and then
        clicking on the checkbox next to the extension called "Dissolve
        Adjacent Polygons"
        
        3)  From a View, select
        the 
 icon from
        the View.
        4)  You will now see the "Select
        Polygon Theme and Dissolve Options" dialog box:
        
        
        Polygon Theme and ID Field: 
        Begin by selecting the polygon theme and an ID Field that uniquely
        identifies the polygons.  This ID field is only used for generating
        the report, so it's not necessary for the calculations.  If you
        don't have an ID field and you don't feel like making one, you can
        select "- No ID Field -" and the extension will run just fine.
        Size Limit:  Next specify the
        size limit for small polygons.  All polygons smaller than this
        limit will be dissolved into larger adjacent polygons.  If you have
        a polygon that is smaller than the limit, but is not touching any other
        polygons, then it can't be dissolved.  You will be alerted to that
        circumstance at the end of the script's operation, and there will also
        be a note in the report.
        Choose All Polygons or Selected 
        Polygons:  If you have a very large number of polygons to 
        dissolve, you may find it helpful to pre-select different regions of the 
        theme or perhaps different size ranges of polygon to work with.  If 
        you choose to dissolve only selected polygons, then the tool will only 
        consider dissolving those small polygons that are already selected. This 
        will NOT affect which adjacent polygon a small polygon may be dissolved 
        into. They may still be dissolved into non-selected polygons, but no 
        non-selected polygon will be analyzed with this option.
        Only dissolve polygons with same 
        attribute value:  This option will only dissolve polygons into 
        other polygons if they have the same attribute value. If you choose this 
        option, you will need to select the attribute field before you can click 
        the 'OK' button. After you select the attribute field, the field name 
        will appear on the button to indicate that the attribute field has been 
        chosen.
        Size Option:  Next decide 
        whether you want the small polygons to be dissolved into the smallest or 
        largest adjacent polygons, or the polygon with the longest common 
        border. If two small polygons are combined early in the process, and the 
        combined polygon is larger than the specified size limit, then that new 
        polygon will not be dissolved into any adjacent polygons.
        Adjacency Option:  Finally,
        decide what rule of "adjacent" you want to use.  In the
        following illustration, Polygon 1 touches three other polygons (Polygons
        2, 3 and 4).  However, it only touches Polygon 4 at a single
        point.  If you want to allow Polygon 1 to be combined with Polygon
        4, then use the "Share common point or vertex" option. 
        If you want would rather that Polygon 1 be restricted such that it can
        only be combined with Polygons 2 or 3, then use the "Share common
        line or border" option.
        
        5)  Specify hard drive location to save the
        new shapefile:  You will still be prompted to specify a
        location on the hard drive to save the new shapefile of combined
        polygons.  This shapefile will also appear in your view.  This is a standard ArcView
        Dialog Box and should be familiar to most users. This shapefile is
        permanent and will not be deleted when ArcView is shut down.
        
        6)  Report:  After the
        extension finishes, you will get a popup window with a report detailing
        which polygons were combined and in what order.  This report is
        also saved to the hard drive at the location mentioned in the popup
        window:
        
        
 
        
      Adding Record Numbers to Table:
      This option provides a simple way to add a 
      field of record numbers to your table. Many types of analysis require that 
      you have some kind of unique ID value in your attribute table, and record 
      numbers usually make good ID values when no other option exists. This 
      extension also asks for a field of unique ID values, although it is not 
      critical to the analysis and is only used to identify which specific 
      polygons were dissolved in the report.
      All you need to do is open your table, 
      click the “Edit” menu, and then click “Create Record Number Field”. The 
      table does NOT need to be set to Editable prior to this. The tool will add 
      a field named [rec_num] and populate it with record number values. If a 
      field named [rec_num] already exists in your table, the tool will append 
      an index number to the name until it finds a name that does not exist in 
      your table (i.e. [rec_num_1], [rec_num_2], etc.)
      
      
      
        Calculation Methods:
        
            This extension begins by copying the
            polygon shapefile into a new shapefile at the specified location and
            adding two new fields to the new shapefile:
            
              rec_num:  The record
                number of that polygon in the Feature Attribute Table. 
                This extension requires that each polygon be uniquely
                identified, and the record number guarantees a unique
                identity.  This is different than the Unique ID field
                specified by the user, which is only used in providing Polygon
                ID values for the report.
              dslv_area:  The area
                of the polygon.  This field is used to identify those
                polygons that are smaller than the specified area.
            
          Using the area values from the dslv_area
            field, the extension identifies all those polygons that are smaller
            than the specified size.  It then makes a list of those small
            polygons and sorts the polygons by size, from the smallest to the
            largest.
          Beginning with the smallest polygon
            (or the first polygon in the list), the extension selects all the
            surrounding polygons that the small polygon touches.  This
            selection includes all those polygons that the small polygon touches
            at only a single point. 
            
              If the user has selected the
                "Share common line or border" option, the extension
                then checks all the selected polygons and discards those that
                only touch at a single point.  This option also checks whether the smaller 
              polygon is enclosed by the larger. 
 
               
              If the user has specified an attribute field, then 
              the extension checks all the selected polygons and discards those 
              with different attribute values. 
              The extension then checks the size of all the remaining selected 
              polygons and identifies either the largest, smallest, or the one 
              with the longest common border, based on the user's choice. 
After identifying the
                largest/smallest polygon, the extension then performs the UNION
                request to combine the two polygons.  This generates a
                brand new combined polygon that is completely separate from the
                original small and large polygons.  The extension then runs
                the CLEAN request to ensure that the new polygon is a valid
                polygon.
              The extension then replaces the
                original large polygon with the new combined polygon, such that
                all the attribute values of the original large polygon now are
                associated with the new combined polygon.  The original
                large polygon is now gone. 
              The extension then deletes the
                smaller polygon from the shapefile entirely.
              It's possible that the small
                polygon will be an island somehow and have no other polygons
                adjacent to it.  If this is the case, the extension will
                skip this polygon and insert a note in the report stating that
                this polygon had no adjacent polygons and therefore could not be
                combined with any.  If this happens, you will be notified
                of all such island polygons in an alert popup window after the
                extension finishes running.
            
          The extension then proceeds to the
            next small polygon in the list.  It's possible at this point
            that the current small polygon has already been combined with an
            even smaller polygon, and that the new size is larger than the
            specified size limit.  If this is the case, the extension will
            skip this polygon and insert a comment in the report stating that
            the polygon no longer needed to be combined with an adjacent large
            polygon.  Otherwise, the extension will repeat the process
            described above.
          The extension then repeats the entire
            process for all the remaining small polygons in the small polygon
            list.
After dissolving all the small 
            polygons in the shapefile, the extension then removes any null 
            polygons that may be present.
        
            Troubleshooting:
Please 
      let the author know If the extension crashes for any reason. If it does 
      crash, and if ArcView is still running, click the menu item “Check 
      ‘Dissolve Adjacent’ Scripts” in the View “Help” menu to generate a report 
      of all scripts that appear to be malfunctioning. Please copy this report 
      into an email or text file and email it to the author. This report will 
      help the author to identify and fix the problem.

        Enjoy! Please contact the author if you have problems or find bugs.
                   
        Jeff Jenness           
                                 
        jeffj@jennessent.com
                   
        3020 N. Schevene Blvd.
        
        
                   
        Flagstaff, AZ  86004
        
        
                               
        USA
        
        
        
        
Please visit Jenness Enterprises ArcView
        Extensions site for more ArcView Extensions and other software by
        the author.  We also offer customized ArcView-based  GIS consultation
        services to help you meet your specific data analysis and application
        development needs.
        
        
        