Additional software is available from our catalog.
Write us at 'software(at)quantdec.com' and tell us what you think
of this software or provide suggestions: your thoughts are always welcome.
We provide consulting and custom programming on a fixed price or time and
materials basis. Services range from system design to specifying
algorithms and processes to coding and documentation. E-mail us for more information.
Many of our ArcView extensions and scripts are also available at ESRI's
ArcScripts pages. Search on the keyword "QD".
Other sites with many good ArcView tools and extensions include:
Enterprises Highly polished extensions.
Ianko's GIS Page
Check out the versatile EditTools extension.
Cederholm's ArcView page Original and creative work, well programmed.
Our scripts were featured in the November 2000 issue of "ArcView
Tips and Tricks." Check it out and browse the other issues of
this (almost) monthly on-line newsletter.
Soon to be released
These extensions and scripts exist and are undergoing testing. They
will appear eventually!:
Theme conversion toolkit: now up to 20 handy
functions. Convert among measured and 3D
shapes. Change dimensionality. Extend polylines, patch holes in
polygons, and many more.
Capture text labels. A significant
extension to our popular script now captures all information about text in a
view, including font, size, color, orientation, and even how labels are
Compute grid convolutions (generalized focal
functions). (In beta.)
Change grid datums, including NAD conversion.
We have been posting solutions to many problems on ESRI's
ArcView and ArcGIS forums. Here is a selection, in reverse chronological
22 September 2004
furthest distance. One script quickly and efficiently finds the
furthest distance between a point and any other complex shape (a multipoint,
polyline, or polygon). The other script uses the first one to find the
furthest distance within any angular sector. A
separate posting in this thread gives step-by-step directions for
putting these scripts to use.
12 January 2004
a table. Do this when you want to create separate fields to hold
values scattered throughout a table's records. Follow the link for an
example and more explanation.
the true centroids of polylines.
percentage area overlap among a set of polygonal themes.
flowlines in a digital elevation model using this simple tool.
a stratified random sample of a categorical grid with varying sampling
random points along a line with minimum distance between them.
multi-colored fill patterns. Produce polygon fill patterns of
arbitrary complexity. This set of three scripts contains
general-purpose code along with an example creating a four-colored stripe
the centroids of multi-part polygons. This script extends the
capabilities of a popular ArcScripts extension.
points within polygons. This script, which is quite general, was
written to help summarize information about farms within a given distance of
tax parcels and to summarize information about businesses located within
overlapping potential service areas. The usual select-by-theme
approach will not work because the groups of points (farms, businesses) can
overlap. A related
script outputs one record for each unique point-polygon pair, as does
one (this seems to be a hot topic...).
all graphics in a single theme. Required by a user in order
automatically to delete all the graphics (labels, etc) associated with just
one theme, without having to select them individually.
shapes. This one works in all versions of ArcView, especially
those before 3.2 which has a much faster method to rotate shapes.
legend structures in Avenue. This script illustrates how to obtain
access to key portions of an ArcView legend using Avenue code.
enclosing disk. A collection of scripts to compute the smallest
circle that encloses a shape. Useful for certain kinds of proximity
analysis and optimization problems.
the color of a scalebar. Easy to do, but it's not possible without
this little script.
theme groups within a view. A user writes, "I have so many
themes in my view that it is becoming unmanageable. ... I need to maintain
control over all the individual themes and not have them turn on and off
like they are one theme. A hierarchy is what I am after. See the related
script that groups themes by common name.
features: plot them in a specified order. This solution responds
to the question, "I have a shapefile that has a column that consists of
time. I want to plot these points on the screen in order (slowly so I can
watch the order) based on this time column. How can I do this?"
a polygon into a 3 X 3 grid. The script is easily modified for
different size grids.
all extensions from a project.
lines connecting features in one theme to those in another. Useful
for "spider diagrams," "desire line plots," etc.
all segments of a street lying between two cross streets. Rather
specialized, but applicable to any situation where a route must be found
between two points in a network.
elements from a list while typing. "How can I create a dialog
that will update a list, such as names, when a letter is typed in a box. For
example, after typing in S, all names beginning with S are listed, then when
m all names starting with Sm are listed, and so on."
points randomly to polygons. The output is a point theme with
specified numbers of random points placed within polygon outlines.
28 January 2002
is an ArcView 3.x extension that automatically remembers positions and sizes
of view windows. It provides a button to back up through the last 20
configurations. The scripts can be added to buttons in any other
document--Table, Chart, Layout, Script, Project--for the same functionality.
25 January 2002
- We have posted a command-line utility for "pretty printing" and
marking up Avenue source code in HTML. Download it at Avenue
to HTML (ArcScripts) and read more about it at Ave2HTML.
21 December 2001
First selects the first occurrence of each instance of a selected field
in a table.
11 December 2001
24 October 2001
- Cartogram! creates
non-contiguous cartograms. This technique approximately fills areas on
a map in proportion to values of an attribute, providing a unique and
interesting data visualization method.
16 August 2001
- Tissot graphically displays
projection properties on any map. This is a unique tool, fun to use,
that can give you an intuition for how projections work, how to choose a
good one for your purposes, and how to evaluate the ones you are currently
using. (There is a small charge for downloading this software.)
- interpretations of arbitrary
Overview of free ArcView scripts, extensions, and utilities
Except where noted, these are delivered as Avenue scripts (.ave) or ArcView
extensions (.avx). The entries indicate when the software was last updated. Software is organized alphabetically by functional groups and
alphabetically by name within each group.
|Interactively display graphics
("Tissot indicatrices") on a view to show what the projection is
doing: how it changes scales, areas, angles, and orientation.
Excellent learning and analytical tool.
|Simply click a button to restore
previous view window sizes and positions. The functionality can
easily be expanded to include any kind of window.
|Merge an arbitrary number of user-selected tables into a
single table. A new table is created that combines the attributes of all
the tables. The tables to be merged need NOT have the same set of
|Reproduce the selections and calculations
you have performed on tables. Redo them at the click of a
button. Another button click turns it all into a working script!
|Query first is a
script that selects the first occurrence of each instance of a selected
field in a table. One nice application is the
detection and removal of duplicate records.
|Format a script nicely and
highlight its comments in HTML. Very useful when publishing scripts
on the Web or for reformatting existing scripts for readability.
|Verify that a script does not use any variable
names that could conflict with unloaded extensions.
|Produces a text report of data
sources underlying all active themes in a view, all selected documents in
a project, or any open chart, table, or layout. Very useful to
identify what files are involved in joins and "event themes."
|Grab anybody's dialog and turn it
into an editable Dialog Designer document. Useful for recovering
detached dialogs and for learning how to create your own dialogs.
documents. With one button press you move selected documents
to a new or existing doc GUI (graphical user interface). If you
want, a new GUI is automatically created for you.
|Record user actions into a "log file" or
"watch file". The output is the full text of the unencrypted
Avenue scripts that are run from every menu item, button, and tool.
Useful learning and diagnostic tool.
|Reload an extension with one simple
dialog. A convenience when developing and testing your own
joins and links
|Obtain a report of all tables in an
ArcView project, including details of all joins and links among
them. Very useful for documenting projects and recreating them in
|Control the sequence with which the
tab key navigates a dialog that you are developing. This
corrects a design limitation in ArcView's Dialog Designer extension.
|Protect your Avenue source code from copying. Makes
Avenue source code very obscure. Automatically removes comments and
unnecessary white space. Changes all variable names (except public
|Access and modify grid datasets
cell-by-cell. Includes the DLL, the DLL source (in Fortran), a
Fortran header to interface to the gridio library, and sample Avenue code
for interfacing to the DLL and using its procedures.
|Compute and display a statistical summary of values for
every selected grid in a view. This script accounts for the "NoData"
values in a grid.
|Play the game of Life.
More importantly, see how easy it is to program a cellular automaton (CA)
using "map algebra" statements.
|Reproject (or project or unproject) active grid themes.
Neither ArcView nor its Spatial Analyst extension, which is required for
this extension, will project grids. This one works very simply: just
choose another view for the new grid and the correct change of projection
will be applied.
|Create flexible, infinitely continuous,
multiple color ramps for ArcView legends. Even ramp graduated symbol
and unique symbol themes for greater effect.
|Desaturate all colors in the legends of all active themes.
"Desaturation" mixes the colors with white to make them appear
brighter and paler (and, usually, less obtrusive).
|For each active legend capable of computing class counts,
display those counts within parentheses after each label. Nice way
to summarize what is shown in a map.
|Hide unnecessary classes in all active legends. An
unnecessary class is one that symbolizes a feature outside the view's
extent. Useful for final map preparation. Uses an efficient
|Automatically create meaningful names for all TIGER
line themes downloaded from the ESRI site. These free,
high-quality, data are an amazing resource for every kind of analysis in
the U.S. However, it's a pain to use them because they come as
a large archive of files with cryptic names. This script is what you
need to use these data right out of the box.
|Change the order of features in a theme or
records in a table. This is the only way to ensure that critical
features really are visible in a theme where features overlap.
|Compute the relationship between
grid north and true north at points throughout a map.
|Compute and display, in new themes, the diameters of all
selected features in all active feature themes. This is a
useful analytical tool but is a hard to find feature in most GISes.
|Identify and resolve feature overlaps.
|Select all overlapping polygons in a theme in seconds using
this speedy algorithm.
|Create non-contiguous cartograms
from polygon themes. This software improves on the fine
"Cartogram!" extension, available on ArcScripts, by taking
advantage of the Transform2D class in ArcView 3.2 and later. This greatly
increases its speed, making it practical for large or complex maps.
For nice examples of cartograms for visualizing data, see The
Shrinking Student Pool and Higher Education: An Example from Pennsylvania,
by Robert N. Martin.
|Convert selected text in a view into a polyline shapefile
which, when labeled, effectively reproduces the selected text, including
its position and orientation.
lines to points
|Convert polyline and polygon boundaries to points in several
ways: points are created at regular intervals or the original node points
may be used. There are many publicly available scripts with similar
functionality, but this one has two special features: (1) you are
provided a random starting location, which is useful for designing
systematic sampling programs on transects, and (2) the number of points is
guaranteed proportional to the total lengths of all features, so
the points can be used for subsequent spatial density calculations or
|Create a polygon defined by the selected points in a point
theme (or all points if none are selected). The polygon will have no
(transverse) self intersections.
|Create any desired number of records in a new theme.
This script replaces the View|New Theme script and works exactly the same
way. This is useful for certain kinds of data conversions where you
will directly calculate shapes based on attribute data.
|Remove sliver polygons from all selected editable polygon
themes in a view, automatically.
|Change the direction of—“flip”—any line in a theme.
Just point near the desired end of the line. It takes effect
uniform random samples of polygon features. (This extension
complements our Sample
extension available elsewhere on these pages.)
|Interactively rotate text and graphics in a view. This
incidentally fixes a problem with boxed text and boxed callouts in ArcView:
this tool will rotate the boxes along with the text.
rotate, skew, and reflect selected shapes in active themes.
Available only for ArcView 3.2 and later. See our article
on the theory and use of this extension.
If, upon attempting to load an ArcView extension (ours or anyone else's), you
get a command window with a message like this (details vary, but they all
include "unrecognized object:"), it means your version of ArcView is
older than required by the extension. The only cure is to upgrade ArcView.
Change lines to points
Change lines to points requires ArcView 3.2 or later. It uses
"GeoCurves" for distance and bearing calculations. It can be
made to work in earlier versions of ArcView by commenting out the block (eight
lines) of script referencing the GeoCurve object in the Theme.PolyToPointByInterval
Versions of Flip lines through v 1.2 may exit with a "polyMin
not initialized" error. We fixed this bug in version 1.3.
The Memorized calculations "compile" option may produce some
erroneous (but harmless) code when you are calculating the value of the [shape]
field. This code checks for the existence of this field and attempts to
create it if it does not exist.
Memorized calculations does not update the formula selection
whenever the mouse is clicked within the existing selection. This is an
ArcView bug. Work-arounds, built into the Memorized Calculations
interface, include an alternative representation of the selected formulas (by
row number) and an audible confirmation of change of selection.
Transform shapes requires ArcView 3.2 or later. It relies on the
new "Transform2D" object to transform the shapes. Without this
object, transformation could be performed, but it would take roughly 100 times
longer. Therefore we have not provided alternative code for earlier
versions of ArcView.