SDL Component Suite - TGeoMap

TGeoMap is a Delphi™ component providing support for displaying calibrated scanned maps. It combines the graphical display of scanned images with the logic of calibrating the corresponding graticule. In addition, TGeoMap supports displaying and managing landmarks. The map image may be panned by dragging it with the mouse.

Please note that the use of TGeoMap is not only restricted to geographic maps. Due to its general calibration approach it can be used for any other application which requires a calibrated image (e.g. spectra, scanned medical images, sensitive maps, etc.)

More details can be found in the online help pages.

The unit GEOMAP is part of the SDL Component Suite and is available for Embarcaderos Delphi™ and C++Builder™.

Free Sample Programs

SimpleGeoMap Shows how to use the unit GEOMAP. Two calibrated maps of Austria and Switzerland are provided along with this application. Sources of the sample program included (Delphi 6).
(678 kB)
MoveCar Displays a car driving along a route of Austria. If you want to use GEOMAP for visualizing your current position (obtained from a GPS receiver), you should look into the source code (Delphi 6) of this example.
(1472 kB)
GeoCal3P This sample application shows how to perform a 3-point calibration of a map assuming that the scale of the map is sufficiently small so that the graticule will be linear. This 3-point calibration procedure handles even rotated or distorted maps as long as the distortion is linear.
(2880 kB)

What's new:

  • Release 10.7   [Aug-24, 2020]
    • no changes

  • Release 10.6   [Mar-09, 2018]
  • Release 10.5   [Oct-10, 2016]
    • no changes

  • Release 10.4   [Jun-02, 2015]
    • no changes

  • Release 10.3   [Oct-06, 2014]
    • MouseAction now supports maSelectRect
    • the type declaration TLandMarkElement has been extended by lmPlus
    • the new event OnSelectRect is triggered after selecting a rectangular region
    • the method RemoveLandMark has been extended by another overloaded version
    • the new method CreateEmptyMapInMemory allows to create an empty map in memory
    • the method Assign implemented
    • bug fix: CreateAndLoadEmptyMap does not crash anymore (was due to a missing specification of the associated ellipsoid)
    • bug fix: CalcLatitude and CalcLongitude now correctly return FALSE values in the variable parameter "valid" if the map is not calibrated

  • Release 10.2   [May-30, 2013]
    • no changes

  • Release 10.1   [Oct-29, 2012]
    • landmarks can now show an optional caption which can be setup in its visual properties (font, size, color, tranparency, direction, style, alignment)
    • AddLandMark offers now additional overlaid versions to provide easy handling of captions
    • the new type declarations TLMText and TLMTextProperties declare types which are used for the caption of a landmark
    • the field "Height" in the record TLandMark has been renamed to "Altitude"
    • LoadLandMarks now triggers a repaint after loading the landmarks
    • the new event OnBeforeRenderData allows to draw on the map below the landmarks
    • bug fix: high lighting of landmarks has not been reset after removing a landmark
    • bug fix: SaveLandMarks and LoadLandmarks did not store/load the altitude

  • Release 10.0   [Oct-4, 2011]
    • constant array CountryData has been moved from SDL_geomap to SDL_geobasics
    • the structure TCalibData has been extended to support UTM projections
    • new property Caption allows now direct access to CalibData.Caption
    • new method ResizeMap allows to physically resize a map (both the image and the calibration data)
    • calibration models extended by Universal Transverse Mercator (UTM) and equi-rectangular projection (see CalibModel)
    • SaveCalDataAsXML and WriteCalDataToOpenXMLFile improved (format adjustments)
    • calibration algorithm of conic conformal model improved
    • bug fix: CalcExtentsAndResolution now calculates the correct map resolution if the map spans more than 180 degrees longitude
    • bug fix: SaveLandmarks and WriteLandmarksToOpenXMLFile missed saving the landmark ids and the time stamps
    • bug fix: ConfinePan did not work
    • bug fix: SaveMap does no longer remove the path info from the map image when saving it

  • Release 9.7   [May-31, 2010]
    • no changes

  • Release 9.51   [Dec-01, 2008]
    • no changes

  • Release 9.5   [Oct-31, 2008]
    • constant array CountryData provides list of most important data on the countries of the world
    • method CreateAndLoadEmptyMap improved: illegal parameter do not longer create exceptions; the labeling of the grid lines is now more concise; an additional callback routine allows to hook into customized drawing routines

  • Release 9.0   [May-28, 2007]
  • Release 8.5   [Feb-18, 2006]
  • Release 8.2   [Nov-03, 2004]
    • no changes

  • Release 8.1   [Aug-29, 2004]
    • available for Delphi™ 8 for .NET
    • new read-only property MapBitmap gives access to the internal map image
    • new property GratLineDist allows to set the distance betweem graticule lines

  • Release 8.0   [Apr-15, 2004]
    • methods for printing a map implemented (Printit and CopyToOpenPrinter)
    • caching mechanism implemented in order to speed up the handling of reduced maps (property CacheMagLimit)
    • new property AntiAlias allows to switch between color mapping modes
    • new property MouseAction allows interactive zooming and panning, and a rubber band
    • overloaded versions of CalcLatitude and CalcLongitude can deal with TPoint types
    • new methods MouseBox and AbortMouseBox implemented
    • new methods ControlToMapImage and MapImageToControl transform coordinates between coordinate spaces of scanned map image and screen display
    • method LoadCalDataFromXMLFile renamed to LoadCalDataFromXML (now two overloaded versions for files and streams are available)
    • CreateAndLoadEmptyMap: method to create a calibrated empty map
    • ParseCalibData is now available in two overloaded versions (read from file and stream)
    • property AllowPan replaced by property MouseAction
    • new property to confine the movement of a map (ConfinePanToMapImage)
    • new property Magnification allows to magnify map
    • new method CalibQuality to check the calibration quality of a map
    • new property SuppressPaint speeds up drawing of landmarks
    • LandMarkData is no longer read-only property
    • new event OnDataLoading allows to monitor the progress of loading a map image
    • SaveCalDataAsXMLFile renamed to SaveCalDataAsXML (now two overloaded versions for files and streams are available)
    • highlighting of landmarks implemented (HighLightLandmark, SetHighlightProperties)
    • new procedure DrawLandMarkSymbolOnCanvas allows to create symbol legends
    • new landmark symbols: lmCrossBox, lmSpade and lmUserDef
    • new method BringMapPixelToCenter moves map so that the specified pixel is at the center of the screen
    • Zoom history implemented (properties ZoomHistory, ZoomStack, ClearZoomHistory
    • ZoomState property implemented
    • ZoomPanEvent implemented
    • array LMTypeNames is now public
    • FindLandMark implemented
    • new functions LatitToStr and LongitToStr implemented
    • new event: OnDrawLandmark allows to draw user-defined landmarks
    • CopyToClipBoard implemented
    • PositionInMap and IsPositionWithinMap improved
    • MouseAction: extended by maRubberband, three new events supporting rubberband function: OnBeginRubberband, OnContinueRubberband, OnEndRubberband
    • new method PanMapToFillWindow implemented
    • new property LMRandomDisplayThreshold allows to control the number of landmarks displayed
    • bug fix: loading of landmarks does not crash anymore if landmark data contain empty line
    • bug fix: SearchData correctly returns now position of gitTown and gitBLOB entries

  • Release 7.2   [Mar-23, 2003]
    • GEOMAP is now part of GeoPack
    • function ParseCalibData implemented
    • additional calibration model based on biquadratic polynomials
    • new procedure RecalcCalibration allows to recalculate calibration model
    • RestoreLastDeletedCalPoint can be used to undo the removal of a calibration point
    • function PositionInMap implemented
    • bug fix: calibration of graticule led to wrong results if insufficient data were supplied
    • bug fix: CalcLatitude, CalcLongitude, and CalcPixelCoords returned distorted values

  • Release 7.0   [Sep-15, 2002]
    • TGeoMap is now available to the public and included in the SDL Component Suite 7.0