Revision: 4109
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4109&view=rev
Author:   jswhit
Date:     2007-11-05 08:50:11 -0800 (Mon, 05 Nov 2007)

Log Message:
-----------
fix for coastline segments that jump across plot.

Modified Paths:
--------------
    trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py

Modified: 
trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py
===================================================================
--- trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py   
2007-11-05 16:11:12 UTC (rev 4108)
+++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py   
2007-11-05 16:50:11 UTC (rev 4109)
@@ -682,9 +682,27 @@
             # reformat for use in matplotlib.patches.Polygon.
             self.coastpolygons = []
             for xy in self.coastsegs:
-                x = [x1 for x1,x2 in xy]
-                y = [x2 for x1,x2 in xy]
+                x, y = zip(*xy)
                 self.coastpolygons.append((x,y))
+            # split coastline segments that jump across entire plot.
+            coastsegs = []
+            for seg in self.coastsegs:
+                x, y = zip(*seg)
+                x = npy.array(x,npy.float64); y = npy.array(y,npy.float64)
+                xd = (x[1:]-x[0:-1])**2
+                yd = (y[1:]-y[0:-1])**2
+                dist = npy.sqrt(xd+yd)
+                split = dist > 5000000.
+                if npy.sum(split) and self.projection not in 
['merc','cyl','mill']:
+                   ind = 
(npy.compress(split,squeeze(split*npy.indices(xd.shape)))+1).tolist()
+                   iprev = 0
+                   ind.append(len(xd))
+                   for i in ind:
+                       coastsegs.append(zip(x[iprev:i],y[iprev:i]))
+                       iprev = i
+                else:
+                    coastsegs.append(seg)
+            self.coastsegs = coastsegs
 
     def __call__(self,x,y,inverse=False):
         """


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to