The aim of this posting is to document the more technical aspects of establishing the knowledge basis necessary to follow up the action plan against american mink (nevison vison) – an alien species in the Norwegian fauna. It will show how the Python programming language and relevant programming libraries (ArcPy and others) are used in an analysis aiming to understand where the mink can spread under given circumstances.
The motivation for this is to document the process for other relevant projects as well as to make relevant code and methodological descriptions available for other persons/institutions involved in similar projects. The work has been made possible with access to other freely available information online and as such this posting should be considered a timely way of paying back for “services provided”.
In Norway the American Mink is an alien species
American Mink is considered an alien species in Norway. In 2011 an action plan was published by the Directorate for Nature Management. It says the following about the species:
American mink (Nevison vison) hereafter named mink,escaped into the wild soon after the first imports in the 1920ies. Import of mink was motivated by plans for establishing a fur farming industry in Norway. Feral mink has since then established populations in all Norwegian counties. This alien invasive species poses a threat to endemic Norwegian biodiversity through predation and competition. Examples are predation on ground nesting birds, their eggs and young, European crayfish (Astacus astacus) and some species and populations of fish in freshwater. Damage to indigenous species from mink, as well as positive results of eradication programs has been documented in a number of European countries. (source: Handlingsplan mot amerikansk mink (Neovison vison) – DN-rapport 5-2011)
The below picture is of the critter in question. Working with an analysis project gets much more fun once you get some background on the species. Local knowledge to the areas also adds to the experience. In this case I was lucky enough to get an in depth description of the species and associated challenges from one of the biologists at work. My family also has a house in the coastal areas in question. So the motivation bit was also in place.
Our overall goal with this work is to keep the alien species away from islands with a protection status and to find weak connections to the mainland or other infected places to make its eradication easier.
How can GIS help in this process?
We started out discussing the method and drew a sketch indicating the challenge:
Combining the assumptions and required outputs we outlined a method for our analysis:
- Islands which in part or completely have a protection status are identified and named asset islands.
- Asset islands are buffered with 2.000 meters. This means drawing an outer line around all the islands at 2.000 meters. The area between the line and the island(s) marks an area where the alien species can access the islands by swimming to them.
- Islands that fall within the range of the previous category are assumed access areas for the islands of protection. These islands are added to the group of interconnected islands. These islands are again subjected to a buffering process similar to the previous one.
- Buffering is repeated until it no longer reaches other islands, or connection with the mainland is made.
- The result is a set of islands having in common that there are never more than 2,000 meters between them – directly or indirectly. This means that the alien species on one of these islands by swimming from island to island theoretically spread to all the islands in this set of islands.
- Islands not accessible per the description in section 4) and 5) are given an end buffer of 1.000 meters leaving us with a surface we can call the alien species eradication zone. Every single eradication zone will not have overlap with other eradication zones.
- We applied a 2.000 meter buffer to determine a risk line along the coast. These parts of the shoreline closer to an island than 2.000 meters.
The resulting visualization of the eradication zones looks like this when using an satellite background map.
This is the same map using the OpenStreetMap background map.
The zone data provided in the attribute table contains information about the number of islands within a zone, their total perimeter and area. I initially intended calculating the distance from the zone to the shoreline. This did however not work out – the calculations were meaningless since we often would get distances to shore across existing islands not within the eradication zone.
Using the code available at GitHub you can look at the results from a calculation using some demo data. Note that the very nice background map is based on a service from the Norwegian Mapping Authority.
Ideas and issues influencing the implementation
Along the development of both concept and code we ended up having to consider several issues:
- The number of islands along the Norwegian coastline is huge, the sample county Nordland alone has exactly 62.026 islands. During the analysis for the full coastline we concluded that this would not to be possible with the chosen libraries. Basically we got memory issues with ArcPy.
- The Norwegiancoastline spans across 16 administrative zones (counties). The analysis is made per admin zone. It is important that the administrators consider if there are any cross boundary eradication zones to consider and if so cooperate withthe neighbor in question.
- The final buffer operation around the last islands with a 2000 meter buffer is only 50% of the full zone size. This is done to avoid the visual confusion arising from two zones of full size intersecting while still not allowing for the proliferation of the chosen species.
- To highlight the parts of the coastline closer to the eradication zones than 2.000 meters we chose todo a separate intersect analysis between the full buffer (2.000 meters) and the coastline giving us a coastal risk line.
- The processing leads to several temporary files. These are left in the processing folder so that the user can him/herself inspect them and possibly also use them for visualization purposes.
- Small islands along the coastline might give rise to “fake” zones as such islands will “fool” the system since the rules for this calculation does not take into account the coastline vicinity of the next island. There result could then be a coast-near eradication zone.
The code has been written as part of my daytime work at the Norwegian Directorate for Nature Management. Neither I nor my employer should be made responsible for errors in the code. The whole thing is provided as is.
The tools used to solve this challenge were:
- WingIDE for Python
- yEd graphml editor
The code is being maintained on GitHub and the below link takes you to the most updated version of this code.
Should you find errors or room for improvement please contribute by joining github and send me a pull request. The code has been tested with the sample data also available in the above repository. The sample data is a subset of the archipelago of Nordland County. The coastline is complex with many islands and allows for most special cases which can be encountered n an analysis like this. Place the contents on root level on your computer and you should be good for a test drive. If you are running Linux or MacOS X you will have to adjust the paths accordingly in the current version of the code.
Other methods could be used to achieve the goals for this analysis. Here are some other potential ways:
- Raster based analyse instead of a vector based one
- Code optimization
- Use of FME instead of pure python using the ArcPy library
We have prepared a piece of software which has been helpful for us in our work. We are hoping that the descriptions above can be of help in similar projects in other parts of the world – possibly also for other species. The code is a tool to help you better understand how American Mink can spread in an arcipelago. It might be used for the same purpose for other species in other regions.
I guess the code could be used in relation to analysis on other types of ecological islands (not necessarily isolated by water). And it could also be used positively and not necessarily towards removing a species from an area. This way the zones could be used to understand how ecological islands are part of zones where a species can roam and prosper.
The code would not be possible without being part of a daytime job. A fair amount of hours went into this code – far more than I could possibly use in my spare time. Neither would it be possible without the helpful and insightful inputs by and discussions with Johan Danielsen. Questions and answers on gis.stackexchange.com has provided a lot of relevant background for this work. The postings and answers on the Society for Conservation GIS has also been a source of inspiration and background. This posting has been prepared by me, Ragnvald Larsen. It does not represent the opinions of the Directorate for Nature Management or other mentioned organizations.
Here are some interesting links related to the work: