Why Was MapWindow GIS Developed?
From MapWindow GIS
May 1, 2004
To Whom It May Concern:
Several people have inquired as to why MapWindow was developed. Hopefully this will help answer the question.
In 1998, I was part of a group of researchers at the Utah Water Research Lab in Logan, Utah where we began doing map-based modeling and map-enabled projects using MapObjects LT 1.0 from ESRI. As it turned out, we ran into some major road blocks with MapObjects LT 1.0. The problem for us was the inability to access or modify any of the underlying spatial or tabular data directly through code (i.e. edit the ".shp" file or the ".dbf" file.) Also we could not display or interact with grid data.
In one project, we wanted to allow a user to select a shape on the map (e.g. a land parcel) and dynamically modify it by clicking on the map and dragging one of the points to a new location. In another project, we wanted to allow a user to watch a scenario progress over time showing the location of a stream shifting. We also had several projects that needed much more direct access to the DBF data accompanying the shapefiles and to grid data in various formats. For example we were working on a watershed delineation tool that wouldn't require use of any commercial spatial data analysis module.
These kind of highly dynamic, interactive and grid-oriented functions that require low level access to shape, tabular and grid data were not well-supported in any of the existing GIS programming components that we identified. One alternative was to move to a desk-top GIS system, and write our tools as extensions. However, there are many applications, particularly environmental science and engineering applications that are more suited to a stand alone environment because of the need to distribute the tool to individuals who do not own a desktop GIS and are not GIS experts.
As a result of these issues and other issues, we developed the core MapWinGIS.ocx component as an alternative to existing GIS programming components. MapWinGIS.ocx is an ActiveX control that can be dropped on a VB form giving full ability to display, query, manipulate, and otherwise use spatial data.
Our development team at USU was in a particularly good position to develop MapWinGIS.ocx, because of our access to both engineers and computer scientists. As such, we worked to optimize MapWinGIS.ocx for use as a fully functional model interface, not just as a map viewer. This involved speeding up image and grid display, limiting the amount of re-drawing that the user sees, and including application programmer interfaces (APIs) for low-level access to grid, shape, table, image and 3-D triangulated (TIN) data.
Now you may be wondering why we also built the MapWindow application... If so, please read on...
In several of the GIS-enabled projects that drove the need for MapWinGIS.ocx, we found that we were constantly re-writing legend tools, toolbar navigation, and project management. Also, we found that sometimes we wanted to deploy an application quickly and easily that used some combination of functionality written for other projects.
For example, the 3-D TIN viewer was a useful tool for both the Avalanche Hazard Mapper, and some customized watershed data viewers. Rather than embed the 3-D TIN viewer code in both applications, we designed a "plug-in" architecture and a customizable GIS application that could be used to quickly assemble different applications using different pre-built "building blocks".
In short, the MapWinGIS.ocx ActiveX control was built to support GIS functions in totally unique GIS-enabled applications, and the MapWindow application was built to help users deploy GIS-enabled applications that can be assembled from pre-built plug-ins and data sets.
Thanks,
Daniel P. Ames, PhD
Addendum
In Fall 2004, I took a position at Idaho State University as the director of academic programs in geographic information science. As part of this move, I have been working to organize the MapWindow Open Source team to continue to develop and deploy MapWindow tools under the Mozilla Public License 1.1.
















