Geocoding Server Interface

The Manifold Geocoding Server interface is a .NET interface used with geocoding server modules. Geocoding server modules connect to external geocoding services and geocode address data. For example, geocoding server modules can act as intermediaries between Manifold and various web sites that expose programmatic interfaces for doing simple geocoding tasks.

 

A Manifold Geocoding Server module should include one or more .NET objects exposing the Manifold Geocoding Server interface. Each of the objects should have a public parameterless constructor.

 

Installing a Manifold geocoding server module consists of installing the .NET assembly that contains .NET objects exposing the Manifold Geocoding Server interface into the Manifold installation folder, and doing the necessary configuration required by the assembly. There is no configuration required on the Manifold side besides copying the assembly into the Manifold installation folder and restarting Manifold.

 

Connecting to a Manifold geocoding server consists of creating an instance of the particular .NET object, and calling its methods to geocode data.

 

Interface Specification

 

The Manifold Geocoding Server interface includes the following members:

 

IServer

 

IResults Geocode(String address)

Geocode the specified address and return a set of matches. 

 

String Country

Get default country. Return a blank string if the server supports more than one country. 

 

String Name

Get the unique name of the geocoding server module. Only alphanumeric characters, spaces, and ".", "-", ":", "_", "<", ">", "(", ")", "[", "]", "{", "}", "?", "!", "~", "@", "#", "$", "%", "^", "&", "|" characters are permitted.

 

Boolean Remote

Return True if Manifold should minimize the number of geocoding requests, and False otherwise. Commonly used with servers accessed via the web or via slow network connections.

 

(Supplementary interfaces)

 

IResult

 

String Address

Get street address. 

 

String City

Get city name. 

 

String Country

Get country name. 

 

Double Latitude

Get latitude value from -90 to 90. If latitude value is unknown, return InvalidCoord. 

 

Double Longitude

Get longitude value from -180 to 180. If longitude value is unknown, return InvalidCoord.

 

String State

Get state name or province name. 

 

String Zip

Get zip code or postal code. 

 

IResults

 

Int32 Count

Get number of available results. 

 

IResult this[Int32 index]

Get result with given index, from 0 to Count-1. This is an indexer property. 

 

The definition of the main Geocoding Server interface and supplementary interfaces resides in Manifold.GeocodingServer.dll.

 

All interfaces are defined in the Manifold.GeocodingServer namespace.

 

Notes

 

Implement all members of the Manifold Geocoding Server interface, or the geocoding server module will not be functional. Pay close attention to the meaning of each property and method.

 

Make sure to name your geocoding server module in a unique way. A common technique is to use the name of your company or project as part of the name for a geocoding server module, for example, Acme Corp Geocoding Server for Canada. Do not use any characters that are not explicitly permitted.

 

Limit the amount of memory used by your geocoding server module to a minimum. If you want to cache the results returned by the server, be sure to design and follow a robust caching policy. Do not blindly cache every result without ever pruning the cache.

 

Limit the amount of bandwidth used by your geocoding server module. Return True in the Remote property if you are going to use a web connection or a slow network connection.

 

Design your geocoding server module to operate with minimal permissions. At the very least, your module should operate in the context of a normal user account. It is frequently beneficial to declare all permissions required by the module via .NET mechanisms, for use in limited-permission environments.

 

Design your geocoding server module so it does not require any configuration. If you want the user to be able to customize the operation of the module, provide an interactive configuration tool. Consider storing configuration options in isolated storage, using per-user isolation.

 

Programmers should visit the manifold.net website for any supplemental documentation or example implementations, if any are made available in the future.

 

See Also

 

Geocoding Data Sources

Extensions

Image Server Interface

Manifold Geocoding Servers

Street Address Geocoding