Example: Create a New Data Source from a Manifold Image Server

Manifold image server modules are snippets of code which use the Manifold Image Server Interface (ISI) to automatically fetch image tiles from popular image servers like Virtual Earth, Wikimapia, Yahoo!, Google Maps, Yandex and many others. Image servers can provide street maps, overhead satellite imagery, combinations of streets and satellite imagery and other data as well.   Anybody can write an image server module using the ISI interface and many such modules have been written by users and published for others to use.  


Many image server modules are already built into Manifold.   Installing an additional, user-written image server module is easy: simply place the DLL for the image server module within the Manifold installation path, typically in the ~/Shared/Bin folder.   When Manifold System, Radian Studio or some other Manifold product that supports ISI launches it will automatically utilize that DLL to include the provided image server module.  In this example we will utilize a user-written image server module to connect to Microsoft's Virtual Earth server to generate a dynamic street map image.


See File - Create - New Data Source for instructions on connecting to many different types of web servers, including custom web server connection strings.




We launch Manifold and choose File - Create - New Data Source.  In the dialog we enter a more descriptive name, Bing Street Map, and for the Type we choose Web Server: imageserver.   That will automatically load the supplementary box just below the Type box with a list of all the various image servers we have installed on this machine, many of which are built into Manifold.   


We scroll through the list (a typically long list on this particular machine) and choose Bing Maps Street Map.  That will load the Source box with the connection string this image server utilizes.   We press Create Data Source.





A new data source appears in our project.   We can expand it and double click onto the image to open it and see it displays a typical Virtual Earth street map image.




We can zoom into the image by right-clicking and dragging a zoom box.




As we zoom into the image Manifold automatically fetches more tiles from the Bing server.   The Bing server automatically provides those tiles and also adjusts the content as we zoom further in.   Like many image servers, the Bing server has been set up to provide more detail as views zoom further into the scene.


Using right-click and drag we can zoom further into the image and more details will appear.  We will zoom far into Italy into the region around Rome.




As we zoom into the region around Rome, Bing will begin showing roads such as the ring highway around Rome.




In the illustration above, we have zoomed far enough into Rome to see the bend of the Tiber river with the green star-shaped park of the Castel Sant'Angelo above the river and the boundaries of the Vatican to the left.


Manifold image server modules are highly useful because they can provide georeferenced imagery from almost any type of web server, including commercial sources like Bing.  Such commercial services are often far faster than WMS or similar servers run by government organizations or by private groups.   


Image servers can also connect to various "open" mapping servers and can be pre-configured by their authors for specially desired features, such as requesting formatting from the server or requesting specialized content of interest, such as maps that show public transportation or terrain elevation of interest to people undertaking journeys on bicycles.


Image servers run by various organizations often will utilize data from yet other organizations or may provide their own data using the same protocol.   For example, the opentopomap.org group based in Germany provides topographic maps using OSM (Open Street Map) data and using OSM protocols.   Therefore, the same imageserver module built into Manifold that works for OSM also works for opentopomap if we change the URL used for the source to point to the opentopomap server instead of the OSM server.


We right-click into the Project pane and choose New Data Source.




In the New Data Source dialog for the Type we choose Web Server: imageserver and choose the OpenStreet Maps Base image server.   We change the default Name to Opentopomap so we know this data source is not OSM.   Next, we will edit the Source string to replace the OSM URL with the right opentopomap.org URL.




We use a URL of http://a.tile.opentopomap.org and we also click the Open as read-only checkbox.   Image servers are by their nature read-only, so checking the box is almost certainly redundant, but when adapting an existing imageserver module to an untested URL there is nothing wrong with taking extra precautions.   


Press Create Data Source to create the new data source.


The new data source appears in the Project pane under the name we gave it.   The small, black graphic of a lock that has been added to the yellow cylinder icon for the data source indicates the data source is read-only.


When we open the data source we see that the names used inside are still those assigned by the imageserver module we used, for OpenStreet Maps.  We double-click open the image, and then we Alt-click the title bar to undock the image window.


Pressing Zoom to Fit we see a typical image server display. Depending on how loaded the opentopomap server it may take a few seconds to fill in the display.  Success!


Zooming in closer we see that our small hack did indeed work: providing the opentopomap.org URL to the OSM image server correctly generates opentopomap displays.  The choice of colors from this server is a bit garish for our tastes but hey, it's free!


Because image servers are dynamic, easy to add to a project and require zero effort to style the maps and images displayed,  they can be a great way to provide background layers in maps.   


Credits - The use of the opentopomap.org URL with the OSM imageserver was first suggested by James Kelly in the georeference.org forum for Manifold users.   Thank you, James!


Internet changes - Providers of image servers come and go and often change their policies from free to paid, set limits on their services, change their URLs or protocols or otherwise alter what once was offered.  The URLs above, for example, for Bing and for opentopomap.org worked at the time this topic was written.   As with all things having to do with an ever-changing web, they might require adjustment in the future.


Collections of Web Servers - Check the Product Downloads page for pre-package project files in Release 9 / Viewer .map format that Manifold publishes which contain collections of dozens of popular web servers data sources.


Important:  Some web servers, notably TMS servers, use embedded command tokens.  Use Manifold's custom setting to connect to those.   See the File - Create - New Data Source topic for how to do that.


See Also

File - Create - New Data Source - an absolutely key topic for connecting to many thousands of different web servers.


Web Servers


Example: Spectacular Images and Data from Web Servers - A must see topic providing a gallery of views illustrating how Manifold can use web servers such as imageservers and other free resources to provide a seemingly endless selection of spectacular background maps, satellite images and GIS data with nearly zero effort.


Example: An Imageserver Tutorial - An extensive tutorial showing step by step how to add new data sources that are imageservers, how to show them as layers in a map, how to create a new drawing that matches the projection of the map and how to trace over what is seen in an imageserver layer to create an area object in the drawing.


Example: Create a New Data Source from a MAP File - Create a new data source from an existing Manifold .map project file.   This is the classic way to nest projects, one calling another, to create libraries of data and projects.   Access to nested projects has effectively zero performance loss and the links within projects take up effectively zero space so we can create huge constellations of data at our fingertips.


Example: Create a Data Source within an Existing Data Source - When a data source is writable, for example, if the data source is a Manifold .map file, we can work within that data source as if it were at the top level of our project.   For example, we can create a new data source that is nested within the existing data source.   This example shows how.


Example: Create and Use New Data Source using an MDB Database - This example Illustrates the step-by-step creation of a new data source using an .mdb file database, followed by use of SQL.  Although now deprecated in favor of the more current Access Database Engine formats, .mdb files are ubiquitous in the Microsoft world, one of the more popular file formats in which file databases are encountered.  


Example: Modify GPKG Geometry with SQL then Add Drawing - This topic provides a "Hello, World" example that shows a simple, but typical, task involving spatial data.  We will take a country-sized data set in GeoPackage (GPKG) format and change all areas in the data to the boundary lines for those areas and then save those boundary lines as a new table.  We add a spatial index to the table and create a new drawing to visualize the new table.


Example: Trace an Area in a Map over an Image Background - In a map with a drawing layer above an image layer (served dynamically by an imageserver), create an area object in the drawing by tracing over the outlines of something seen in the image layer below


Example: Style Applied to an Image Server Image - Because the Edit - Style dialog simply changes the way an image is displayed and not the data, it can operate on read-only data served by various web servers such as WMS REST servers.    In this example we look at every detail of creating a data source using a WMS REST  server and then manipulating the appearance of the display with Style.  We will connect to a WMS server that provides LiDAR data in various forms, including as terrain elevation.