filmov
tv
MARPLOT: Building a Desktop GIS for Emergency Response from FOSS Components

Показать описание
by Michael Katz
The MARPLOT program was first created in the early 1990s, and it has undergone many revisions in the years since then. This talk will discuss the program's latest incarnation, the MARPLOT 5 series, which entailed a complete rewrite of the code using many FOSS components and a new GUI based on user-centered design principles. Program features include supporting large numbers of objects on each layer, layers with heterogeneous object types, many file types supported for import and export, customizable legends and on-map annotation boxes, flexible per-object graphics settings, a wide variety of data-based and distance-based searches and polygon constructions, support for a large number of raster maps formats, support for WMS layers, intuitive management of downloaded tiles for offline use, full-session undo/redo, and touch-screen operability.
MARPLOT is structured as a client-server application, with both the client and the server running on the user's machine (both Windows and Mac are supported). The client is based on the Chromium Embedded Framework (itself based on Google's Chromium project), which provides a guaranteed compatible and fast embedded browser, instead of relying on whatever browser is installed on the system. The client uses OpenLayers 3, jQuery, and a large number of smaller FOSS JavaScript libraries.
The server is notable in that it is written "from scratch" instead of relying on MapServer or another GIS server engine. It is written in Python and C++, using the CherryPy web server, with various higher level functions in Python and using a C++ Python extension for the many parts of the program that need to be fast even for millions of objects (drawing, searching and sorting, importing and exporting). The C++ code makes use of many FOSS components, including the GDAL library for raster file access, the GEOS library for polygon construction, and the POCO libraries for handling cross-platform files and paths, XML, and JSON. The C++ code also uses the CImg library (with a number of custom modifications) for drawing the user data on tiles.
The MARPLOT program was first created in the early 1990s, and it has undergone many revisions in the years since then. This talk will discuss the program's latest incarnation, the MARPLOT 5 series, which entailed a complete rewrite of the code using many FOSS components and a new GUI based on user-centered design principles. Program features include supporting large numbers of objects on each layer, layers with heterogeneous object types, many file types supported for import and export, customizable legends and on-map annotation boxes, flexible per-object graphics settings, a wide variety of data-based and distance-based searches and polygon constructions, support for a large number of raster maps formats, support for WMS layers, intuitive management of downloaded tiles for offline use, full-session undo/redo, and touch-screen operability.
MARPLOT is structured as a client-server application, with both the client and the server running on the user's machine (both Windows and Mac are supported). The client is based on the Chromium Embedded Framework (itself based on Google's Chromium project), which provides a guaranteed compatible and fast embedded browser, instead of relying on whatever browser is installed on the system. The client uses OpenLayers 3, jQuery, and a large number of smaller FOSS JavaScript libraries.
The server is notable in that it is written "from scratch" instead of relying on MapServer or another GIS server engine. It is written in Python and C++, using the CherryPy web server, with various higher level functions in Python and using a C++ Python extension for the many parts of the program that need to be fast even for millions of objects (drawing, searching and sorting, importing and exporting). The C++ code makes use of many FOSS components, including the GDAL library for raster file access, the GEOS library for polygon construction, and the POCO libraries for handling cross-platform files and paths, XML, and JSON. The C++ code also uses the CImg library (with a number of custom modifications) for drawing the user data on tiles.
Комментарии