Index: /MGET/Branches/Jason/PythonPackage/src/GeoEco/FisheryAnalysis/FEET.py
===================================================================
--- /MGET/Branches/Jason/PythonPackage/src/GeoEco/FisheryAnalysis/FEET.py (revision 805)
+++ /MGET/Branches/Jason/PythonPackage/src/GeoEco/FisheryAnalysis/FEET.py (revision 806)
@@ -295,7 +295,5 @@
 
                     fisheryID = cursor.GetValue(fisheryIDField)
-                    Logger.Debug(_(u''))
-                    Logger.Debug(_(u'Processing fishery %(id)s:') % {u'id': str(fisheryID)})
-                    Logger.Debug(_(u''))
+                    Logger.Info(_(u'Creating envelopes for fishery %(id)s.') % {u'id': cls._GetFisheryDisplayName(fisheryID)})
 
                     # Start by projecting the geographic fishing zone
@@ -555,5 +553,5 @@
             if minDist is not None:
                 minDist = float(minDist)
-            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': str(fisheryID), u'field': minDistField, u'value': repr(minDist)})
+            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'field': minDistField, u'value': repr(minDist)})
             if minDist is not None and minDist <= 0:
                 minDist = None
@@ -565,9 +563,9 @@
             if maxDist is not None:
                 maxDist = float(maxDist)
-            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': str(fisheryID), u'field': maxDistField, u'value': repr(maxDist)})
+            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'field': maxDistField, u'value': repr(maxDist)})
             if maxDist is not None and maxDist <= 0:
                 maxDist = None
             if maxDist is not None and minDist is not None and maxDist <= minDist:
-                Logger.Warning(_(u'For fishery %(id)s, the value of the %(f2)s field (%(v2)s) is less than or equal to the value of the %(f1)s field (%(v1)s). This is not allowed. As a consequence, the fishery will not be constrained by distance to %(dn)s.') % {u'id': str(fisheryID), u'f1': minDistField, u'v1': repr(cursor.GetValue(minDistField)), u'f2': maxDistField, u'v2': repr(cursor.GetValue(maxDistField)), u'dn': featureDisplayName})
+                Logger.Warning(_(u'For fishery %(id)s, the value of the %(f2)s field (%(v2)s) is less than or equal to the value of the %(f1)s field (%(v1)s). This is not allowed. As a consequence, the fishery will not be constrained by distance to %(dn)s.') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'f1': minDistField, u'v1': repr(cursor.GetValue(minDistField)), u'f2': maxDistField, u'v2': repr(cursor.GetValue(maxDistField)), u'dn': featureDisplayName})
                 return None, None
         else:
@@ -575,9 +573,9 @@
 
         if minDist is None and assumeZeroMinDist:
-            Logger.Debug(_(u'Fishery %(id)s: Assuming minimum distance to %(dn)s is 0.') % {u'id': str(fisheryID), u'dn': featureDisplayName})
+            Logger.Debug(_(u'Fishery %(id)s: Assuming minimum distance to %(dn)s is 0.') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'dn': featureDisplayName})
             minDist = 0.
 
         if minDist is None and maxDist is None:
-            Logger.Debug(_(u'Fishery %(id)s: Not constrained by distance to %(dn)s') % {u'id': str(fisheryID), u'dn': featureDisplayName})
+            Logger.Debug(_(u'Fishery %(id)s: Not constrained by distance to %(dn)s') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'dn': featureDisplayName})
             return None, None
 
@@ -589,5 +587,5 @@
             idFieldValue = cursor.GetValue(idFieldInTable)
             if idFieldValue is None or isinstance(idFieldValue, basestring) and len(idFieldValue.strip()) <= 0:
-                Logger.Debug(_(u'Fishery %(id)s contains a NULL or empty value for the %(field)s field. It will not be constrained by distance to %(dn)s.') % {u'id': str(fisheryID), u'field': idFieldInTable, u'dn': featureDisplayName})
+                Logger.Debug(_(u'Fishery %(id)s contains a NULL or empty value for the %(field)s field. It will not be constrained by distance to %(dn)s.') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'field': idFieldInTable, u'dn': featureDisplayName})
                 return None, None
             
@@ -673,5 +671,5 @@
             if minValue is not None:
                 minValue = float(minValue)
-            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': str(fisheryID), u'field': minField, u'value': repr(minValue)})
+            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'field': minField, u'value': repr(minValue)})
         else:
             minValue = None
@@ -681,7 +679,7 @@
             if maxValue is not None:
                 maxValue = float(maxValue)
-            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': str(fisheryID), u'field': maxField, u'value': repr(maxValue)})
+            Logger.Debug(_(u'Fishery %(id)s: %(field)s = %(value)s') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'field': maxField, u'value': repr(maxValue)})
             if maxValue is not None and minValue is not None and maxValue <= minValue:
-                Logger.Warning(_(u'For fishery %(id)s, the value of the %(f2)s field (%(v2)s) is less than or equal to the value of the %(f1)s field (%(v1)s). This is not allowed. As a consequence, the fishery will not be constrained by %(dn)s.') % {u'id': str(fisheryID), u'f1': minField, u'v1': repr(cursor.GetValue(minField)), u'f2': maxField, u'v2': repr(cursor.GetValue(maxField)), u'dn': rasterDisplayName})
+                Logger.Warning(_(u'For fishery %(id)s, the value of the %(f2)s field (%(v2)s) is less than or equal to the value of the %(f1)s field (%(v1)s). This is not allowed. As a consequence, the fishery will not be constrained by %(dn)s.') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'f1': minField, u'v1': repr(cursor.GetValue(minField)), u'f2': maxField, u'v2': repr(cursor.GetValue(maxField)), u'dn': rasterDisplayName})
                 return None
         else:
@@ -689,5 +687,5 @@
 
         if minValue is None and maxValue is None:
-            Logger.Debug(_(u'Fishery %(id)s: Not constrained by %(dn)s') % {u'id': str(fisheryID), u'dn': rasterDisplayName})
+            Logger.Debug(_(u'Fishery %(id)s: Not constrained by %(dn)s') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'dn': rasterDisplayName})
             return None
 
@@ -698,5 +696,5 @@
             raster = cursor.GetValue(rasterField)
             if unclippedRaster is None or isinstance(rasterField, basestring) and len(unclippedRaster.strip()) <= 0:
-                Logger.Debug(_(u'Fishery %(id)s contains a NULL or empty value for the %(field)s field. It will not be constrained by %(dn)s.') % {u'id': str(fisheryID), u'field': rasterField, u'dn': rasterDisplayName})
+                Logger.Debug(_(u'Fishery %(id)s contains a NULL or empty value for the %(field)s field. It will not be constrained by %(dn)s.') % {u'id': cls._GetFisheryDisplayName(fisheryID), u'field': rasterField, u'dn': rasterDisplayName})
                 return None
 
@@ -800,4 +798,16 @@
         return s
 
+    @classmethod
+    def _GetFisheryDisplayName(cls, fisheryID):
+        if isinstance(fisheryID, float):
+            s = str(fisheryID)
+            if s.endswith('.0'):
+                s = s[:-2]
+            else:
+                s.replace('+', '')
+            return s
+        
+        return str(fisheryID)
+
 
 ###############################################################################
@@ -1069,6 +1079,6 @@
     typeMetadata=BooleanTypeMetadata(),
     description=_(
-u"""If true, edges of the envelope polygons that are constrained by
-bathymetry will be "simplified" according to the rules described in
+u"""If true, edges of fishing envelope polygons that are constrained
+by bathymetry will be "simplified" according to the rules described in
 the documentation of the ArcGIS's Raster To Polygon tool.
 
@@ -1077,12 +1087,12 @@
 "blocky".
 
-The choice of this parameter depends on research goals and personal
-preference. If the envelope encloses many cells of the bathymetry
-raster (i.e. the bathymetry is fairly high resolution relative to the
-size of the fishing zones), then the simplified edges might be
-smoother than the blocky unsimplified edges. But if the envelope only
-encloses a few cells of the bathymetry raster, the simplified edges
-might be too jagged, with too many acute angles."""),
-    arcGISDisplayName=_(u'Simplify bathymetry-constrained edges of the envelope'),
+The choice of this parameter depends on your research goals and
+personal preference. If the envelope encloses many cells of the
+bathymetry raster (i.e. the bathymetry is fairly high resolution
+relative to the size of the fishing zones), then the simplified edges
+might be smoother than the blocky unsimplified edges. But if the
+envelope only encloses a few cells of the bathymetry raster, the
+simplified edges might be too jagged, with too many acute angles."""),
+    arcGISDisplayName=_(u'Simplify bathymetry-constrained edges of fishing envelopes'),
     arcGISCategory=_(u'Constrain fishing envelopes by bathymetry'))
 
