The Manifold street address geocoding engine can geocode addresses using generic geocoding data sources. A generic geocoding data source is a .NET object that supports the Manifold Geocoding Server (MGS) interface. When such a .NET object is correctly written and made available within a Manifold installation, it is called a Manifold Geocoding Server, that is, it is a geocoding server that conforms to the interface which allows it to be used by Manifold System.
Although geocoding servers are often web-based geocoding services, there is no reason why the MGS interface could not be used to provide access by Manifold to a local application, such as some third-party commercial geocoding software. Part of the magic of .NET and the MGS interface is that they can be used to connect different applications which otherwise could not interoperate.
Required Geocoding Tools
Manifold's street address geocoding capability becomes operational only when the optional Manifold Geocoding Tools package is installed. If you do not have the optional Geocoding Tools package, you will not be able to use the geocoding servers capability discussed in this topic.
Note that Manifold Universal Edition automatically installs the Geocoding Tools package. If you are using Universal Edition, you do not need to perform an extra Geocoding Tools installation as it has already been installed.
Enabling a Manifold Geocoding Server
When a .NET module for a Manifold Geocoding Server has been correctly written and made available to Manifold, it will appear in the Tools - Options Geocoding page. The pane captioned Use the following Manifold Geocoding Servers will show a list of available geocoding servers with checkboxes to turn them on or off. Check the box of a geocoding server to turn it on.
By default, Manifold will have one Manifold Geocoding Servers listed, for Oracle geocoding with Oracle Spatial. This geocoding server requires installation of Oracle Spatial geocoding capability. It is provided as a "built-in" capability of Manifold to assure compatibility with Oracle Spatial DBMS products.
Earlier editions of Manifold also had two additional Manifold Geocoding Servers listed but these have since been moved out into optional downloads:
§ The free Geocoder.us web-based service.
§ Microsoft Virtual Earth geocoding using the Virtual Earth service.
Because web-based geocoding servers often change, a geocoding server built into Manifold cannot be maintained without a new release of Manifold. Therefore, the geocoding servers for Geocoder.us and for Virtual Earth have been moved into free modules that can be downloaded from the manifold.net web site. Drill down through the Product Downloads page to find these.
The .NET module for the Oracle geocoding servers is automatically installed when Manifold System is installed. To get the geocoding servers for Geocoder.us and Microsoft Virtual Earth, download the zip file containing them from the manifold.net web site and unzip them to get the .dll files that make up the geocoding server modules. A geocoding server module is simply a .dll file. Place the .dll files for the geocoding servers into your Manifold System installation folder. When you restart Manifold they will be automatically incorporated into Manifold.
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.
When Manifold launches, none of the installed geocoding server modules are checked by default: if we would like to use a particular geocoding server we must launch the Tools - Options dialog, click on the Geocoding page and then check the box for the desired geocoding server.
Example: Using the Geocoder.us Geocoding Server
Consider the table of sushi restaurants from the About Geocoding topic.
We can geocode this table using the Geocoder.us geocoding server as follows:
In the Tools - Options dialog's Geocoding page we check the box for the Geocoder.us geocoding server and we uncheck all other boxes, such as the Use Manifold Geocoding Database box, for other geocoding data sources. We do this for the sake of this example to guarantee that any geocoding will be done only via the Geocoder.us geocoding server.
Next, with the table open we launch the Table - Address - Geocode dialog and geocode the table as we normally would. The process is remarkably slow, but eventually it does indeed geocode all of the records.
The illustration above has used the View - Columns dialog to move the new Latitude and Longitude columns to the leftmost part of the table, to allow a smaller illustration.
Advantages and Disadvantages of Geocoding Servers
This simple example shows some of the advantages and disadvantages of using a geocoding server. On the plus side, this particular geocoding server is free. Because it is based upon a centralized web database, it has the potential to use a geocoding database that is timelier than a geocoding database that is resident on your hard disk. It is possible to update a database on a web server continuously, while downloading files can take time. Therefore, a web-based geocoding service has the potential to incorporate changes in street addresses, such as the inclusion of new streets in rapidly growing regions, more rapidly than geocoding data sources distributed as files.
This advantage may at times result in a geocoding server returning a different location than a location determined using the Manifold Geocoding Database or other geocoding data sources. In the above example, the latitude and longitude locations obtained using the Geocoder.us geocoding server were identical to those obtained using the Manifold Geocoding Database. That's not surprising, because both the Manifold Geocoding Database and Geocoder.us use the same underlying TIGER/Line 2004 data. However, it could well be that a geocoding server using a different database would yield different locations.
This example also raises some typical limitations of web-based geocoding services. First, although it is theoretically possible to keep the service's database more up to date than a downloaded distribution of geocoding data, in actual practice few organizations have the resources to do more than simply recycle TIGER data. As of this writing, the free Geocoder.us web service uses the same TIGER/Line 2004 database used in the Manifold Geocoding Database so it will not be able to find any addresses not found in the Manifold Geocoding Database nor will it be able to plot any found addresses more accurately than the Manifold Geocoding Database.
Second, the free service is very slow. Using the Manifold Geocoding Database to geocode eleven records takes no time at all: the records are geocoded virtually as soon as we finish clicking the OK button in the Geocode dialog. In contrast, using the Geocoder.us server requires over two minutes for eleven records. Such a slow pace means that over four hours will be required to geocode a mere 1,000 records. As a practical matter, this speed limitation will prevent the use of the free Geocoder.us service in commercial applications, no doubt the intention, as a free demo service is not usually considered a substitute for faster, paid commercial services.
Third, the quality and performance of a web service can vary greatly between free versions, if such are offered, and paid versions of the same service. Some paid versions are very expensive compared to simply using the Manifold Geocoding Database or using MapPoint as a supplementary geocoding data source. Many commercial geocoding web services will offer a free version that is slower than the paid service or which is limited to some smaller number of records. Such limitations can cause frustration or time wasted on attempted troubleshooting if users are not aware of those limitations. If users understand the limitations of free services, such services can be an effective way of testing the range or accuracy of a given geocoding server against a sample set of data before purchasing a paid service.
Finally, geocoding web services can apply all sorts of restrictions to their use and not all sites do a good job of setting forth the terms and conditions of use. Some web sites attempt to specify limitations using language that is not drafted by legal professionals who are expert in such matters, or (at times a worse situation) using language drafted by legal professionals who may understand the law perfectly well but who are clueless about technology. Either way, the result can be language that is ambiguous, is nonsense or is self-contradictory within the context of the technology being used. That can force users into a guessing game as to what uses are allowed or not allowed. In all fairness, this is not a problem just with geocoding web services but seems to be a generic problem in many web sites.
The Geocoder.us web site as of the present writing appears to limit free access to "non-commercial" purposes. That is an easy restriction to observe for Manifold users since the free Geocoder.us service is too slow for commercial use, whatever is meant by that term. Even if it was faster, because the data behind Geocoder.us is the same as the data in the Manifold Geocoding Database (provided for free download on the manifold.net web site) and the Manifold Geocoding Database may be used for commercial purposes, there is no reason why anyone would choose to use Geocoder.us instead of the Manifold Geocoding Database. That is especially true given that using the Manifold Geocoding Database as a geocoding data source works immensely faster than using Geocoder.us.
Nonetheless, because Geocoder.us is a good idea and deserves publicity, it was selected as an example for implementation of a Manifold Geocoding Server. Users who experiment with the free Geocoder.us service will be more likely to sign up for paid service, which most likely will be faster. In addition, open source experimentation like that involved in people cobbling up their own examples of geocoding servers using the MGS interface is the sort of thing that helps new web sites like Geocoder.us get traction and expand their user base.
Continued user interest in this area will help web-based geocoding servers get better and better. We expect that in the future such servers will emerge to provide geocoding services, perhaps for a fee, in areas outside of the United States or to provide specialized geocoding services such as rapidly updated or especially accurate geocoding data sources using points of interest data. We hope the examples published by manifold.net will help such activities to flourish.
The Manifold Geocoding Server Interface
See the Geocoding 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. Source code is normally provided for any free geocoding server modules available for download on the manifold.net web site.
In case of difficult using a geocoding server, the first things to check are:
§ Has the Manifold Geocoding Tools package been installed? Manifold has no street address geocoding capability if the Geocoding Tools package has not been installed.
§ Has the desired geocoding server checkbox been checked in the Tools - Options - Geocoding dialog? Geocoding servers are not enabled by default and must be enabled by checking their checkbox.
§ If the geocoding server is a web service, does the computer have Internet access? If you can't launch a browser to visit that geocoding server's web site (they almost always have some web page advertising the service) then Manifold will not be able to connect over the web to the service, either.
§ Does this geocoding server require special configuration? Some geocoding servers may utilize services that require specification of user logins, passwords, account numbers or other information within some configuration file or through other means.
Manifold Geocoding Servers are not enabled by default for several reasons. The most important is that they are usually web-based services and web connections may not be available in all circumstances on machines where Manifold is installed.
Since geocoding servers are usually services on remote machines and the availability or manner of operation of such services is beyond the control of the user, it may be necessary to check if a particular service is still available before enabling it in Manifold or to configure some accessory files, perhaps to specify some special login name and password for a paid service, before the geocoding server may be used. Contact your provider of the geocoding server module being used for any such configuration information.
In the particular case of the Geocoder.us service for which an MGS module is provided as an example, although the service was available for free and worked fine at the time of publication of this release of Manifold, there is no guarantee that it will continue to be available to users at no charge or in the same manner. Web site URLs change frequently, so users should be alert to the possibility that a geocoding web service may have changed and is no longer available as a particular geocoding server module.
If you encounter trouble while using a third party Manifold Geocoding Server module that is said to enable a particular geocoding service, consider the possibility that the web service has changed and that a modified MGS module might now be required. Contact the author of the module being used and see if an updated module has been made available.
Geocoding Data Sources
Geocoding Data Extensions
Geocoding Server Interface
Geocoding with MapPoint
Street Address Geocoding