MassGIS has a database of geographic information - town boundaries, county boundaries, roads, parcel boundaries, buildings, wetlands. We collect map data from various state agencies or we make it ourselves. The MassGIS database contains feature information and also coordinate information. MassGIS knows not only the name of each town, but we can create an image of it. Each type of item is a separate "layer" like the old transparencies teachers used. A list of everything we have is here: http://www.mass.gov/anf/research-and-tech/it-serv-and-support/application-serv/office-of-geographic-information-massgis/datalayers/layerlist.html
Two Ways Data in the MassGIS Database is Served Over the Internet
There are many ways to interact with these datalayers. For online mapping MassGIS serves out these datalayers via two different mapping software systems - GeoServer and ArcGIS Server. They offer overlapping but in some cases different functionality. These two software packages run on two servers. A software package that connects to them is called a client. Both GeoServer and ArcGIS Server accept requests in either URL or XML format and return requests in a variety of formats (sometimes a map image is returned, sometimes an XML file with map feature information). Clients can be written in various languages. For example, there is a mapping client toolkit called OpenLayers. A programmer can use OpenLayers to create an online map that talks to GeoServer. The user using the application can zoom around the map and click on features to get information. The OpenLayers toolkit makes crafting the requests and handling the responses easier. Google maps is another mapping toolkit that can be used and MassGIS data can be placed on top. MassGIS maintains a wiki web site to also document the application programming interfaces (APIs) to GeoServer and ArcGIS Server. https://wiki.state.ma.us/confluence/display/massgis
Some Specific Examples
1) A state agency creates an Internet application where a member of the public will put in an address and the application needs the latitude and longitude returned. The ESRI ArcGIS Server geocoding service can be used to locate the user's address against the comprehensive MassGIS road database. The request/response pattern is described here:
Note - If the agency has a spreadsheet of addresses MassGIS can assign latitude and longitude more quickly by running a process here on the desktop instead of using the Internet service. The Internet service should be reserved for "on-the-fly" queries.
2) A state agency wants to map flu cases by town for Jan 2012. The agency can give a spreadsheet of data to MassGIS and we can create a datalayer served by GeoServer. Then that datalayer could be put into an online mapping application such as MassGIS' OLIVER: http://maps.massgis.state.ma.us/map_ol/oliver.php OLIVER is a configurable application - MassGIS can create customized copies of the application. Here is a DCR dams viewer with a different default map and different tools: http://maps.massgis.state.ma.us/map_ol/dams.php MassGIS also can build ESRI ArcGIS Server - based applications.
What if the Data that Needs to be Mapped Does not live in the MassGIS Database?
MassGIS gets updates to many datalayers from agencies on a semi-annual or quarterly basis. The open space and wetlands data are frequently updated. However, if an agency need to make an online map of frequently updated data or sensitive data that needs to stay at the agency there are methods. That will restrict some of the mapping client options. For example, OLIVER can only map data served from the MassGIS Database or from other GeoServer or ArcGIS Server instances (so your agency would have to run a mapping engine). Here is one possibility:
Agency A has a database of addresses of site that provide flu shots that is updated daily. This is not sensitive, but changes frequently. Agency A wants to put an interactive online map up so people can find a place to get a flu shot. Agency A could have their programmers write an online mapping application using some mapping toolkit - say, the Google mapping API. https://developers.google.com/maps/ The application could send the addresses to the MassGIS geocoding service as describe above to get a latitude and longitude, then put the marker onto the Google map.
This an example of an OpenLayers map that has a Google photo basemap with data from the MassGIS database on top (overlaid) using the GeoServer mapping engine. When the user selects the "i" button and then clicks on a river an XML request is sent to GeoServer and then the response information is displayed nicely formatted.