
Products - Map Generator
Czech
Introduction
Map Generator is used for creating statistic maps.
Geographic statistic map (next for short map) is intended for graphic representation of
certain value in map with color background, where backgroud color in given position
represents intensity of value with regard to choosed color scale.
Maps contain color background, aditional informations (borders, cities…) and legend with color scale and value ranges, that represents particular background colors.
Basic informations
Coordinate System
Map Generator uses interally Cartesian coordinate system
.
System is unitless - used units does not matter. Only is required to define
relation between coordinate system unit and pixel on bitmap (map scale).
For creating maps of the Czech Republic we use
Gauss-Krüger S-42
coordinate system.
Also is possible to use any other coordinate system, that can be transformed to two dimensional
cartesian coordinates, e.g. WGS 84
.
Quantity
Quantity is type of values, displayed in map – it can be any statistical value, such as percent of unemployment, measured concentration of substance (air quality), temperature, amount of precipitation (or other hydrology data) etc.
Input data
Input data are primary values, whose processed to create map. If we can create map, we need input data of our quantity. Every datum of input data must have following informations:
- Geographic position of place, where value was obtained or measured
- Name of place, where value was obtained – for example name of the measuring station
- The obtained or measured value
Input data may be loaded into program from XML files, or using extensions is possible to connect program to any external data source.
Color scale
Color scale is table for conversion value range to color.
Matrix
Matrix, a.k.a grid is two-dimensional value array, that is basic block of data processing in Map Generator. For our purposes we divide matrixes to:
- Input matrix contains prepared values, such as terrain altitudes, population density etc. It can be loaded from file or database
- Computed matrix contains values, that are result of interpolation of input values
- Result matrix contains values, that are result of combination of values in another matrixes
All the matrixes, that come together into map generation process must have equal sizes (cell size and cell counts in both axis) and geographic position of left bottom corner.
Data processing
While map generation, input values are processed using various algorithms.
Interpolation
Interpolation is used for infer values into cells of computed matrix.
Those values depends from input values. Every computed matrix must have associated interpolation algorithm.
At this time is implemented IDW
algorithms.
On image you see matrix, that have input values in some cells. Other cells are void - it's values are unknown, because at those places are not obtained (or measured) input values.
For each of void cell is using IDW computed weighted average from input values, where weight is distance between computed cell center and place where input value was given. Nearer input values affects result value more, further less. This IDW explanation is pretty simple - reality is more difficult.
Modification
Modification traverse cells in one or more matrixes, perform computation using particular algorithm and store result into original or newly created matrix.
This allow to modify matrix values -perform corrections, combine their values etc.
Rendering
Rendering get matrix, that contain final values and create map background. Every cell value is converted into color and stored into particular pixel in map.

In next phase, color background is repainted with vector shapes – borders, legend, measuring stations etc. The result is (by default) a PNG image. Other types (BMP, GIF, JPG) are also supported. Using Java API is also possible to join more generation processes to animated GIF.
Data processing control
Process of map generating can be very flexible. Some maps are created from more matrixes, others only from one. Also other algorithms ale optional and full configurable.
There are two ways to take control over data processing:
- Using XML file (the Runset)
- Using API
XML Runset
Runset takes control over data processing in Map Generator from loading input values, interpolations into matrixes, combinations, modifications, rendering, to storing final map into file or database.
Runset is XML file, where particular XML elements represents objects in Map Generator. By editing Runset it is possible to change Map Generator behavior and tune the result by our requirements.
Java API
MapGenerator is created on Java SE
platform.
Using Java language is possible to control map generating. You can create own Java project in
Eclipse
IDE (for example) and
incorporate MapGenerator.jar into it. By calling API in MapGenerator classes is possible to control map generating
process.
Extending program
While developing of Map Generator, we focused to flexibility and extensibility. MapGenerator is able to generate statistical maps from every area and it's abilities can be extended. Is possible to develop own combination a modification algorithms, input data sources, map writers, graphic objects (shapes) etc.
This extensibility in practice is provided by ability of Java to load classes at runtime using classloader
.
Most of objects in XML Runset have attribute class, that contain Java class-name, that provide required functionality.
In the case that user of Map Generator found existing Interpolation algorithm as unsatisfactory, it is possible to program own one and in Runset replace attribute
class content class="idea.map.interpolator.IDWInterpolator" by name of your own class.
Only one condition is, that user class must be derived from class idea.map.interpolator.AbstractInterpolator,
to comply contract between user class and rest of program.
ISKO Map Generator
Example of Map Generator extension is project ISKO Map Generator, that we develop for CHMU
.
This program generate air pollution maps from ISKO 2 database.
Maps are hourly generated from values in DB ISKO2 and stored back into this database. Two computing servers cooperative divide this work, in the case that one fail, second machine computes maps with greater priority in all available time.
For presentation
is used JSF application IskoPollutionMapView
on application server.
MapGenerator SDK
This SDK is for users with knowledge of Java language. It contain API documentation of Map Generator classes and
Eclipse project MapGeneratorExtension - set of user classes samples. This source code can be used
as starting point to learn, how to extend Map Generator by own functionality.
| UserModificator.java | Sample of user modificator algorithm - modify one matrix |
| UserCombinator.java | Sample of user modificator algorithm - combines three matrixers to another |
| UserInterpolator.java | Skeleton of user interpolation algorithm |
| MapWriterToFtp.java | Map writer, upload map to FTP server |
| DataValuesFromPgSQL.java | Load input data from PostgreSQL table |
| ColorScaleFromPgSQL.java | Load color scale from PostgreSQL table |
| TextWithShadow.java | Sample of user defined simple shape - shadowed text |
| Hamburg.java | Sample of user defined complex shape - city Hamburg |
| RotatedRectangles.java | Demonstrates rotation of cartesian positions |
| SegmentedPolygon.java | Demonstrates rotation of polar positions |
| RunSet.xml | Sample of Runset, shows how to use sample classes |
| HamburgPM10.xml | Sample of Runset, shows how to create simple pollution map |
| RunMapGeneratorExt.java | Does this same job as RunSet.xml, but using Java API |
You Want to Create an Own Maps ?
You can create own maps, using Map Generator. Before trying it, you need following:
- Be familiar with XML - you must be able to create and modify Runsets
- Understand, how Map Generator works - read the User Guide
- Be familiar with GIS - you must understand how coordinate systems works and more
- Have input (measured) data, and be able convert it to XML format
- Have GIS data for area, where you want to create map, e.g. city or country borders, etc.
- Acquire any variant of Map Generator
- For coding own Map Generator extensions, you need knowledge of Java language
License
Program Map Generator is available in following variants:
- Free edition - free for non-commercial using or testing. Allow control using XML Runset.
- Standard edition - allow to create maps for internal company/organization use only. Contains MapGenerator SDK for create own extensions.
- Professional edition - allow to sell created solution to another organization.
Professional and Enterprise editions contains MapGenerator SDK. It allows extending and control program using Java API.
If you are interested to acquire any variant, contact as.
Purchase
| Item | Price | Description |
|---|---|---|
| Standard edition | 900 € | License per one developer, with Annual Technical Support |
| Professional edition | 3000 € | License per one developer, with Annual Technical Support |
| Annual Technical Support | 300 € | License per one developer, email based support |
We can also develop custom Map Generator extension for you or prepare geographic data, create Runsets etc. Price of this work depends from amount of time, and it must be specified individually.
If you are interested about extending Map Generator (connect to own database for example), and don't have required skills of Java programming - contact as.
If you want to create own map and need GIS data - contact as.
Documentation
Download User Guide.
Maps gallery
Map of concentration SO2
SO2 concentration, hourly average, generated from ISKO2 database.
Dust above central Europe
On the 24th March 2007, many countries of central Europe were covered by dust, falling with the rain. The origin of this dust was from eastern Ukraine.
Data source - CHMI
Temperature Inversion Impact Air Quality
Czech TV, channel CT24 - World Weather 19.1.2009
Impact of winter temperature inversion
to Air Quality in the Czech Republic.