Using the OpenDragon Programmer’s toolkit for projects
The Programmer’s Toolkit exposes an Application Programming Interface (API) that allows a user with fairly basic C language programming skills to create new modules compatible with OpenDragon’s data and file structures. The Toolkit can be used for a variety of purposes:
To create new data import and output capabilities;
To implement processing options not currently offered by the turnkey package;
To implement novel or advanced image processing and vector processing algorithms that can be used in conjunction with the turnkey package.
During our tenure at KMUTT, a number of undergraduate and graduate student projects have used OpenDragon and the Toolkit. The fact that students do not need to develop new data formats and can use the OpenDragon application saves them time and allows them to focus on the novel aspects of their research. This section summarizes some of the work our students have done with OpenDragon.
Vector GIS using PostgreSQL (2005). Songpon Yookeaw and Nopporn Jinbunluphol created a prototype vector GIS system in order to evaluate the spatial database capabilities of the open source PostgreSQL database system. They used OpenDragon to process raster images to serve as backgrounds for vector display. Vector import and export used the OpenDragon vector file format.
Remote Sensing Image Classification using Neural Network (2005). Pawarat Kitmanomai and Prachya Lalitnorasate created a neural network classifier and compared its performance to the OpenDragon maximum likelihood classification. They used the Toolkit to read and write training and result images and to process signatures.
Generation and Animation of Perspective Views (2006). Korapin Atichaichotikul and Piyana Sukanghong developed an application to create a perspective view of a landscape based on a digital elevation model, draping the model with satellite image information in order to enhance the realism and information content. They used the Toolkit to read and process the DEM and image files.
Automatic Extraction of Road Networks (2006). Sasiwimon Ratchatasomboon 122795031 and Wittaya Unjai developed a system to identify roads in medium resolution imagery, using a combination of low-level (e.g. filtering) and high-level (e.g. context-based rules) approaches. They used OpenDragon and the Toolkit for all input, output and results display.
Image Processing in Hardware (2007). Kittituch Manakul and Surachai Chatchalermpul developed a co-processor to execute time-consuming components of image processing operations, such as gray-level co-occurence matrix calculations, in hardware using FPGAs (Field Programmable Gate Arrays). They used OpenDragon and the Toolkit to create a baseline, software-only implementation of their algorithms for comparison purposes.
Interactive Map and Directory for KMUTT Campus (2007). Aunyarath Prasittiarpa and Kanokporn Sudsangswang created a special-purpose GIS application to serve as an English/Thai interactive guide to the KMUTT campus. They used OpenDragon and the Toolkit to create a vector representation of campus roads and building footprints.
Travel-time GIS “Buffer” Operation (2009). Pirakorn Iamcharernying and Pawat Duantsatit developed algorithms to compute buffers that take travel time along road networks into account. They used OpenDragon for image input and display.
Viewshed Analysis (2016). For her 2-month internship project at KMUTT, Camille Aidat from ECE Paris used the Toolkit to create a module for calculating what locations are visible from a selected viewpoint.
Morphological Operations (2016). For his 2-month internship project, Guilhem de la Ruelle from ECE Paris used the Toolkit to create a module that implements the morphological operations of erosion, dilation, opening and closing, within the OpenDragon framework.
Improving the Estimated Area of Rice Cultivation by Classification Techniques . Ithiphol Ekahitanonda explored the efficacy of multi-temporal analysis, genetic algorithms, and fuzzy decision making approaches as ways to resolve ambiguities in identifying rice from Landsat ETM imagery. He used the OpenDragon Toolkit extensively, developing a wide range of new modules and utilities.
Change Detection in Natural Disasters: the Tsunami Case . Supannee Tanathong implemented an object-based strategy for characterizing landscape change after natural disasters such as the December 2004 tsunami. She used the OpenDragon Toolkit to experiment with segmentation using texture features.
Texture Based Classification of High Resolution Remotely Sensed Imagery . Decky Aspandi Latif explored the utility of several novel, computationally efficient texture metrics in classifying Quickbird imagery. He used the Programmer’s Toolkit extensively so that he could write code for his own algorithms and then use standard Dragon functions, invoked from inside his programs, for image display, subsetting, error analysis and so on.
All of the above projects would have been far more difficult if students had been required to develop all software capabilities “from scratch”. Although our students are studying Computer Engineering, they are not necessarily expert programmers. Nevertheless, they were easily able to apply the Toolkit to their projects.
Prior to the availability of OpenDragon, projects and theses related to remote sensing and GIS were rare in our department. The OpenDragon Projecthas improved student research quality, and has provided new visibility for the field of geoinformatics within our primarily engineering-oriented university.
Using OpenDragon to teach geoinformatics software development
In addition to encouraging students to use the Toolkit for research, we have also used OpenDragon to teach two different courses related to geoinformatics software development.
The first is a course for seniors and graduate students within our own Department of Computer Engineering, entitled “Algorithms and Architectures for Geoinformatics”. This course introduces students to concepts of representing spatial information in computers, including rasters, non-topological and topological vectors, quadtrees, sparse data arrays, TINs, etc. We use actual source code from OpenDragon to illustrate concepts of pixel-, neighborhood- and region-based algorithms. Students complete group projects during the semester, often using the OpenDragon Toolkit as a foundation. Projects have included slope and aspect calculation, region-growing, buffer generation, edge extraction, optimal path finding and texture-based segmentation. Since all students had substantial backgrounds in programming, we focused on issues such as efficiency in algorithm and data structure design, and software engineering principles such as modularity, separation of concerns, and consistent style.
The second course, “Computer Programming for Geoinformatics”, was created to introduce masters students from the Chiang Mai University Department of Geography to the basics of writing software in the geoinformatics domain. The course was later repeated for masters and PhD students in the Burapha University Department of Geoinformatics (Bang Saen, Chonburi, Thailand). The goal of this course is provide the students with sufficient background to understand and evaluate commercial or third-party software, write small programs to help integrate existing packages, and create scripts to automate work flows. In both universities, the students had little or no experience with programming. Thus the course began with the elements of programming: variables, conditional statements, loops, functions and so on.
About half of the time in this second course was spent in laboratory exercises. The labs relied heavily on the OpenDragon Toolkit for raster work, most of which was done using the C language. For labs illustrating vector concepts, we used the OpenDragon vector format in some simple Java applications.
In both the computer engineering and the geography courses, OpenDragon served as a core resource. A student studying software development will learn a great deal more from viewing real-world code than from reading a text book or listening to lectures. Writing code provides an even deeper understanding of the issues involved in software development. Our experience in Chiang Mai indicates that even non-technical people can benefit from well-written, well-organized code examples and exercises.
Most students in geography, planning, forestry, oceanography, and other natural resource related disciplines have very little exposure to programming concepts. Seeing the step-by-step operation of remote sensing or GIS processes, expressed succinctly in the form of a program, can help make the processing logic more concrete and easier to understand. In addition, of course, professionals with “spatial intelligence” are needed to work on future geoinformatics tools. The remote sensing and GIS developers of the future are at least as likely to come from the “softer” disciplines of geographic science as they are from the engineering side. Tools like OpenDragon and its libraries facilitate professional development by letting students “get their hands dirty” working with real code.