A recent development on the Internet is the emergence of a new class of image servers, which are web sites or web services that provide geographic images to users or programs seeking an image displaying a particular geographic region on Earth. Sites like TerraServer, Google Maps, Google Earth, Microsoft Virtual Earth, Yahoo! Maps and many more provide on-demand viewing of a variety of geographic images. Manifold can work with images from such servers if drivers are written that conform to a set of commonly-occurring interface standards expressed within the Manifold Image Server Interface API.
Depending upon the content provided by the server, such images can be:
· Satellite or Aerial Imagery - Photographic images that show a particular region as seen from above. Examples include TerraServer and Microsoft Virtual Earth.
· Street Map Imagery - Images that show a raster rendering of what would otherwise be presented as a vector drawing, as if someone made a screenshot of a drawing or vector map in a GIS system. The Microsoft Virtual Earth web service provides such images. Some image servers can present street map imagery with the "white space" made transparent. These displays are convenient to use as layers above satellite imagery layers so that street annotations can be seen over the satellite photos.
· Other Images - Images that show shaded-relief surfaces, renderings of CAD drawings (like a screen shot of a CAD drawing) and other content. Examples include images served by Manifold System web services.
Although the interfaces to such image servers vary in the details, in general they tend to have such similar capabilities that it is possible to use a more or less standardized dialog to link images from such servers. Manifold provides a standard Image Server Interface (ISI) that can be used to write an ISI driver for an image server so that it may be used from the standard Manifold image server dialog.
Image servers supported by an ISI driver are called Manifold Image Servers. ISI drivers can be either built into Manifold System or can be loaded as external add-ins. In either case, if an ISI driver exists within Manifold then access to the supported image server will appear to be a built-in Manifold capability whether or not the ISI driver was installed as an add-on or was built into Manifold itself.
By default, there are two Manifold Image Servers supported with ISI drivers:
· TerraServer - An ISI driver built into Manifold allows linking images from a variety of TerraServer themes.
· Manifold IMS Web Sites - A built-in ISI driver allows linking images from an IMS web site created using Manifold System if that web site was created with the IMS option to create an image server page. Note that using Manifold IMS to serve images in this way is a slightly different technology than the default IMS server and is in addition to Manifold's ability to function as an Internet Map Server or as an OGC WMS server.
In addition to the above two built-in ISI drivers, there are many other drivers created by third parties and distributed as open source projects, for example:
· Google Maps - An open-source ISI driver that allows using Google Maps as a Manifold Image Server to provide images of street maps. Must be installed.
· Google Earth - An open-source ISI driver that allows using Google Earth as a Manifold Image Server to provide satellite images and overhead aerial photographic images. Must be installed.
· Virtual Earth Street Map Image - An open-source ISI driver that may be downloaded from numerous sources on the web allows using Microsoft Virtual Earth as a Manifold Image Server to provide images of street maps. Must be installed.
· Virtual Earth Satellite Image - An open-source ISI driver that may be downloaded from numerous sources on the web allows using Microsoft Virtual Earth as a Manifold Image Server to provide satellite images and overhead aerial photographic images. Must be installed.
· Yahoo! Maps Street Map Image - An open-source ISI driver that may be downloaded from numerous sources on the web allows using Yahoo! Maps as a Manifold Image Server to provide images of street maps. Must be installed.
· NearMap - A super high quality image server providing satellite and street views, primarily in Australia.
· OpenStreetMaps image servers - Open source, open content street data presented by renderers such as CloudMade and others.
All of the above image servers must be installed. They are easy to download from the manifold.net image servers page (find it by drilling down through the Product Downloads page), except for the Google servers which are not distributed by manifold.net but which must be downloaded from other web sites.
Many image server providers will provide both satellite views and street map views. For example, the Microsoft Virtual Earth open source project provides access to both images of street maps and also of satellite imagery. manifold.net encourages all Manifold users to employ Microsoft Virtual Earth in preference to Google image servers. See the Linked Images from Google Servers topic for reasons why.
ISI drivers created by third parties are not supported by Manifold tech support. Such modules are often open source projects with full source code available so that communities of users can support each other and make whatever modifications are desired. Users often discuss such open source projects in the usual open source web sites or on Manifold user community forums.
Developers wishing to create ISI drivers for other image servers can study the open source code for existing image server modules (downloadable from the manifold.net web page) to learn how to create such drivers. Source code for such open source projects is available in the usual web sites serving the open source community. An ISI driver is, in effect an alternative browser that can connect to image server sites and provide a bridge for applications like Manifold to use the resulting imagery.
All Manifold Image Servers supported by ISI drivers will automatically fetch images to tile a particular region of interest as indicated either by the context of whatever component had the focus when the File - Link - Image dialog was launched or by manual specification of latitude and longitude extents, which can be a global extent if desired. Manifold Image Servers also normally allow a choice of resolutions and image levels to be downloaded if a linked image is to be converted into a static image within the project. The image linking dialog for all image servers using ISI drivers is virtually the same.
Very important: Before using an image server you must install the image server module for the image server you wish to use in your Manifold System installation. See the instructions below.
To create a linked image from a Manifold Image Server:
1. Image server modules will normally link worldwide coverage by default. If you want the image server to show only the region covered by a specific drawing or other component, open a drawing or other component showing the region to be covered by the image fetched from the server. Although we can specify the whole world or manually specify the latitude and longitude extents to be covered by the image, it is sometimes desired to let Manifold automatically restrict the view fetched to the extents of a given component. If you want to do that, open the component in a window and pan and zoom it to the region you want linked from the image server.
2. Choose File - Link - Image
3. In the Link dialog's Files of type box choose Manifold Image Servers ()
4. In the resulting dialog, the Server box lists all Manifold Image Servers for which ISI drivers have been added to the system, plus the built-in setting for Manifold IMS Web Site. The built-in ISI-supported option of TerraServer will not appear in this dialog as it is accessed through its own Files of type choice. If you have installed any additional ISI drivers, such as those for Microsoft Virtual Earth, these will appear in the dialog. Choose the type of image server desired, for example, Virtual Earth Street Map Image.
5. Enter a URL to use for the connection (required for some servers, such as Manifold IMS web sites) or use the default URL provided (in the case of Virtual Earth or similar). To use a URL other than the default, click the Use custom server URL and enter the desired URL and then press the Refresh button. Some image servers, like those often provided for use with CloudMade allow you to change the formatting of the images based upon small changes in the URL, so you would click the Use custom server URL and enter the desired URL for those.
6. Specify the desired image Scale. Most people will use the default, which is usually the highest resolution available for that image server.
7. Choose the latitude and longitude extents to be covered by the image. To automatically get a worldwide image, press the Global button. If a component was open when File - Link - Image dialog was launched you can press the Window button to load the Longitude and Latitude range boxes with the correct latitude and longitude ranges to cover the opened component. If we would like to manually specify the latitude and longitude extents of the image we can do so.
8. Press the Refresh button next to the URL box. When the Refresh button is pressed, Manifold will establish a connection with the image server. This is normally quite fast, but may take tens of seconds or even longer. When the connection is established the OK button will be enabled. Press OK.
9. An image using a linked image icon will appear in the project. This image can now be opened and used like other images, except that images linked from image severs are read-only and cannot be re-projected.
When an image is linked from an image server, until the image is completely fetched, it will appear in an image window as a partially transparent gray rectangle covering the extents of the image. If the image is used as a layer in a map, it will appear in transparent color in those parts not yet fetched as tiles from the image server.
Images linked via the image server interface will use whatever coordinate system (projection) is returned by the image server module in use. If an invalid coordinate system is returned when linking an image Manifold will use the default coordinate system.
See the specific topics on liking images from the various ISI servers for details on using the linked image dialog with those servers.
Typical Link Image Server Dialog Controls
Manifold image servers will usually use a dialog with the following controls.
The server for the type of image desired. Different servers offer a variety of choices, such as different resolutions or color vs. grayscale images.
Use custom server URL
Specify the URL to use for the image server. If checked, enables specification of a custom URL in the Server box. This allows a change of URL if the image server moves from the default URL.
URL to be used to connect to the image server. Enabled if the Use custom server URL box is checked.
Refresh - Establish connection to the image server.
Desired scale of the image. Some image servers provide a choice of different scales. Choosing 10m (ten meters) will result in a smaller image with fewer pixels than an image obtained by choosing 1m (one meter).
Longitude / Latitude
Longitude and Latitude extents of the image to be linked. Pre-loaded with values for worldwide coverage, like pressing the Global button by default.
Press this button to automatically load the Longitude and Latitude boxes with values from minus to plus 180 degrees longitude and from minus to plus 85 degrees latitude. This provides worldwide coverage, with the most extreme Northern and Southern five degrees clipped to avoid problems with some third party image server modules which have problems very near the North or South pole.
Press this button to automatically load the Longitude and Latitude boxes with values that cover the extents of whatever open component has the focus when the dialog is launched.
Cache data between sessions
Controls whether the cache folder used to cache image tiles retains its content between different sessions of Manifold or not. By default, the option is turned on. The cache folder is whatever location is set for Data Cache in the Tools - Options - File Locations dialog.
Calls up the Tools - Options - Proxy server dialog that allows configuration of a proxy server connection, if a proxy server is used to connect to the Internet. Passwords supplied for proxy servers will be stored in encrypted form.
The Manifold Image Server Interface (ISI)
Manifold's Image Server Interface (ISI) is an open standard published by manifold.net to make it easy for third party developers to create drivers that connect image servers to Manifold System. Image servers that can work with Manifold System using an ISI driver are called Manifold Image Servers and can be automatically accessed as if they were a built-in part of Manifold System using the File - Link - Image dialog.
See the Image Server Interface topic for a description of the interface. Programmers should also visit the manifold.net website for any supplemental documentation or example implementations, if any are made available in the future.
Third party developers creating image servers are strongly urged to craft an interface that, like those used by TerraServer, Microsoft and Yahoo!, is easy to support with an ISI driver. That will enable Manifold users to work with your image server from within Manifold System GIS projects. Using ISI provides maximum speed just as if your connection to the image server was built into Manifold's own internal code.
To write a new ISI driver for your image server, see the open source projects for the ISI drivers for the existing image servers. These ISI drivers provide the open source community with a rich, practical example of how to write an ISI driver for a real-world image server. See the usual open source sites for access to the ISI drivers for Manifold image servers.
Creating ISI drivers for image services as an open source project also has the benefit that if these web sites change interfaces then the open source community can alter the ISI drivers without having to wait for some vendor, such as manifold.net, to issue a new release of software. This enables innovative companies like the image server providers to keep innovating while the open source community can continue working within open standards to support those innovations.
Typical Image Server Driver Installation
A typical image server driver installation package consists of a zip file that contains one or more .dll files. The file should be unzipped and the resultant .dll files should be copied into the Manifold System installation folder. When Manifold is launched it will detect the new .dll files and will add the supported to the image server dialog choices.
The default Manifold System installation folder is C:\Program Files\Manifold System\. If you are operating a 64-bit Manifold installation in 64-bit Windows or a 32-bit Manifold installation in a 64-bit Windows system there will also be a second Manifold System installation folder at C:\Program Files (x86)\Manifold System\. In that case, the .dll files for image server modules should be placed in both the C:\Program Files\Manifold System\ and also in the C:\Program Files (x86)\Manifold System\ installation folders.
After installation the .dll files will appear as seen in the above screenshot, showing how image server files for Google, Yahoo! and Microsoft Virtual Earth have been added to the default image server .dll files installed with Manifold.
Projections and Linked Images from Image Servers
Most image servers serve images using Mercator projection or a projection derived from Mercator. Images linked from image servers cannot be re-projected so if they appear as a layer in a map the map must use the same projection as the image. This is easy to guarantee by always creating a map component from the image linked from an image server.
Never create the map first and then drag and drop the image into the map. Instead, always right click on the image server image in the Project pane and then choose Create - Map in the context menu to create the map from the image server image. That will guarantee that the map is created using the same projection as the image server image. You can then drag and drop other components, like drawings, as layers into the map.
Although most image servers use Mercator projection, not all do, or some use a projection incompatible with Mercator. Image servers which use different projections cannot be used together as layers in a map, because if the map is created using the projection of one of the image servers the other image server image cannot be shown in that map. Therefore, although images linked from most image servers can appear together as layers in a map some might not be useable in that way.
Smaller images (limited by the Window button to smaller regions and thus smaller sizes) can be unlinked and then used as ordinary, local, unlinked images. Those may be re-projected into any projection desired. Very patient users can use this process to create remarkably large images if they have the free memory and disk space on their computers. For example, early research for the next generation of Manifold products used images 20 GB in size that were created in Release 8.00 by unlinking images originally linked from image servers.
Manifold provides a special datum for use by ISI driver writers, the WGS84 Auto datum. This is equivalent to the WGS 84 datum used by Google and also used by Virtual Earth and Yahoo! Maps.
Exporting Image Server Images
An image linked from an image server may be exported to a file using the File - Export - Image command. The image linked from Virtual Earth will be exported as a single image using the specified image format.
If you have Enterprise Edition installed, an image linked from an image server can be shared to an Enterprise Server.
Unlinking Image Server Images
An image linked from an image server may be transformed into an ordinary image by right clicking the image linked from the image server in the project pane and choosing Unlink.
Caution: Images linked from an image server can be enormous and be far larger than can fit into either free disk available or memory on your computer. Think carefully about the size of image being unlinked, as it is very easy to carelessly ask for an image that is 0.3 meter in scale that covers such a large area that the resultant image requires terabytes of memory. Don't try this with a worldwide image linked from an image server. Instead, link an image using the Window button to constrain the image to a small, manageable extent and then convert, unlink or download it.
Converting Image Server Images
Another way to convert an image linked from an image server into an ordinary image is to open the image linked from the image server in a window and then choosing Image - Convert. Converting an image linked from an image server creates a local image in the project of the desired type, being equivalent to first unlinking it and then converting the new local image into an image of the desired type.
The Download command appears when the focus is on a window for an image linked from an image server. The command allows automatic download of all tiles available for the image at any level of resolution available. Tiles will be assembled into a single image at each resolution level selected.
See the Image - Download topic for details.
Most users of image servers will work with global settings. Hard disk capacity is inexpensive so using the cache option (on by default) will build up a collection of local tiles for that image server that will be recycled by any project that uses those tiles. That leads to faster performance since tiles already fetched don't need to be re-fetched through Internet. Even if you have a fast Internet connection the image server you may be using is probably not as fast as access to your local hard disk.
Limiting extents using the Window button to only the extent of some previously opened component can be useful but it can also be frustrating if you want to pan the image server to a slightly larger view that wasn't part of the originally defined extent. No massive amount of detailed tiles will get fetched if you don't actually zoom in to a particular region, so there's no harm in working with Global extents. Because image servers use pyramided imagery only a very small amount of image pixels are involved in getting worldwide views when zoomed out.
Usually the main reason someone wants to work with a Window limitation is to have a view that's already zoomed in to a particular image server where navigation down to the desired small region from a global view would be tiresome. For example, suppose we have a drawing that shows a development of twenty houses in a small town and that is all we are interested in. We would normally zoom out the drawing a bit to provide some extra room on the margins and then link an image server using the Window button to restrict the image server linked image to only the view shown in the drawing. If we pop open the image server linked image right away we see that it is zoomed into the small region of the housing development. No need to zoom in from a global view.
We can then create a map component from the image server linked image and drag and drop the drawing as a layer into the map and see the two components together as layers in the map. Always create a map from the image server linked image to be sure that the projection of the map allows showing the image.
A project that uses an image linked from an image server may be saved within .map project file just like any other project. However, keep in mind if sending that .map file to someone else they also will need to have installed on their machine the required image server module (if it is not one of the built-in image servers) to view the linked image. Loading a .map file with an image linked from a Manifold image server that is not installed on the system will report the problem and the name of the missing image server in the History pane.
It is easy to think that we can avoid the effort of creating cool maps for all purposes by simply downloading them using an image server choice in the Server box. Although the use of image servers is indisputably convenient, the use of large raster images downloaded from the web is far from being a universal replacement for informed use of vector drawings.
Linking an image from an image server does not create a vector drawing, but instead links an image that shows a rasterized view of a nicely-formatted vector map. It can be a very bad idea to attempt to replace a vector drawing with an image of a vector drawing, as the image, if unlinked, may require hundreds of times as much storage space (or if not unlinked, bandwidth) as the equivalent vector map. Image servers may have licensing restrictions, and they may not be available when you want them.
For these reasons, no matter how convenient we find image servers for some purposes we should remember that image servers are not usually an efficient way of getting information into local storage for a GIS project. A better alternative can be to find a drawing that shows the same information (usually easy in the US) and then format it in a pretty way. The result will be a far smaller, more accurate data set that loads and displays much faster and which we entirely control.
On the other hand, using image servers to acquire satellite imagery and street map images for a particular region is often a very good idea, especially outside of the US where vector drawings may be extremely difficult to obtain. In many parts of the world the only way to get a good vector map is to trace it yourself from an image server image in Manifold.
Image Server Interface
Intermediate Levels and Pyramids
Linked Images from Manifold IMS Web Sites
Linked Images from OGC WMS Servers
Linked Images from TerraServer
Working with Large Images or Surfaces
Exporting KML to Google Earth
A Flashy Demo - Web Queries and KML
Fun with Google Earth