Mapping Bird Flu Data
Posted by Dave Bouwman | Posted in ASP.NET, DNN, Dojo, Virtual Earth | Posted on 30-05-2008
0
Starting in February we have been working with the Wildlife Conservation Society to create a map viewer for their Global Avian Influenza site (www.gains.org). This updated viewer launched a few weeks ago, and I thought I’d share a little bit about the project.
About the Project
The project is pretty straightforward, with only a few top level user stories:
- Map the scientific data that has been collected as part of the GAINS program.
- Allow users to filter the displayed this data by :
country,date range,species, and influenza subtype.
Also facilitate this functionality via Url parameters.
- Functionality to be delivered as a DotNetNuke module
- It has to be fast.
Technologies:
We used Virtual Earth for the mapping canvas since WCS needed a high-quality global data set, and this platform is free for non-profits.
For the UI, we dove into the Dojo Toolkit. This ended up working really well, with the exception of the tree view. It was just a huge pain to get the Dojo Tree to work the way we wanted it to, and dropping in the YahooUI TreeView solved these issues in minutes.
On the back end, it’s we used ASP.NET. Since this was going to be a heavy Ajax site, we also leveraged the ASP.NET web services which are marked up so that they “speak” json (anyone know if there is a more graceful / concise name for this??? ASP.NET Script Services?). Behind that there is a SQL 2005 tabular database, ArcGIS Server and ArcSDE.
The main UI for the map can be seen below. The data points are clustered, and symbolized based on the match to the filter criteria.
Data Filtering
The points displayed on the map meet a set of criteria, which can be chosen on this UI. Not that the design is overly beautiful, but it’s a mix of Dojo and Microsoft Ajax controls – using the best parts of both. Actually applying this criteria against the database and retrieving the points was non-trivial, so I’m going to write up another post about how we got all that working.
External Data: Dynamic WMS Tile Caching
The module can be configured to pull in tile services from different WMS servers. This shows my favorite – the global poultry density map. If you are on the site, you can turn these layers on / off this from Map Data –> Manage Atlas Layers. Administrators have a UI to setup the WMS Services. Since mass poultry migrations are rare, most of this data is pretty static. Thus we dynamically cache the tiles on the WCS server so we get improved performance. We do see some offsets in the tiles at the lower zoom levels due to the variations between WGS84 and the Web Mercator projection of VE.
External Data: GeoJSON Features from ArcGIS Server 9.2
We also have the ArcDeveloper 9.2 REST API for ArcGIS Server 9.2 in the mix, pulling in flyway geometries. For species that have flyways, an extra item shows up in the identify tree. Here’s a link to a map showing Calidris alpina, which has flyways. Mouse over a feature, click “View Details” in the pop-up and then expand the tree until you see “Show Flyway”. This makes a JSONP call to the REST service running on a different server, grabs the geometries and drops them into the map. Since this species as multiple flyways, multiple polygons are drawn with various colors.
It’s been a great project to work on, and we are continuing to work with the Wildlife Conservation Society to add additional functionality into this application.


So we needed to do some testing of sites on Safari on a Mac, and I asked around the company, and low it turns out that there was an orphan MacBook Pro floating about. After a quick trip via FedEx, this lithe beast is now sitting on my desk. Turns out that the power supply has a short in it, so it will be a few days before I fire it up and take furtive steps into the the heart of darkness.
