You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(115) |
Aug
(120) |
Sep
(137) |
Oct
(170) |
Nov
(461) |
Dec
(263) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(120) |
Feb
(74) |
Mar
(35) |
Apr
(74) |
May
(245) |
Jun
(356) |
Jul
(240) |
Aug
(115) |
Sep
(78) |
Oct
(225) |
Nov
(98) |
Dec
(271) |
2009 |
Jan
(132) |
Feb
(84) |
Mar
(74) |
Apr
(56) |
May
(90) |
Jun
(79) |
Jul
(83) |
Aug
(296) |
Sep
(214) |
Oct
(76) |
Nov
(82) |
Dec
(66) |
2010 |
Jan
(46) |
Feb
(58) |
Mar
(51) |
Apr
(77) |
May
(58) |
Jun
(126) |
Jul
(128) |
Aug
(64) |
Sep
(50) |
Oct
(44) |
Nov
(48) |
Dec
(54) |
2011 |
Jan
(68) |
Feb
(52) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <js...@us...> - 2007-11-01 14:02:34
|
Revision: 4086 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4086&view=rev Author: jswhit Date: 2007-11-01 07:02:29 -0700 (Thu, 01 Nov 2007) Log Message: ----------- more fixes for Antarctica 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-01 13:01:36 UTC (rev 4085) +++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py 2007-11-01 14:02:29 UTC (rev 4086) @@ -757,24 +757,29 @@ if name == 'gshhs' and self.projection in ['cyl','merc','mill']: b = npy.asarray(poly.boundary) - lons = b[:,0].tolist() - lats = b[:,1].tolist() - if (math.fabs(lons[0]-360.) < 1.e-5 or - math.fabs(lons[0]+360.) or - math.fabs(lons[0]-0.) < 1.e-5) and lats[-1] < -68.: - lons = lons[:-2] - lats = lats[:-2] - lonstart,latstart = lons[0], lats[0] - lonend,latend = lons[-1], lats[-1] - lons.insert(0,lonstart) - lats.insert(0,-90.) - lons.append(lonend) - lats.append(-90.) - poly = PolygonShape(zip(lons,lats)) - #b = npy.asarray(poly.boundary) - #import pylab - #pylab.fill(b[:,0],b[:,1],'b') - #pylab.show() + lons = b[:,0] + lats = b[:,1] + if south < -68: + if math.fabs(lons[0]+0.) < 1.e-5: + lons1 = lons[:-2][::-1] + lats1 = lats[:-2][::-1] + lons2 = lons1 + 360. + lons3 = lons2 + 360. + lons = lons1.tolist()+lons2.tolist()+lons3.tolist() + lats = lats1.tolist()+lats1.tolist()+lats1.tolist() + lonstart,latstart = lons[0], lats[0] + lonend,latend = lons[-1], lats[-1] + lons.insert(0,lonstart) + lats.insert(0,-90.) + lons.append(lonend) + lats.append(-90.) + poly = PolygonShape(zip(lons,lats)) + #b = npy.asarray(poly.boundary) + #import pylab + #pylab.fill(b[:,0],b[:,1],'b') + #pylab.show() + else: + continue if poly.intersects(self._boundarypoly): poly = poly.intersection(self._boundarypoly) if hasattr(poly,'geoms'): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 13:01:45
|
Revision: 4085 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4085&view=rev Author: jswhit Date: 2007-11-01 06:01:36 -0700 (Thu, 01 Nov 2007) Log Message: ----------- remove old files Removed Paths: ------------- trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_c.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_h.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_i.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_l.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_c.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_h.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_i.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_l.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_c.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_h.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_i.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_l.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_c.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_h.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_i.txt trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_l.txt Deleted: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_c.txt =================================================================== --- trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_c.txt 2007-11-01 12:21:49 UTC (rev 4084) +++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_c.txt 2007-11-01 13:01:36 UTC (rev 4085) @@ -1,2923 +0,0 @@ -> Border Bin # 1, Level 1 27.6338 28.0107 70.0 70.0671 -28.0107 70.0671 -27.6338 70 -> Border Bin # 1, Level 1 27.928 28.1913 70.0 70.0882 -27.928 70.0882 -28.1913 70 -> Border Bin # 18, Level 1 12.0937 18.1582 50.0 51.019 -12.0937 50.3229 -15.1727 51.019 -16.3699 50.6442 -16.6418 50.1083 -16.8902 50.4395 -17.7261 50.318 -18.1582 50 -> Border Bin # 18, Level 1 5.86404 7.1931 50.0 53.6075 -6.19242 50 -5.86404 51.0437 -5.94827 51.825 -7.05303 52.2382 -6.68894 52.5492 -7.1931 53.3158 -6.40879 53.6075 -> Border Bin # 18, Level 1 19.602 20.0 54.4663 54.4767 -20 54.4663 -19.602 54.4767 -> Border Bin # 18, Level 1 12.0934 12.2997 50.0 50.3232 -12.2997 50 -12.0934 50.3232 -> Border Bin # 18, Level 1 10.7576 20.0 58.9049 68.5086 -20 68.4067 -19.9377 68.3374 -18.0969 68.5086 -17.8842 67.9455 -16.7269 67.8991 -15.4681 66.2838 -14.5049 66.1324 -13.6626 64.5827 -14.1466 64.1738 -12.6677 63.9632 -11.9365 63.2723 -12.1245 61.7287 -12.856 61.3625 -12.21 61.0024 -12.4892 60.0984 -11.8154 59.8457 -11.6213 58.9049 -10.7576 58.9137 -> Border Bin # 18, Level 1 4.22278 4.99397 50.0 50.1669 -4.99397 50 -4.83223 50.1669 -4.22278 50 -> Border Bin # 18, Level 1 2.54154 4.12238 50.0 51.091 -4.12238 50 -2.54154 51.091 -> Border Bin # 18, Level 1 14.1262 14.8284 50.8658 53.27 -14.8284 50.8658 -14.6413 52.5699 -14.1262 52.8452 -14.4457 53.27 -> Border Bin # 18, Level 1 3.37041 6.01175 50.7565 51.4865 -6.01175 50.7565 -5.04128 51.4865 -3.37041 51.3724 -> Border Bin # 18, Level 1 6.06241 6.13291 50.0 50.1266 -6.13291 50.1266 -6.06241 50 -> Border Bin # 18, Level 1 8.41016 10.031 54.7657 55.0864 -8.41016 55.0864 -10.031 54.7657 -> Border Bin # 19, Level 1 20.0 24.1328 50.0 54.4663 -23.3198 50 -24.1328 50.5444 -23.169 52.2821 -23.9106 53.1672 -22.9929 54.3879 -20 54.4663 -> Border Bin # 19, Level 1 20.0 20.5863 68.4067 69.0576 -20.5863 69.0576 -20 68.4067 -> Border Bin # 19, Level 1 20.5817 27.6338 65.5132 70.0 -27.6338 70 -25.9889 69.7067 -24.9085 68.558 -22.3984 68.7112 -21.3208 69.3262 -20.5817 69.0594 -23.6661 67.9416 -24.1355 65.5132 -> Border Bin # 19, Level 1 28.6967 31.5819 62.9143 69.0506 -28.9595 69.0506 -28.6967 68.1933 -30.0285 67.6947 -29.0752 66.8801 -30.6111 64.1018 -29.9934 63.7435 -31.5819 62.9143 -> Border Bin # 19, Level 1 21.0538 26.6136 55.6754 56.4506 -21.0538 56.078 -22.0673 56.4195 -24.8997 56.4506 -26.6136 55.6754 -> Border Bin # 19, Level 1 21.0538 26.6136 55.6754 56.4506 -21.0538 56.078 -22.0673 56.4195 -24.8997 56.4506 -26.6136 55.6754 -> Border Bin # 19, Level 1 23.5041 26.1607 53.9478 54.9772 -26.1607 54.9772 -25.7716 54.155 -23.5041 53.9478 -> Border Bin # 19, Level 1 23.5041 26.1607 53.9478 54.9772 -26.1607 54.9772 -25.7716 54.155 -23.5041 53.9478 -> Border Bin # 19, Level 1 35.3063 37.9223 50.0 50.9595 -35.3063 50.9595 -35.635 50.3577 -37.4585 50.4398 -37.9223 50 -> Border Bin # 19, Level 1 31.7839 34.3832 51.8439 52.367 -31.7839 52.1082 -33.8183 52.367 -34.3832 51.8439 -> Border Bin # 19, Level 1 24.3116 27.371 57.5358 58.0845 -27.371 57.5358 -25.2949 58.0845 -24.3116 57.8709 -> Border Bin # 19, Level 1 28.1678 30.9255 55.6031 56.1494 -30.9255 55.6031 -28.1678 56.1494 -> Border Bin # 19, Level 1 28.1678 30.9255 55.6031 56.1494 -30.9255 55.6031 -28.1678 56.1494 -> Border Bin # 19, Level 1 27.5126 29.3538 51.3751 51.6303 -27.5126 51.6303 -29.3538 51.3751 -> Border Bin # 19, Level 1 27.8108 31.5868 60.5476 62.9125 -31.5868 62.9125 -27.8108 60.5476 -> Border Bin # 19, Level 1 27.371 28.1657 56.1512 57.5364 -28.1657 56.1512 -27.371 57.5364 -> Border Bin # 19, Level 1 28.1913 30.8568 69.0295 70.0 -28.1913 70 -29.1276 69.686 -29.0343 69.0295 -30.8568 69.7937 -> Border Bin # 19, Level 1 30.9255 31.1989 54.4608 55.6031 -31.1989 54.4608 -30.9255 55.6031 -> Border Bin # 19, Level 1 23.6027 25.5467 51.5311 51.9226 -25.5467 51.9226 -23.6027 51.5311 -> Border Bin # 19, Level 1 25.5482 27.5126 51.6303 51.9208 -25.5482 51.9208 -27.5126 51.6303 -> Border Bin # 19, Level 1 31.3765 31.7839 52.1082 53.1211 -31.3765 53.1211 -31.7839 52.1082 -> Border Bin # 19, Level 1 31.3765 32.7373 53.1211 53.4388 -32.7373 53.4388 -31.3765 53.1211 -> Border Bin # 19, Level 1 26.1607 26.8196 54.9772 55.6748 -26.6126 55.6748 -26.8196 55.2811 -26.1607 54.9772 -> Border Bin # 19, Level 1 26.1607 26.8196 54.9772 55.6748 -26.6126 55.6748 -26.8196 55.2811 -26.1607 54.9772 -> Border Bin # 19, Level 1 34.2098 35.3057 50.9595 51.2595 -34.2098 51.2595 -35.3057 50.9595 -> Border Bin # 19, Level 1 29.3538 30.5495 51.2528 51.3751 -29.3538 51.3751 -30.5495 51.2528 -> Border Bin # 19, Level 1 31.7632 32.7364 53.4385 53.8044 -32.7364 53.4385 -31.7632 53.8044 -> Border Bin # 19, Level 1 30.5504 30.8009 51.2531 51.9443 -30.8009 51.9443 -30.5504 51.2531 -> Border Bin # 19, Level 1 21.2668 22.6023 55.0721 55.2488 -22.6023 55.0721 -21.2668 55.2488 -> Border Bin # 19, Level 1 22.6023 22.7848 54.365 55.0718 -22.7848 54.365 -22.6023 55.0718 -> Border Bin # 19, Level 1 27.6695 27.8441 58.0098 59.1597 -27.8441 59.1597 -27.6695 58.0098 -> Border Bin # 19, Level 1 30.8009 31.7839 51.9443 52.1082 -31.7839 52.1082 -30.8009 51.9443 -> Border Bin # 19, Level 1 34.2986 34.3825 51.369 51.8433 -34.3825 51.8433 -34.2986 51.369 -> Border Bin # 19, Level 1 27.371 27.6701 57.5358 58.0098 -27.371 57.5358 -27.6701 58.0098 -> Border Bin # 19, Level 1 31.1952 31.8657 54.0021 54.4602 -31.8657 54.0021 -31.1952 54.4602 -> Border Bin # 19, Level 1 26.6142 27.35 55.6751 55.8265 -27.35 55.8265 -26.6142 55.6751 -> Border Bin # 19, Level 1 26.6142 27.35 55.6751 55.8265 -27.35 55.8265 -26.6142 55.6751 -> Border Bin # 19, Level 1 27.6014 28.1678 55.792 56.1494 -28.1678 56.1494 -27.6014 55.792 -> Border Bin # 19, Level 1 27.6014 28.1678 55.792 56.1494 -28.1678 56.1494 -27.6014 55.792 -> Border Bin # 19, Level 1 31.7635 31.8657 53.8032 54.0021 -31.8657 54.0021 -31.7635 53.8032 -> Border Bin # 19, Level 1 27.8441 28.1892 59.1597 59.3526 -27.8441 59.1597 -28.1892 59.3526 -> Border Bin # 19, Level 1 27.3509 27.6014 55.792 55.8265 -27.6014 55.792 -27.3509 55.8265 -> Border Bin # 19, Level 1 27.3509 27.6014 55.792 55.8265 -27.6014 55.792 -27.3509 55.8265 -> Border Bin # 19, Level 1 34.2098 34.2986 51.2595 51.369 -34.2986 51.369 -34.2098 51.2595 -> Border Bin # 19, Level 1 28.0159 28.1892 59.3526 59.4786 -28.0159 59.4786 -28.1892 59.3526 -> Border Bin # 19, Level 1 27.4995 27.7961 60.2553 60.5455 -27.7961 60.5455 -27.4995 60.2553 -> Border Bin # 20, Level 1 48.5936 50.7732 50.0 51.7691 -50.7732 51.7691 -48.5936 50.6482 -48.78 50 -> Border Bin # 20, Level 1 47.444 48.6152 50.0 50.3751 -48.6152 50 -47.444 50.3751 -> Border Bin # 20, Level 1 54.5202 57.7945 50.5283 51.12 -57.7945 51.12 -57.482 50.8646 -56.5032 51.0816 -55.6924 50.5325 -54.6471 51.037 -54.5202 50.5283 -> Border Bin # 20, Level 1 58.3368 60.0 50.4782 51.156 -60 50.8298 -59.5425 50.4782 -58.3368 51.156 -> Border Bin # 20, Level 1 50.7723 52.5832 51.4548 51.781 -52.5832 51.4643 -52.347 51.781 -51.682 51.4548 -50.7723 51.7694 -> Border Bin # 20, Level 1 47.2642 47.4464 50.0 50.3769 -47.4464 50.3769 -47.2642 50 -> Border Bin # 20, Level 1 53.3568 54.5235 50.5286 51.5067 -54.5235 50.5286 -53.3568 51.5067 -> Border Bin # 20, Level 1 52.5832 53.3568 51.4643 51.5067 -53.3568 51.5067 -52.5832 51.4643 -> Border Bin # 20, Level 1 58.0023 58.3377 51.0849 51.156 -58.3377 51.156 -58.0023 51.0849 -> Border Bin # 20, Level 1 57.7945 58.0011 51.0846 51.12 -58.0011 51.0846 -57.7945 51.12 -> Border Bin # 21, Level 1 60.0256 63.3259 52.0008 54.1825 -60.0256 52.0008 -61.062 52.3426 -60.9967 52.9789 -62.1155 52.9987 -61.1847 53.3066 -61.5775 53.5132 -60.9055 53.6204 -61.0141 53.9475 -63.3259 54.1825 -> Border Bin # 21, Level 1 60.0 61.6782 50.7926 51.2647 -61.6782 51.2647 -61.4105 50.7926 -60.0436 50.8634 -60 50.8298 -> Border Bin # 21, Level 1 79.3368 80.0 50.8533 51.6693 -79.3368 51.6693 -80 50.8533 -> Border Bin # 21, Level 1 71.0643 73.7639 53.436 54.3879 -71.0643 54.192 -72.1907 54.1355 -72.0516 54.3879 -72.4685 53.9088 -73.7639 54.0656 -73.4371 53.436 -> Border Bin # 21, Level 1 66.1082 68.7269 54.6452 55.3672 -66.1082 54.6452 -68.2054 54.9662 -68.7269 55.3672 -> Border Bin # 21, Level 1 75.6915 77.8012 53.3457 54.4755 -75.6915 54.1102 -76.9235 54.4755 -76.5216 53.9939 -77.8012 53.3457 -> Border Bin # 21, Level 1 64.604 66.1082 54.3909 54.643 -64.604 54.3909 -66.1082 54.643 -> Border Bin # 21, Level 1 64.604 66.1082 54.3909 54.643 -64.604 54.3909 -66.1082 54.643 -> Border Bin # 21, Level 1 70.4701 71.2789 54.1932 55.2967 -70.4701 55.2967 -71.2789 54.6903 -71.0658 54.1932 -> Border Bin # 21, Level 1 68.7233 70.4704 55.2973 55.3684 -68.7233 55.3684 -70.4704 55.2973 -> Border Bin # 21, Level 1 60.0244 60.9445 51.6199 52.0008 -60.9445 51.6199 -60.0244 52.0008 -> Border Bin # 21, Level 1 73.4371 75.6905 53.436 54.1111 -73.4371 53.436 -74.4292 53.4788 -75.6905 54.1111 -> Border Bin # 21, Level 1 77.8009 79.3368 51.6693 53.3454 -77.8009 53.3454 -79.3368 51.6693 -> Border Bin # 21, Level 1 63.9014 64.6018 54.1978 54.3925 -63.9014 54.1978 -64.6018 54.3925 -> Border Bin # 21, Level 1 60.9445 61.4966 51.4282 51.6199 -60.9445 51.6199 -61.4966 51.4282 -> Border Bin # 21, Level 1 63.3259 63.9026 54.1825 54.1968 -63.3259 54.1825 -63.9026 54.1968 -> Border Bin # 21, Level 1 61.5 61.6803 51.2668 51.4301 -61.6803 51.2668 -61.5 51.4301 -> Border Bin # 22, Level 1 90.0529 94.8632 50.0 50.8746 -90.0529 50 -92.3836 50.8746 -94.2751 50.5695 -94.6352 50.0244 -94.8632 50 -> Border Bin # 22, Level 1 97.7914 100.0 50.0 52.1436 -97.7914 50 -98.2898 50.2936 -97.8277 51.001 -98.93 52.1436 -100 51.8802 -> Border Bin # 22, Level 1 81.5995 84.7367 50.0 51.0025 -81.5995 50.7361 -83.4565 51.0025 -84.7367 50 -> Border Bin # 22, Level 1 80.0 81.5995 50.7361 51.3144 -80 50.8533 -80.0778 50.7575 -80.6879 51.3144 -81.5995 50.7361 -> Border Bin # 23, Level 1 113.806 116.175 50.0 50.2841 -116.175 50 -114.313 50.2841 -113.806 50 -> Border Bin # 23, Level 1 100.0 107.709 50.0 51.8802 -100 51.8802 -102.219 51.3336 -102.328 50.5695 -103.324 50.1975 -105.357 50.4834 -107.709 50 -> Border Bin # 23, Level 1 119.11 120.0 50.0 51.1295 -119.11 50 -120 51.1295 -> Border Bin # 24, Level 1 120.0 127.585 50.2084 53.5541 -120 51.1295 -120.776 52.1146 -120.028 52.7677 -120.863 53.2795 -123.262 53.5541 -126.095 52.7643 -127.585 50.2084 -> Border Bin # 24, Level 1 127.586 127.664 50.0 50.2029 -127.586 50.2029 -127.664 50 -> Border Bin # 28, Level 1 218.997 220.0 60.3075 69.6457 -220 60.3307 -219.003 60.3075 -218.997 69.6457 -> Border Bin # 29, Level 1 220.0 230.028 54.7077 60.3523 -229.392 54.7077 -230.028 55.2824 -229.911 56.118 -228.175 56.5971 -224.765 59.7029 -223.656 59.6028 -222.522 58.9073 -220.932 60.3523 -220 60.3307 -> Border Bin # 35, Level 1 351.843 353.733 54.0995 55.0706 -352.747 55.0706 -351.843 54.4385 -353.733 54.0995 -> Border Bin # 36, Level 1 18.1582 20.0 49.2328 50.0 -18.1582 50 -18.978 49.3967 -19.4662 49.61 -20 49.2328 -> Border Bin # 36, Level 1 13.7212 20.0 45.7678 46.871 -13.7212 46.5274 -14.5696 46.3864 -16.2933 46.871 -17.8634 45.7678 -20 46.1184 -> Border Bin # 36, Level 1 6.19242 8.22766 47.5851 50.0 -7.58892 47.5851 -8.22766 48.9645 -6.3621 49.4601 -6.19242 50 -> Border Bin # 36, Level 1 9.3022 11.5676 30.0 33.1724 -9.33791 30 -9.3022 30.123 -10.2135 30.7309 -10.2873 31.6941 -11.5676 32.4424 -11.5261 33.1724 -> Border Bin # 36, Level 1 6.61997 10.4875 43.7887 47.5406 -7.53216 43.7887 -7.67285 44.1827 -6.87694 44.3767 -6.61997 45.1104 -7.18181 45.4159 -6.80888 45.8315 -7.86328 45.921 -8.4303 46.463 -9.00587 45.8209 -9.29702 46.5039 -10.1375 46.231 -10.4875 46.9378 -9.47585 47.0581 -9.5668 47.5406 -> Border Bin # 36, Level 1 9.73098 13.8347 47.2747 50.0 -9.73098 47.5366 -10.1732 47.2747 -10.4726 47.5915 -11.2694 47.402 -12.2573 47.7432 -13.0532 47.4963 -12.7584 48.1238 -13.8347 48.7723 -12.6647 49.4293 -12.2997 50 -> Border Bin # 36, Level 1 16.1111 20.0 46.8692 48.1546 -16.1111 46.8692 -16.5106 47.0068 -16.4504 47.698 -17.1908 48.023 -18.6554 47.7584 -20 48.1546 -> Border Bin # 36, Level 1 5.96597 9.72824 45.9322 47.807 -7.0399 45.9322 -6.70268 46.4547 -5.96597 46.1404 -6.99046 47.4972 -8.56611 47.807 -9.72824 47.5354 -> Border Bin # 36, Level 1 19.9274 20.0 39.807 39.8448 -19.9274 39.8448 -20 39.807 -> Border Bin # 36, Level 1 19.3677 20.0 41.8505 42.6259 -20 42.5399 -19.6542 42.6259 -19.3677 41.8505 -> Border Bin # 36, Level 1 16.9421 18.851 48.6169 49.5181 -18.851 49.5181 -16.9421 48.6169 -> Border Bin # 36, Level 1 4.99397 6.3621 49.4601 50.0 -6.3621 49.4601 -5.47311 49.5062 -4.99397 50 -> Border Bin # 36, Level 1 4.12238 4.22278 49.9802 50.0 -4.22278 50 -4.15076 49.9802 -4.12238 50 -> Border Bin # 36, Level 1 10.472 13.7191 45.5981 47.0947 -13.7173 45.5981 -13.3831 46.2972 -13.7191 46.527 -12.4407 46.6909 -12.1892 47.0947 -10.472 46.8679 -> Border Bin # 36, Level 1 7.49248 9.53719 30.2338 36.9435 -9.53719 30.2338 -9.05531 32.0999 -8.34852 32.5333 -7.49248 33.8874 -8.2533 34.6482 -8.18372 36.5241 -8.62898 36.9435 -> Border Bin # 36, Level 1 13.8335 17.0681 48.1442 49.0188 -13.8335 48.7735 -14.7002 48.5815 -15.0259 49.0188 -16.5435 48.8119 -17.0681 48.1442 -> Border Bin # 36, Level 1 0.00518807 1.48592 42.6021 42.7092 -1.48592 42.6021 -0.00518807 42.7092 -> Border Bin # 36, Level 1 5.8085 6.06241 49.545 50.0 -6.06241 50 -5.8085 49.545 -> Border Bin # 36, Level 1 1.7557 3.20836 42.4346 42.5069 -3.20836 42.4346 -1.7557 42.5069 -> Border Bin # 36, Level 1 1.45815 1.7557 42.5069 42.5655 -1.7557 42.5069 -1.45815 42.5655 -1.75387 42.5069 -> Border Bin # 36, Level 1 9.45174 9.67666 42.9528 43.1823 -9.67666 42.9528 -9.45174 43.1823 -> Border Bin # 36, Level 1 19.2956 19.6628 39.8701 39.9306 -19.2956 39.8701 -19.6628 39.9306 -> Border Bin # 36, Level 1 12.4071 12.4077 43.9135 43.9162 -12.4071 43.9162 -12.4077 43.9135 -> Border Bin # 36, Level 1 9.53414 9.59945 47.0642 47.2741 -9.59945 47.0642 -9.53414 47.2741 -> Border Bin # 36, Level 1 17.0648 17.1664 48.0124 48.1436 -17.1664 48.0124 -17.0648 48.1436 -> Border Bin # 36, Level 1 1.99374 1.99466 42.4611 42.4623 -1.99466 42.4611 -1.99374 42.4623 -> Border Bin # 36, Level 1 9.79355 9.82864 42.4865 42.6629 -9.82864 42.4865 -9.79355 42.6629 -> Border Bin # 36, Level 1 9.03609 9.39986 41.3414 41.4107 -9.03609 41.3414 -9.39986 41.4107 -> Border Bin # 36, Level 1 7.39147 7.4403 43.7295 43.7575 -7.39147 43.7295 -7.4403 43.7575 -> Border Bin # 36, Level 1 8.67994 8.68086 47.6931 47.6931 -8.67994 47.6931 -8.68086 47.6931 -> Border Bin # 36, Level 1 15.7711 19.6207 42.546 45.1864 -18.4613 42.546 -18.9541 43.5305 -19.5236 43.6022 -19.2126 43.998 -19.6207 44.038 -19.0936 44.388 -19.3686 44.8791 -15.7711 45.1864 -16.2512 44.1848 -18.4613 42.546 -> Border Bin # 36, Level 1 19.2294 20.0 43.1234 43.5344 -19.2294 43.5344 -20 43.1234 -> Border Bin # 36, Level 1 18.8388 19.4269 44.8531 45.9075 -18.8388 45.9075 -19.4269 45.2132 -18.9554 44.8531 -> Border Bin # 36, Level 1 13.5903 16.5661 45.4586 46.4837 -16.5661 46.4837 -15.6197 46.1907 -15.3402 45.4586 -13.5903 45.4858 -> Border Bin # 37, Level 1 20.0 22.558 49.0784 49.4369 -20 49.2328 -20.0815 49.1754 -21.6129 49.4369 -22.558 49.0784 -> Border Bin # 37, Level 1 20.0 28.5832 43.6248 46.1514 -20 46.1184 -20.2008 46.1514 -21.5137 45.151 -21.3968 44.7826 -22.7173 44.6023 -22.967 43.817 -25.416 43.6248 -27.0301 44.1482 -28.5832 43.7478 -> Border Bin # 37, Level 1 35.6658 39.3027 30.0 33.378 -37.4905 30 -37.5027 30.0021 -38.0014 30.5042 -37.0053 31.5055 -39.3027 32.2376 -38.7948 33.378 -36.8377 32.3136 -35.6658 32.7616 -> Border Bin # 37, Level 1 24.7065 25.1514 30.0 31.6471 -25.1514 31.6471 -24.7065 30.1563 -24.7565 30 -> Border Bin # 37, Level 1 20.2615 29.6599 45.212 48.2638 -20.2615 46.1181 -21.1768 46.2954 -22.024 47.5225 -23.1571 48.1073 -24.9195 47.7118 -26.7042 48.2638 -28.0821 46.9805 -28.065 45.5853 -29.6599 45.212 -> Border Bin # 37, Level 1 22.1515 23.3198 48.4118 50.0 -22.1515 48.4118 -22.884 49.0063 -22.6807 49.5721 -23.3198 50 -> Border Bin # 37, Level 1 20.0 22.8946 47.9535 48.576 -20 48.1546 -21.431 48.576 -22.8946 47.9535 -> Border Bin # 37, Level 1 20.983 26.6361 40.7353 41.7501 -20.983 40.8562 -24.2539 41.57 -25.9837 41.3201 -26.2315 41.7501 -26.6361 41.3628 -26.0468 40.7353 -> Border Bin # 37, Level 1 35.9228 40.0 35.9266 36.8336 -40 36.8336 -39.2441 36.6664 -36.6604 36.8336 -36.6903 36.2361 -35.9228 35.9266 -> Border Bin # 37, Level 1 20.0 21.0532 39.669 42.5399 -20 39.807 -20.2646 39.669 -21.0532 40.6734 -20.1718 42.4968 -20 42.5399 -> Border Bin # 37, Level 1 34.2174 34.7115 30.0 31.3227 -34.2174 31.3227 -34.7115 30 -> Border Bin # 37, Level 1 22.3593 23.0072 41.3414 44.2263 -22.9346 41.3414 -22.8644 42.0272 -22.3636 42.3201 -23.0072 43.196 -22.3593 43.817 -22.681 44.2263 -> Border Bin # 37, Level 1 34.8879 35.4781 30.0 31.8329 -35.1083 31.8329 -34.8879 31.3825 -35.4781 31.4975 -35.4623 31.1212 -35.1049 30 -> Border Bin # 37, Level 1 37.9223 38.0243 49.9033 50.0 -37.9223 50 -38.0243 49.9033 -> Border Bin # 37, Level 1 35.0005 35.6316 31.9867 32.75 -35.6316 32.75 -35.0005 31.9867 -> Border Bin # 37, Level 1 28.8783 29.8958 46.5512 48.0099 -29.8958 46.5512 -28.8783 48.0099 -> Border Bin # 37, Level 1 38.0243 40.0 49.6231 49.9042 -38.0243 49.9042 -40 49.6231 -> Border Bin # 37, Level 1 26.3578 28.0131 41.7125 42.0882 -28.0131 41.9823 -27.0564 42.0882 -26.3578 41.7125 -> Border Bin # 37, Level 1 38.7951 40.0 33.3753 33.9448 -38.7951 33.3753 -40 33.9448 -> Border Bin # 37, Level 1 39.3021 40.0 31.9385 32.2361 -39.3021 32.2361 -40 31.9385 -> Border Bin # 37, Level 1 39.0393 39.9213 47.8314 48.3676 -39.0393 47.8668 -39.7681 47.8314 -39.9213 48.3676 -> Border Bin # 37, Level 1 38.2358 39.0393 47.1093 47.8683 -39.0393 47.8683 -38.3395 47.6013 -38.2358 47.1093 -> Border Bin # 37, Level 1 39.6695 40.0 48.5882 49.0655 -39.6695 48.5882 -40 49.0655 -> Border Bin # 37, Level 1 27.5209 28.4608 48.0713 48.4649 -27.5209 48.4649 -28.4608 48.0713 -> Border Bin # 37, Level 1 26.6349 27.5209 48.2586 48.4649 -27.5209 48.4649 -26.6349 48.2586 -> Border Bin # 37, Level 1 35.1012 35.6194 33.0939 33.249 -35.1012 33.0939 -35.6194 33.249 -> Border Bin # 37, Level 1 29.2576 29.5958 36.0298 36.2049 -29.2576 36.2049 -29.5958 36.0298 -> Border Bin # 37, Level 1 34.2678 34.4903 31.2174 31.5967 -34.2678 31.2174 -34.4903 31.5967 -> Border Bin # 37, Level 1 28.4608 28.8783 48.0096 48.0713 -28.8783 48.0096 -28.4608 48.0713 -> Border Bin # 37, Level 1 39.6701 39.9213 48.3676 48.5882 -39.6701 48.5882 -39.9213 48.3676 -> Border Bin # 37, Level 1 26.9728 27.0304 37.6487 37.8395 -27.0304 37.8395 -26.9728 37.6487 -> Border Bin # 37, Level 1 28.1224 28.495 36.4692 36.4915 -28.1224 36.4915 -28.495 36.4692 -> Border Bin # 37, Level 1 36.5307 36.6943 45.1373 45.4318 -36.6943 45.4318 -36.5307 45.1373 -> Border Bin # 37, Level 1 29.8958 30.1335 46.4157 46.5512 -29.8958 46.5512 -30.1335 46.4157 -> Border Bin # 37, Level 1 27.306 27.4342 36.5629 36.7665 -27.306 36.7665 -27.4342 36.5629 -> Border Bin # 37, Level 1 27.0518 27.1788 37.2517 37.5047 -27.0518 37.5047 -27.1788 37.2517 -> Border Bin # 37, Level 1 26.2193 26.2983 38.1123 38.3244 -26.2193 38.3244 -26.2983 38.1123 -> Border Bin # 37, Level 1 26.1186 26.4448 39.3874 39.3986 -26.1186 39.3874 -26.4448 39.3986 -> Border Bin # 37, Level 1 27.1513 27.3548 36.93 37.064 -27.1513 37.064 -27.3548 36.93 -> Border Bin # 37, Level 1 25.5888 25.6761 39.814 40.0362 -25.5888 40.0362 -25.6761 39.814 -> Border Bin # 37, Level 1 27.7296 27.9133 36.6297 36.6413 -27.7296 36.6413 -27.9133 36.6297 -> Border Bin # 37, Level 1 26.3059 26.3529 38.484 38.7013 -26.3529 38.7013 -26.3059 38.484 -> Border Bin # 37, Level 1 25.6251 25.8503 40.2544 40.4036 -25.8503 40.4036 -25.6251 40.2544 -> Border Bin # 37, Level 1 26.5852 26.6902 38.8804 39.0755 -26.6902 39.0755 -26.5852 38.8804 -> Border Bin # 37, Level 1 35.2563 35.2563 31.8076 31.8082 -35.2563 31.8082 -35.2563 31.8076 -> Border Bin # 37, Level 1 35.6689 35.6698 33.2071 33.2517 -35.6698 33.2517 -35.6689 33.2071 -> Border Bin # 37, Level 1 26.0441 26.0697 43.9043 43.929 -26.0441 43.9043 -26.0697 43.929 -> Border Bin # 37, Level 1 20.6265 22.3737 41.9423 42.3265 -22.3737 42.3265 -20.6265 41.9423 -> Border Bin # 37, Level 1 20.0 20.3586 42.5634 43.1234 -20 43.1234 -20.3586 42.9317 -20.0851 42.5634 -> Border Bin # 38, Level 1 44.0342 48.5811 30.0 39.6486 -44.7971 39.6486 -44.0342 39.3849 -44.484 38.3452 -44.2231 37.9002 -45.3501 35.9886 -46.3499 35.8061 -45.4032 33.9753 -46.1073 32.9676 -47.4342 32.3978 -47.8645 31.7987 -47.6939 31.001 -48.0363 30.9976 -48.0323 30.4913 -48.5811 30 -> Border Bin # 38, Level 1 40.0 42.2074 36.8336 37.3216 -42.2074 37.3216 -40 36.8336 -> Border Bin # 38, Level 1 53.9019 60.0 36.952 38.282 -60 36.952 -59.339 37.5392 -57.4502 37.9393 -57.2122 38.282 -55.4427 38.0858 -54.681 37.4437 -53.9019 37.3512 -> Border Bin # 38, Level 1 55.9997 60.0 41.2627 42.7977 -60 42.224 -58.6096 42.7977 -58.143 42.6308 -58.5107 42.3012 -58.0273 42.5035 -56.9784 41.8849 -57.0501 41.2627 -55.9997 41.3262 -> Border Bin # 38, Level 1 41.532 44.8142 39.6327 41.5831 -41.532 41.5239 -42.8321 41.5831 -43.6716 40.9282 -43.6579 40.1085 -44.8142 39.6327 -> Border Bin # 38, Level 1 44.7947 48.8844 38.4453 39.7197 -44.7947 39.6504 -46.1668 38.8399 -47.9765 39.7197 -48.3598 39.3846 -48.0208 38.8356 -48.8844 38.4453 -> Border Bin # 38, Level 1 48.6152 48.7968 49.942 50.0 -48.78 50 -48.7968 49.942 -48.6152 50 -> Border Bin # 38, Level 1 45.0224 46.5415 38.878 41.2987 -46.5394 38.878 -46.5415 39.5644 -45.5958 39.9782 -46.002 40.2257 -45.0224 41.2987 -> Border Bin # 38, Level 1 42.3566 44.7883 36.9706 37.3848 -42.3566 37.1077 -42.7909 37.3848 -44.1163 37.3164 -44.3171 36.9706 -44.7883 37.1485 -> Border Bin # 38, Level 1 43.3933 46.4518 41.8968 42.8991 -46.4518 41.8968 -45.1588 42.7059 -43.9612 42.5579 -43.3933 42.8991 -> Border Bin # 38, Level 1 43.3933 46.4518 41.8968 42.8991 -46.4518 41.8968 -45.1588 42.7059 -43.9612 42.5579 -43.3933 42.8991 -> Border Bin # 38, Level 1 43.3933 46.4518 41.8968 42.8991 -46.4518 41.8968 -45.1588 42.7059 -43.9612 42.5579 -43.3933 42.8991 -> Border Bin # 38, Level 1 47.1354 49.2229 46.3455 48.2486 -47.1354 48.2486 -47.1504 47.8061 -48.5472 47.4173 -49.0272 46.7761 -48.4782 46.6668 -49.2229 46.3455 -> Border Bin # 38, Level 1 52.4388 56.0009 41.2868 42.3372 -56.0009 41.3274 -55.4568 41.2868 -54.1732 42.3372 -52.4388 41.7421 -> Border Bin # 38, Level 1 40.0 40.1273 49.6051 49.6231 -40 49.6231 -40.1273 49.6051 -> Border Bin # 38, Level 1 40.0073 43.3933 42.8991 43.5457 -43.3933 42.8991 -40.6848 43.5457 -40.0073 43.4017 -> Border Bin # 38, Level 1 40.0073 43.3933 42.8991 43.5457 -43.3933 42.8991 -40.6848 43.5457 -40.0073 43.4017 -> Border Bin # 38, Level 1 45.022 46.5208 41.05 41.8959 -45.022 41.2978 -46.5208 41.05 -46.4509 41.8959 -> Border Bin # 38, Level 1 46.4518 48.5856 41.1962 41.8972 -46.4518 41.8972 -47.7668 41.1962 -48.5856 41.8379 -> Border Bin # 38, Level 1 40.0 42.3746 33.9448 37.0619 -40 33.9448 -41.0037 34.4193 -41.2903 36.3557 -42.3746 37.0619 -> Border Bin # 38, Level 1 40.0 43.6582 30.0 31.9385 -40 31.9385 -43.6582 30.3793 -43.6255 30 -> Border Bin # 38, Level 1 44.7749 46.1778 38.842 39.7057 -44.7749 39.7057 -45.8116 39.5564 -46.1778 38.842 -> Border Bin # 38, Level 1 46.4991 47.2642 48.2486 50.0 -47.2642 50 -46.4991 48.4176 -47.1354 48.2486 -> Border Bin # 38, Level 1 40.0 40.0818 49.0655 49.1839 -40 49.0655 -40.0818 49.1839 -> Border Bin # 38, Level 1 47.1595 47.9469 30.0 30.0153 -47.9469 30.014 -47.1699 30.0153 -47.1595 30 -> Border Bin # 38, Level 1 43.4879 45.022 41.1107 41.2978 -45.022 41.2978 -43.4879 41.1107 -> Border Bin # 38, Level 1 43.4879 45.022 41.1107 41.2978 -45.022 41.2978 -43.4879 41.1107 -> Border Bin # 38, Level 1 55.9973 55.9997 41.3262 45.003 -55.9997 41.3262 -55.9973 45.003 -> Border Bin # 38, Level 1 55.9969 59.4577 45.0024 45.5712 -55.9969 45.0024 -58.5696 45.5712 -59.4577 45.1519 -> Border Bin # 38, Level 1 42.2092 42.374 37.0597 37.3198 -42.2092 37.3198 -42.374 37.0597 -> Border Bin # 38, Level 1 40.0812 40.1401 49.1839 49.6005 -40.1401 49.6005 -40.0812 49.1839 -> Border Bin # 38, Level 1 45.5558 45.5567 40.6648 40.6651 -45.5558 40.6651 -45.5567 40.6648 -> Border Bin # 38, Level 1 45.0303 45.0303 41.0845 41.0845 -45.0303 41.0845 -45.0303 41.0845 -> Border Bin # 38, Level 1 45.0303 45.0303 41.0845 41.0845 -45.0303 41.0845 -45.0303 41.0845 -> Border Bin # 38, Level 1 47.9533 47.9811 30.0 30.0079 -47.9533 30.0079 -47.9811 30 -> Border Bin # 38, Level 1 45.2119 45.2128 41.0042 41.0057 -45.2119 41.0057 -45.2128 41.0042 -> Border Bin # 39, Level 1 73.6547 80.0 33.4076 41.9313 -79.0039 33.7717 -78.9368 33.4076 -78.9868 34.3467 -78.3093 34.6427 -78.006 35.5174 -76.1718 35.8167 -75.8553 36.6673 -74.4005 37.1391 -75.1876 37.4067 -74.8568 38.4703 -73.8177 38.6076 -73.6547 39.438 -74.8602 40.5193 -76.3458 40.3502 -76.874 41.0143 -78.0807 41.0408 -80 41.9313 -> Border Bin # 39, Level 1 79.8648 80.0 44.8623 44.9297 -80 44.8623 -79.8648 44.8962 -80 44.9297 -> Border Bin # 39, Level 1 60.5066 74.9136 30.0 38.4721 -60.9836 30 -61.8512 31.0211 -61.7136 31.3834 -60.8438 31.4984 -60.5826 33.0661 -60.943 33.5193 -60.5277 33.6442 -60.5066 34.1346 -60.9152 34.3201 -61.2891 35.6263 -62.7222 35.2546 -63.1196 35.8619 -64.4739 36.2556 -64.7895 37.118 -65.7804 37.5712 -68.0217 36.9242 -68.8878 37.3387 -69.2866 37.1043 -70.9529 38.4721 -71.592 37.903 -71.6771 36.6764 -73.3071 37.4632 -74.9136 37.2392 -> Border Bin # 39, Level 1 66.3075 74.569 30.0 37.0256 -74.569 37.0256 -71.628 36.4622 -71.1879 36.0472 -71.664 35.1957 -70.9874 34.5512 -71.0857 34.0601 -69.9065 34.0354 -70.327 33.332 -69.5051 33.0341 -69.3312 31.9342 -66.7231 31.2122 -66.3075 30 -> Border Bin # 39, Level 1 78.3975 80.0 30.8649 33.4052 -78.9368 33.4052 -79.5303 32.728 -78.9712 32.3508 -78.3975 32.5486 -78.7671 31.3101 -79.0924 31.4374 -80 30.8649 -> Border Bin # 39, Level 1 73.7316 74.6905 30.0 31.5964 -74.5888 31.5964 -74.6905 31.0654 -73.7316 30 -> Border Bin # 39, Level 1 60.0 61.2784 35.6052 36.952 -61.2784 35.6052 -61.1572 36.6499 -60.333 36.656 -60 36.952 -> Border Bin # 39, Level 1 60.0 61.3843 41.2343 42.224 -61.3843 41.2343 -60.1404 41.3811 -60.0555 42.2011 -60 42.224 -> Border Bin # 39, Level 1 73.9138 77.8213 32.3032 35.5003 -77.8213 35.5003 -76.8762 34.6604 -73.9416 34.6467 -73.9138 34.0693 -74.2959 33.9777 -74.0169 33.1888 -75.3548 32.3032 -> Border Bin # 39, Level 1 62.4411 66.6438 37.3655 40.031 -66.5357 37.3655 -66.6438 38.0031 -62.4411 40.031 -> Border Bin # 39, Level 1 62.4411 66.6438 37.3655 40.031 -66.5357 37.3655 -66.6438 38.0031 -62.4411 40.031 -> Border Bin # 39, Level 1 70.1872 72.1941 41.0042 42.2527 -72.1941 41.0042 -71.6915 41.5563 -71.418 41.1186 -70.1872 41.5282 -71.2743 42.1889 -70.9694 42.2527 -> Border Bin # 39, Level 1 70.3468 73.1731 40.1457 41.006 -70.3468 40.4302 -71.7107 40.1457 -73.1731 40.8232 -72.1956 41.006 -> Border Bin # 39, Level 1 70.9694 74.201 42.2533 43.2686 -70.9694 42.2533 -71.1757 42.6946 -71.8697 42.8429 -73.5198 42.408 -73.5839 43.0385 -74.201 43.2686 -> Border Bin # 39, Level 1 75.6762 80.0 42.3305 42.8063 -75.6762 42.8063 -79.1864 42.7971 -80 42.3305 -> Border Bin # 39, Level 1 69.265 70.9822 39.5076 40.2449 -70.9822 40.2449 -69.265 39.8604 -69.3318 39.518 -70.674 39.5076 -> Border Bin # 39, Level 1 68.0156 70.9694 40.6075 42.2527 -68.144 41.0515 -68.0156 40.8138 -68.6317 40.6075 -69.0565 41.3793 -70.9694 42.2527 -> Border Bin # 39, Level 1 70.674 73.6699 39.192 39.6202 -70.674 39.5076 -71.4797 39.6202 -72.2487 39.192 -73.6699 39.4591 -> Border Bin # 39, Level 1 67.3668 68.3842 37.1858 39.2943 -67.3668 39.2943 -68.1132 38.9976 -68.3842 38.1956 -67.78 37.1858 -> Border Bin # 39, Level 1 69.0977 70.7958 40.2245 41.0503 -69.0977 40.2245 -69.406 40.8022 -69.7325 40.6386 -70.4305 41.0503 -70.7958 40.7259 -> Border Bin # 39, Level 1 67.3661 68.9873 39.2937 40.1491 -67.3661 39.2937 -67.7098 39.6257 -68.5402 39.5546 -68.9873 40.1491 -> Border Bin # 39, Level 1 61.3858 62.4417 40.0307 41.2355 -62.4417 40.0307 -61.8933 41.1116 -61.3858 41.2355 -> Border Bin # 39, Level 1 62.0237 66.1238 42.4242 43.7377 -62.0237 43.4856 -64.9314 43.7377 -65.8219 42.8771 -66.1238 42.997 -66.0706 42.4242 -> Border Bin # 39, Level 1 62.0237 66.1238 42.4242 43.7377 -62.0237 43.4856 -64.9314 43.7377 -65.8219 42.8771 -66.1238 42.997 -66.0706 42.4242 -> Border Bin # 39, Level 1 74.5922 75.3567 31.5991 32.3041 -75.3567 32.3041 -74.5922 31.5991 -> Border Bin # 39, Level 1 74.201 75.6762 42.8063 43.2686 -74.201 43.2686 -75.6762 42.8063 -> Border Bin # 39, Level 1 71.0326 71.2331 39.8933 40.1631 -71.0326 40.1631 -71.2331 39.8933 -71.0326 40.1631 -> Border Bin # 39, Level 1 60.64 62.024 43.4862 44.6053 -60.64 44.6053 -62.024 43.4862 -> Border Bin # 39, Level 1 66.0291 67.0713 41.1437 42.4239 -66.0716 42.4239 -66.0291 42.0031 -66.5263 42.0031 -67.0713 41.1437 -> Border Bin # 39, Level 1 67.0707 67.9344 41.1434 41.1943 -67.0707 41.1434 -67.9344 41.1943 -> Border Bin # 39, Level 1 70.5217 70.5223 39.8875 39.8882 -70.5223 39.8875 -70.5217 39.8882 -> Border Bin # 39, Level 1 70.3465 70.7945 40.4298 40.7247 -70.7945 40.7247 -70.3465 40.4298 -> Border Bin # 39, Level 1 68.6418 69.0968 40.1848 40.2245 -69.0968 40.2245 -68.6418 40.1848 -> Border Bin # 39, Level 1 71.78 71.78 39.9886 39.9886 -71.78 39.9886 -71.78 39.9886 -> Border Bin # 39, Level 1 67.9344 68.144 41.0515 41.1943 -68.144 41.0515 -67.9344 41.1943 -> Border Bin # 39, Level 1 70.5843 70.5867 40.9993 41.0011 -70.5867 40.9993 -70.5843 41.0011 -> Border Bin # 39, Level 1 68.8637 68.9873 40.1418 40.1491 -68.9873 40.1491 -68.8637 40.1418 -> Border Bin # 40, Level 1 80.0 80.8173 41.9313 44.8623 -80 41.9313 -80.2765 42.0598 -80.1694 42.6561 -80.8173 43.156 -80.5209 44.7326 -80 44.8623 -> Border Bin # 40, Level 1 80.0 100.0 42.6879 49.173 -80 44.9297 -81.688 45.3509 -82.5617 45.1293 -82.3178 45.5706 -83.0405 47.2122 -84.7596 46.8264 -85.5232 47.0605 -85.7588 48.3877 -86.5962 48.536 -86.8748 49.1107 -87.8407 49.173 -87.9832 48.5693 -90.0743 47.8863 -90.9166 46.9482 -90.8901 45.1971 -93.5308 44.9621 -95.4107 44.2965 -96.383 42.7312 -100 42.6879 -> Border Bin # 40, Level 1 87.8431 90.0529 49.1705 50.0 -87.8431 49.1705 -90.0529 50 -> Border Bin # 40, Level 1 94.8632 97.7914 49.7345 50.0 -94.8632 50 -97.341 49.7345 -97.7914 50 -> Border Bin # 40, Level 1 80.0 81.0318 30.0 30.8649 -80 30.8649 -81.0318 30.2142 -80.7306 30 -> Border Bin # 40, Level 1 84.7367 87.3494 49.0921 50.0 -84.7367 50 -85.2586 49.5914 -86.1912 49.4726 -86.775 49.7888 -87.3494 49.0921 -> Border Bin # 40, Level 1 80.0 80.2335 42.1965 42.3305 -80 42.3305 -80.2335 42.1965 -> Border Bin # 40, Level 1 81.0248 82.645 30.0 30.3421 -81.0248 30.1965 -82.1006 30.3421 -82.645 30 -> Border Bin # 41, Level 1 100.0 119.928 41.5813 50.0 -100 42.6879 -100.836 42.6781 -105.012 41.5813 -107.472 42.466 -109.313 42.43 -110.441 42.7779 -111.958 43.6922 -111.421 44.3825 -111.981 45.0918 -113.638 44.7454 -114.545 45.3893 -115.702 45.4586 -117.421 46.5783 -119.928 46.7102 -118.558 47.9953 -117.372 47.6535 -115.592 47.9196 -116.609 49.9338 -116.175 50 -> Border Bin # 41, Level 1 107.978 113.806 49.1421 50.0 -113.806 50 -113.091 49.5987 -110.7 49.1421 -108.555 49.3359 -107.978 49.946 -> Border Bin # 41, Level 1 107.709 107.984 49.9435 50.0 -107.709 50 -107.984 49.9435 -> Border Bin # 41, Level 1 119.103 119.11 49.9905 50.0 -119.103 49.9905 -119.11 50 -> Border Bin # 41, Level 1 116.709 119.095 49.5077 49.9893 -116.709 49.8294 -117.873 49.5077 -119.095 49.9893 -> Border Bin # 42, Level 1 124.372 130.604 40.0929 43.0056 -130.604 42.4193 -129.907 43.0056 -129.701 42.4382 -128.059 42.0034 -128.156 41.3826 -126.695 41.7403 -126.012 40.8965 -124.372 40.0929 -> Border Bin # 42, Level 1 130.405 134.741 42.2954 48.2675 -134.741 48.2675 -133.112 45.1199 -131.865 45.3454 -130.95 44.8412 -131.312 43.3922 -131.123 42.911 -130.405 42.7181 -130.691 42.2954 -> Border Bin # 42, Level 1 127.664 134.735 47.6855 50.0 -127.664 50 -127.821 49.5908 -129.482 49.4183 -130.666 48.8684 -130.995 47.6855 -134.735 48.2663 -> Border Bin # 42, Level 1 127.0 128.002 38.2249 38.3064 -127 38.2249 -128.002 38.3064 -> Border Bin # 42, Level 1 128.002 128.363 38.3064 38.621 -128.002 38.3064 -128.363 38.621 -> Border Bin # 42, Level 1 124.131 124.371 39.8293 40.096 -124.131 39.8293 -124.371 40.096 -> Border Bin # 42, Level 1 126.807 127.0 38.0006 38.2249 -126.807 38.0006 -127 38.2249 -> Border Bin # 42, Level 1 126.104 126.687 37.6954 37.8328 -126.687 37.8328 -126.104 37.6954 -> Border Bin # 42, Level 1 126.689 126.807 37.8322 38.0006 -126.689 37.8322 -126.807 38.0006 -> Border Bin # 42, Level 1 124.65 124.829 37.7586 38.025 -124.65 38.025 -124.829 37.7586 -> Border Bin # 42, Level 1 124.743 124.829 37.7586 37.9966 -124.743 37.9966 -124.829 37.7586 -> Border Bin # 42, Level 1 125.638 125.769 37.657 37.6643 -125.638 37.6643 -125.769 37.657 -> Border Bin # 42, Level 1 124.65 124.743 37.9966 38.025 -124.65 38.025 -124.743 37.9966 -> Border Bin # 47, Level 1 235.246 240.0 48.2782 48.9996 -235.246 48.5013 -236.751 48.2782 -236.692 48.9996 -240 48.9996 -> Border Bin # 48, Level 1 242.877 255.362 30.0 32.7182 -242.877 32.5354 -245.281 32.7182 -245.19 32.504 -248.954 31.333 -251.792 31.333 -251.791 31.7835 -253.599 31.7502 -255.099 30.5728 -255.362 30 -> Border Bin # 48, Level 1 240.0 260.0 48.9996 48.9996 -240 48.9996 -250.728 48.9996 -260 48.9996 -> Border Bin # 49, Level 1 260.0 269.605 48.096 49.3765 -260 48.9996 -264.764 48.9996 -264.847 49.3765 -265.462 48.7054 -269.605 48.096 -> Border Bin # 49, Level 1 276.831 280.0 41.6756 42.5499 -277.345 42.5499 -276.831 42.0461 -277.575 41.6756 -280 42.4828 -> Border Bin # 49, Level 1 269.61 277.87 43.0163 48.3124 -269.61 48.0972 -270.643 47.9797 -271.632 48.3124 -275.874 46.5319 -276.041 46.0717 -277.457 45.3558 -277.87 43.5854 -277.579 43.0163 -> Border Bin # 49, Level 1 277.35 277.579 42.5542 43.0132 -277.579 43.0132 -277.35 42.5542 -> Border Bin # 50, Level 1 280.0 289.746 42.4828 46.1224 -280 42.4828 -281.014 42.8206 -280.815 43.4655 -281.298 43.6379 -283.198 43.6336 -285.009 44.9868 -289.121 45.2386 -289.746 46.1224 -> Border Bin # 50, Level 1 291.112 292.57 45.5932 47.3645 -291.112 47.1881 -291.693 47.3645 -292.207 47.0703 -292.201 45.7012 -292.57 45.5932 -> Border Bin # 50, Level 1 289.747 291.108 46.1196 47.4713 -289.747 46.1196 -290.767 47.4713 -291.108 47.1878 -> Border Bin # 50, Level 1 292.576 292.795 45.1839 45.5947 -292.576 45.5947 -292.795 45.1839 -> Border Bin # 53, Level 1 354.209 358.811 30.0 35.0858 -354.209 30 -356.373 30.9705 -356.186 31.6983 -357.146 32.0883 -358.811 32.1024 -358.253 34.7471 -357.79 35.0858 -> Border Bin # 53, Level 1 351.249 353.815 37.1882 41.9985 -351.249 41.9637 -353.223 41.9985 -353.815 41.5886 -353.069 41.0365 -352.995 39.6901 -352.453 39.6785 -353.015 39.0492 -352.587 37.1882 -> Border Bin # 53, Level 1 358.231 360.0 42.7098 43.3971 -360 42.7098 -358.231 43.3971 -> Border Bin # 53, Level 1 357.053 357.085 35.2735 35.3291 -357.085 35.2735 -357.053 35.3291 -> Border Bin # 53, Level 1 354.604 354.654 35.8418 35.9159 -354.654 35.8418 -354.604 35.9159 -> Border Bin # 53, Level 1 354.616 354.636 36.1515 36.1515 -354.636 36.1515 -354.616 36.1515 -> Border Bin # 54, Level 1 5.5436 14.6682 10.0 13.8904 -5.5436 13.8904 -6.42313 13.6054 -6.93339 12.9972 -7.81506 13.3527 -9.63516 12.8028 -10.724 13.3863 -12.4779 13.0567 -13.6254 13.718 -14.1704 12.3877 -14.6682 12.1772 -14.6178 11.5055 -13.7774 11.03 -13.2512 10 -> Border Bin # 54, Level 1 9.33791 20.0 21.4983 30.0 -20 21.4983 -15.9963 23.4975 -14.2345 22.6137 -13.5436 23.1682 -11.986 23.521 -11.5587 24.3023 -10.2522 24.605 -9.39406 26.1697 -9.87289 26.5142 -9.95895 27.8528 -9.33791 30 -> Border Bin # 54, Level 1 0.0155642 4.24537 15.3571 21.8154 -3.52361 15.3571 -4.20081 16.3938 -4.24537 19.1466 -3.33196 18.9763 -3.23308 19.8204 -1.90524 20.2336 -0.0155642 21.8154 -> Border Bin # 54, Level 1 0.325322 0.38056 10.0 10.2734 -0.38056 10.2734 -0.325322 10 -> Border Bin # 54, Level 1 2.84367 3.85504 10.0 12.3935 -2.84367 12.3935 -3.60571 11.6919 -3.85504 10.585 -3.55749 10 -> Border Bin # 54, Level 1 13.4688 15.9966 13.7171 23.001 -13.6254 13.7171 -13.4688 14.4611 -15.4885 16.9001 -15.9966 20.3529 -15.2026 21.4958 -14.9987 23.001 -> Border Bin # 54, Level 1 14.5568 15.6716 10.0 12.8296 -15.6716 10 -15.1345 10.5274 -15.0799 11.984 -14.5568 12.8296 -> Border Bin # 54, Level 1 0.776684 1.34798 10.0 10.9958 -0.917678 10.9958 -0.776684 10.3766 -1.34798 10 -> Border Bin # 54, Level 1 0.229191 2.39841 11.8952 15.0019 -0.229191 15.0019 -0.465095 13.9136 -1.28542 13.35 -0.98909 13.0472 -1.57839 12.63 -2.14237 12.6944 -2.39841 11.8952 -> Border Bin # 54, Level 1 0.015259 2.31632 11.0248 11.6785 -2.31632 11.6785 -1.41207 11.4533 -1.1136 11.0248 -0.015259 11.106 -> Border Bin # 54, Level 1 7.44457 11.9854 20.8464 23.5216 -7.44457 20.8464 -11.9854 23.5216 -> Border Bin # 54, Level 1 2.31357 2.83848 11.6791 12.396 -2.31357 11.6791 -2.37797 12.2403 -2.83848 12.396 -> Border Bin # 54, Level 1 0.0106813 3.52575 14.9918 15.3593 -3.52575 15.3593 -0.0106813 14.9918 -> Border Bin # 54, Level 1 3.60449 5.54513 11.6938 13.892 -3.60449 11.6938 -4.14252 13.4769 -5.54513 13.892 -> Border Bin # 54, Level 1 4.24598 7.4522 19.1466 20.8522 -4.24598 19.1466 -5.81247 19.4463 -7.4522 20.8522 -> Border Bin # 54, Level 1 0.0015259 0.383307 10.2734 10.6049 -0.383307 10.2734 -0.0015259 10.6049 -> Border Bin # 54, Level 1 14.0746 14.5544 12.8278 13.0817 -14.5544 12.8278 -14.0746 13.0817 -> Border Bin # 54, Level 1 0.000610361 0.00244144 10.9641 11.0968 -0.00244144 10.9641 -0.000610361 11.0968 -> Border Bin # 55, Level 1 22.8779 23.5694 10.0 10.9216 -22.8779 10.9216 -23.5694 10 -> Border Bin # 55, Level 1 34.2397 38.5983 10.0 17.9927 -38.5983 17.9927 -37.4243 17.0372 -36.9958 17.0738 -36.1425 12.7076 -35.6994 12.6658 -35.097 11.8268 -34.8644 10.7349 -34.5943 10.8878 -34.2861 10.5542 -34.2397 10 -> Border Bin # 55, Level 1 34.9618 37.4905 29.1888 30.0 -34.9618 29.361 -36.0699 29.1888 -36.7437 29.8648 -37.4905 30 -> Border Bin # 55, Level 1 20.0 25.0007 19.5003 30.0 -24.7565 30 -24.9976 29.249 -25.0007 19.9992 -24.0009 20.002 -24.0015 19.5003 -20 21.4983 -> Border Bin # 55, Level 1 21.1737 23.9994 10.0 19.4997 -23.9994 19.4997 -23.9994 15.6962 -22.9313 15.5546 -21.8271 12.8025 -22.4671 12.6218 -22.8809 10.9247 -21.7194 10.6394 -21.1737 10 -> Border Bin # 55, Level 1 34.7115 34.9038 29.4855 30.0 -34.7115 30 -34.9038 29.4855 -> Border Bin # 55, Level 1 25.0022 33.1841 21.9985 22.2322 -25.0022 21.9997 -31.2712 21.9985 -31.4556 22.2322 -31.454 21.9985 -33.1841 21.9988 -> Border Bin # 55, Level 1 34.9621 35.1049 29.5511 30.0 -35.1049 30 -34.9621 29.5511 -> Border Bin # 55, Level 1 33.1911 35.6225 21.7681 23.1261 -35.6225 23.1261 -34.0185 21.7681 -33.1911 21.9893 -> Border Bin # 55, Level 1 34.9749 34.9801 29.5462 29.5761 -34.9749 29.5761 -34.9801 29.5462 -> Border Bin # 56, Level 1 42.663 43.2541 10.0 11.4771 -43.0674 10 -42.663 10.6326 -43.2541 11.4771 -> Border Bin # 56, Level 1 48.5811 48.7446 29.8532 30.0 -48.5811 30 -48.7446 29.8532 -> Border Bin # 56, Level 1 43.5279 46.1134 12.6911 15.1057 -45.5909 15.1057 -45.5515 14.473 -46.1134 14.513 -45.9065 14.1538 -44.5826 13.816 -44.4746 13.2166 -43.7214 13.079 -43.5279 12.6911 -> Border Bin # 56, Level 1 55.1992 56.3729 22.6998 24.9795 -55.1992 22.6998 -55.4733 23.9678 -56.0247 24.0761 -55.8077 24.8782 -56.3729 24.9795 -> Border Bin # 56, Level 1 44.0009 48.4202 28.5452 29.4745 -48.4202 28.5452 -45.4649 29.4745 -44.7144 29.2059 -44.0009 29.4668 -> Border Bin # 56, Level 1 42.7903 44.499 16.3774 17.4571 -44.499 17.3957 -43.3094 17.4571 -43.2062 16.6722 -42.7903 16.3774 -> Border Bin # 56, Level 1 43.5911 43.9991 29.4595 30.0 -43.6255 30 -43.5911 29.6039 -43.9991 29.4595 -> Border Bin # 56, Level 1 41.76 43.1232 10.9821 12.7088 -42.9432 11.0031 -41.7914 10.9821 -41.76 11.5106 -42.4561 12.529 -43.1232 12.7088 -> Border Bin # 56, Level 1 55.7864 56.8371 25.7751 26.726 -55.7864 26.2707 -56.679 26.726 -56.8371 25.7751 -> Border Bin # 56, Level 1 46.5455 47.1595 29.1043 30.0 -47.1595 30 -46.5455 29.1043 -> Border Bin # 56, Level 1 49.5677 50.8913 27.1774 28.6984 -50.8913 27.1774 -49.5677 28.6984 -> Border Bin # 56, Level 1 49.5677 50.8913 27.1774 28.6984 -50.8913 27.1774 -49.5677 28.6984 -> Border Bin # 56, Level 1 44.716 46.5422 28.7747 29.2053 -46.5422 29.1025 -45.5088 28.7747 -44.716 29.2053 -> Border Bin # 56, Level 1 51.8791 53.0895 16.631 18.9989 -51.9991 18.9989 -51.8791 18.5783 -53.0895 16.631 -> Border Bin # 56, Level 1 44.4987 55.6661 15.6168 25.4791 -44.4987 17.3927 -46.3334 16.6667 -46.3331 15.6168 -48.7663 18.2664 -54.9999 20.0002 -55.6661 21.9997 -55.1992 22.6998 -52 22.9998 -50.5919 25.4791 -> Border Bin # 56, Level 1 44.4987 55.6661 15.6168 25.4791 -44.4987 17.3927 -46.3334 16.6667 -46.3331 15.6168 -48.7663 18.2664 -54.9999 20.0002 -55.6661 21.9997 -55.1992 22.6998 -52 22.9998 -50.5919 25.4791 -> Border Bin # 56, Level 1 56.08 56.2701 25.6362 26.0656 -56.08 26.0656 -56.2701 25.6362 -> Border Bin # 56, Level 1 56.08 56.2701 25.6362 26.0656 -56.08 26.0656 -56.2701 25.6362 -> Border Bin # 56, Level 1 54.0874 54.7729 25.6378 25.79 -54.0874 25.6378 -54.7729 25.79 -> Border Bin # 56, Level 1 47.9811 48.3217 29.9011 30.0 -47.9811 30 -48.3217 29.9011 -> Border Bin # 56, Level 1 51.1113 51.2148 24.5559 24.6203 -51.1113 24.5559 -51.2148 24.6203 -> Border Bin # 57, Level 1 60.867 63.342 25.1931 30.0 -61.6098 25.1931 -61.8579 26.2347 -63.1812 26.6339 -63.342 27.1225 -62.7646 27.272 -62.7814 28.2669 -61.9089 28.5519 -60.867 29.8627 -60.9836 30 -> Border Bin # 57, Level 1 60.8692 66.3075 29.3884 30.0 -66.3075 30 -66.2568 29.852 -64.116 29.3884 -60.8692 29.8611 -> Border Bin # 57, Level 1 69.2284 73.7316 24.269 30.0 -73.7316 30 -71.8968 27.962 -70.8354 27.706 -70.3682 28.0209 -69.5802 27.1734 -69.5061 26.7544 -70.1836 26.5362 -70.0899 25.9783 -70.6719 25.6899 -71.1058 24.4164 -69.2284 24.269 -> Border Bin # 57, Level 1 68.1352 69.2308 23.6483 24.3212 -69.2308 24.2693 -68.7532 24.3212 -68.1352 23.6483 -> Border Bin # 58, Level 1 88.0443 92.6693 21.1409 26.632 -89.1365 21.628 -88.986 23.2082 -88.564 23.6522 -88.7395 24.2446 -88.0443 24.6773 -89.0095 25.2883 -88.1105 25.8355 -88.4092 26.632 -89.37 26.0024 -89.6782 26.2252 -89.8454 25.2886 -92.4813 24.9374 -91.1571 23.7316 -91.6136 22.943 -91.95 23.7322 -92.2887 23.6962 -92.6693 21.2969 -92.3632 21.4733 -92.2014 21.1409 -> Border Bin # 58, Level 1 97.3455 100.0 10.3449 20.3883 -98.7442 10.3449 -99.6616 11.8268 -99.1196 13.8785 -98.1845 15.0993 -98.9282 16.3859 -98.6899 16.2849 -97.3455 18.557 -97.7746 18.5701 -98.0499 19.8076 -98.9136 19.7462 -99.4543 20.3883 -100 20.3523 -> Border Bin # 58, Level 1 80.0632 86.948 26.5328 30.0 -80.7306 30 -80.3769 29.7485 -80.0632 28.8275 -82.7686 27.5018 -84.1434 27.5241 -85.2219 26.763 -86.948 26.5328 -> Border Bin # 58, Level 1 92.6036 97.3596 21.9823 29.4675 -94.6288 29.3277 -95.3878 29.0353 -96.0702 29.4675 -96.3693 29.2889 -96.1508 28.9303 -96.5121 29.0701 -96.6174 28.7634 -96.2634 28.4109 -97.3596 28.204 -96.8862 27.6062 -97.1585 27.1206 -96.1941 27.2708 -95.1446 26.6165 -94.1537 23.8598 -93.3388 24.078 -93.1966 22.2564 -92.6036 21.9823 -> Border Bin # 58, Level 1 97.348 99.9655 22.0485 28.5492 -97.348 28.2232 -97.5622 28.5492 -98.0188 28.2785 -98.3163 27.5421 -98.7045 27.5824 -98.7781 26.7849 -98.7109 25.8556 -97.723 25.0826 -97.5357 23.9397 -98.8904 24.161 -98.8815 23.1881 -99.5663 22.9381 -99.1629 22.1593 -99.9655 22.0485 -> Border Bin # 58, Level 1 86.9462 92.1138 26.3726 28.3249 -86.9462 26.5316 -88.0305 26.3726 -88.1306 27.9406 -88.629 28.1192 -89.1151 26.827 -92.1138 26.9256 -91.6582 27.948 -90.024 28.3249 -88.9168 27.3208 -> Border Bin # 58, Level 1 91.6609 94.6313 27.7649 29.3271 -91.6609 27.7649 -92.5554 27.8671 -93.228 28.6331 -94.6313 29.3271 -> Border Bin # 58, Level 1 82.645 88.1495 27.8643 30.0 -82.645 30 -86.0142 27.8827 -86.1836 28.164 -88.1495 27.8643 -> Border Bin # 58, Level 1 99.968 100.0 21.9698 22.0504 -99.968 22.0504 -100 21.9698 -> Border Bin # 58, Level 1 98.3749 98.7436 10.0 10.3519 -98.3749 10 -98.7436 10.3519 -> Border Bin # 59, Level 1 101.148 107.785 21.1427 23.3779 -101.148 21.5715 -101.282 21.1803 -101.785 21.1427 -101.691 22.4721 -102.251 22.4129 -102.484 22.7739 -103.047 22.4349 -103.337 22.7965 -103.965 22.499 -105.326 23.3779 -105.873 22.9104 -106.821 22.8002 -106.683 21.9692 -107.785 21.6674 -> Border Bin # 59, Level 1 100.0 100.092 20.3462 20.3523 -100 20.3523 -100.092 20.3462 -> Border Bin # 59, Level 1 103.09 106.334 13.9207 18.4211 -103.09 18.1373 -103.305 18.4211 -103.973 18.3296 -104.79 17.4147 -104.748 16.5257 -105.638 15.6562 -105.283 14.1779 -106.095 13.9207 -105.998 14.3671 -106.334 14.445 -> Border Bin # 59, Level 1 102.139 104.979 19.612 22.3977 -102.139 22.3977 -102.677 21.6558 -102.976 21.7394 -102.823 21.2572 -103.171 20.8467 -103.694 20.6572 -104.109 20.9773 -104.645 20.6581 -104.382 20.4448 -104.979 20.005 -104.64 19.612 -104.041 19.6944 -> Border Bin # 59, Level 1 102.341 105.211 11.6355 14.3507 -102.916 11.6355 -102.341 13.5578 -103.18 14.3296 -105.211 14.3507 -> Border Bin # 59, Level 1 103.879 106.587 16.6273 19.6925 -104.039 19.6925 -103.879 19.2937 -105.139 18.7028 -106.587 16.6273 -> Border Bin # 59, Level 1 100.49 101.281 17.5276 20.1552 -100.58 20.1552 -100.49 19.5378 -101.281 19.5622 -100.91 17.5929 -101.23 17.5276 -> Border Bin # 59, Level 1 104.447 106.459 10.4224 11.6699 -106.459 11.6699 -105.815 11.6153 -106.203 10.7706 -105.102 10.9555 -104.447 10.4224 -> Border Bin # 59, Level 1 106.589 107.695 14.7053 16.6285 -106.589 16.6285 -107.465 16.0786 -107.175 15.7877 -107.695 15.2708 -107.546 14.7053 -> Border Bin # 59, Level 1 100.091 101.162 20.1576 21.6829 -100.894 21.6829 -101.162 21.5306 -100.091 20.3487 -100.581 20.1576 -> Border Bin # 59, Level 1 106.471 107.547 11.8695 13.7961 -107.461 13.7961 -107.547 12.3536 -106.471 11.8695 -> Border Bin # 59, Level 1 101.228 103.091 17.5303 18.2142 -101.228 17.5303 -102.086 18.2142 -102.67 17.8016 -103.091 18.1392 -> Border Bin # 59, Level 1 106.332 107.549 14.3241 14.7068 -106.332 14.445 -106.968 14.3241 -107.549 14.7068 -> Border Bin # 59, Level 1 103.841 104.444 10.032 10.4239 -104.444 10.4239 -104.086 10.1682 -103.841 10.4019 -103.897 10.032 -> Border Bin # 59, Level 1 113.861 114.502 22.1437 22.6094 -113.863 22.4614 -114.395 22.6094 -114.502 22.1437 -113.881 22.1437 -113.861 22.4593 -> Border Bin # 59, Level 1 107.474 107.545 13.9298 14.708 -107.545 14.708 -107.474 13.9298 -> Border Bin # 59, Level 1 100.0 100.213 21.4327 21.9698 -100 21.9698 -100.213 21.4327 -> Border Bin # 59, Level 1 100.215 100.89 21.4348 21.6854 -100.89 21.6854 -100.215 21.4348 -> Border Bin # 59, Level 1 113.572 113.573 22.2033 22.2039 -113.572 22.2039 -113.573 22.2033 -> Border Bin # 59, Level 1 107.783 108.119 21.4491 21.6674 -107.783 21.6674 -108.119 21.4491 -> Border Bin # 59, Level 1 106.459 106.47 11.6648 11.8708 -106.47 11.8708 -106.459 11.6648 -> Border Bin # 59, Level 1 107.463 107.473 13.7958 13.9335 -107.473 13.9335 -107.463 13.7958 -> Border Bin # 66, Level 1 255.362 260.0 28.1442 30.0 -255.362 30 -255.547 29.5959 -256.625 29.0237 -257.694 29.8895 -258.595 29.7726 -260 28.1442 -> Border Bin # 67, Level 1 267.753 271.089 14.5484 17.8199 -267.753 14.5484 -268.271 16.0749 -269.567 16.0996 -269.604 16.4155 -268.563 17.2383 -269.016 17.256 -269.017 17.8199 -270.858 17.819 -270.782 15.8897 -271.089 15.8936 -> Border Bin # 67, Level 1 260.0 262.86 25.9664 28.1442 -260 28.1442 -260.495 27.5702 -260.915 26.4007 -262.86 25.9664 -> Border Bin # 67, Level 1 272.937 276.868 12.9999 14.9931 -276.868 14.9931 -275.52 14.618 -275.093 14.8087 -274.268 13.8294 -273.984 14.0659 -273.239 13.7528 -273.305 13.2969 -272.937 12.9999 -> Border Bin # 67, Level 1 274.268 276.355 10.7083 11.0629 -274.268 11.0629 -276.081 10.7083 -276.355 10.925 -> Border Bin # 67, Level 1 270.653 272.305 13.8187 14.4315 -272.305 13.8187 -271.531 13.8541 -270.653 14.4315 -> Border Bin # 67, Level 1 270.459 270.849 14.2744 15.0736 -270.849 15.0736 -270.459 14.2744 -> Border Bin # 67, Level 1 270.858 272.257 17.819 18.4877 -272.257 18.1727 -271.531 18.4877 -270.858 17.819 -> Border Bin # 67, Level 1 269.904 270.478 13.7461 14.2274 -270.478 14.2274 -269.904 13.7461 -> Border Bin # 67, Level 1 270.849 271.785 15.0736 15.7246 -270.849 15.0736 -271.785 15.7246 -> Border Bin # 67, Level 1 272.184 272.305 13.4052 13.8181 -272.305 13.8181 -272.184 13.4052 -> Border Bin # 67, Level 1 272.699 272.935 12.9868 12.9999 -272.699 12.9868 -272.935 12.9999 -> Border Bin # 68, Level 1 286.99 288.675 10.0 11.8531 -288.675 11.8531 -287.507 11.1212 -286.99 10 -> Border Bin # 68, Level 1 288.219 288.247 18.0421 19.706 -288.247 19.706 -288.219 18.0421 -> Border Bin # 71, Level 1 342.947 354.209 20.7649 30.0 -342.947 20.7649 -343.047 21.3384 -347 21.3381 -346.895 22.893 -348 23.4545 -347.999 26 -351.333 26.0003 -351.333 28.7103 -354.209 30 -> Border Bin # 71, Level 1 354.48 356.559 10.0 13.5041 -354.954 10 -354.48 10.4248 -354.803 11.424 -354.598 11.8299 -355.612 12.3069 -356.036 13.5041 -356.559 13.2755 -> Border Bin # 71, Level 1 343.457 347.942 14.7248 16.6386 -347.942 14.7248 -345.655 16.6386 -343.719 16.5196 -343.457 16.0609 -> Border Bin # 71, Level 1 343.283 348.626 12.3233 13.7079 -347.918 13.7079 -348.622 12.988 -348.626 12.4051 -344.782 12.6847 -343.283 12.3233 -> Border Bin # 71, Level 1 351.203 352.06 10.0 12.0081 -351.203 12.0081 -351.64 11.3718 -351.322 10.9616 -351.71 11.0077 -352.06 10.2432 -351.995 10 -> Border Bin # 71, Level 1 343.251 346.202 13.061 13.8264 -343.439 13.5901 -344.93 13.8264 -346.202 13.4067 -345.65 13.2383 -344.883 13.5956 -343.251 13.061 -> Border Bin # 71, Level 1 347.943 354.505 14.726 15.7047 -354.505 15.4975 -350.662 15.7047 -350.589 15.4438 -349.282 15.4386 -349.101 15.1072 -348.493 15.6483 -347.943 14.726 -> Border Bin # 71, Level 1 351.333 355.194 15.4984 27.2903 -354.503 15.4984 -354.665 16.3279 -354.399 16.5077 -353.423 24.9993 -355.194 25.0002 -351.333 27.2903 -> Border Bin # 71, Level 1 357.168 357.28 10.0 11.004 -357.168 11.004 -357.28 10 -> Border Bin # 71, Level 1 344.988 346.291 10.958 12.1552 -344.988 10.958 -345.313 11.5097 -346.291 11.7154 -346.032 12.1552 -> Border Bin # 71, Level 1 352.025 353.353 10.1511 10.6647 -353.353 10.6647 -353.022 10.1511 -352.513 10.4623 -352.025 10.1657 -> Border Bin # 71, Level 1 356.561 359.993 13.2764 15.0901 -356.561 13.2764 -357.527 14.2896 -357.994 14.1886 -358.027 14.5399 -359.286 15.0901 -359.993 14.9986 -> Border Bin # 71, Level 1 349.346 350.658 11.8958 12.2519 -349.346 11.8958 -349.671 12.2242 -350.658 12.2519 -> Border Bin # 71, Level 1 348.627 349.347 11.8939 12.4079 -348.627 12.4079 -348.68 12.0252 -349.071 12.2245 -349.347 11.8939 -> Border Bin # 71, Level 1 357.165 359.998 11.0013 11.1093 -359.998 11.1093 -357.165 11.0013 -> Border Bin # 71, Level 1 355.194 359.999 21.8251 25.0002 -355.194 25.0002 -359.999 21.8251 -> Border Bin # 71, Level 1 347.755 347.92 13.7089 14.7642 -347.755 14.7642 -347.92 13.7089 -> Border Bin # 71, Level 1 353.355 353.777 10.257 10.7214 -353.776 10.257 -353.777 10.7214 -353.355 10.6668 -> Border Bin # 71, Level 1 350.687 351.201 12.0081 12.5034 -350.687 12.5034 -351.201 12.0081 -> Border Bin # 71, Level 1 353.777 354.48 10.2582 10.4337 -354.48 10.4337 -353.777 10.2582 -> Border Bin # 71, Level 1 346.825 351.333 27.6666 27.6669 -346.825 27.6669 -351.333 27.6666 -> Border Bin # 71, Level 1 346.029 346.304 12.154 12.2934 -346.304 12.2934 -346.029 12.154 -> Border Bin # 71, Level 1 350.656 350.689 12.2501 12.5043 -350.656 12.2501 -350.689 12.5043 -> Border Bin # 71, Level 1 346.287 346.306 12.294 12.6758 -346.306 12.294 -346.287 12.6758 -> Border Bin # 71, Level 1 359.998 359.998 10.6082 10.918 -359.998 10.6082 -359.998 10.918 -> Border Bin # 71, Level 1 359.849 359.995 11.0986 11.1392 -359.995 11.0986 -359.849 11.1392 -> Border Bin # 71, Level 1 359.999 359.999 10.9284 10.9607 -359.999 10.9284 -359.999 10.9607 -> Border Bin # 72, Level 1 13.1814 20.0 -8.09812 -5.85657 -20 -7.05531 -19.5422 -6.99733 -19.3732 -7.99619 -17.6242 -8.09812 -16.9458 -7.20821 -16.5798 -5.90082 -13.1814 -5.85657 -> Border Bin # 72, Level 1 8.51789 13.2512 4.68162 10.0 -13.2512 10 -11.5184 6.60761 -11.1244 6.43793 -10.5962 7.13405 -9.79568 6.80171 -8.86519 5.84192 -8.51789 4.68162 -> Border Bin # 72, Level 1 11.1397 14.5187 -3.92325 2.26642 -11.3402 2.16999 -13.2549 2.26642 -13.1603 1.24132 -14.2638 1.34081 -14.4735 0.830854 -13.8485 -0.19852 -14.5187 -0.609293 -14.5049 -1.40673 -14.1079 -2.49622 -13.7621 -2.08881 -13.4829 -2.43763 -12.9845 -2.37232 -12.65 -1.82238 -12.4779 -2.32715 -11.5743 -2.33326 -11.9258 -3.63699 -11.4971 -3.50698 -11.1397 -3.92325 -> Border Bin # 72, Level 1 17.7081 20.0 7.9852 9.08598 -20 9.08598 -18.9889 8.96422 -19.126 8.67277 -18.5888 8.04013 -17.7081 7.9852 -> Border Bin # 72, Level 1 18.5418 20.0 3.4789 5.13542 -20 4.77653 -19.4266 5.13542 -18.5418 4.33555 -18.6249 3.4789 -> Border Bin # 72, Level 1 12.0262 18.2248 -5.01427 2.4239 -18.2248 2.4239 -17.7151 -0.53727 -16.1959 -2.17578 -15.9026 -3.93179 -14.6615 -4.90959 -14.4097 -4.27268 -13.4102 -4.88304 -12.7691 -4.39078 -12.0262 -5.01427 -> Border Bin # 72, Level 1 13.2952 16.1617 1.72198 7.52956 -15.5019 7.52956 -14.4146 6.04425 -15.0768 3.9205 -16.1032 2.89845 -16.1617 1.72198 -14.5791 2.20813 -13.2952 2.16358 -> Border Bin # 72, Level 1 0.216983 0.683604 6.58839 10.0 -0.325322 10 -0.216983 9.46319 -0.552071 9.40581 -0.683604 6.58839 -> Border Bin # 72, Level 1 13.9574 16.8182 7.52682 9.98993 -16.8182 7.5436 -16.5646 7.8732 -15.4989 7.52682 -15.202 8.48569 -13.9574 9.63867 -14.1906 9.98169 -15.6829 9.98993 -> Border Bin # 72, Level 1 2.68193 3.55749 7.89364 10.0 -3.55749 10 -3.09514 9.09056 -2.78843 9.05425 -2.68193 7.89364 -> Border Bin # 72, Level 1 16.2072 18.5391 2.22156 3.64187 -18.5391 3.07546 -18.4814 3.64187 -16.6693 3.5375 -16.2072 2.22156 -> Border Bin # 72, Level 1 15.6716 15.6796 9.99237 10.0 -15.6796 9.99237 -15.6716 10 -> Border Bin # 72, Level 1 9.54269 11.3539 0.975509 2.34485 -9.80972 2.34485 -11.3417 2.16846 -11.3539 1.00206 -9.54269 0.975509 -> Border Bin # 72, Level 1 1.34798 1.79995 6.28077 10.0 -1.34798 10 -1.355 9.99542 -1.61898 9.04417 -1.79995 6.28077 -> Border Bin # 72, Level 1 12.2005 13.0922 -5.77966 -4.63371 -13.0922 -4.63371 -12.4627 -5.05119 -12.5267 -5.72412 -12.2005 -5.77966 -> Border Bin # 72, Level 1 2.68376 2.71885 6.36469 7.89548 -2.71885 6.36469 -2.68376 7.89548 -> Border Bin # 72, Level 1 16.8182 17.7099 7.54574 7.98672 -16.8182 7.54574 -17.7099 7.98672 -> Border Bin # 72, Level 1 12.3781 13.1795 -6.05249 -5.85626 -13.1795 -5.85626 -12.3781 -6.05249 -> Border Bin # 72, Level 1 18.2199 18.5406 2.42725 3.07424 -18.5406 3.07424 -18.2199 2.42725 -> Border Bin # 72, Level 1 0.68574 1.20302 6.1004 6.59236 -1.20302 6.1004 -0.68574 6.59236 -> Border Bin # 72, Level 1 1.63577 1.8024 6.2182 6.28016 -1.8024 6.28016 -1.63577 6.2182 -> Border Bin # 73, Level 1 28.3723 28.8988 -10.0 -8.48142 -28.8988 -8.48142 -28.3723 -9.26085 -28.546 -10 -> Border Bin # 73, Level 1 20.0 22.1118 -10.0 -7.05531 -22.1118 -10 -21.7911 -9.41161 -21.7835 -7.28176 -20 -7.05531 -> Border Bin # 73, Level 1 23.5178 39.2041 -4.67094 10.0 -23.5694 10 -23.6692 9.86694 -23.5178 8.71427 -24.2438 8.69596 -24.1773 8.31601 -25.2534 7.85061 -25.207 7.49752 -26.4051 6.64637 -26.4375 6.07782 -27.198 5.71374 -27.7876 4.60136 -28.4034 4.27787 -29.6147 4.65599 -30.9264 3.51064 -30.7292 2.4477 -31.3027 2.12146 -29.9605 0.825666 -29.597 -1.38598 -30.7515 -0.997787 -34.0206 -1.00145 -37.6028 -2.9958 -37.6135 -3.50423 -39.2041 -4.67094 -> Border Bin # 73, Level 1 33.0501 40.0 3.40658 10.0 -34.2397 10 -34.1207 8.57725 -33.2045 8.43381 -33.0501 7.79416 -33.7182 7.65866 -34.7018 6.68177 -35.3082 5.37041 -35.8358 5.31853 -35.9512 4.5211 -37.0397 4.37552 -38.121 3.61166 -39.5602 3.40658 -40 3.72335 -> Border Bin # 73, Level 1 32.9464 34.4182 -10.0 -9.39605 -33.3382 -10 -32.9464 -9.39605 -34.3252 -9.73266 -34.4182 -10 -> Border Bin # 73, Level 1 20.0 21.1737 9.08598 10.0 -21.1737 10 -20.4388 9.13878 -20 9.08598 -> Border Bin # 73, Level 1 20.0 27.4546 4.1268 5.3814 -27.4546 5.01732 -25.5421 5.3814 -25.29 5.02495 -24.3943 5.11559 -23.4263 4.5919 -22.891 4.81926 -22.3337 4.1268 -20.5856 4.41001 -20 4.77653 -> Border Bin # 73, Level 1 29.059 30.8449 -4.46098 -2.30945 -29.2149 -3.337 -29.424 -4.44877 -29.7523 -4.46098 -30.8449 -2.97597 -30.4176 -2.86183 -30.5733 -2.39918 -29.9522 -2.30945 -29.742 -2.80232 -29.059 -2.60487 -29.2137 -3.33364 -> Border Bin # 73, Level 1 28.8969 30.7701 -8.47929 -4.44938 -29.4261 -4.44938 -29.5503 -6.29541 -30.7701 -8.19089 -28.8969 -8.47929 -> Border Bin # 73, Level 1 30.8595 35.9384 3.49111 4.61936 -35.9384 4.61936 -34.3874 4.6099 -33.5171 3.75235 -32.1935 3.51125 -31.1766 3.79538 -30.8595 3.49111 -> Border Bin # 73, Level 1 33.9974 34.9993 1.11254 4.22263 -33.9974 4.22263 -34.9374 2.50172 -34.9993 1.66857 -34.5269 1.11254 -> Border Bin # 73, Level 1 30.7692 32.9403 -9.40612 -8.19303 -30.7692 -8.19303 -32.9403 -9.40612 -> Border Bin # 73, Level 1 30.4836 30.894 -2.39796 -1.06126 -30.5739 -2.39796 -30.894 -2.07599 -30.4836 -1.06126 -> Border Bin # 73, Level 1 34.3783 35.6985 4.60105 5.02373 -34.3783 4.60105 -35.321 5.02373 -35.6985 4.62058 -> Border Bin # 73, Level 1 29.0251 29.2348 -2.73854 -1.69268 -29.2348 -1.69268 -29.0251 -2.73854 -> Border Bin # 73, Level 1 34.0041 34.5257 0.234836 1.11376 -34.5257 1.11376 -34.0041 0.234836 -> Border Bin # 73, Level 1 33.9239 34.0047 -1.00114 0.236667 -34.0047 0.236667 -33.9239 -1.00114 -> Border Bin # 73, Level 1 29.2329 29.5976 -1.69268 -1.38445 -29.5976 -1.38445 -29.2329 -1.69268 -> Border Bin # 74, Level 1 40.0 47.9893 3.72335 10.0 -40 3.72335 -40.784 4.28794 -41.8436 3.94736 -43.6863 4.89189 -44.9509 4.90257 -47.9893 8.0032 -46.9947 8.00626 -43.4385 9.41955 -43.0674 10 -> Border Bin # 74, Level 1 40.9885 41.5576 -1.67224 2.82094 -40.9885 2.82094 -40.9982 -0.866255 -41.5576 -1.67224 -> Border Bin # 74, Level 1 40.9863 41.9138 2.83284 3.99008 -41.9138 3.99008 -40.9863 2.83284 -> Border Bin # 76, Level 1 99.4623 100.0 6.41993 6.42145 -99.4623 6.42145 -100 6.41993 -> Border Bin # 76, Level 1 97.8802 98.3749 9.52819 10.0 -97.8802 9.52819 -98.3749 10 -> Border Bin # 77, Level 1 109.647 117.9 0.853742 4.36118 -109.647 2.0705 -109.67 1.61303 -110.555 0.853742 -111.827 0.998703 -112.484 1.57 -113.658 1.22484 -114.563 1.43359 -115.872 4.36118 -117.9 4.17655 -> Border Bin # 77, Level 1 100.0 102.096 5.63104 6.71107 -100 6.41993 -100.124 6.41962 -100.215 6.71107 -100.754 6.50202 -101.146 5.63104 -101.834 5.74334 -102.096 6.23468 -> Border Bin # 77, Level 1 114.095 115.019 4.01877 4.89586 -114.095 4.59037 -114.641 4.01877 -115.019 4.89586 -> Border Bin # 77, Level 1 115.028 115.349 4.31418 4.90257 -115.028 4.81926 -115.349 4.31418 -115.145 4.90257 -> Border Bin # 77, Level 1 103.603 104.095 1.27825 1.31121 -104.0... [truncated message content] |
From: <js...@us...> - 2007-11-01 12:21:51
|
Revision: 4084 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4084&view=rev Author: jswhit Date: 2007-11-01 05:21:49 -0700 (Thu, 01 Nov 2007) Log Message: ----------- new data files Added Paths: ----------- trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_l.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countriesmeta_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countriesmeta_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countriesmeta_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countriesmeta_l.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhs_l.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhsmeta_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhsmeta_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhsmeta_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/gshhsmeta_l.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/rivers_l.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/riversmeta_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/riversmeta_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/riversmeta_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/riversmeta_l.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/states_l.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/statesmeta_c.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/statesmeta_h.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/statesmeta_i.dat trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/statesmeta_l.dat Added: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_c.dat =================================================================== (Binary files differ) Property changes on: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_c.dat ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_h.dat =================================================================== (Binary files differ) Property changes on: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_h.dat ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_i.dat =================================================================== (Binary files differ) Property changes on: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_i.dat ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_l.dat =================================================================== (Binary files differ) Property changes on: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countries_l.dat ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countriesmeta_c.dat =================================================================== --- trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countriesmeta_c.dat (rev 0) +++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/data/countriesmeta_c.dat 2007-11-01 12:21:49 UTC (rev 4084) @@ -0,0 +1,1710 @@ +-1 -1 70.00000 70.06710 0 41 +-1 -1 70.00000 70.08820 41 41 +-1 -1 50.00000 51.01900 82 121 +-1 -1 50.00000 53.60750 203 121 +-1 -1 54.46630 54.47670 324 41 +-1 -1 50.00000 50.32320 365 41 +-1 -1 58.90490 68.50860 406 297 +-1 -1 50.00000 50.16690 703 57 +-1 -1 50.00000 51.09100 760 41 +-1 -1 50.86580 53.27000 801 73 +-1 -1 50.75650 51.48650 874 57 +-1 -1 50.00000 50.12660 931 41 +-1 -1 54.76570 55.08640 972 41 +-1 -1 50.00000 54.46630 1013 105 +-1 -1 68.40670 69.05760 1118 41 +-1 -1 65.51320 70.00000 1159 137 +-1 -1 62.91430 69.05060 1296 121 +-1 -1 55.67540 56.45060 1417 73 +-1 -1 55.67540 56.45060 1490 73 +-1 -1 53.94780 54.97720 1563 57 +-1 -1 53.94780 54.97720 1620 57 +-1 -1 50.00000 50.95950 1677 73 +-1 -1 51.84390 52.36700 1750 57 +-1 -1 57.53580 58.08450 1807 57 +-1 -1 55.60310 56.14940 1864 41 +-1 -1 55.60310 56.14940 1905 41 +-1 -1 51.37510 51.63030 1946 41 +-1 -1 60.54760 62.91250 1987 41 +-1 -1 56.15120 57.53640 2028 41 +-1 -1 69.02950 70.00000 2069 73 +-1 -1 54.46080 55.60310 2142 41 +-1 -1 51.53110 51.92260 2183 41 +-1 -1 51.63030 51.92080 2224 41 +-1 -1 52.10820 53.12110 2265 41 +-1 -1 53.12110 53.43880 2306 41 +-1 -1 54.97720 55.67480 2347 57 +-1 -1 54.97720 55.67480 2404 57 +-1 -1 50.95950 51.25950 2461 41 +-1 -1 51.25280 51.37510 2502 41 +-1 -1 53.43850 53.80440 2543 41 +-1 -1 51.25310 51.94430 2584 41 +-1 -1 55.07210 55.24880 2625 41 +-1 -1 54.36500 55.07180 2666 41 +-1 -1 58.00980 59.15970 2707 41 +-1 -1 51.94430 52.10820 2748 41 +-1 -1 51.36900 51.84330 2789 41 +-1 -1 57.53580 58.00980 2830 41 +-1 -1 54.00210 54.46020 2871 41 +-1 -1 55.67510 55.82650 2912 41 +-1 -1 55.67510 55.82650 2953 41 +-1 -1 55.79200 56.14940 2994 41 +-1 -1 55.79200 56.14940 3035 41 +-1 -1 53.80320 54.00210 3076 41 +-1 -1 59.15970 59.35260 3117 41 +-1 -1 55.79200 55.82650 3158 41 +-1 -1 55.79200 55.82650 3199 41 +-1 -1 51.25950 51.36900 3240 41 +-1 -1 59.35260 59.47860 3281 41 +-1 -1 60.25530 60.54550 3322 41 +-1 -1 50.00000 51.76910 3363 57 +-1 -1 50.00000 50.37510 3420 41 +-1 -1 50.52830 51.12000 3461 105 +-1 -1 50.47820 51.15600 3566 57 +-1 -1 51.45480 51.78100 3623 73 +-1 -1 50.00000 50.37690 3696 41 +-1 -1 50.52860 51.50670 3737 41 +-1 -1 51.46430 51.50670 3778 41 +-1 -1 51.08490 51.15600 3819 41 +-1 -1 51.08460 51.12000 3860 41 +-1 -1 52.00080 54.18250 3901 153 +-1 -1 50.79260 51.26470 4054 73 +-1 -1 50.85330 51.66930 4127 41 +-1 -1 53.43600 54.38790 4168 105 +-1 -1 54.64520 55.36720 4273 57 +-1 -1 53.34570 54.47550 4330 73 +-1 -1 54.39090 54.64300 4403 41 +-1 -1 54.39090 54.64300 4444 41 +-1 -1 54.19320 55.29670 4485 57 +-1 -1 55.29730 55.36840 4542 41 +-1 -1 51.61990 52.00080 4583 41 +-1 -1 53.43600 54.11110 4624 57 +-1 -1 51.66930 53.34540 4681 41 +-1 -1 54.19780 54.39250 4722 41 +-1 -1 51.42820 51.61990 4763 41 +-1 -1 54.18250 54.19680 4804 41 +-1 -1 51.26680 51.43010 4845 41 +-1 -1 50.00000 50.87460 4886 89 +-1 -1 50.00000 52.14360 4975 89 +-1 -1 50.00000 51.00250 5064 57 +-1 -1 50.73610 51.31440 5121 73 +-1 -1 50.00000 50.28410 5194 57 +-1 -1 50.00000 51.88020 5251 105 +-1 -1 50.00000 51.12950 5356 41 +-1 -1 50.20840 53.55410 5397 121 +-1 -1 50.00000 50.20290 5518 41 +-1 -1 60.30750 69.64570 5559 57 +-1 -1 54.70770 60.35230 5616 153 +-1 -1 54.09950 55.07060 5769 57 +-1 -1 49.23280 50.00000 5826 73 +-1 -1 45.76780 46.87100 5899 89 +-1 -1 47.58510 50.00000 5988 73 +-1 -1 30.00000 33.17240 6061 105 +-1 -1 43.78870 47.54060 6166 233 +-1 -1 47.27470 50.00000 6399 169 +-1 -1 46.86920 48.15460 6568 105 +-1 -1 45.93220 47.80700 6673 105 +-1 -1 39.80700 39.84480 6778 41 +-1 -1 41.85050 42.62590 6819 57 +-1 -1 48.61690 49.51810 6876 41 +-1 -1 49.46010 50.00000 6917 57 +-1 -1 49.98020 50.00000 6974 57 +-1 -1 45.59810 47.09470 7031 105 +-1 -1 30.23380 36.94350 7136 121 +-1 -1 48.14420 49.01880 7257 89 +-1 -1 42.60210 42.70920 7346 41 +-1 -1 49.54500 50.00000 7387 41 +-1 -1 42.43460 42.50690 7428 41 +-1 -1 42.50690 42.56550 7469 57 +-1 -1 42.95280 43.18230 7526 41 +-1 -1 39.87010 39.93060 7567 41 +-1 -1 43.91350 43.91620 7608 41 +-1 -1 47.06420 47.27410 7649 41 +-1 -1 48.01240 48.14360 7690 41 +-1 -1 42.46110 42.46230 7731 41 +-1 -1 42.48650 42.66290 7772 41 +-1 -1 41.34140 41.41070 7813 41 +-1 -1 43.72950 43.75750 7854 41 +-1 -1 47.69310 47.69310 7895 41 +-1 -1 42.54600 45.18640 7936 169 +-1 -1 43.12340 43.53440 8105 41 +-1 -1 44.85310 45.90750 8146 57 +-1 -1 45.45860 46.48370 8203 73 +-1 -1 49.07840 49.43690 8276 73 +-1 -1 43.62480 46.15140 8349 153 +-1 -1 30.00000 33.37800 8502 137 +-1 -1 30.00000 31.64710 8639 57 +-1 -1 45.21200 48.26380 8696 153 +-1 -1 48.41180 50.00000 8849 73 +-1 -1 47.95350 48.57600 8922 57 +-1 -1 40.73530 41.75010 8979 105 +-1 -1 35.92660 36.83360 9084 89 +-1 -1 39.66900 42.53990 9173 89 +-1 -1 30.00000 31.32270 9262 41 +-1 -1 41.34140 44.22630 9303 105 +-1 -1 30.00000 31.83290 9408 89 +-1 -1 49.90330 50.00000 9497 41 +-1 -1 31.98670 32.75000 9538 41 +-1 -1 46.55120 48.00990 9579 41 +-1 -1 49.62310 49.90420 9620 41 +-1 -1 41.71250 42.08820 9661 57 +-1 -1 33.37530 33.94480 9718 41 +-1 -1 31.93850 32.23610 9759 41 +-1 -1 47.83140 48.36760 9800 57 +-1 -1 47.10930 47.86830 9857 57 +-1 -1 48.58820 49.06550 9914 41 +-1 -1 48.07130 48.46490 9955 41 +-1 -1 48.25860 48.46490 9996 41 +-1 -1 33.09390 33.24900 10037 41 +-1 -1 36.02980 36.20490 10078 41 +-1 -1 31.21740 31.59670 10119 41 +-1 -1 48.00960 48.07130 10160 41 +-1 -1 48.36760 48.58820 10201 41 +-1 -1 37.64870 37.83950 10242 41 +-1 -1 36.46920 36.49150 10283 41 +-1 -1 45.13730 45.43180 10324 41 +-1 -1 46.41570 46.55120 10365 41 +-1 -1 36.56290 36.76650 10406 41 +-1 -1 37.25170 37.50470 10447 41 +-1 -1 38.11230 38.32440 10488 41 +-1 -1 39.38740 39.39860 10529 41 +-1 -1 36.93000 37.06400 10570 41 +-1 -1 39.81400 40.03620 10611 41 +-1 -1 36.62970 36.64130 10652 41 +-1 -1 38.48400 38.70130 10693 41 +-1 -1 40.25440 40.40360 10734 41 +-1 -1 38.88040 39.07550 10775 41 +-1 -1 31.80760 31.80820 10816 41 +-1 -1 33.20710 33.25170 10857 41 +-1 -1 43.90430 43.92900 10898 41 +-1 -1 41.94230 42.32650 10939 41 +-1 -1 42.56340 43.12340 10980 57 +-1 -1 30.00000 39.64860 11037 233 +-1 -1 36.83360 37.32160 11270 41 +-1 -1 36.95200 38.28200 11311 121 +-1 -1 41.26270 42.79770 11432 137 +-1 -1 39.63270 41.58310 11569 89 +-1 -1 38.44530 39.71970 11658 105 +-1 -1 49.94200 50.00000 11763 57 +-1 -1 38.87800 41.29870 11820 89 +-1 -1 36.97060 37.38480 11909 89 +-1 -1 41.89680 42.89910 11998 73 +-1 -1 41.89680 42.89910 12071 73 +-1 -1 41.89680 42.89910 12144 73 +-1 -1 46.34550 48.24860 12217 105 +-1 -1 41.28680 42.33720 12322 73 +-1 -1 49.60510 49.62310 12395 41 +-1 -1 42.89910 43.54570 12436 57 +-1 -1 42.89910 43.54570 12493 57 +-1 -1 41.05000 41.89590 12550 57 +-1 -1 41.19620 41.89720 12607 57 +-1 -1 33.94480 37.06190 12664 73 +-1 -1 30.00000 31.93850 12737 57 +-1 -1 38.84200 39.70570 12794 57 +-1 -1 48.24860 50.00000 12851 57 +-1 -1 49.06550 49.18390 12908 41 +-1 -1 30.00000 30.01530 12949 57 +-1 -1 41.11070 41.29780 13006 41 +-1 -1 41.11070 41.29780 13047 41 +-1 -1 41.32620 45.00300 13088 41 +-1 -1 45.00240 45.57120 13129 57 +-1 -1 37.05970 37.31980 13186 41 +-1 -1 49.18390 49.60050 13227 41 +-1 -1 40.66480 40.66510 13268 41 +-1 -1 41.08450 41.08450 13309 41 +-1 -1 41.08450 41.08450 13350 41 +-1 -1 30.00000 30.00790 13391 41 +-1 -1 41.00420 41.00570 13432 41 +-1 -1 33.40760 41.93130 13473 281 +-1 -1 44.86230 44.92970 13754 57 +-1 -1 30.00000 38.47210 13811 377 +-1 -1 30.00000 37.02560 14188 201 +-1 -1 30.86490 33.40520 14389 121 +-1 -1 30.00000 31.59640 14510 57 +-1 -1 35.60520 36.95200 14567 73 +-1 -1 41.23430 42.22400 14640 73 +-1 -1 32.30320 35.50030 14713 121 +-1 -1 37.36550 40.03100 14834 57 +-1 -1 37.36550 40.03100 14891 57 +-1 -1 41.00420 42.25270 14948 105 +-1 -1 40.14570 41.00600 15053 73 +-1 -1 42.25330 43.26860 15126 105 +-1 -1 42.33050 42.80630 15231 57 +-1 -1 39.50760 40.24490 15288 73 +-1 -1 40.60750 42.25270 15361 89 +-1 -1 39.19200 39.62020 15450 73 +-1 -1 37.18580 39.29430 15523 73 +-1 -1 40.22450 41.05030 15596 89 +-1 -1 39.29370 40.14910 15685 73 +-1 -1 40.03070 41.23550 15758 57 +-1 -1 42.42420 43.73770 15815 89 +-1 -1 42.42420 43.73770 15904 89 +-1 -1 31.59910 32.30410 15993 41 +-1 -1 42.80630 43.26860 16034 41 +-1 -1 39.89330 40.16310 16075 57 +-1 -1 43.48620 44.60530 16132 41 +-1 -1 41.14370 42.42390 16173 73 +-1 -1 41.14340 41.19430 16246 41 +-1 -1 39.88750 39.88820 16287 41 +-1 -1 40.42980 40.72470 16328 41 +-1 -1 40.18480 40.22450 16369 41 +-1 -1 39.98860 39.98860 16410 41 +-1 -1 41.05150 41.19430 16451 41 +-1 -1 40.99930 41.00110 16492 41 +-1 -1 40.14180 40.14910 16533 41 +-1 -1 41.93130 44.86230 16574 105 +-1 -1 42.68790 49.17300 16679 313 +-1 -1 49.17050 50.00000 16992 41 +-1 -1 49.73450 50.00000 17033 57 +-1 -1 30.00000 30.86490 17090 57 +-1 -1 49.09210 50.00000 17147 89 +-1 -1 42.19650 42.33050 17236 41 +-1 -1 30.00000 30.34210 17277 57 +-1 -1 41.58130 50.00000 17334 313 +-1 -1 49.14210 50.00000 17647 89 +-1 -1 49.94350 50.00000 17736 41 +-1 -1 49.99050 50.00000 17777 41 +-1 -1 49.50770 49.98930 17818 57 +-1 -1 40.09290 43.00560 17875 137 +-1 -1 42.29540 48.26750 18012 137 +-1 -1 47.68550 50.00000 18149 105 +-1 -1 38.22490 38.30640 18254 41 +-1 -1 38.30640 38.62100 18295 41 +-1 -1 39.82930 40.09600 18336 41 +-1 -1 38.00060 38.22490 18377 41 +-1 -1 37.69540 37.83280 18418 41 +-1 -1 37.83220 38.00060 18459 41 +-1 -1 37.75860 38.02500 18500 41 +-1 -1 37.75860 37.99660 18541 41 +-1 -1 37.65700 37.66430 18582 41 +-1 -1 37.99660 38.02500 18623 41 +-1 -1 48.27820 48.99960 18664 73 +-1 -1 30.00000 32.71820 18737 153 +-1 -1 48.99960 48.99960 18890 57 +-1 -1 48.09600 49.37650 18947 89 +-1 -1 41.67560 42.54990 19036 73 +-1 -1 43.01630 48.31240 19109 137 +-1 -1 42.55420 43.01320 19246 41 +-1 -1 42.48280 46.12240 19287 137 +-1 -1 45.59320 47.36450 19424 89 +-1 -1 46.11960 47.47130 19513 57 +-1 -1 45.18390 45.59470 19570 41 +-1 -1 30.00000 35.08580 19611 121 +-1 -1 37.18820 41.99850 19732 137 +-1 -1 42.70980 43.39710 19869 41 +-1 -1 35.27350 35.32910 19910 41 +-1 -1 35.84180 35.91590 19951 41 +-1 -1 36.15150 36.15150 19992 41 +-1 -1 10.00000 13.89040 20033 217 +-1 -1 21.49830 30.00000 20250 185 +-1 -1 15.35710 21.81540 20435 121 +-1 -1 10.00000 10.27340 20556 41 +-1 -1 10.00000 12.39350 20597 73 +-1 -1 13.71710 23.00100 20670 105 +-1 -1 10.00000 12.82960 20775 73 +-1 -1 10.00000 10.99580 20848 57 +-1 -1 11.89520 15.00190 20905 121 +-1 -1 11.02480 11.67850 21026 73 +-1 -1 20.84640 23.52160 21099 41 +-1 -1 11.67910 12.39600 21140 57 +-1 -1 14.99180 15.35930 21197 41 +-1 -1 11.69380 13.89200 21238 57 +-1 -1 19.14660 20.85220 21295 57 +-1 -1 10.27340 10.60490 21352 41 +-1 -1 12.82780 13.08170 21393 41 +-1 -1 10.96410 11.09680 21434 41 +-1 -1 10.00000 10.92160 21475 41 +-1 -1 10.00000 17.99270 21516 169 +-1 -1 29.18880 30.00000 21685 73 +-1 -1 19.50030 30.00000 21758 105 +-1 -1 10.00000 19.49970 21863 137 +-1 -1 29.48550 30.00000 22000 41 +-1 -1 21.99850 22.23220 22041 89 +-1 -1 29.55110 30.00000 22130 41 +-1 -1 21.76810 23.12610 22171 57 +-1 -1 29.54620 29.57610 22228 41 +-1 -1 10.00000 11.47710 22269 57 +-1 -1 29.85320 30.00000 22326 41 +-1 -1 12.69110 15.10570 22367 137 +-1 -1 22.69980 24.97950 22504 89 +-1 -1 28.54520 29.47450 22593 73 +-1 -1 16.37740 17.45710 22666 73 +-1 -1 29.45950 30.00000 22739 57 +-1 -1 10.98210 12.70880 22796 89 +-1 -1 25.77510 26.72600 22885 57 +-1 -1 29.10430 30.00000 22942 41 +-1 -1 27.17740 28.69840 22983 41 +-1 -1 27.17740 28.69840 23024 41 +-1 -1 28.77470 29.20530 23065 57 +-1 -1 16.63100 18.99890 23122 57 +-1 -1 15.61680 25.47910 23179 153 +-1 -1 15.61680 25.47910 23332 153 +-1 -1 25.63620 26.06560 23485 41 +-1 -1 25.63620 26.06560 23526 41 +-1 -1 25.63780 25.79000 23567 41 +-1 -1 29.90110 30.00000 23608 41 +-1 -1 24.55590 24.62030 23649 41 +-1 -1 25.19310 30.00000 23690 153 +-1 -1 29.38840 30.00000 23843 73 +-1 -1 24.26900 30.00000 23916 185 +-1 -1 23.64830 24.32120 24101 57 +-1 -1 21.14090 26.63200 24158 313 +-1 -1 10.34490 20.38830 24471 201 +-1 -1 26.53280 30.00000 24672 121 +-1 -1 21.98230 29.46750 24793 281 +-1 -1 22.04850 28.54920 25074 233 +-1 -1 26.37260 28.32490 25307 153 +-1 -1 27.76490 29.32710 25460 73 +-1 -1 27.86430 30.00000 25533 73 +-1 -1 21.96980 22.05040 25606 41 +-1 -1 10.00000 10.35190 25647 41 +-1 -1 21.14270 23.37790 25688 233 +-1 -1 20.34620 20.35230 25921 41 +-1 -1 13.92070 18.42110 25962 169 +-1 -1 19.61200 22.39770 26131 201 +-1 -1 11.63550 14.35070 26332 73 +-1 -1 16.62730 19.69250 26405 73 +-1 -1 17.52760 20.15520 26478 89 +-1 -1 10.42240 11.66990 26567 89 +-1 -1 14.70530 16.62850 26656 89 +-1 -1 20.15760 21.68290 26745 73 +-1 -1 11.86950 13.79610 26818 57 +-1 -1 17.53030 18.21420 26875 73 +-1 -1 14.32410 14.70680 26948 57 +-1 -1 10.03200 10.42390 27005 73 +-1 -1 22.14370 22.60940 27078 89 +-1 -1 13.92980 14.70800 27167 41 +-1 -1 21.43270 21.96980 27208 41 +-1 -1 21.43480 21.68540 27249 41 +-1 -1 22.20330 22.20390 27290 41 +-1 -1 21.44910 21.66740 27331 41 +-1 -1 11.66480 11.87080 27372 41 +-1 -1 13.79580 13.93350 27413 41 +-1 -1 28.14420 30.00000 27454 105 +-1 -1 14.54840 17.81990 27559 169 +-1 -1 25.96640 28.14420 27728 73 +-1 -1 12.99990 14.99310 27801 137 +-1 -1 10.70830 11.06290 27938 57 +-1 -1 13.81870 14.43150 27995 57 +-1 -1 14.27440 15.07360 28052 41 +-1 -1 17.81900 18.48770 28093 57 +-1 -1 13.74610 14.22740 28150 41 +-1 -1 15.07360 15.72460 28191 41 +-1 -1 13.40520 13.81810 28232 41 +-1 -1 12.98680 12.99990 28273 41 +-1 -1 10.00000 11.85310 28314 57 +-1 -1 18.04210 19.70600 28371 41 +-1 -1 20.76490 30.00000 28412 153 +-1 -1 10.00000 13.50410 28565 121 +-1 -1 14.72480 16.63860 28686 73 +-1 -1 12.32330 13.70790 28759 89 +-1 -1 10.00000 12.00810 28848 105 +-1 -1 13.06100 13.82640 28953 105 +-1 -1 14.72600 15.70470 29058 121 +-1 -1 15.49840 27.29030 29179 105 +-1 -1 10.00000 11.00400 29284 41 +-1 -1 10.95800 12.15520 29325 73 +-1 -1 10.15110 10.66470 29398 73 +-1 -1 13.27640 15.09010 29471 105 +-1 -1 11.89580 12.25190 29576 57 +-1 -1 11.89390 12.40790 29633 73 +-1 -1 11.00130 11.10930 29706 41 +-1 -1 21.82510 25.00020 29747 41 +-1 -1 13.70890 14.76420 29788 41 +-1 -1 10.25700 10.72140 29829 57 +-1 -1 12.00810 12.50340 29886 41 +-1 -1 10.25820 10.43370 29927 41 +-1 -1 27.66660 27.66690 29968 41 +-1 -1 12.15400 12.29340 30009 41 +-1 -1 12.25010 12.50430 30050 41 +-1 -1 12.29400 12.67580 30091 41 +-1 -1 10.60820 10.91800 30132 41 +-1 -1 11.09860 11.13920 30173 41 +-1 -1 10.92840 10.96070 30214 41 +-1 -1 -8.09812 -5.85657 30255 121 +-1 -1 4.68162 10.00000 30376 121 +-1 -1 -3.92325 2.26642 30497 297 +-1 -1 7.98520 9.08598 30794 89 +-1 -1 3.47890 5.13542 30883 73 +-1 -1 -5.01427 2.42390 30956 153 +-1 -1 1.72198 7.52956 31109 121 +-1 -1 6.58839 10.00000 31230 73 +-1 -1 7.52682 9.98993 31303 121 +-1 -1 7.89364 10.00000 31424 73 +-1 -1 2.22156 3.64187 31497 73 +-1 -1 9.99237 10.00000 31570 41 +-1 -1 0.97551 2.34485 31611 73 +-1 -1 6.28077 10.00000 31684 73 +-1 -1 -5.77966 -4.63371 31757 73 +-1 -1 6.36469 7.89548 31830 41 +-1 -1 7.54574 7.98672 31871 41 +-1 -1 -6.05249 -5.85626 31912 41 +-1 -1 2.42725 3.07424 31953 41 +-1 -1 6.10040 6.59236 31994 41 +-1 -1 6.21820 6.28016 32035 41 +-1 -1 -10.00000 -8.48142 32076 57 +-1 -1 -10.00000 -7.05531 32133 73 +-1 -1 -4.67094 10.00000 32206 377 +-1 -1 3.40658 10.00000 32583 217 +-1 -1 -10.00000 -9.39605 32800 73 +-1 -1 9.08598 10.00000 32873 57 +-1 -1 4.12680 5.38140 32930 153 +-1 -1 -4.46098 -2.30945 33083 169 +-1 -1 -8.47929 -4.44938 33252 73 +-1 -1 3.49111 4.61936 33325 105 +-1 -1 1.11254 4.22263 33430 73 +-1 -1 -9.40612 -8.19303 33503 41 +-1 -1 -2.39796 -1.06126 33544 57 +-1 -1 4.60105 5.02373 33601 57 +-1 -1 -2.73854 -1.69268 33658 41 +-1 -1 0.23484 1.11376 33699 41 +-1 -1 -1.00114 0.23667 33740 41 +-1 -1 -1.69268 -1.38445 33781 41 +-1 -1 3.72335 10.00000 33822 153 +-1 -1 -1.67224 2.82094 33975 57 +-1 -1 2.83284 3.99008 34032 41 +-1 -1 6.41993 6.42145 34073 41 +-1 -1 9.52819 10.00000 34114 41 +-1 -1 0.85374 4.36118 34155 153 +-1 -1 5.63104 6.71107 34308 121 +-1 -1 4.01877 4.89586 34429 57 +-1 -1 4.31418 4.90257 34486 57 +-1 -1 1.27825 1.31121 34543 41 +-1 -1 -9.10155 -2.60548 34584 41 +-1 -1 -4.37064 -4.28275 34625 41 +-1 -1 8.02914 9.56847 34666 57 +-1 -1 -4.42802 -3.36934 34723 73 +-1 -1 -4.22416 1.43786 34796 217 +-1 -1 -10.00000 -9.69207 35013 73 +-1 -1 -10.00000 -4.14603 35086 153 +-1 -1 -10.00000 -9.42992 35239 73 +-1 -1 4.38285 5.23217 35312 57 +-1 -1 6.11872 10.00000 35369 153 +-1 -1 -4.99565 -0.10788 35522 137 +-1 -1 0.64958 4.22202 35659 137 +-1 -1 3.56039 5.20592 35796 105 +-1 -1 7.22896 8.67491 35901 89 +-1 -1 5.20348 7.84665 35990 121 +-1 -1 2.79225 6.19318 36111 73 +-1 -1 1.22484 2.14374 36184 105 +-1 -1 1.22210 2.79011 36289 57 +-1 -1 0.61875 1.71374 36346 73 +-1 -1 7.84543 8.11643 36419 41 +-1 -1 1.18547 5.48547 36460 185 +-1 -1 1.89319 4.03494 36645 137 +-1 -1 2.32959 5.76501 36782 73 +-1 -1 8.11643 8.53513 36855 57 +-1 -1 9.48180 10.00000 36912 73 +-1 -1 8.37827 10.00000 36985 73 +-1 -1 4.35355 7.56008 37058 89 +-1 -1 8.27543 9.99756 37147 89 +-1 -1 7.19387 8.44663 37236 121 +-1 -1 7.41817 8.56840 37357 57 +-1 -1 8.78080 10.00000 37414 41 +-1 -1 6.92653 8.48814 37455 41 +-1 -1 5.59014 8.77989 37496 73 +-1 -1 5.10033 5.58862 37569 41 +-1 -1 5.08598 5.11406 37610 41 +-1 -1 -17.90330 -16.96880 37651 105 +-1 -1 -23.97570 -22.00120 37756 57 +-1 -1 -28.96090 -28.02850 37813 105 +-1 -1 -28.42560 -26.45530 37918 41 +-1 -1 -23.23960 -22.68510 37959 57 +-1 -1 -13.45400 -10.00000 38016 281 +-1 -1 -17.13540 -10.00000 38297 329 +-1 -1 -11.56500 -10.00000 38626 41 +-1 -1 -17.95940 -14.01250 38667 137 +-1 -1 -18.01430 -17.90330 38804 41 +-1 -1 -26.89570 -25.29960 38845 89 +-1 -1 -17.62550 -10.87130 38934 89 +-1 -1 -22.00120 -17.99880 39023 73 +-1 -1 -26.89660 -23.97570 39096 73 +-1 -1 -20.51010 -17.47840 39169 73 +-1 -1 -24.63190 -22.19230 39242 57 +-1 -1 -30.00000 -28.61330 39299 73 +-1 -1 -27.31620 -22.41810 39372 169 +-1 -1 -21.34510 -18.40470 39541 89 +-1 -1 -17.34600 -15.63360 39630 73 +-1 -1 -18.48520 -17.79770 39703 57 +-1 -1 -22.06560 -20.50740 39760 57 +-1 -1 -22.41600 -21.34720 39817 57 +-1 -1 -11.41600 -10.68970 39874 41 +-1 -1 -29.64170 -28.61420 39915 57 +-1 -1 -26.45530 -24.76620 39972 41 +-1 -1 -18.41140 -17.35760 40013 41 +-1 -1 -18.01620 -17.47940 40054 41 +-1 -1 -30.00000 -29.64290 40095 41 +-1 -1 -25.62430 -24.73960 40136 41 +-1 -1 -12.01210 -12.01140 40177 41 +-1 -1 -26.83960 -25.95760 40218 41 +-1 -1 -12.00200 -12.00200 40259 41 +-1 -1 -24.74450 -24.63070 40300 41 +-1 -1 -22.19200 -22.06320 40341 41 +-1 -1 -10.68970 -10.47940 40382 41 +-1 -1 -30.00000 -17.50530 40423 217 +-1 -1 -10.69180 -10.00000 40640 41 +-1 -1 -16.26440 -10.00000 40681 169 +-1 -1 -10.00400 -10.00000 40850 57 +-1 -1 -11.13470 -10.00000 40907 73 +-1 -1 -18.34790 -10.95120 40980 121 +-1 -1 -24.16620 -21.78760 41101 137 +-1 -1 -22.23930 -19.29880 41238 57 +-1 -1 -20.16860 -16.26440 41295 89 +-1 -1 -30.00000 -27.17160 41384 57 +-1 -1 -27.43400 -22.08550 41441 105 +-1 -1 -24.34870 -24.16620 41546 41 +-1 -1 -27.29490 -24.24860 41587 57 +-1 -1 -22.08970 -19.29700 41644 89 +-1 -1 -27.17160 -25.57370 41733 57 +-1 -1 -27.43250 -27.29640 41790 41 +-1 -1 -22.08910 -22.08240 41831 41 +-1 -1 -30.65890 -30.00000 41872 73 +-1 -1 -30.31770 -30.00000 41945 41 +-1 -1 -30.40440 -30.31710 41986 41 +-1 -1 -50.00000 -30.00000 42027 345 +-1 -1 -32.45000 -30.00000 42372 57 +-1 -1 -33.74580 -30.10990 42429 137 +-1 -1 -34.17360 -32.45400 42566 41 +-1 -1 -51.99770 -50.00000 42607 89 +-1 -1 -54.88590 -52.64350 42696 41 +-1 -1 -52.37800 -51.99560 42737 41 +-1 -1 70.00000 70.06710 42778 41 +-1 -1 70.00000 70.08820 42819 41 +-1 -1 50.00000 51.01900 42860 121 +-1 -1 50.00000 53.60750 42981 121 +-1 -1 54.46630 54.47670 43102 41 +-1 -1 50.00000 50.32320 43143 41 +-1 -1 58.90490 68.50860 43184 297 +-1 -1 50.00000 50.16690 43481 57 +-1 -1 50.00000 51.09100 43538 41 +-1 -1 50.86580 53.27000 43579 73 +-1 -1 50.75650 51.48650 43652 57 +-1 -1 50.00000 50.12660 43709 41 +-1 -1 54.76570 55.08640 43750 41 +-1 -1 50.00000 54.46630 43791 105 +-1 -1 68.40670 69.05760 43896 41 +-1 -1 65.51320 70.00000 43937 137 +-1 -1 62.91430 69.05060 44074 121 +-1 -1 55.67540 56.45060 44195 73 +-1 -1 55.67540 56.45060 44268 73 +-1 -1 53.94780 54.97720 44341 57 +-1 -1 53.94780 54.97720 44398 57 +-1 -1 50.00000 50.95950 44455 73 +-1 -1 51.84390 52.36700 44528 57 +-1 -1 57.53580 58.08450 44585 57 +-1 -1 55.60310 56.14940 44642 41 +-1 -1 55.60310 56.14940 44683 41 +-1 -1 51.37510 51.63030 44724 41 +-1 -1 60.54760 62.91250 44765 41 +-1 -1 56.15120 57.53640 44806 41 +-1 -1 69.02950 70.00000 44847 73 +-1 -1 54.46080 55.60310 44920 41 +-1 -1 51.53110 51.92260 44961 41 +-1 -1 51.63030 51.92080 45002 41 +-1 -1 52.10820 53.12110 45043 41 +-1 -1 53.12110 53.43880 45084 41 +-1 -1 54.97720 55.67480 45125 57 +-1 -1 54.97720 55.67480 45182 57 +-1 -1 50.95950 51.25950 45239 41 +-1 -1 51.25280 51.37510 45280 41 +-1 -1 53.43850 53.80440 45321 41 +-1 -1 51.25310 51.94430 45362 41 +-1 -1 55.07210 55.24880 45403 41 +-1 -1 54.36500 55.07180 45444 41 +-1 -1 58.00980 59.15970 45485 41 +-1 -1 51.94430 52.10820 45526 41 +-1 -1 51.36900 51.84330 45567 41 +-1 -1 57.53580 58.00980 45608 41 +-1 -1 54.00210 54.46020 45649 41 +-1 -1 55.67510 55.82650 45690 41 +-1 -1 55.67510 55.82650 45731 41 +-1 -1 55.79200 56.14940 45772 41 +-1 -1 55.79200 56.14940 45813 41 +-1 -1 53.80320 54.00210 45854 41 +-1 -1 59.15970 59.35260 45895 41 +-1 -1 55.79200 55.82650 45936 41 +-1 -1 55.79200 55.82650 45977 41 +-1 -1 51.25950 51.36900 46018 41 +-1 -1 59.35260 59.47860 46059 41 +-1 -1 60.25530 60.54550 46100 41 +-1 -1 50.00000 51.76910 46141 57 +-1 -1 50.00000 50.37510 46198 41 +-1 -1 50.52830 51.12000 46239 105 +-1 -1 50.47820 51.15600 46344 57 +-1 -1 51.45480 51.78100 46401 73 +-1 -1 50.00000 50.37690 46474 41 +-1 -1 50.52860 51.50670 46515 41 +-1 -1 51.46430 51.50670 46556 41 +-1 -1 51.08490 51.15600 46597 41 +-1 -1 51.08460 51.12000 46638 41 +-1 -1 52.00080 54.18250 46679 153 +-1 -1 50.79260 51.26470 46832 73 +-1 -1 50.85330 51.66930 46905 41 +-1 -1 53.43600 54.38790 46946 105 +-1 -1 54.64520 55.36720 47051 57 +-1 -1 53.34570 54.47550 47108 73 +-1 -1 54.39090 54.64300 47181 41 +-1 -1 54.39090 54.64300 47222 41 +-1 -1 54.19320 55.29670 47263 57 +-1 -1 55.29730 55.36840 47320 41 +-1 -1 51.61990 52.00080 47361 41 +-1 -1 53.43600 54.11110 47402 57 +-1 -1 51.66930 53.34540 47459 41 +-1 -1 54.19780 54.39250 47500 41 +-1 -1 51.42820 51.61990 47541 41 +-1 -1 54.18250 54.19680 47582 41 +-1 -1 51.26680 51.43010 47623 41 +-1 -1 50.00000 50.87460 47664 89 +-1 -1 50.00000 52.14360 47753 89 +-1 -1 50.00000 51.00250 47842 57 +-1 -1 50.73610 51.31440 47899 73 +-1 -1 50.00000 50.28410 47972 57 +-1 -1 50.00000 51.88020 48029 105 +-1 -1 50.00000 51.12950 48134 41 +-1 -1 50.20840 53.55410 48175 121 +-1 -1 50.00000 50.20290 48296 41 +-1 -1 60.30750 69.64570 48337 57 +-1 -1 54.70770 60.35230 48394 153 +-1 -1 54.09950 55.07060 48547 57 +-1 -1 49.23280 50.00000 48604 73 +-1 -1 45.76780 46.87100 48677 89 +-1 -1 47.58510 50.00000 48766 73 +-1 -1 30.00000 33.17240 48839 105 +-1 -1 43.78870 47.54060 48944 233 +-1 -1 47.27470 50.00000 49177 169 +-1 -1 46.86920 48.15460 49346 105 +-1 -1 45.93220 47.80700 49451 105 +-1 -1 39.80700 39.84480 49556 41 +-1 -1 41.85050 42.62590 49597 57 +-1 -1 48.61690 49.51810 49654 41 +-1 -1 49.46010 50.00000 49695 57 +-1 -1 49.98020 50.00000 49752 57 +-1 -1 45.59810 47.09470 49809 105 +-1 -1 30.23380 36.94350 49914 121 +-1 -1 48.14420 49.01880 50035 89 +-1 -1 42.60210 42.70920 50124 41 +-1 -1 49.54500 50.00000 50165 41 +-1 -1 42.43460 42.50690 50206 41 +-1 -1 42.50690 42.56550 50247 57 +-1 -1 42.95280 43.18230 50304 41 +-1 -1 39.87010 39.93060 50345 41 +-1 -1 43.91350 43.91620 50386 41 +-1 -1 47.06420 47.27410 50427 41 +-1 -1 48.01240 48.14360 50468 41 +-1 -1 42.46110 42.46230 50509 41 +-1 -1 42.48650 42.66290 50550 41 +-1 -1 41.34140 41.41070 50591 41 +-1 -1 43.72950 43.75750 50632 41 +-1 -1 47.69310 47.69310 50673 41 +-1 -1 42.54600 45.18640 50714 169 +-1 -1 43.12340 43.53440 50883 41 +-1 -1 44.85310 45.90750 50924 57 +-1 -1 45.45860 46.48370 50981 73 +-1 -1 49.07840 49.43690 51054 73 +-1 -1 43.62480 46.15140 51127 153 +-1 -1 30.00000 33.37800 51280 137 +-1 -1 30.00000 31.64710 51417 57 +-1 -1 45.21200 48.26380 51474 153 +-1 -1 48.41180 50.00000 51627 73 +-1 -1 47.95350 48.57600 51700 57 +-1 -1 40.73530 41.75010 51757 105 +-1 -1 35.92660 36.83360 51862 89 +-1 -1 39.66900 42.53990 51951 89 +-1 -1 30.00000 31.32270 52040 41 +-1 -1 41.34140 44.22630 52081 105 +-1 -1 30.00000 31.83290 52186 89 +-1 -1 49.90330 50.00000 52275 41 +-1 -1 31.98670 32.75000 52316 41 +-1 -1 46.55120 48.00990 52357 41 +-1 -1 49.62310 49.90420 52398 41 +-1 -1 41.71250 42.08820 52439 57 +-1 -1 33.37530 33.94480 52496 41 +-1 -1 31.93850 32.23610 52537 41 +-1 -1 47.83140 48.36760 52578 57 +-1 -1 47.10930 47.86830 52635 57 +-1 -1 48.58820 49.06550 52692 41 +-1 -1 48.07130 48.46490 52733 41 +-1 -1 48.25860 48.46490 52774 41 +-1 -1 33.09390 33.24900 52815 41 +-1 -1 36.02980 36.20490 52856 41 +-1 -1 31.21740 31.59670 52897 41 +-1 -1 48.00960 48.07130 52938 41 +-1 -1 48.36760 48.58820 52979 41 +-1 -1 37.64870 37.83950 53020 41 +-1 -1 36.46920 36.49150 53061 41 +-1 -1 45.13730 45.43180 53102 41 +-1 -1 46.41570 46.55120 53143 41 +-1 -1 36.56290 36.76650 53184 41 +-1 -1 37.25170 37.50470 53225 41 +-1 -1 38.11230 38.32440 53266 41 +-1 -1 39.38740 39.39860 53307 41 +-1 -1 36.93000 37.06400 53348 41 +-1 -1 39.81400 40.03620 53389 41 +-1 -1 36.62970 36.64130 53430 41 +-1 -1 38.48400 38.70130 53471 41 +-1 -1 40.25440 40.40360 53512 41 +-1 -1 38.88040 39.07550 53553 41 +-1 -1 31.80760 31.80820 53594 41 +-1 -1 33.20710 33.25170 53635 41 +-1 -1 43.90430 43.92900 53676 41 +-1 -1 41.94230 42.32650 53717 41 +-1 -1 42.56340 43.12340 53758 57 +-1 -1 30.00000 39.64860 53815 233 +-1 -1 36.83360 37.32160 54048 41 +-1 -1 36.95200 38.28200 54089 121 +-1 -1 41.26270 42.79770 54210 137 +-1 -1 39.63270 41.58310 54347 89 +-1 -1 38.44530 39.71970 54436 105 +-1 -1 49.94200 50.00000 54541 57 +-1 -1 38.87800 41.29870 54598 89 +-1 -1 36.97060 37.38480 54687 89 +-1 -1 41.89680 42.89910 54776 73 +-1 -1 41.89680 42.89910 54849 73 +-1 -1 41.89680 42.89910 54922 73 +-1 -1 46.34550 48.24860 54995 105 +-1 -1 41.28680 42.33720 55100 73 +-1 -1 49.60510 49.62310 55173 41 +-1 -1 42.89910 43.54570 55214 57 +-1 -1 42.89910 43.54570 55271 57 +-1 -1 41.05000 41.89590 55328 57 +-1 -1 41.19620 41.89720 55385 57 +-1 -1 33.94480 37.06190 55442 73 +-1 -1 30.00000 31.93850 55515 57 +-1 -1 38.84200 39.70570 55572 57 +-1 -1 48.24860 50.00000 55629 57 +-1 -1 49.06550 49.18390 55686 41 +-1 -1 30.00000 30.01530 55727 57 +-1 -1 41.11070 41.29780 55784 41 +-1 -1 41.11070 41.29780 55825 41 +-1 -1 41.32620 45.00300 55866 41 +-1 -1 45.00240 45.57120 55907 57 +-1 -1 37.05970 37.31980 55964 41 +-1 -1 49.18390 49.60050 56005 41 +-1 -1 40.66480 40.66510 56046 41 +-1 -1 41.08450 41.08450 56087 41 +-1 -1 41.08450 41.08450 56128 41 +-1 -1 30.00000 30.00790 56169 41 +-1 -1 41.00420 41.00570 56210 41 +-1 -1 33.40760 41.93130 56251 281 +-1 -1 44.86230 44.92970 56532 57 +-1 -1 30.00000 38.47210 56589 377 +-1 -1 30.00000 37.02560 56966 201 +-1 -1 30.86490 33.40520 57167 121 +-1 -1 30.00000 31.59640 57288 57 +-1 -1 35.60520 36.95200 57345 73 +-1 -1 41.23430 42.22400 57418 73 +-1 -1 32.30320 35.50030 57491 121 +-1 -1 37.36550 40.03100 57612 57 +-1 -1 37.36550 40.03100 57669 57 +-1 -1 41.00420 42.25270 57726 105 +-1 -1 40.14570 41.00600 57831 73 +-1 -1 42.25330 43.26860 57904 105 +-1 -1 42.33050 42.80630 58009 57 +-1 -1 39.50760 40.24490 58066 73 +-1 -1 40.60750 42.25270 58139 89 +-1 -1 39.19200 39.62020 58228 73 +-1 -1 37.18580 39.29430 58301 73 +-1 -1 40.22450 41.05030 58374 89 +-1 -1 39.29370 40.14910 58463 73 +-1 -1 40.03070 41.23550 58536 57 +-1 -1 42.42420 43.73770 58593 89 +-1 -1 42.42420 43.73770 58682 89 +-1 -1 31.59910 32.30410 58771 41 +-1 -1 42.80630 43.26860 58812 41 +-1 -1 39.89330 40.16310 58853 57 +-1 -1 43.48620 44.60530 58910 41 +-1 -1 41.14370 42.42390 58951 73 +-1 -1 41.14340 41.19430 59024 41 +-1 -1 39.88750 39.88820 59065 41 +-1 -1 40.42980 40.72470 59106 41 +-1 -1 40.18480 40.22450 59147 41 +-1 -1 39.98860 39.98860 59188 41 +-1 -1 41.05150 41.19430 59229 41 +-1 -1 40.99930 41.00110 59270 41 +-1 -1 40.14180 40.14910 59311 41 +-1 -1 41.93130 44.86230 59352 105 +-1 -1 42.68790 49.17300 59457 313 +-1 -1 49.17050 50.00000 59770 41 +-1 -1 49.73450 50.00000 59811 57 +-1 -1 30.00000 30.86490 59868 57 +-1 -1 49.09210 50.00000 59925 89 +-1 -1 42.19650 42.33050 60014 41 +-1 -1 30.00000 30.34210 60055 57 +-1 -1 41.58130 50.00000 60112 313 +-1 -1 49.14210 50.00000 60425 89 +-1 -1 49.94350 50.00000 60514 41 +-1 -1 49.99050 50.00000 60555 41 +-1 -1 49.50770 49.98930 60596 57 +-1 -1 40.09290 43.00560 60653 137 +-1 -1 42.29540 48.26750 60790 137 +-1 -1 47.68550 50.00000 60927 105 +-1 -1 38.22490 38.30640 61032 41 +-1 -1 38.30640 38.62100 61073 41 +-1 -1 39.82930 40.09600 61114 41 +-1 -1 38.00060 38.22490 61155 41 +-1 -1 37.69540 37.83280 61196 41 +-1 -1 37.83220 38.00060 61237 41 +-1 -1 37.75860 38.02500 61278 41 +-1 -1 37.75860 37.99660 61319 41 +-1 -1 37.65700 37.66430 61360 41 +-1 -1 37.99660 38.02500 61401 41 +-1 -1 48.27820 48.99960 61442 73 +-1 -1 30.00000 32.71820 61515 153 +-1 -1 48.99960 48.99960 61668 57 +-1 -1 48.09600 49.37650 61725 89 +-1 -1 41.67560 42.54990 61814 73 +-1 -1 43.01630 48.31240 61887 137 +-1 -1 42.55420 43.01320 62024 41 +-1 -1 42.48280 46.12240 62065 137 +-1 -1 45.59320 47.36450 62202 89 +-1 -1 46.11960 47.47130 62291 57 +-1 -1 45.18390 45.59470 62348 41 +-1 -1 30.00000 35.08580 62389 121 +-1 -1 37.18820 41.99850 62510 137 +-1 -1 42.70980 43.39710 62647 41 +-1 -1 35.27350 35.32910 62688 41 +-1 -1 35.84180 35.91590 62729 41 +-1 -1 36.15150 36.15150 62770 41 +-1 -1 10.00000 13.89040 62811 217 +-1 -1 21.49830 30.00000 63028 185 +-1 -1 15.35710 21.81540 63213 121 +-1 -1 10.00000 10.27340 63334 41 +-1 -1 10.00000 12.39350 63375 73 +-1 -1 13.71710 23.00100 63448 105 +-1 -1 10.00000 12.82960 63553 73 +-1 -1 10.00000 10.99580 63626 57 +-1 -1 11.89520 15.00190 63683 121 +-1 -1 11.02480 11.67850 63804 73 +-1 -1 20.84640 23.52160 63877 41 +-1 -1 11.67910 12.39600 63918 57 +-1 -1 14.99180 15.35930 63975 41 +-1 -1 11.69380 13.89200 64016 57 +-1 -1 19.14660 20.85220 64073 57 +-1 -1 10.27340 10.60490 64130 41 +-1 -1 12.82780 13.08170 64171 41 +-1 -1 10.96410 11.09680 64212 41 +-1 -1 10.00000 10.92160 64253 41 +-1 -1 10.00000 17.99270 64294 169 +-1 -1 29.18880 30.00000 64463 73 +-1 -1 19.50030 30.00000 64536 105 +-1 -1 10.00000 19.49970 64641 137 +-1 -1 29.48550 30.00000 64778 41 +-1 -1 21.99850 22.23220 64819 89 +-1 -1 29.55110 30.00000 64908 41 +-1 -1 21.76810 23.12610 64949 57 +-1 -1 29.54620 29.57610 65006 41 +-1 -1 10.00000 11.47710 65047 57 +-1 -1 29.85320 30.00000 65104 41 +-1 -1 12.69110 15.10570 65145 137 +-1 -1 22.69980 24.97950 65282 89 +-1 -1 28.54520 29.47450 65371 73 +-1 -1 16.37740 17.45710 65444 73 +-1 -1 29.45950 30.00000 65517 57 +-1 -1 10.98210 12.70880 65574 89 +-1 -1 25.77510 26.72600 65663 57 +-1 -1 29.10430 30.00000 65720 41 +-1 -1 27.17740 28.69840 65761 41 +-1 -1 27.17740 28.69840 65802 41 +-1 -1 28.77470 29.20530 65843 57 +-1 -1 16.63100 18.99890 65900 57 +-1 -1 15.61680 25.47910 65957 153 +-1 -1 15.61680 25.47910 66110 153 +-1 -1 25.63620 26.06560 66263 41 +-1 -1 25.63620 26.06560 66304 41 +-1 -1 25.63780 25.79000 66345 41 +-1 -1 29.90110 30.00000 66386 41 +-1 -1 24.55590 24.62030 66427 41 +-1 -1 25.19310 30.00000 66468 153 +-1 -1 29.38840 30.00000 66621 73 +-1 -1 24.26900 30.00000 66694 185 +-1 -1 23.64830 24.32120 66879 57 +-1 -1 21.14090 26.63200 66936 313 +-1 -1 10.34490 20.38830 67249 201 +-1 -1 26.53280 30.00000 67450 121 +-1 -1 21.98230 29.46750 67571 281 +-1 -1 22.04850 28.54920 67852 233 +-1 -1 26.37260 28.32490 68085 153 +-1 -1 27.76490 29.32710 68238 73 +-1 -1 27.86430 30.00000 68311 73 +-1 -1 21.96980 22.05040 68384 41 +-1 -1 10.00000 10.35190 68425 41 +-1 -1 21.14270 23.37790 68466 233 +-1 -1 20.34620 20.35230 68699 41 +-1 -1 13.92070 18.42110 68740 169 +-1 -1 19.61200 22.39770 68909 201 +-1 -1 11.63550 14.35070 69110 73 +-1 -1 16.62730 19.69250 69183 73 +-1 -1 17.52760 20.15520 69256 89 +-1 -1 10.42240 11.66990 69345 89 +-1 -1 14.70530 16.62850 69434 89 +-1 -1 20.15760 21.68290 69523 73 +-1 -1 11.86950 13.79610 69596 57 +-1 -1 17.53030 18.21420 69653 73 +-1 -1 14.32410 14.70680 69726 57 +-1 -1 10.03200 10.42390 69783 73 +-1 -1 22.14370 22.60940 69856 89 +-1 -1 13.92980 14.70800 69945 41 +-1 -1 21.43270 21.96980 69986 41 +-1 -1 21.43480 21.68540 70027 41 +-1 -1 22.20330 22.20390 70068 41 +-1 -1 21.44910 21.66740 70109 41 +-1 -1 11.66480 11.87080 70150 41 +-1 -1 13.79580 13.93350 70191 41 +-1 -1 28.14420 30.00000 70232 105 +-1 -1 14.54840 17.81990 70337 169 +-1 -1 25.96640 28.14420 70506 73 +-1 -1 12.99990 14.99310 70579 137 +-1 -1 10.70830 11.06290 70716 57 +-1 -1 13.81870 14.43150 70773 57 +-1 -1 14.27440 15.07360 70830 41 +-1 -1 17.81900 18.48770 70871 57 +-1 -1 13.74610 14.22740 70928 41 +-1 -1 15.07360 15.72460 70969 41 +-1 -1 13.40520 13.81810 71010 41 +-1 -1 12.98680 12.99990 71051 41 +-1 -1 10.00000 11.85310 71092 57 +-1 -1 18.04210 19.70600 71149 41 +-1 -1 20.76490 30.00000 71190 153 +-1 -1 10.00000 13.50410 71343 121 +-1 -1 14.72480 16.63860 71464 73 +-1 -1 12.32330 13.70790 71537 89 +-1 -1 10.00000 12.00810 71626 105 +-1 -1 13.06100 13.82640 71731 105 +-1 -1 14.72600 15.70470 71836 121 +-1 -1 15.49840 27.29030 71957 105 +-1 -1 10.00000 11.00400 72062 41 +-1 -1 10.95800 12.15520 72103 73 +-1 -1 10.15110 10.66470 72176 73 +-1 -1 13.27640 15.09010 72249 105 +-1 -1 11.89580 12.25190 72354 57 +-1 -1 11.89390 12.40790 72411 73 +-1 -1 11.00130 11.10930 72484 41 +-1 -1 21.82510 25.00020 72525 41 +-1 -1 13.70890 14.76420 72566 41 +-1 -1 10.25700 10.72140 72607 57 +-1 -1 12.00810 12.50340 72664 41 +-1 -1 10.25820 10.43370 72705 41 +-1 -1 27.66660 27.66690 72746 41 +-1 -1 12.15400 12.29340 72787 41 +-1 -1 12.25010 12.50430 72828 41 +-1 -1 12.29400 12.67580 72869 41 +-1 -1 10.60820 10.91800 72910 41 +-1 -1 11.09860 11.13920 72951 41 +-1 -1 10.92840 10.96070 72992 41 +-1 -1 -8.09812 -5.85657 73033 121 +-1 -1 4.68162 10.00000 73154 121 +-1 -1 -3.92325 2.26642 73275 297 +-1 -1 7.98520 9.08598 73572 89 +-1 -1 3.47890 5.13542 73661 73 +-1 -1 -5.01427 2.42390 73734 153 +-1 -1 1.72198 7.52956 73887 121 +-1 -1 6.58839 10.00000 74008 73 +-1 -1 7.52682 9.98993 74081 121 +-1 -1 7.89364 10.00000 74202 73 +-1 -1 2.22156 3.64187 74275 73 +-1 -1 9.99237 10.00000 74348 41 +-1 -1 0.97551 2.34485 74389 73 +-1 -1 6.28077 10.00000 74462 73 +-1 -1 -5.77966 -4.63371 74535 73 +-1 -1 6.36469 7.89548 74608 41 +-1 -1 7.54574 7.98672 74649 41 +-1 -1 -6.05249 -5.85626 74690 41 +-1 -1 2.42725 3.07424 74731 41 +-1 -1 6.10040 6.59236 74772 41 +-1 -1 6.21820 6.28016 74813 41 +-1 -1 -10.00000 -8.48142 74854 57 +-1 -1 -10.00000 -7.05531 74911 73 +-1 -1 -4.67094 10.00000 74984 377 +-1 -1 3.40658 10.00000 75361 217 +-1 -1 -10.00000 -9.39605 75578 73 +-1 -1 9.08598 10.00000 75651 57 +-1 -1 4.12680 5.38140 75708 153 +-1 -1 -4.46098 -2.30945 75861 169 +-1 -1 -8.47929 -4.44938 76030 73 +-1 -1 3.49111 4.61936 76103 105 +-1 -1 1.11254 4.22263 76208 73 +-1 -1 -9.40612 -8.19303 76281 41 +-1 -1 -2.39796 -1.06126 76322 57 +-1 -1 4.60105 5.02373 76379 57 +-1 -1 -2.73854 -1.69268 76436 41 +-1 -1 0.23484 1.11376 76477 41 +-1 -1 -1.00114 0.23667 76518 41 +-1 -1 -1.69268 -1.38445 76559 41 +-1 -1 3.72335 10.00000 76600 153 +-1 -1 -1.67224 2.82094 76753 57 +-1 -1 2.83284 3.99008 76810 41 +-1 -1 6.41993 6.42145 76851 41 +-1 -1 9.52819 10.00000 76892 41 +-1 -1 0.85374 4.36118 76933 153 +-1 -1 5.63104 6.71107 77086 121 +-1 -1 4.01877 4.89586 77207 57 +-1 -1 4.31418 4.90257 77264 57 +-1 -1 1.27825 1.31121 77321 41 +-1 -1 -9.10155 -2.60548 77362 41 +-1 -1 -4.37064 -4.28275 77403 41 +-1 -1 8.02914 9.56847 77444 57 +-1 -1 -4.42802 -3.36934 77501 73 +-1 -1 -4.22416 1.43786 77574 217 +-1 -1 -10.00000 -9.69207 77791 73 +-1 -1 -10.00000 -4.14603 77864 153 +-1 -1 -10.00000 -9.42992 78017 73 +-1 -1 4.38285 5.23217 78090 57 +-1 -1 6.11872 10.00000 78147 153 +-1 -1 -4.99565 -0.10788 78300 137 +-1 -1 0.64958 4.22202 78437 137 +-1 -1 3.56039 5.20592 78574 105 +-1 -1 7.22896 8.67491 78679 89 +-1 -1 5.20348 7.84665 78768 121 +-1 -1 2.79225 6.19318 78889 73 +-1 -1 1.22484 2.14374 78962 105 +-1 -1 1.22210 2.79011 79067 57 +-1 -1 0.61875 1.71374 79124 73 +-1 -1 7.84543 8.11643 79197 41 +-1 -1 1.18547 5.48547 79238 185 +-1 -1 1.89319 4.03494 79423 137 +-1 -1 2.32959 5.76501 79560 73 +-1 -1 8.11643 8.53513 79633 57 +-1 -1 9.48180 10.00000 79690 73 +-1 -1 8.37827 10.00000 79763 73 +-1 -1 4.35355 7.56008 79836 89 +-1 -1 8.27543 9.99756 79925 89 +-1 -1 7.19387 8.44663 80014 121 +-1 -1 7.41817 8.56840 80135 57 +-1 -1 8.78080 10.00000 80192 41 +-1 -1 6.92653 8.48814 80233 41 +-1 -1 5.59014 8.77989 80274 73 +-1 -1 5.10033 5.58862 80347 41 +-1 -1 5.08598 5.11406 80388 41 +-1 -1 -17.90330 -16.96880 80429 105 +-1 -1 -23.97570 -22.00120 80534 57 +-1 -1 -28.96090 -28.02850 80591 105 +-1 -1 -28.42560 -26.45530 80696 41 +-1 -1 -23.23960 -22.68510 80737 57 +-1 -1 -13.45400 -10.00000 80794 281 +-1 -1 -17.13540 -10.00000 81075 329 +-1 -1 -11.56500 -10.00000 81404 41 +-1 -1 -17.95940 -14.01250 81445 137 +-1 -1 -18.01430 -17.90330 81582 41 +-1 -1 -26.89570 -25.29960 81623 89 +-1 -1 -17.62550 -10.87130 81712 89 +-1 -1 -22.00120 -17.99880 81801 73 +-1 -1 -26.89660 -23.97570 81874 73 +-1 -1 -20.51010 -17.47840 81947 73 +-1 -1 -24.63190 -22.19230 82020 57 +-1 -1 -30.00000 -28.61330 82077 73 +-1 -1 -27.31620 -22.41810 82150 169 +-1 -1 -21.34510 -18.40470 82319 89 +-1 -1 -17.34600 -15.63360 82408 73 +-1 -1 -18.48520 -17.79770 82481 57 +-1 -1 -22.06560 -20.50740 82538 57 +-1 -1 -22.41600 -21.34720 82595 57 +-1 -1 -11.41600 -10.68970 82652 41 +-1 -1 -29.64170 -28.61420 82693 57 +-1 -1 -26.45530 -24.76620 82750 41 +-1 -1 -18.41140 -17.35760 82791 41 +-1 -1 -18.01620 -17.47940 82832 41 +-1 -1 -30.00000 -29.64290 82873 41 +-1 -1 -25.62430 -24.73960 82914 41 +-1 -1 -12.01210 -12.01140 82955 41 +-1 -1 -26.83960 -25.95760 82996 41 +-1 -1 -12.00200 -12.00200 83037 41 +-1 -1 -24.74450 -24.63070 83078 41 +-1 -1 -22.19200 -22.06320 83119 41 +-1 -1 -10.68970 -10.47940 83160 41 +-1 -1 -30.00000 -17.50530 83201 217 +-1 -1 -10.69180 -10.00000 83418 41 +-1 -1 -16.26440 -10.00000 83459 169 +-1 -1 -10.00400 -10.00000 83628 57 +-1 -1 -11.13470 -10.00000 83685 73 +-1 -1 -18.34790 -10.95120 83758 121 +-1 -1 -24.16620 -21.78760 83879 137 +-1 -1 -22.23930 -19.29880 84016 57 +-1 -1 -20.16860 -16.26440 84073 89 +-1 -1 -30.00000 -27.17160 84162 57 +-1 -1 -27.43400 -22.08550 84219 105 +-1 -1 -24.34870 -24.16620 84324 41 +-1 -1 -27.29490 -24.24860 84365 57 +-1 -1 -22.08970 -19.29700 84422 89 +-1 -1 -27.17160 -25.57370 84511 57 +-1 -1 -27.43250 -27.29640 84568 41 +-1 -1 -22.08910 -22.08240 84609 41 +-1 -1 -30.65890 -30.00000 84650 73 +-1 -1 -30.31770 -30.00000 84723 41 +-1 -1 -30.40440 -30.31710 84764 41 +-1 -1 -50.00000 -30.00000 84805 345 +-1 -1 -32.45000 -30.00000 85150 57 +-1 -1 -33.74580 -30.10990 85207 137 +-1 -1 -34.17360 -32.45400 85344 41 +-1 -1 -51.99770 -50.00000 85385 89 +-1 -1 -54.88590 -52.64350 85474 41 +-1 -1 -52.37800 -51.99560 85515 41 +-1 -1 70.00000 70.06710 85556 41 +-1 -1 70.00000 70.08820 85597 41 +-1 -1 50.00000 51.01900 85638 121 +-1 -1 50.00000 53.60750 85759 121 +-1 -1 54.46630 54.47670 85880 41 +-1 -1 50.00000 50.32320 85921 41 +-1 -1 58.90490 68.50860 85962 297 +-1 -1 50.00000 50.16690 86259 57 +-1 -1 50.00000 51.09100 86316 41 +-1 -1 50.86580 53.27000 86357 73 +-1 -1 50.75650 51.48650 86430 57 +-1 -1 50.00000 50.12660 86487 41 +-1 -1 54.76570 55.08640 86528 41 +-1 -1 50.00000 54.46630 86569 105 +-1 -1 68.40670 69.05760 86674 41 +-1 -1 65.51320 70.00000 86715 137 +-1 -1 62.91430 69.05060 86852 121 +-1 -1 55.67540 56.45060 86973 73 +-1 -1 55.67540 56.45060 87046 73 +-1 -1 53.94780 54.97720 87119 57 +-1 -1 53.94780 54.97720 87176 57 +-1 -1 50.00000 50.95950 87233 73 +-1 -1 51.84390 52.36700 87306 57 +-1 -1 57.53580 58.08450 87363 57 +-1 -1 55.60310 56.14940 87420 41 +-1 -1 55.60310 56.14940 87461 41 +-1 -1 51.37510 51.63030 87502 41 +-1 -1 60.54760 62.91250 87543 41 +-1 -1 56.15120 57.53640 87584 41 +-1 -1 69.02950 70.00000 87625 73 +-1 -1 54.46080 55.60310 87698 41 +-1 -1 51.53110 51.92260 87739 41 +-1 -1 51.63030 51.92080 87780 41 +-1 -1 52.10820 53.12110 87821 41 +-1 -1 53.12110 53.43880 87862 41 +-1 -1 54.97720 55.67480 87903 57 +-1 -1 54.97720 55.67480 87960 57 +-1 -1 50.95950 51.25950 88017 41 +-1 -1 51.25280 51.37510 88058 41 +-1 -1 53.43850 53.80440 88099 41 +-1 -1 51.25310 51.94430 88140 41 +-1 -1 55.07210 55.24880 88181 41 +-1 -1 54.36500 55.07180 88222 41 +-1 -1 58.00980 59.15970 88263 41 +-1 -1 51.94430 52.10820 88304 41 +-1 -1 51.36900 51.84330 88345 41 +-1 -1 57.53580 58.00980 88386 41 +-1 -1 54.00210 54.46020 88427 41 +-1 -1 55.67510 55.82650 88468 41 +-1 -1 55.67510 55.82650 88509 41 +-1 -1 55.79200 56.14940 88550 41 +-1 -1 55.79200 56.14940 88591 41 +-1 -1 53.80320 54.00210 88632 41 +-1 -1 59.15970 59.35260 88673 41 +-1 -1 55.79200 55.82650 88714 41 +-1 -1 55.79200 55.82650 88755 41 +-1 -1 51.25950 51.36900 88796 41 +-1 -1 59.35260 59.47860 88837 41 +-1 -1 60.25530 60.54550 88878 41 +-1 -1 50.00000 51.76910 88919 57 +-1 -1 50.00000 50.37510 88976 41 +-1 -1 50.52830 51.12000 89017 105 +-1 -1 50.47820 51.15600 89122 57 +-1 -1 51.45480 51.78100 89179 73 +-1 -1 50.00000 50.37690 89252 41 +-1 -1 50.52860 51.50670 89293 41 +-1 -1 51.46430 51.50670 89334 41 +-1 -1 51.08490 51.15600 89375 41 +-1 -1 51.08460 51.12000 89416 41 +-1 -1 52.00080 54.18250 89457 153 +-1 -1 50.79260 51.26470 89610 73 +-1 -1 50.85330 51.66930 89683 41 +-1 -1 53.43600 54.38790 89724 105 +-1 -1 54.64520 55.36720 89829 57 +-1 -1 53.34570 54.47550 89886 73 +-1 -1 54.39090 54.64300 89959 41 +-1 -1 54.39090 54.64300 90000 41 +-1 -1 54.19320 55.29670 90041 57 +-1 -1 55.29730 55.36840 90098 41 +-1 -1 51.61990 52.00080 90139 41 +-1 -1 53.43600 54.11110 90180 57 +-1 -1 51.66930 53.34540 90237 41 +-1 -1 54.19780 54.39250 90278 41 +-1 -1 51.42820 51.61990 90319 41 +-1 -1 54.18250 54.19680 90360 41 +-1 -1 51.26680 51.43010 90401 41 +-1 -1 50.00000 50.87460 90442 89 +-1 -1 50.00000 52.14360 90531 89 +-1 -1 50.00000 51.00250 90620 57 +-1 -1 50.73610 51.31440 90677 73 +-1 -1 50.00000 50.28410 90750 57 +-1 -1 50.00000 51.88020 90807 105 +-1 -1 50.00000 51.12950 90912 41 +-1 -1 50.20840 53.55410 90953 121 +-1 -1 50.00000 50.20290 91074 41 +-1 -1 60.30750 69.64570 91115 57 +-1 -1 54.70770 60.35230 91172 153 +-1 -1 54.09950 55.07060 91325 57 +-1 -1 49.23280 50.00000 91382 73 +-1 -1 45.76780 46.87100 91455 89 +-1 -1 47.58510 50.00000 91544 73 +-1 -1 30.00000 33.17240 91617 105 +-1 -1 43.78870 47.54060 91722 233 +-1 -1 47.27470 50.00000 91955 169 +-1 -1 46.86920 48.15460 92124 105 +-1 -1 45.93220 47.80700 92229 105 +-1 -1 39.80700 39.84480 92334 41 +-1 -1 41.85050 42.62590 92375 57 +-1 -1 48.61690 49.51810 92432 41 +-1 -1 49.46010 50.00000 92473 57 +-1 -1 49.98020 50.00000 92530 57 +-1 -1 45.59810 47.09470 92587 105 +-1 -1 30.23380 36.94350 92692 121 +-1 -1 48.14420 49.01880 92813 89 +-1 -1 42.60210 42.70920 92902 41 +-1 -1 49.54500 50.00000 92943 41 +-1 -1 42.43460 42.50690 92984 41 +-1 -1 42.50690 42.56550 93025 57 +-1 -1 42.95280 43.18230 93082 41 +-1 -1 39.87010 39.93060 93123 41 +-1 -1 43.91350 43.91620 93164 41 +-1 -1 47.06420 47.27410 93205 41 +-1 -1 48.01240 48.14360 93246 41 +-1 -1 42.46110 42.46230 93287 41 +-1 -1 42.48650 42.66290 93328 41 +-1 -1 41.34140 41.41070 93369 41 +-1 -1 43.72950 43.75750 93410 41 +-1 -1 47.69310 47.69310 93451 41 +-1 -1 42.54600 45.18640 93492 169 +-1 -1 43.12340 43.53440 93661 41 +-1 -1 44.85310 45.90750 93702 57 +-1 -1 45.45860 46.48370 93759 73 +-1 -1 49.07840 49.43690 93832 73 +-1 -1 43.62480 46.15140 93905 153 +-1 -1 30.00000 33.37800 94058 137 +-1 -1 30.00000 31.64710 94195 57 +-1 -1 45.21200 48.26380 94252 153 +-1 -1 48.41180 50.00000 94405 73 +-1 -1 47.95350 48.57600 94478 57 +-1 -1 40.73530 41.75010 94535 105 +-1 -1 35.92660 36.83360 94640 89 +-1 -1 39.66900 42.53990 94729 89 +-1 -1 30.00000 31.32270 94818 41 +-1 -1 41.34140 44.22630 94859 105 +-1 -1 30.00000 31.83290 94964 89 +-1 -1 49.90330 50.00000 95053 41 +-1 -1 31.98670 32.75000 95094 41 +-1 -1 46.55120 48.00990 95135 41 +-1 -1 49.62310 49.90420 95176 41 +-1 -1 41.71250 42.08820 95217 57 +-1 -1 33.37530 33.94480 95274 41 +-1 -1 31.93850 32.23610 95315 41 +-1 -1 47.83140 48.36760 95356 57 +-1 -1 47.10930 47.86830 95413 57 +-1 -1 48.58820 49.06550 95470 41 +-1 -1 48.07130 48.46490 95511 41 +-1 -1 48.25860 48.46490 95552 41 +-1 -1 33.09390 33.24900 95593 41 +-1 -1 36.02980 36.20490 95634 41 +-1 -1 31.21740 31.59670 95675 41 +-1 -1 48.00960 48.07130 95716 41 +-1 -1 48.36760 48.58820 95757 41 +-1 -1 37.64870 37.83950 95798 41 +-1 -1 36.46920 36.49150 95839 41 +-1 -1 45.13730 45.43180 95880 41 +-1 -1 46.41570 46.55120 95921 41 +-1 -1 36.56290 36.76650 95962 41 +-1 -1 37.25170 37.50470 96003 41 +-1 -1 38.11230 38.32440 96044 41 +-1 -1 39.38740 39.39860 96085 41 +-1 -1 36.93000 37.06400 96126 41 +-1 -1 39.81400 40.03620 96167 41 +-1 -1 36.62970 36.64130 96208 41 +-1 -1 38.48400 38.70130 96249 41 +-1 -1 40.25440 40.40360 96290 41 +-1 -1 38.88040 39.07550 96331 41 +-1 -1 31.80760 31.80820 96372 41 +-1 -1 33.20710 33.25170 96413 41 +-1 -1 43.90430 43.92900 96454 41 +-1 -1 41.94230 42.32650 96495 41 +-1 -1 42.56340 43.12340 96536 57 +-1 -1 30.00000 39.64860 96593 233 +-1 -1 36.83360 37.32160 96826 41 +-1 -1 36.95200 38.28200 96867 121 +-1 -1 41.26270 42.79770 96988 137 +-1 -1 39.63270 41.58310 97125 89 +-1 -1 38.44530 39.71970 97214 105 +-1 -1 49.94200 50.00000 97319 57 +-1 -1 38.87800 41.29870 97376 89 +-1 -1 36.97060 37.38480 97465 89 +-1 -1 41.89680 42.89910 97554 73 +-1 -1 41.89680 42.89910 97627 73 +-1 -1 41.89680 42.89910 97700 73 +-1 -1 46.34550 48.24860 97773 105 +-1 -1 41.28680 42.33720 97878 73 +-1 -1 49.60510 49.62310 97951 41 +-1 -1 42.89910 43.54570 97992 57 +-1 -1 42.89910 43.54570 98049 57 +-1 -1 41.05000 41.89590 98106 57 +-1 -1 41.19620 41.89720 98163 57 +-1 -1 33.94480 37.06190 98220 73 +-1 -1 30.00000 31.93850 98293 57 +-1 -1 38.84200 39.70570 98350 57 +-1 -1 48.24860 50.00000 98407 57 +-1 -1 49.06550 49.18390 98464 41 +-1 -1 30.00000 30.01530 98505 57 +-1 -1 41.11070 41.29780 98562 41 +-1 -1 41.11070 41.29780 98603 41 +-1 -1 41.32620 45.00300 98644 41 +-1 -1 45.00240 45.57120 98685 57 +-1 -1 37.05970 37.31980 98742 41 +-1 -1 49.18390 49.60050 98783 41 +-1 -1 40.66480 40.66510 98824 41 +-1 -1 41.08450 41.08450 98865 41 +-1 -1 41.08450 41.08450 98906 41 +-1 -1 30.00000 30.00790 98947 41 +-1 -1 41.00420 41.00570 98988 41 +-1 -1 33.40760 41.93130 99029 281 +-1 -1 44.86230 44.92970 99310 57 +-1 -1 30.00000 38.47210 99367 377 +-1 -1 30.00000 37.02560 99744 201 +-1 -1 30.86490 33.40520 99945 121 +-1 -1 30.00000 31.59640 100066 57 +-1 -1 35.60520 36.95200 100123 73 +-1 -1 41.23430 42.22400 100196 73 +-1 -1 32.30320 35.50030 100269 121 +-1 -1 37.36550 40.03100 100390 57 +-1 -1 37.36550 40.03100 100447 57 +-1 -1 41.00420 42.25270 100504 105 +-1 -1 40.14570 41.00600 100609 73 +-1 -1 42.25330 43.26860 100682 105 +-1 -1 42.33050 42.80630 100787 57 +-1 -1 39.50760 40.24490 100844 73 +-1 -1 40.60750 42.25270 100917 89 +-1 -1 39.19200 39.62020 101006 73 +-1 -1 37.18580 39.29430 101079 73 +-1 -1 40.22450 41.05030 101152 89 +-1 -1 39.29370 40.14910 101241 73 +-1 -1 40.03070 41.23550 101314 57 +-1 -1 42.42420 43.73770 101371 89 +-1 -1 42.42420 43.73770 101460 89 +-1 -1 31.59910 32.30410 101549 41 +-1 -1 42.80630 43.26860 101590 41 +-1 -1 39.89330 40.16310 101631 57 +-1 -1 43.48620 44.60530 101688 41 +-1 -1 41.14370 42.42390 101729 73 +-1 -1 41.14340 41.19430 101802 41 +-1 -1 39.88750 39.88820 101843 41 +-1 -1 40.42980 40.72470 101884 41 +-1 -1 40.18480 40.22450 101925 41 +-1 -1 39.98860 39.98860 101966 41 +-1 -1 41.05150 41.19430 102007 41 +-1 -1 40.99930 41.00110 102048 41 +-1 -1 40.14180 40.14910 102089 41 +-1 -1 41.93130 44.86230 102130 105 +-1 -1 42.68790 49.17300 102235 313 +-1 -1 49.17050 50.00000 102548 41 +-1 -1 49.73450 50.00000 102589 57 +-1 -1 30.00000 30.86490 102646 57 +-1 -1 49.09210 50.00000 102703 89 +-1 -1 42.19650 42.33050 102792 41 +-1 -1 30.00000 30.34210 102833 57 +-1 -1 41.58130 50.00000 102890 313 +-1 -1 49.14210 50.00000 103203 89 +-1 -1 49.94350 50.00000 103292 41 +-1 -1 49.99050 50.00000 103333 41 +-1 -1 49.50770 49.98930 103374 57 +-1 -1 40.09290 43.00560 103431 137 +-1 -1 42.29540 48.26750 103568 137 +-1 -1 47.68550 50.00000 103705 105 +-1 -1 38.22490 38.30640 103810 41 +-1 -1 38.30640 38.62100 103851 41 +-1 -1 39.82930 40.09600 103892 41 +-1 -1 38.00060 38.22490 103933 41 +-1 -1 37.69540 37.83280 103974 41 +-1 -1 37.83220 38.00060 104015 41 +-1 -1 37.75860 38.02500 104056 41 +-1 -1 37.75860 37.99660 104097 41 +-1 -1 37.65700 37.66430 104138 41 +-1 -1 37.99660 38.02500 104179 41 +-1 -1 48.27820 48.99960 104220 73 +-1 -1 30.00000 32.71820 104293 153 +-1 -1 48.99960 48.99960 104446 57 +-1 -1 48.09600 49.37650 104503 89 +-1 -1 41.67560 42.54990 104592 73 +-1 -1 43.01630 48.31240 104665 137 +-1 -1 42.55420 43.01320 104802 41 +-1 -1 42.48280 46.12240 104843 137 +-1 -1 45.59320 47.36450 104980 89 +-1 -1 46.11960 47.47130 105069 57 +-1 -1 45.18390 45.59470 105126 41 +-1 -1 30.00000 35.08580 105167 121 +-1 -1 37.18820 41.99850 105288 137 +-1 -1 42.70980 43.39710 105425 41 +-1 -1 35.27350 35.32910 105466 41 +-1 -1 35.84180 35.91590 105507 41 +-1 -1 36.15150 36.15150 105548 41 +-1 -1 10.00000 13.89040 105589 217 +-1 -1 21.49830 30.00000 105806 185 +-1 -1 15.35710 21.81540 105991 121 +-1 -1 10.00000 10.27340 106112 41 +-1 -1 10.00000 12.39350 106153 73 +-1 -1 13.71710 23.00100 106226 105 +-1 -1 10.00000 12.82960 106331 73 +-1 -1 10.00000 10.99580 106404 57 +-1 -1 11.89520 15.00190 106461 121 +-1 -1 11.02480 11.67850 106582 73 +-1 -1 20.84640 23.52160 106655 41 +-1 -1 11.67910 12.39600 106696 57 +-1 -1 14.99180 15.35930 106753 41 +-1 -1 11.69380 13.89200 106794 57 +-1 -1 19.14660 20.85220 106851 57 +-1 -1 10.27340 10.60490 106908 41 +-1 -1 12.82780 13.08170 106949 41 +-1 -1 10.96410 11.09680 106990 41 +-1 -1 10.00000 10.92160 107031 41 +-1 -1 10.00000 17.99270 107072 169 +-1 -1 29.18880 30.00000 107241 73 +-1 -1 19.50030 30.00000 107314 105 +-1 -1 10.00000 19.49970 107419 137 +-1 -1 29.48550 30.00000 107556 41 +-1 -1 21.99850 22.23220 107597 89 +-1 -1 29.55110 30.00000 107686 41 +-1 -1 21.76810 23.12610 107727 57 +-1 -1 29.54620 29.57610 107784 41 +-1 -1 10.00000 11.47710 107825 57 +-1 -1 29.85320 30.00000 107882 41 +-1 -1 12.69110 15.10570 107923 137 +-1 -1 22.69980 24.97950 108060 89 +-1 -1 28.54520 29.47450 108149 73 +-1 -1 16.37740 17.45710 108222 73 +-1 -1 29.45950 30.00000 108295 57 +-1 -1 10.98210 12.70880 108352 89 +-1 -1 25.77510 26.72600 108441 57 +-1 -1 29.10430 30.00000 108498 41 +-1 -1 27.17740 28.69840 108539 41 +-1 -1 27.17740 28.69840 108580 41 +-1 -1 28.77470 29.20530 108621 57 +-1 -1 16.63100 18.99890 108678 57 +-1 -1 15.61680 25.47910 108735 153 +-1 -1 15.61680 25.47910 108888 153 +-1 -1 25.63620 26.06560 109041 41 +-1 -1 25.63620 26.06560 109082 41 +-1 -1 25.63780 25.79000 109123 41 +-1 -1 29.90110 30.00000 109164 41 +-1 -1 24.55590 24.62030 109205 41 +-1 -1 25.19310 30.00000 109246 153 +-1 -1 29.38840 30.00000 109399 73 +-1 -1 24.26900 30.00000 109472 185 +-1 -1 23.64830 24.32120 109657 57 +-1 -1 21.14090 26.63200 109714 313 +-1 -1 10.34490 20.38830 110027 201 +-1 -1 26.53280 30.00000 110228 121 +-1 -1 21.98230 29.46750 110349 281 +-1 -1 22.04850 28.54920 110630 233 +-1 -1 26.37260 28.32490 110863 153 +-1 -1 27.76490 29.32710 111016 73 +-1 -1 27.86430 30.00000 111089 73 +-1 -1 21.96980 22.05040 111162 41 +-1 -1 10.00000 10.35190 111203 41 +-1 -1 21.14270 23.37790 111244 233 +-1 -1 20.34620 20.35230 111477 41 +-1 -1 13.92070 18.42110 111518 169 +-1 -1 19.61200 22.39770 111687 201 +-1 -1 11.63550 14.35070 111888 73 +-1 -1 16.62730 19.69250 111961 73 +-1 -1 17.52760 20.15520 112034 89 +-1 -1 10.42240 11.66990 112123 89 +-1 -1 14.70530 16.62850 112212 89 +-1 -1 20.15760 21.68290 112301 73 +-1 -1 11.86950 13.79610 112374 57 +-1 -1 17.53030 18.21420 112431 73 +-1 -1 14.32410 14.70680 112504 57 +-1 -1 10.03200 10.42390 112561 73 +-1 -1 22.14370 22.60940 112634 89 +-1 -1 13.92980 14.70800 112723 41 +-1 -1 21.43270 21.96980 112764 41 +-1 -1 21.43480 21.68540 112805 41 +-1 -1 22.20330 22.20390 112846 41 +-1 -1 21.44910 21.66740 112887 41 +-1 -1 11.66480 11.87080 112928 41 +-1 -1 13.79580 13.93350 112969 41 +-1 -1 28.14420 30.00000 113010 105 +-1 -1 14.54840 17.81990 113115 169 +-1 -1 25.96640 28.14420 113284 73 +-1 -1 12.99990 14.99310 113357 137 +-1 -1 10.70830 11.06290 113494 57 +-1 -1 13.81870 14.43150 113551 57 +-1 -1 14.27440 15.07360 113608 41 +-1 -1 17.81900 18.48770 113649 57 +-1 -1 13.74610 14.22740 113706 41 +-1 -1 15.07360 15.72460 113747 41 +-1 -1 13.40520 13.81810 113788 41 +-1 -1 12.98680 12.99990 113829 41 +-1 -1 10.00000 11.85310 113870 57 +-1 -1 18.04210 19.70600 113927 41 +-1 -1 20.76490 30.... [truncated message content] |
From: <js...@us...> - 2007-11-01 12:10:45
|
Revision: 4083 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4083&view=rev Author: jswhit Date: 2007-11-01 05:10:40 -0700 (Thu, 01 Nov 2007) Log Message: ----------- partial fix for Antarctica. 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-01 12:05:30 UTC (rev 4082) +++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py 2007-11-01 12:10:40 UTC (rev 4083) @@ -770,7 +770,6 @@ lats.insert(0,-90.) lons.append(lonend) lats.append(-90.) - if south < -68: poly = PolygonShape(zip(lons,lats)) #b = npy.asarray(poly.boundary) #import pylab This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 12:05:31
|
Revision: 4082 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4082&view=rev Author: jswhit Date: 2007-11-01 05:05:30 -0700 (Thu, 01 Nov 2007) Log Message: ----------- fix antarctica 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-01 07:21:00 UTC (rev 4081) +++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py 2007-11-01 12:05:30 UTC (rev 4082) @@ -747,20 +747,36 @@ if area < 0.: area = 1.e30 useit = self.latmax>=south and self.latmin<=north and area>self.area_thresh # skip Antartica for now. - if name == 'gshhs' and south < -60.: useit=False if useit: offsetbytes = int(linesplit[4]) bytecount = int(linesplit[5]) bdatfile.seek(offsetbytes,0) polystring = bdatfile.read(bytecount) poly = wkb.loads(polystring) + # close Antarctica for cylindrical projections + + if name == 'gshhs' and self.projection in ['cyl','merc','mill']: + b = npy.asarray(poly.boundary) + lons = b[:,0].tolist() + lats = b[:,1].tolist() + if (math.fabs(lons[0]-360.) < 1.e-5 or + math.fabs(lons[0]+360.) or + math.fabs(lons[0]-0.) < 1.e-5) and lats[-1] < -68.: + lons = lons[:-2] + lats = lats[:-2] + lonstart,latstart = lons[0], lats[0] + lonend,latend = lons[-1], lats[-1] + lons.insert(0,lonstart) + lats.insert(0,-90.) + lons.append(lonend) + lats.append(-90.) + if south < -68: + poly = PolygonShape(zip(lons,lats)) + #b = npy.asarray(poly.boundary) + #import pylab + #pylab.fill(b[:,0],b[:,1],'b') + #pylab.show() if poly.intersects(self._boundarypoly): - #a = npy.asarray(self._boundarypoly.boundary) - #b = npy.asarray(poly.boundary) - #import pylab - #pylab.fill(a[:,0],a[:,1],'r') - #pylab.fill(b[:,0],b[:,1],'b') - #pylab.show() poly = poly.intersection(self._boundarypoly) if hasattr(poly,'geoms'): geoms = poly.geoms This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ef...@us...> - 2007-11-01 07:21:11
|
Revision: 4081 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4081&view=rev Author: efiring Date: 2007-11-01 00:21:00 -0700 (Thu, 01 Nov 2007) Log Message: ----------- Made contour auto level generation work with log color scale Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/lib/matplotlib/contour.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2007-11-01 03:40:06 UTC (rev 4080) +++ trunk/matplotlib/CHANGELOG 2007-11-01 07:21:00 UTC (rev 4081) @@ -1,3 +1,6 @@ +2007-10-31 Made log color scale easier to use with contourf; + automatic level generation now works. - EF + 2007-10-24 Added ax kwarg to Figure.colorbar and pyplot.colorbar - EF 2007-10-19 Removed a gsave/grestore pair surrounding _draw_ps, which Modified: trunk/matplotlib/lib/matplotlib/contour.py =================================================================== --- trunk/matplotlib/lib/matplotlib/contour.py 2007-11-01 03:40:06 UTC (rev 4080) +++ trunk/matplotlib/lib/matplotlib/contour.py 2007-11-01 07:21:00 UTC (rev 4081) @@ -401,6 +401,15 @@ self.antialiased = kwargs.get('antialiased', True) self.nchunk = kwargs.get('nchunk', 0) self.locator = kwargs.get('locator', None) + if (isinstance(norm, colors.LogNorm) + or isinstance(self.locator, ticker.LogLocator)): + self.logscale = True + if norm is None: + norm = colors.LogNorm() + if self.extend is not 'neither': + raise ValueError('extend kwarg does not work yet with log scale') + else: + self.logscale = False if self.origin is not None: assert(self.origin in ['lower', 'upper', 'image']) @@ -493,7 +502,10 @@ three levels to provide boundaries for both regions. ''' if self.locator is None: - self.locator = ticker.MaxNLocator(N+1) + if self.logscale: + self.locator = ticker.LogLocator() + else: + self.locator = ticker.MaxNLocator(N+1) locator = self.locator zmax = self.zmax zmin = self.zmin @@ -503,7 +515,10 @@ if zmax >= lev[-1]: lev[-1] += zmargin if zmin <= lev[0]: - lev[0] -= zmargin + if self.logscale: + lev[0] = 0.99 * zmin + else: + lev[0] -= zmargin self._auto = True if self.filled: return lev @@ -589,6 +604,10 @@ raise TypeError("Too many arguments to %s; see help(%s)" % (fn,fn)) self.zmax = ma.maximum(z) self.zmin = ma.minimum(z) + if self.logscale and self.zmin <= 0: + z = ma.masked_where(z <= 0, z) + warnings.warn('Log scale: values of z <=0 have been masked') + self.zmin = z.min() self._auto = False if self.levels is None: if Nargs == 1 or Nargs == 3: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 03:40:08
|
Revision: 4080 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4080&view=rev Author: jswhit Date: 2007-10-31 20:40:06 -0700 (Wed, 31 Oct 2007) Log Message: ----------- don't include proj_def.dat twice Modified Paths: -------------- trunk/toolkits/basemap-testing/setup.py Modified: trunk/toolkits/basemap-testing/setup.py =================================================================== --- trunk/toolkits/basemap-testing/setup.py 2007-11-01 03:30:07 UTC (rev 4079) +++ trunk/toolkits/basemap-testing/setup.py 2007-11-01 03:40:06 UTC (rev 4080) @@ -73,6 +73,7 @@ pyproj_datafiles = ['data/epsg', 'data/esri', 'data/esri.extra', 'data/GL27', 'data/nad.lst', 'data/nad27', 'data/nad83', 'data/ntv2_out.dist', 'data/other.extra', 'data/pj_out27.dist', 'data/pj_out83.dist', 'data/proj_def.dat', 'data/README', 'data/td_out.dist', 'data/test27', 'data/test83', 'data/testntv2', 'data/testvarious', 'data/world'] boundaryfiles = glob.glob('lib/matplotlib/toolkits/basemap/data/*dat') boundaryfiles = [os.path.join('data',os.path.basename(bfile)) for bfile in boundaryfiles] +boundaryfiles.remove('data/proj_def.dat') basemap_datafiles = boundaryfiles + ['data/5minmask.bin'] package_data = {'matplotlib.toolkits.basemap':pyproj_datafiles+basemap_datafiles} setup( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 03:30:11
|
Revision: 4079 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4079&view=rev Author: jswhit Date: 2007-10-31 20:30:07 -0700 (Wed, 31 Oct 2007) Log Message: ----------- delete uneeded methods 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-01 03:26:12 UTC (rev 4078) +++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py 2007-11-01 03:30:07 UTC (rev 4079) @@ -688,59 +688,14 @@ self.cntrysegs, types = self._readboundarydata('countries') self.statesegs, types = self._readboundarydata('states') self.riversegs, types = self._readboundarydata('rivers') - # for coastlines, reformat as polygons. + # for coastlines, 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] self.coastpolygons.append((x,y)) - def _splitseg(self,xx,yy,mask=None): - """split segment up around missing values (outside projection limb)""" - if mask is None: - mask = (NX.logical_or(NX.greater_equal(xx,1.e20),NX.greater_equal(yy,1.e20))).tolist() - i1=[]; i2=[] - mprev = 1 - for i,m in enumerate(mask): - if not m and mprev: - i1.append(i) - if m and not mprev: - i2.append(i) - mprev = m - if not mprev: i2.append(len(mask)) - if len(i1) != len(i2): - raise ValueError,'error in splitting boundary segments' - return i1,i2 - - def _insidemap_seg(self,seg): - """returns True if any point in segment is inside map region""" - xx = [x for x,y in seg] - yy = [y for x,y in seg] - isin = False - for x,y in zip(xx,yy): - if x >= self.xmin and x <= self.xmax and y >= self.ymin and y <= self.ymax: - isin = True - break - return isin - - def _insidemap_poly(self,poly,polyll): - """returns True if any point in polygon is inside map region""" - isin = False - xx = poly[0]; yy = poly[1] - if self.projection in ['moll','robin','sinu']: - lon_0 = self.projparams['lon_0'] - lons = polyll[0] - for lon in lons: - if lon < lon_0+180 and lon > lon_0-180: - isin = True - break - else: - for x,y in zip(xx,yy): - if x >= self.xmin and x <= self.xmax and y >= self.ymin and y <= self.ymax: - isin = True - break - return isin - def __call__(self,x,y,inverse=False): """ Calling a Basemap class instance with the arguments lon, lat will This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 03:26:14
|
Revision: 4078 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4078&view=rev Author: jswhit Date: 2007-10-31 20:26:12 -0700 (Wed, 31 Oct 2007) Log Message: ----------- updated to work with new high res coastlines Modified Paths: -------------- trunk/toolkits/basemap-testing/examples/ireland.py Modified: trunk/toolkits/basemap-testing/examples/ireland.py =================================================================== --- trunk/toolkits/basemap-testing/examples/ireland.py 2007-11-01 03:22:40 UTC (rev 4077) +++ trunk/toolkits/basemap-testing/examples/ireland.py 2007-11-01 03:26:12 UTC (rev 4078) @@ -92,7 +92,7 @@ draw() time.sleep(5) # only do high-res coastlines if they are installed, otherwise stop here. -if not os.path.isfile(os.path.join(basemap_datadir,'gshhs_h.txt')): +if not os.path.isfile(os.path.join(basemap_datadir,'gshhs_h.dat')): sys.exit(0) import time This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 03:22:42
|
Revision: 4077 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4077&view=rev Author: jswhit Date: 2007-10-31 20:22:40 -0700 (Wed, 31 Oct 2007) Log Message: ----------- reverse Eric's changes for now Modified Paths: -------------- trunk/toolkits/basemap-testing/src/_geod.c trunk/toolkits/basemap-testing/src/_proj.c trunk/toolkits/basemap-testing/src/_proj.pyx Modified: trunk/toolkits/basemap-testing/src/_geod.c =================================================================== --- trunk/toolkits/basemap-testing/src/_geod.c 2007-11-01 03:18:09 UTC (rev 4076) +++ trunk/toolkits/basemap-testing/src/_geod.c 2007-11-01 03:22:40 UTC (rev 4077) @@ -1,4 +1,4 @@ -/* Generated by Cython 0.9.6.7 on Sun Oct 14 08:16:22 2007 */ +/* Generated by Cython 0.9.6.7 on Wed Oct 31 21:20:49 2007 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -160,7 +160,7 @@ __pyx_v_key = Py_None; Py_INCREF(Py_None); __pyx_v_value = Py_None; Py_INCREF(Py_None); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":13 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":13 * def __new__(self, geodparams): * cdef GEODESIC_T GEOD_T * self.geodparams = geodparams # <<<<<<<<<<<<<< @@ -171,7 +171,7 @@ Py_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodparams); ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodparams = __pyx_v_geodparams; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":15 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":15 * self.geodparams = geodparams * # setup proj initialization string. * geodargs = [] # <<<<<<<<<<<<<< @@ -183,7 +183,7 @@ __pyx_v_geodargs = __pyx_1; __pyx_1 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":16 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":16 * # setup proj initialization string. * geodargs = [] * for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<< @@ -232,7 +232,7 @@ Py_DECREF(__pyx_4); __pyx_4 = 0; } - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":17 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":17 * geodargs = [] * for key,value in geodparams.iteritems(): * geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<< @@ -263,7 +263,7 @@ } Py_DECREF(__pyx_1); __pyx_1 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":18 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":18 * for key,value in geodparams.iteritems(): * geodargs.append('+'+key+"="+str(value)+' ') * self.geodinitstring = PyString_AsString(''.join(geodargs)) # <<<<<<<<<<<<<< @@ -280,7 +280,7 @@ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodinitstring = PyString_AsString(__pyx_6); Py_DECREF(__pyx_6); __pyx_6 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":20 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":20 * self.geodinitstring = PyString_AsString(''.join(geodargs)) * # initialize projection * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] # <<<<<<<<<<<<<< @@ -289,7 +289,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t = (GEOD_init_plus(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodinitstring,(&__pyx_v_GEOD_T))[0]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":21 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":21 * # initialize projection * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] * if pj_errno != 0: # <<<<<<<<<<<<<< @@ -299,7 +299,7 @@ __pyx_7 = (pj_errno != 0); if (__pyx_7) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":22 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":22 * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< @@ -319,7 +319,7 @@ } __pyx_L4:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":23 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":23 * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) * self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<< @@ -361,7 +361,7 @@ PyObject *__pyx_3 = 0; Py_INCREF(__pyx_v_self); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":27 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":27 * def __reduce__(self): * """special method that allows pyproj.Geod instance to be pickled""" * return (self.__class__,(self.geodparams,)) # <<<<<<<<<<<<<< @@ -445,7 +445,7 @@ Py_INCREF(__pyx_v_dist); Py_INCREF(__pyx_v_radians); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":40 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":40 * cdef void *londata, *latdata, *azdat, *distdat * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: # <<<<<<<<<<<<<< @@ -455,7 +455,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons,(&__pyx_v_londata),(&__pyx_v_buflenlons)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":41 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":41 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -468,7 +468,7 @@ } __pyx_L2:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":42 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":42 * if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: # <<<<<<<<<<<<<< @@ -478,7 +478,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats,(&__pyx_v_latdata),(&__pyx_v_buflenlats)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":43 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":43 * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -491,7 +491,7 @@ } __pyx_L3:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":44 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":44 * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: # <<<<<<<<<<<<<< @@ -501,7 +501,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_az,(&__pyx_v_azdat),(&__pyx_v_buflenaz)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":45 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":45 * raise RuntimeError * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -514,7 +514,7 @@ } __pyx_L4:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":46 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":46 * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: # <<<<<<<<<<<<<< @@ -524,7 +524,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_dist,(&__pyx_v_distdat),(&__pyx_v_buflend)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":47 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":47 * raise RuntimeError * if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -537,7 +537,7 @@ } __pyx_L5:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":49 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":49 * raise RuntimeError * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<< @@ -554,7 +554,7 @@ __pyx_2 = (!__pyx_1); if (__pyx_2) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":50 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":50 * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< @@ -573,7 +573,7 @@ } __pyx_L6:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":51 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":51 * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons/_doublesize # <<<<<<<<<<<<<< @@ -589,7 +589,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; __pyx_v_ndim = __pyx_6; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":52 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":52 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons/_doublesize * lonsdata = <double *>londata # <<<<<<<<<<<<<< @@ -598,7 +598,7 @@ */ __pyx_v_lonsdata = ((double (*))__pyx_v_londata); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":53 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":53 * ndim = buflenlons/_doublesize * lonsdata = <double *>londata * latsdata = <double *>latdata # <<<<<<<<<<<<<< @@ -607,7 +607,7 @@ */ __pyx_v_latsdata = ((double (*))__pyx_v_latdata); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":54 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":54 * lonsdata = <double *>londata * latsdata = <double *>latdata * azdata = <double *>azdat # <<<<<<<<<<<<<< @@ -616,7 +616,7 @@ */ __pyx_v_azdata = ((double (*))__pyx_v_azdat); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":55 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":55 * latsdata = <double *>latdata * azdata = <double *>azdat * distdata = <double *>distdat # <<<<<<<<<<<<<< @@ -625,7 +625,7 @@ */ __pyx_v_distdata = ((double (*))__pyx_v_distdat); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":56 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":56 * azdata = <double *>azdat * distdata = <double *>distdat * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< @@ -634,7 +634,7 @@ */ for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":57 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":57 * distdata = <double *>distdat * for i from 0 <= i < ndim: * if radians: # <<<<<<<<<<<<<< @@ -644,7 +644,7 @@ __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; goto __pyx_L1;} if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":58 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":58 * for i from 0 <= i < ndim: * if radians: * self.geodesic_t.p1.v = lonsdata[i] # <<<<<<<<<<<<<< @@ -653,7 +653,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = (__pyx_v_lonsdata[__pyx_v_i]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":59 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":59 * if radians: * self.geodesic_t.p1.v = lonsdata[i] * self.geodesic_t.p1.u = latsdata[i] # <<<<<<<<<<<<<< @@ -662,7 +662,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = (__pyx_v_latsdata[__pyx_v_i]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":60 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":60 * self.geodesic_t.p1.v = lonsdata[i] * self.geodesic_t.p1.u = latsdata[i] * self.geodesic_t.ALPHA12 = azdata[i] # <<<<<<<<<<<<<< @@ -671,7 +671,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12 = (__pyx_v_azdata[__pyx_v_i]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":61 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":61 * self.geodesic_t.p1.u = latsdata[i] * self.geodesic_t.ALPHA12 = azdata[i] * self.geodesic_t.DIST = distdata[i] # <<<<<<<<<<<<<< @@ -683,7 +683,7 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":63 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":63 * self.geodesic_t.DIST = distdata[i] * else: * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< @@ -699,7 +699,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":64 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":64 * else: * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] * self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< @@ -715,7 +715,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":65 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":65 * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] * self.geodesic_t.p1.u = _dg2rad*latsdata[i] * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] # <<<<<<<<<<<<<< @@ -731,7 +731,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12 = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":66 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":66 * self.geodesic_t.p1.u = _dg2rad*latsdata[i] * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] * self.geodesic_t.DIST = distdata[i] # <<<<<<<<<<<<<< @@ -742,7 +742,7 @@ } __pyx_L9:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":67 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":67 * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i] * self.geodesic_t.DIST = distdata[i] * geod_pre(&self.geodesic_t) # <<<<<<<<<<<<<< @@ -751,7 +751,7 @@ */ geod_pre((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":68 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":68 * self.geodesic_t.DIST = distdata[i] * geod_pre(&self.geodesic_t) * if pj_errno != 0: # <<<<<<<<<<<<<< @@ -761,7 +761,7 @@ __pyx_2 = (pj_errno != 0); if (__pyx_2) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":69 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":69 * geod_pre(&self.geodesic_t) * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< @@ -781,7 +781,7 @@ } __pyx_L10:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":70 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":70 * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) * geod_for(&self.geodesic_t) # <<<<<<<<<<<<<< @@ -790,7 +790,7 @@ */ geod_for((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":71 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":71 * raise RuntimeError(pj_strerrno(pj_errno)) * geod_for(&self.geodesic_t) * if pj_errno != 0: # <<<<<<<<<<<<<< @@ -800,7 +800,7 @@ __pyx_1 = (pj_errno != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":72 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":72 * geod_for(&self.geodesic_t) * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< @@ -820,7 +820,7 @@ } __pyx_L11:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":73 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":73 * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) * if isnan(self.geodesic_t.ALPHA21): # <<<<<<<<<<<<<< @@ -830,7 +830,7 @@ __pyx_8 = isnan(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21); if (__pyx_8) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":74 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":74 * raise RuntimeError(pj_strerrno(pj_errno)) * if isnan(self.geodesic_t.ALPHA21): * raise ValueError('undefined forward geodesic (may be an equatorial arc)') # <<<<<<<<<<<<<< @@ -849,7 +849,7 @@ } __pyx_L12:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":75 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":75 * if isnan(self.geodesic_t.ALPHA21): * raise ValueError('undefined forward geodesic (may be an equatorial arc)') * if radians: # <<<<<<<<<<<<<< @@ -859,7 +859,7 @@ __pyx_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;} if (__pyx_2) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":76 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":76 * raise ValueError('undefined forward geodesic (may be an equatorial arc)') * if radians: * lonsdata[i] = self.geodesic_t.p2.v # <<<<<<<<<<<<<< @@ -868,7 +868,7 @@ */ (__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":77 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":77 * if radians: * lonsdata[i] = self.geodesic_t.p2.v * latsdata[i] = self.geodesic_t.p2.u # <<<<<<<<<<<<<< @@ -877,7 +877,7 @@ */ (__pyx_v_latsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":78 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":78 * lonsdata[i] = self.geodesic_t.p2.v * latsdata[i] = self.geodesic_t.p2.u * azdata[i] = self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< @@ -889,7 +889,7 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":80 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":80 * azdata[i] = self.geodesic_t.ALPHA21 * else: * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<< @@ -905,7 +905,7 @@ Py_DECREF(__pyx_4); __pyx_4 = 0; (__pyx_v_lonsdata[__pyx_v_i]) = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":81 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":81 * else: * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v * latsdata[i] = _rad2dg*self.geodesic_t.p2.u # <<<<<<<<<<<<<< @@ -921,7 +921,7 @@ Py_DECREF(__pyx_4); __pyx_4 = 0; (__pyx_v_latsdata[__pyx_v_i]) = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":82 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":82 * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v * latsdata[i] = _rad2dg*self.geodesic_t.p2.u * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< @@ -1005,7 +1005,7 @@ Py_INCREF(__pyx_v_lats2); Py_INCREF(__pyx_v_radians); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":94 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":94 * cdef void *londata, *latdata, *azdat, *distdat * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: # <<<<<<<<<<<<<< @@ -1015,7 +1015,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons1,(&__pyx_v_londata),(&__pyx_v_buflenlons)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":95 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":95 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1028,7 +1028,7 @@ } __pyx_L2:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":96 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":96 * if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: # <<<<<<<<<<<<<< @@ -1038,7 +1038,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats1,(&__pyx_v_latdata),(&__pyx_v_buflenlats)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":97 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":97 * raise RuntimeError * if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1051,7 +1051,7 @@ } __pyx_L3:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":98 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":98 * if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: # <<<<<<<<<<<<<< @@ -1061,7 +1061,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons2,(&__pyx_v_azdat),(&__pyx_v_buflenaz)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":99 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":99 * raise RuntimeError * if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1074,7 +1074,7 @@ } __pyx_L4:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":100 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":100 * if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0: # <<<<<<<<<<<<<< @@ -1084,7 +1084,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats2,(&__pyx_v_distdat),(&__pyx_v_buflend)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":101 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":101 * raise RuntimeError * if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -1097,7 +1097,7 @@ } __pyx_L5:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":103 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":103 * raise RuntimeError * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<< @@ -1114,7 +1114,7 @@ __pyx_2 = (!__pyx_1); if (__pyx_2) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":104 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":104 * # process data in buffer * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< @@ -1133,7 +1133,7 @@ } __pyx_L6:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":105 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":105 * if not buflenlons == buflenlats == buflenaz == buflend: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons/_doublesize # <<<<<<<<<<<<<< @@ -1149,7 +1149,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; __pyx_v_ndim = __pyx_6; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":106 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":106 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenlons/_doublesize * lonsdata = <double *>londata # <<<<<<<<<<<<<< @@ -1158,7 +1158,7 @@ */ __pyx_v_lonsdata = ((double (*))__pyx_v_londata); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":107 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":107 * ndim = buflenlons/_doublesize * lonsdata = <double *>londata * latsdata = <double *>latdata # <<<<<<<<<<<<<< @@ -1167,7 +1167,7 @@ */ __pyx_v_latsdata = ((double (*))__pyx_v_latdata); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":108 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":108 * lonsdata = <double *>londata * latsdata = <double *>latdata * azdata = <double *>azdat # <<<<<<<<<<<<<< @@ -1176,7 +1176,7 @@ */ __pyx_v_azdata = ((double (*))__pyx_v_azdat); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":109 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":109 * latsdata = <double *>latdata * azdata = <double *>azdat * distdata = <double *>distdat # <<<<<<<<<<<<<< @@ -1185,7 +1185,7 @@ */ __pyx_v_distdata = ((double (*))__pyx_v_distdat); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":110 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":110 * azdata = <double *>azdat * distdata = <double *>distdat * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< @@ -1194,7 +1194,7 @@ */ for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":111 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":111 * distdata = <double *>distdat * for i from 0 <= i < ndim: * if radians: # <<<<<<<<<<<<<< @@ -1204,7 +1204,7 @@ __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; goto __pyx_L1;} if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":112 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":112 * for i from 0 <= i < ndim: * if radians: * self.geodesic_t.p1.v = lonsdata[i] # <<<<<<<<<<<<<< @@ -1213,7 +1213,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = (__pyx_v_lonsdata[__pyx_v_i]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":113 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":113 * if radians: * self.geodesic_t.p1.v = lonsdata[i] * self.geodesic_t.p1.u = latsdata[i] # <<<<<<<<<<<<<< @@ -1222,7 +1222,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = (__pyx_v_latsdata[__pyx_v_i]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":114 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":114 * self.geodesic_t.p1.v = lonsdata[i] * self.geodesic_t.p1.u = latsdata[i] * self.geodesic_t.p2.v = azdata[i] # <<<<<<<<<<<<<< @@ -1231,7 +1231,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = (__pyx_v_azdata[__pyx_v_i]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":115 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":115 * self.geodesic_t.p1.u = latsdata[i] * self.geodesic_t.p2.v = azdata[i] * self.geodesic_t.p2.u = distdata[i] # <<<<<<<<<<<<<< @@ -1243,7 +1243,7 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":117 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":117 * self.geodesic_t.p2.u = distdata[i] * else: * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< @@ -1259,7 +1259,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":118 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":118 * else: * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] * self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< @@ -1275,7 +1275,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":119 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":119 * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] * self.geodesic_t.p1.u = _dg2rad*latsdata[i] * self.geodesic_t.p2.v = _dg2rad*azdata[i] # <<<<<<<<<<<<<< @@ -1291,7 +1291,7 @@ Py_DECREF(__pyx_5); __pyx_5 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":120 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":120 * self.geodesic_t.p1.u = _dg2rad*latsdata[i] * self.geodesic_t.p2.v = _dg2rad*azdata[i] * self.geodesic_t.p2.u = _dg2rad*distdata[i] # <<<<<<<<<<<<<< @@ -1309,7 +1309,7 @@ } __pyx_L9:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":121 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":121 * self.geodesic_t.p2.v = _dg2rad*azdata[i] * self.geodesic_t.p2.u = _dg2rad*distdata[i] * geod_inv(&self.geodesic_t) # <<<<<<<<<<<<<< @@ -1318,7 +1318,7 @@ */ geod_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":122 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":122 * self.geodesic_t.p2.u = _dg2rad*distdata[i] * geod_inv(&self.geodesic_t) * if isnan(self.geodesic_t.DIST): # <<<<<<<<<<<<<< @@ -1328,7 +1328,7 @@ __pyx_8 = isnan(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST); if (__pyx_8) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":123 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":123 * geod_inv(&self.geodesic_t) * if isnan(self.geodesic_t.DIST): * raise ValueError('undefined inverse geodesic (may be an antipodal point)') # <<<<<<<<<<<<<< @@ -1347,7 +1347,7 @@ } __pyx_L10:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":124 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":124 * if isnan(self.geodesic_t.DIST): * raise ValueError('undefined inverse geodesic (may be an antipodal point)') * if pj_errno != 0: # <<<<<<<<<<<<<< @@ -1357,7 +1357,7 @@ __pyx_2 = (pj_errno != 0); if (__pyx_2) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":125 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":125 * raise ValueError('undefined inverse geodesic (may be an antipodal point)') * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< @@ -1377,7 +1377,7 @@ } __pyx_L11:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":126 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":126 * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) * if radians: # <<<<<<<<<<<<<< @@ -1387,7 +1387,7 @@ __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; goto __pyx_L1;} if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":127 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":127 * raise RuntimeError(pj_strerrno(pj_errno)) * if radians: * lonsdata[i] = self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<< @@ -1396,7 +1396,7 @@ */ (__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":128 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":128 * if radians: * lonsdata[i] = self.geodesic_t.ALPHA12 * latsdata[i] = self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< @@ -1408,7 +1408,7 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":130 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":130 * latsdata[i] = self.geodesic_t.ALPHA21 * else: * lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<< @@ -1424,7 +1424,7 @@ Py_DECREF(__pyx_4); __pyx_4 = 0; (__pyx_v_lonsdata[__pyx_v_i]) = __pyx_7; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":131 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":131 * else: * lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 * latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<< @@ -1442,7 +1442,7 @@ } __pyx_L12:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":132 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":132 * lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 * latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 * azdata[i] = self.geodesic_t.DIST # <<<<<<<<<<<<<< @@ -1498,7 +1498,7 @@ __pyx_v_lats = Py_None; Py_INCREF(Py_None); __pyx_v_lons = Py_None; Py_INCREF(Py_None); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":139 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":139 * cdef int i * cdef double del_s * if radians: # <<<<<<<<<<<<<< @@ -1508,7 +1508,7 @@ __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; goto __pyx_L1;} if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":140 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":140 * cdef double del_s * if radians: * self.geodesic_t.p1.v = lon1 # <<<<<<<<<<<<<< @@ -1517,7 +1517,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_v_lon1; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":141 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":141 * if radians: * self.geodesic_t.p1.v = lon1 * self.geodesic_t.p1.u = lat1 # <<<<<<<<<<<<<< @@ -1526,7 +1526,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_v_lat1; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":142 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":142 * self.geodesic_t.p1.v = lon1 * self.geodesic_t.p1.u = lat1 * self.geodesic_t.p2.v = lon2 # <<<<<<<<<<<<<< @@ -1535,7 +1535,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_v_lon2; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":143 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":143 * self.geodesic_t.p1.u = lat1 * self.geodesic_t.p2.v = lon2 * self.geodesic_t.p2.u = lat2 # <<<<<<<<<<<<<< @@ -1547,7 +1547,7 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":145 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":145 * self.geodesic_t.p2.u = lat2 * else: * self.geodesic_t.p1.v = _dg2rad*lon1 # <<<<<<<<<<<<<< @@ -1563,7 +1563,7 @@ Py_DECREF(__pyx_4); __pyx_4 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_5; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":146 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":146 * else: * self.geodesic_t.p1.v = _dg2rad*lon1 * self.geodesic_t.p1.u = _dg2rad*lat1 # <<<<<<<<<<<<<< @@ -1579,7 +1579,7 @@ Py_DECREF(__pyx_4); __pyx_4 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_5; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":147 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":147 * self.geodesic_t.p1.v = _dg2rad*lon1 * self.geodesic_t.p1.u = _dg2rad*lat1 * self.geodesic_t.p2.v = _dg2rad*lon2 # <<<<<<<<<<<<<< @@ -1595,7 +1595,7 @@ Py_DECREF(__pyx_4); __pyx_4 = 0; ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_5; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":148 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":148 * self.geodesic_t.p1.u = _dg2rad*lat1 * self.geodesic_t.p2.v = _dg2rad*lon2 * self.geodesic_t.p2.u = _dg2rad*lat2 # <<<<<<<<<<<<<< @@ -1613,7 +1613,7 @@ } __pyx_L2:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":150 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":150 * self.geodesic_t.p2.u = _dg2rad*lat2 * # do inverse computation to set azimuths, distance. * geod_inv(&self.geodesic_t) # <<<<<<<<<<<<<< @@ -1622,7 +1622,7 @@ */ geod_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":152 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":152 * geod_inv(&self.geodesic_t) * # set up some constants needed for forward computation. * geod_pre(&self.geodesic_t) # <<<<<<<<<<<<<< @@ -1631,7 +1631,7 @@ */ geod_pre((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":154 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":154 * geod_pre(&self.geodesic_t) * # distance increment. * del_s = self.geodesic_t.DIST/(npts+1) # <<<<<<<<<<<<<< @@ -1640,7 +1640,7 @@ */ __pyx_v_del_s = (((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST / (__pyx_v_npts + 1)); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":156 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":156 * del_s = self.geodesic_t.DIST/(npts+1) * # initialize output tuples. * lats = () # <<<<<<<<<<<<<< @@ -1652,7 +1652,7 @@ __pyx_v_lats = __pyx_2; __pyx_2 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":157 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":157 * # initialize output tuples. * lats = () * lons = () # <<<<<<<<<<<<<< @@ -1664,7 +1664,7 @@ __pyx_v_lons = __pyx_3; __pyx_3 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":159 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":159 * lons = () * # loop over intermediate points, compute lat/lons. * for i from 1 <= i < npts+1: # <<<<<<<<<<<<<< @@ -1674,7 +1674,7 @@ __pyx_6 = (__pyx_v_npts + 1); for (__pyx_v_i = 1; __pyx_v_i < __pyx_6; __pyx_v_i++) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":160 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":160 * # loop over intermediate points, compute lat/lons. * for i from 1 <= i < npts+1: * self.geodesic_t.DIST = i*del_s # <<<<<<<<<<<<<< @@ -1683,7 +1683,7 @@ */ ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST = (__pyx_v_i * __pyx_v_del_s); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":161 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":161 * for i from 1 <= i < npts+1: * self.geodesic_t.DIST = i*del_s * geod_for(&self.geodesic_t) # <<<<<<<<<<<<<< @@ -1692,7 +1692,7 @@ */ geod_for((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t)); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":162 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":162 * self.geodesic_t.DIST = i*del_s * geod_for(&self.geodesic_t) * if radians: # <<<<<<<<<<<<<< @@ -1702,7 +1702,7 @@ __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; goto __pyx_L1;} if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":163 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":163 * geod_for(&self.geodesic_t) * if radians: * lats = lats + (self.geodesic_t.p2.u,) # <<<<<<<<<<<<<< @@ -1719,7 +1719,7 @@ __pyx_v_lats = __pyx_3; __pyx_3 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":164 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":164 * if radians: * lats = lats + (self.geodesic_t.p2.u,) * lons = lons + (self.geodesic_t.p2.v,) # <<<<<<<<<<<<<< @@ -1739,7 +1739,7 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":166 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":166 * lons = lons + (self.geodesic_t.p2.v,) * else: * lats = lats + (_rad2dg*self.geodesic_t.p2.u,) # <<<<<<<<<<<<<< @@ -1760,7 +1760,7 @@ __pyx_v_lats = __pyx_2; __pyx_2 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":167 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":167 * else: * lats = lats + (_rad2dg*self.geodesic_t.p2.u,) * lons = lons + (_rad2dg*self.geodesic_t.p2.v,) # <<<<<<<<<<<<<< @@ -1783,7 +1783,7 @@ __pyx_L5:; } - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":168 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":168 * lats = lats + (_rad2dg*self.geodesic_t.p2.u,) * lons = lons + (_rad2dg*self.geodesic_t.p2.v,) * return lons, lats # <<<<<<<<<<<<<< @@ -2046,7 +2046,7 @@ if (PyObject_SetAttrString(__pyx_m, "Geod", (PyObject *)&__pyx_type_5_geod_Geod) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;} __pyx_ptype_5_geod_Geod = &__pyx_type_5_geod_Geod; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_pyproj.pxi":1 + /* "/private/tmp/toolkits/basemap-testing/src/_pyproj.pxi":1 * import math # <<<<<<<<<<<<<< * * _dg2rad = math.radians(1.) @@ -2055,7 +2055,7 @@ if (PyObject_SetAttr(__pyx_m, __pyx_n_math, __pyx_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_pyproj.pxi":3 + /* "/private/tmp/toolkits/basemap-testing/src/_pyproj.pxi":3 * import math * * _dg2rad = math.radians(1.) # <<<<<<<<<<<<<< @@ -2075,7 +2075,7 @@ if (PyObject_SetAttr(__pyx_m, __pyx_n__dg2rad, __pyx_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 3; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_pyproj.pxi":4 + /* "/private/tmp/toolkits/basemap-testing/src/_pyproj.pxi":4 * * _dg2rad = math.radians(1.) * _rad2dg = math.degrees(1.) # <<<<<<<<<<<<<< @@ -2095,7 +2095,7 @@ if (PyObject_SetAttr(__pyx_m, __pyx_n__rad2dg, __pyx_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 4; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_pyproj.pxi":5 + /* "/private/tmp/toolkits/basemap-testing/src/_pyproj.pxi":5 * _dg2rad = math.radians(1.) * _rad2dg = math.degrees(1.) * _doublesize = sizeof(double) # <<<<<<<<<<<<<< @@ -2106,7 +2106,7 @@ if (PyObject_SetAttr(__pyx_m, __pyx_n__doublesize, __pyx_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 5; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_pyproj.pxi":6 + /* "/private/tmp/toolkits/basemap-testing/src/_pyproj.pxi":6 * _rad2dg = math.degrees(1.) * _doublesize = sizeof(double) * __version__ = "1.8.3" # <<<<<<<<<<<<<< @@ -2115,7 +2115,7 @@ */ if (PyObject_SetAttr(__pyx_m, __pyx_n___version__, __pyx_k2p) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 6; goto __pyx_L1;} - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":29 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":29 * return (self.__class__,(self.geodparams,)) * * def _fwd(self, object lons, object lats, object az, object dist, radians=False): # <<<<<<<<<<<<<< @@ -2125,7 +2125,7 @@ Py_INCREF(Py_False); __pyx_k3 = Py_False; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":84 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":84 * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21 * * def _inv(self, object lons1, object lats1, object lons2, object lats2, radians=False): # <<<<<<<<<<<<<< @@ -2135,7 +2135,7 @@ Py_INCREF(Py_False); __pyx_k4 = Py_False; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_geod.pyx":134 + /* "/private/tmp/toolkits/basemap-testing/src/_geod.pyx":134 * azdata[i] = self.geodesic_t.DIST * * def _npts(self, double lon1, double lat1, double lon2, double lat2, int npts, radians=False): # <<<<<<<<<<<<<< Modified: trunk/toolkits/basemap-testing/src/_proj.c =================================================================== --- trunk/toolkits/basemap-testing/src/_proj.c 2007-11-01 03:18:09 UTC (rev 4076) +++ trunk/toolkits/basemap-testing/src/_proj.c 2007-11-01 03:22:40 UTC (rev 4077) @@ -1,4 +1,4 @@ -/* Generated by Cython 0.9.6.7 on Sun Oct 28 13:19:08 2007 */ +/* Generated by Cython 0.9.6.7 on Wed Oct 31 21:20:52 2007 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -25,7 +25,6 @@ #include "math.h" #include "geodesic.h" #include "proj_api.h" -#include "numpy/arrayobject.h" #ifdef __GNUC__ @@ -85,17 +84,8 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ -static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size); /*proto*/ - static void __Pyx_AddTraceback(char *funcname); /*proto*/ -/* Declarations from c_numpy */ - -static PyTypeObject *__pyx_ptype_7c_numpy_dtype = 0; -static PyTypeObject *__pyx_ptype_7c_numpy_ndarray = 0; -static PyTypeObject *__pyx_ptype_7c_numpy_flatiter = 0; -static PyTypeObject *__pyx_ptype_7c_numpy_broadcast = 0; - /* Declarations from _proj */ @@ -109,22 +99,16 @@ }; static PyTypeObject *__pyx_ptype_5_proj_Proj = 0; +static PyObject *__pyx_k3; static PyObject *__pyx_k4; static PyObject *__pyx_k5; static PyObject *__pyx_k6; -static PyObject *__pyx_k7; -static PyObject *__pyx_k8; -static PyObject *__pyx_k9; -static PyObject *__pyx_k10; -static PyObject *__pyx_k11; /* Implementation of _proj */ -static char (__pyx_k3[]) = "1.8.3"; +static char (__pyx_k2[]) = "1.8.3"; -static PyObject *__pyx_n_c_numpy; -static PyObject *__pyx_n_numpy; static PyObject *__pyx_n_math; static PyObject *__pyx_n__dg2rad; static PyObject *__pyx_n__rad2dg; @@ -135,8 +119,6 @@ static PyObject *__pyx_n___dealloc__; static PyObject *__pyx_n___reduce__; static PyObject *__pyx_n__fwd; -static PyObject *__pyx_n__fwdn; -static PyObject *__pyx_n__invn; static PyObject *__pyx_n__inv; static PyObject *__pyx_n_is_latlong; static PyObject *__pyx_n_is_geocent; @@ -144,7 +126,7 @@ static PyObject *__pyx_n_radians; static PyObject *__pyx_n_degrees; -static PyObject *__pyx_k3p; +static PyObject *__pyx_k2p; static PyObject *__pyx_f_py_5_proj_set_datapath(PyObject *__pyx_self, PyObject *__pyx_v_datapath); /*proto*/ static PyObject *__pyx_f_py_5_proj_set_datapath(PyObject *__pyx_self, PyObject *__pyx_v_datapath) { @@ -152,20 +134,20 @@ PyObject *__pyx_r; Py_INCREF(__pyx_v_datapath); - /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":11 + /* "/private/tmp/toolkits/basemap-testing/src/_proj.pyx":7 * def set_datapath(datapath): * cdef char *searchpath * searchpath = PyString_AsString(datapath) # <<<<<<<<<<<<<< * pj_set_searchpath(1, &searchpath) - * + * */ __pyx_v_searchpath = PyString_AsString(__pyx_v_datapath); - /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":12 + /* "/private/tmp/toolkits/basemap-testing/src/_proj.pyx":8 * cdef char *searchpath * searchpath = PyString_AsString(datapath) * pj_set_searchpath(1, &searchpath) # <<<<<<<<<<<<<< - * + * * cdef class Proj: */ pj_set_searchpath(1,(&__pyx_v_searchpath)); @@ -180,17 +162,17 @@ static PyObject *__pyx_n_join; static PyObject *__pyx_n_RuntimeError; -static PyObject *__pyx_k12p; -static PyObject *__pyx_k13p; -static PyObject *__pyx_k14p; -static PyObject *__pyx_k15p; +static PyObject *__pyx_k7p; +static PyObject *__pyx_k8p; +static PyObject *__pyx_k9p; +static PyObject *__pyx_k10p; static PyObject *__pyx_builtin_RuntimeError; -static char (__pyx_k12[]) = "+"; -static char (__pyx_k13[]) = "="; -static char (__pyx_k14[]) = " "; -static char (__pyx_k15[]) = ""; +static char (__pyx_k7[]) = "+"; +static char (__pyx_k8[]) = "="; +static char (__pyx_k9[]) = " "; +static char (__pyx_k10[]) = ""; static int __pyx_f_py_5_proj_4Proj___new__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_f_py_5_proj_4Proj___new__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { @@ -214,7 +196,7 @@ __pyx_v_key = Py_None; Py_INCREF(Py_None); __pyx_v_value = Py_None; Py_INCREF(Py_None); - /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":22 + /* "/private/tmp/toolkits/basemap-testing/src/_proj.pyx":18 * * def __new__(self, projparams): * self.projparams = projparams # <<<<<<<<<<<<<< @@ -225,30 +207,30 @@ Py_DECREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projparams); ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projparams = __pyx_v_projparams; - /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":24 + /* "/private/tmp/toolkits/basemap-testing/src/_proj.pyx":20 * self.projparams = projparams * # setup proj initialization string. * pjargs = [] # <<<<<<<<<<<<<< * for key,value in projparams.iteritems(): * pjargs.append('+'+key+"="+str(value)+' ') */ - __pyx_1 = PyList_New(0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;} + __pyx_1 = PyList_New(0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; goto __pyx_L1;} Py_DECREF(__pyx_v_pjargs); __pyx_v_pjargs = __pyx_1; __pyx_1 = 0; - /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":25 + /* "/private/tmp/toolkits/basemap-testing/src/_proj.pyx":21 * # setup proj initialization string. * pjargs = [] * for key,value in projparams.iteritems(): # <<<<<<<<<<<<<< * pjargs.append('+'+key+"="+str(value)+' ') * self.srs = ''.join(pjargs) */ - __pyx_1 = PyObject_GetAttr(__pyx_v_projparams, __pyx_n_iteritems); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} - __pyx_3 = PyObject_CallObject(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_1 = PyObject_GetAttr(__pyx_v_projparams, __pyx_n_iteritems); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} + __pyx_3 = PyObject_CallObject(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; if (PyList_CheckExact(__pyx_3)) { __pyx_2 = 0; __pyx_1 = __pyx_3; Py_INCREF(__pyx_1); } - else { __pyx_1 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} } + else { __pyx_1 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} } Py_DECREF(__pyx_3); __pyx_3 = 0; for (;;) { if (PyList_CheckExact(__pyx_1)) { if (__pyx_2 >= PyList_GET_SIZE(__pyx_1)) break; __pyx_3 = PyList_GET_ITEM(__pyx_1, __pyx_2++); Py_INCREF(__pyx_3); } @@ -272,70 +254,70 @@ Py_DECREF(__pyx_3); __pyx_3 = 0; } else { - __pyx_4 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_4 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_v_key); __pyx_v_key = __pyx_5; __pyx_5 = 0; - __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_v_value); __pyx_v_value = __pyx_5; __pyx_5 = 0; - if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} + if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; } - /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":26 + /* "/private/tmp/toolkits/basemap-testing/src/_proj.pyx":22 * pjargs = [] * for key,value in projparams.iteritems(): * pjargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<< * self.srs = ''.join(pjargs) * self.pjinitstring = PyString_AsString(self.srs) */ - __pyx_5 = PyObject_GetAttr(__pyx_v_pjargs, __pyx_n_append); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} - __pyx_3 = PyNumber_Add(__pyx_k12p, __pyx_v_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} - __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k13p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_5 = PyObject_GetAttr(__pyx_v_pjargs, __pyx_n_append); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_3 = PyNumber_Add(__pyx_k7p, __pyx_v_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k8p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_INCREF(__pyx_v_value); PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_value); - __pyx_6 = PyObject_CallObject(((PyObject*)&PyString_Type), __pyx_3); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_6 = PyObject_CallObject(((PyObject*)&PyString_Type), __pyx_3); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_3 = PyNumber_Add(__pyx_4, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_3 = PyNumber_Add(__pyx_4, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; Py_DECREF(__pyx_6); __pyx_6 = 0; - __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k14p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k9p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_6 = PyTuple... [truncated message content] |
From: <js...@us...> - 2007-11-01 03:18:13
|
Revision: 4076 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4076&view=rev Author: jswhit Date: 2007-10-31 20:18:09 -0700 (Wed, 31 Oct 2007) Log Message: ----------- initial Shapely integration 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-01 03:16:07 UTC (rev 4075) +++ trunk/toolkits/basemap-testing/lib/matplotlib/toolkits/basemap/basemap.py 2007-11-01 03:18:09 UTC (rev 4076) @@ -17,6 +17,8 @@ from matplotlib.numerix.mlab import squeeze from matplotlib.cbook import popd, is_scalar from shapelib import ShapeFile +from shapely.geometry import Polygon as PolygonShape +from shapely import wkb # basemap data files now installed in lib/matplotlib/toolkits/basemap/data basemap_datadir = os.sep.join([os.path.dirname(__file__), 'data']) @@ -676,521 +678,23 @@ area_thresh = 10. else: raise ValueError, "boundary resolution must be one of 'c','l','i' or 'h'" - # read in coastline data (only those polygons whose area > area_thresh). - coastlons = []; coastlats = []; coastsegind = []; coastsegtype = [] - msg = """ -Unable to open boundary dataset file. Only the 'crude', 'low' -and 'intermediate' resolution datasets are installed by default. If you -are requesting a 'high' resolution dataset, you need to download -and install those files manually (see the basemap README for details).""" - try: - bdatfile = open(os.path.join(basemap_datadir,'gshhs_'+resolution+'.txt')) - except: - raise IOError, msg - for line in bdatfile: - linesplit = line.split() - if line.startswith('P'): - area = float(linesplit[5]) - west,east,south,north = float(linesplit[6]),float(linesplit[7]),float(linesplit[8]),float(linesplit[9]) - typ = int(linesplit[3]) - useit = self.latmax>=south and self.latmin<=north and area>area_thresh - if useit: - coastsegind.append(len(coastlons)) - coastsegtype.append(typ) - continue - # lon/lat - if useit: - lon, lat = [float(val) for val in linesplit] - coastlons.append(lon) - coastlats.append(lat) - coastsegtype.append(typ) - coastsegind.append(len(coastlons)) - - # read in country boundary data. - cntrylons = []; cntrylats = []; cntrysegind = [] - try: - bdatfile = open(os.path.join(basemap_datadir,'countries_'+resolution+'.txt')) - except: - raise IOError, msg - for line in bdatfile: - linesplit = line.split() - if line.startswith('>'): - west,east,south,north = float(linesplit[7]),float(linesplit[8]),float(linesplit[9]),float(linesplit[10]) - useit = self.latmax>=south and self.latmin<=north - if useit: cntrysegind.append(len(cntrylons)) - continue - # lon/lat - if useit: - lon, lat = [float(val) for val in linesplit] - cntrylons.append(lon) - cntrylats.append(lat) - cntrysegind.append(len(cntrylons)) - - # read in state boundaries (Americas only). - statelons = []; statelats = []; statesegind = [] - try: - bdatfile = open(os.path.join(basemap_datadir,'states_'+resolution+'.txt')) - except: - raise IOError, msg - for line in bdatfile: - linesplit = line.split() - if line.startswith('>'): - west,east,south,north = float(linesplit[7]),float(linesplit[8]),float(linesplit[9]),float(linesplit[10]) - useit = self.latmax>=south and self.latmin<=north - if useit: statesegind.append(len(statelons)) - continue - # lon/lat - if useit: - lon, lat = [float(val) for val in linesplit] - statelons.append(lon) - statelats.append(lat) - statesegind.append(len(statelons)) - - # read in major rivers. - riverlons = []; riverlats = []; riversegind = [] - try: - bdatfile = open(os.path.join(basemap_datadir,'rivers_'+resolution+'.txt')) - except: - raise IOError, msg - for line in bdatfile: - linesplit = line.split() - if line.startswith('>'): - west,east,south,north = float(linesplit[7]),float(linesplit[8]),float(linesplit[9]),float(linesplit[10]) - useit = self.latmax>=south and self.latmin<=north - if useit: riversegind.append(len(riverlons)) - continue - # lon/lat - if useit: - lon, lat = [float(val) for val in linesplit] - riverlons.append(lon) - riverlats.append(lat) - riversegind.append(len(riverlons)) - - # extend longitudes around the earth a second time - # so valid longitudes can range from -360 to 720. - # This means a lot of redundant processing is done when - # creating the class instance, but it a lot easier to figure - # out what to do when the projection domain straddles the - # Greenwich meridian. - coastlons2 = [lon+360. for lon in coastlons] - cntrylons2 = [lon+360. for lon in cntrylons] - statelons2 = [lon+360. for lon in statelons] - riverlons2 = [lon+360. for lon in riverlons] - coastlons3 = [lon-360. for lon in coastlons] - cntrylons3 = [lon-360. for lon in cntrylons] - statelons3 = [lon-360. for lon in statelons] - riverlons3 = [lon-360. for lon in riverlons] - - # transform coastline polygons to native map coordinates. - xc,yc = proj(NX.array(coastlons),NX.array(coastlats)) - xc = xc.tolist(); yc = yc.tolist() - xc2,yc2 = proj(NX.array(coastlons2),NX.array(coastlats)) - xc3,yc3 = proj(NX.array(coastlons3),NX.array(coastlats)) - xc2 = xc2.tolist(); yc2 = yc2.tolist() - xc3 = xc3.tolist(); yc3 = yc3.tolist() - - # set up segments in form needed for LineCollection, - # ignoring 'inf' values that are off the map. - segments = [zip(xc[i0:i1],yc[i0:i1]) for i0,i1 in zip(coastsegind[:-1],coastsegind[1:])] - segmentsll = [zip(coastlons[i0:i1],coastlats[i0:i1]) for i0,i1 in zip(coastsegind[:-1],coastsegind[1:])] - segtypes = [i for i in coastsegtype[:-1]] - segments2 = [zip(xc2[i0:i1],yc2[i0:i1]) for i0,i1 in zip(coastsegind[:-1],coastsegind[1:]) if max(xc2[i0:i1]) < 1.e20 and max(yc2[i0:i1]) < 1.e20] - segmentsll2 = [zip(coastlons2[i0:i1],coastlats[i0:i1]) for i0,i1 in zip(coastsegind[:-1],coastsegind[1:]) if max(xc2[i0:i1]) < 1.e20 and max(yc2[i0:i1]) < 1.e20] - segtypes2 = [i for i0,i1,i in zip(coastsegind[:-1],coastsegind[1:],coastsegtype[:-1]) if max(xc2[i0:i1]) < 1.e20 and max(yc2[i0:i1]) < 1.e20] - segments3 = [zip(xc3[i0:i1],yc3[i0:i1]) for i0,i1 in zip(coastsegind[:-1],coastsegind[1:]) if max(xc3[i0:i1]) < 1.e20 and max(yc3[i0:i1]) < 1.e20] - segmentsll3 = [zip(coastlons3[i0:i1],coastlats[i0:i1]) for i0,i1 in zip(coastsegind[:-1],coastsegind[1:]) if max(xc3[i0:i1]) < 1.e20 and max(yc3[i0:i1]) < 1.e20] - segtypes3 = [i for i0,i1,i in zip(coastsegind[:-1],coastsegind[1:],coastsegtype[:-1]) if max(xc3[i0:i1]) < 1.e20 and max(yc3[i0:i1]) < 1.e20] - self.coastsegs = segments+segments2+segments3 - self.coastsegsll = segmentsll+segmentsll2+segmentsll3 - self.coastsegtypes = segtypes+segtypes2+segtypes3 - - # same as above for country segments. - xc,yc = proj(NX.array(cntrylons),NX.array(cntrylats)) - xc = xc.tolist(); yc = yc.tolist() - xc2,yc2 = proj(NX.array(cntrylons2),NX.array(cntrylats)) - xc3,yc3 = proj(NX.array(cntrylons3),NX.array(cntrylats)) - xc2 = xc2.tolist(); yc2 = yc2.tolist() - xc3 = xc3.tolist(); yc3 = yc3.tolist() - segments = [zip(xc[i0:i1],yc[i0:i1]) for i0,i1 in zip(cntrysegind[:-1],cntrysegind[1:])] - segments2 = [zip(xc2[i0:i1],yc2[i0:i1]) for i0,i1 in zip(cntrysegind[:-1],cntrysegind[1:]) if max(xc2[i0:i1]) < 1.e20 and max(yc2[i0:i1]) < 1.e20] - segments3 = [zip(xc3[i0:i1],yc3[i0:i1]) for i0,i1 in zip(cntrysegind[:-1],cntrysegind[1:]) if max(xc3[i0:i1]) < 1.e20 and max(yc3[i0:i1]) < 1.e20] - self.cntrysegs = segments+segments2+segments3 - - # same as above for state segments. - xc,yc = proj(NX.array(statelons),NX.array(statelats)) - xc = xc.tolist(); yc = yc.tolist() - xc2,yc2 = proj(NX.array(statelons2),NX.array(statelats)) - xc3,yc3 = proj(NX.array(statelons3),NX.array(statelats)) - xc2 = xc2.tolist(); yc2 = yc2.tolist() - xc3 = xc3.tolist(); yc3 = yc3.tolist() - segments = [zip(xc[i0:i1],yc[i0:i1]) for i0,i1 in zip(statesegind[:-1],statesegind[1:])] - segments2 = [zip(xc2[i0:i1],yc2[i0:i1]) for i0,i1 in zip(statesegind[:-1],statesegind[1:]) if max(xc2[i0:i1]) < 1.e20 and max(yc2[i0:i1]) < 1.e20] - segments3 = [zip(xc3[i0:i1],yc3[i0:i1]) for i0,i1 in zip(statesegind[:-1],statesegind[1:]) if max(xc3[i0:i1]) < 1.e20 and max(yc3[i0:i1]) < 1.e20] - self.statesegs = segments+segments2+segments3 - - # same as above for river segments. - xc,yc = proj(NX.array(riverlons),NX.array(riverlats)) - xc = xc.tolist(); yc = yc.tolist() - xc2,yc2 = proj(NX.array(riverlons2),NX.array(riverlats)) - xc3,yc3 = proj(NX.array(riverlons3),NX.array(riverlats)) - xc2 = xc2.tolist(); yc2 = yc2.tolist() - xc3 = xc3.tolist(); yc3 = yc3.tolist() - segments = [zip(xc[i0:i1],yc[i0:i1]) for i0,i1 in zip(riversegind[:-1],riversegind[1:])] - segments2 = [zip(xc2[i0:i1],yc2[i0:i1]) for i0,i1 in zip(riversegind[:-1],riversegind[1:]) if max(xc2[i0:i1]) < 1.e20 and max(yc2[i0:i1]) < 1.e20] - segments3 = [zip(xc3[i0:i1],yc3[i0:i1]) for i0,i1 in zip(riversegind[:-1],riversegind[1:]) if max(xc3[i0:i1]) < 1.e20 and max(yc3[i0:i1]) < 1.e20] - self.riversegs = segments+segments2+segments3 - - # store coast polygons for filling. + self.area_thresh = area_thresh + # define map boundary polygon (in lat/lon coordinates) + self._boundarypoly = self._getmapboundary() + # read in coastline polygons, only keeping those that + # intersect map boundary polygon. + self.coastsegs, self.coastpolygontypes = self._readboundarydata('gshhs') + # same for countries, states, rivers. + self.cntrysegs, types = self._readboundarydata('countries') + self.statesegs, types = self._readboundarydata('states') + self.riversegs, types = self._readboundarydata('rivers') + # for coastlines, reformat as polygons. self.coastpolygons = [] - coastpolygonsll = [] - self.coastpolygontypes = [] - if projection in ['merc','mill']: - xsp,ysp = proj(0.,-89.9) # s. pole coordinates. - xa,ya = proj(0.,-68.) # edge of antarctica. - x0,y0 = proj(0.,0.) - xm360,ym360 = proj(-360.,0.) - x360,y360 = proj(360.,0.) - x720,y720 = proj(720.,0.) - for seg,segtype,segll in zip(self.coastsegs,self.coastsegtypes,self.coastsegsll): - x = [lon for lon,lat in seg] - y = [lat for lon,lat in seg] - lons = [lon for lon,lat in segll] - lats = [lat for lon,lat in segll] - # the antarctic polygon is a nuisance, since it - # spans all longitudes, it's not closed and will not be filled - # without some projection dependant tweaking. - if projection == 'cyl': - if x[-1] == 0.000 and y[-1] < -68.: # close antarctica - x.append(0.) - y.append(-90.0000) - x.insert(0,360.) - y.insert(0,-90) - lons.append(0.) - lats.append(-90.) - lons.insert(0,360.) - lats.insert(0,-90.) - if x[-1] == 360.000 and y[-1] < -68.: - x.append(360.) - y.append(-90) - x.insert(0,720.) - y.insert(0,-90) - lons.append(360.) - lats.append(-90.) - lons.insert(0,720.) - lats.insert(0,-90.) - if x[-1] == -360.000 and y[-1] < -68.: - x.append(-360.) - y.append(-90) - x.insert(0,0.) - y.insert(0,-90) - lons.append(-360.) - lats.append(-90.) - lons.insert(0,0.) - lats.insert(0,-90.) - elif projection in ['merc','mill']: - if math.fabs(x[-1]-x0) < 1. and y[-1] < ya: # close antarctica - x.append(x0) - y.append(ysp) - x.insert(0,x360) - y.insert(0,ysp) - lons.append(0.) - lats.append(-90.) - lons.insert(0,360.) - lats.insert(0,-90.) - if math.fabs(x[-1]-x360) < 1. and y[-1] < ya: - x.append(x360) - y.append(ysp) - x.insert(0,x720) - y.insert(0,ysp) - lons.append(360.) - lats.append(-90.) - lons.insert(0,720.) - lats.insert(0,-90.) - if math.fabs(x[-1]-xm360) < 1. and y[-1] < ya: - x.append(xm360) - y.append(ysp) - x.insert(0,x0) - y.insert(0,ysp) - lons.append(-360.) - lats.append(-90.) - lons.insert(0,0.) - lats.insert(0,-90.) + for xy in self.coastsegs: + x = [x1 for x1,x2 in xy] + y = [x2 for x1,x2 in xy] self.coastpolygons.append((x,y)) - coastpolygonsll.append((lons,lats)) - self.coastpolygontypes.append(segtype) - # remove those segments/polygons that don't intersect map region. - coastsegs = [] - coastsegtypes = [] - for seg,segtype in zip(self.coastsegs,self.coastsegtypes): - if self._insidemap_seg(seg): - coastsegs.append(seg) - coastsegtypes.append(segtype) - self.coastsegs = coastsegs - self.coastsegtypes = coastsegtypes - polygons = [] - polygonsll = [] - polygontypes = [] - for poly,polytype,polyll in zip(self.coastpolygons,self.coastpolygontypes,coastpolygonsll): - if self._insidemap_poly(poly,polyll): - polygons.append(poly) - polygontypes.append(polytype) - polygonsll.append(polyll) - self.coastpolygons = polygons - coastpolygonsll = polygonsll - self.coastpolygontypes = polygontypes - states = []; rivers = []; countries = [] - for seg in self.cntrysegs: - if self._insidemap_seg(seg): - countries.append(seg) - for seg in self.statesegs: - if self._insidemap_seg(seg): - states.append(seg) - for seg in self.riversegs: - if self._insidemap_seg(seg): - rivers.append(seg) - self.statesegs = states - self.riversegs = rivers - self.cntryegs = countries - - # split up segments that go outside projection limb - coastsegs = [] - coastsegtypes = [] - for seg,segtype in zip(self.coastsegs,self.coastsegtypes): - xx = NX.array([x for x,y in seg],NX.Float32) - yy = NX.array([y for x,y in seg],NX.Float32) - i1,i2 = self._splitseg(xx,yy) - if i1 and i2: - for i,j in zip(i1,i2): - segment = zip(xx[i:j].tolist(),yy[i:j].tolist()) - coastsegs.append(segment) - coastsegtypes.append(segtype) - else: - coastsegs.append(seg) - coastsegs.append(segtype) - self.coastsegs = coastsegs - self.coastsegtypes = coastsegtypes - states = [] - for seg in self.statesegs: - xx = NX.array([x for x,y in seg],NX.Float32) - yy = NX.array([y for x,y in seg],NX.Float32) - i1,i2 = self._splitseg(xx,yy) - if i1 and i2: - for i,j in zip(i1,i2): - segment = zip(xx[i:j].tolist(),yy[i:j].tolist()) - states.append(segment) - else: - states.append(seg) - self.statesegs = states - countries = [] - for seg in self.cntrysegs: - xx = NX.array([x for x,y in seg],NX.Float32) - yy = NX.array([y for x,y in seg],NX.Float32) - i1,i2 = self._splitseg(xx,yy) - if i1 and i2: - for i,j in zip(i1,i2): - segment = zip(xx[i:j].tolist(),yy[i:j].tolist()) - countries.append(segment) - else: - countries.append(seg) - self.cntrysegs = countries - rivers = [] - for seg in self.riversegs: - xx = NX.array([x for x,y in seg],NX.Float32) - yy = NX.array([y for x,y in seg],NX.Float32) - i1,i2 = self._splitseg(xx,yy) - if i1 and i2: - for i,j in zip(i1,i2): - segment = zip(xx[i:j].tolist(),yy[i:j].tolist()) - rivers.append(segment) - else: - rivers.append(seg) - self.riversegs = rivers - - # split coastline segments that jump across entire plot. - coastsegs = [] - coastsegtypes = [] - for seg,segtype in zip(self.coastsegs,self.coastsegtypes): - xx = NX.array([x for x,y in seg],NX.Float32) - yy = NX.array([y for x,y in seg],NX.Float32) - xd = (xx[1:]-xx[0:-1])**2 - yd = (yy[1:]-yy[0:-1])**2 - dist = NX.sqrt(xd+yd) - split = dist > 5000000. - if NX.sum(split) and self.projection not in ['merc','cyl','mill']: - ind = (NX.compress(split,squeeze(split*NX.indices(xd.shape)))+1).tolist() - iprev = 0 - ind.append(len(xd)) - for i in ind: - coastsegs.append(zip(xx[iprev:i],yy[iprev:i])) - coastsegtypes.append(segtype) - iprev = i - else: - coastsegs.append(seg) - coastsegtypes.append(segtype) - self.coastsegs = coastsegs - self.coastsegtypes = coastsegtypes - - # special treatment of coastline polygons for - # geostationary, orthographic, sinusoidal, mollweide and robinson. - # (polygon clipping along projection limb) - if self.projection in ['ortho','geos']: - if self.projection == 'ortho': - lat_0 = math.radians(self.projparams['lat_0']) - else: - lat_0 = 0. - lon_0d = self.projparams['lon_0'] - lon_0 = math.radians(lon_0d) - if self.projection == 'ortho': - rad = self.rmajor - else: - # quadratic mean radius of ellipsoid. - rad = math.sqrt((3.*self._width**2 + self._height**2)/4.) - del_s = 50. - gc = pyproj.Geod(a=self.rmajor,b=self.rminor) - coastpolygons = [] - coastpolygontypes = [] - for poly,polytype,polyll in zip(self.coastpolygons,self.coastpolygontypes,coastpolygonsll): - x = poly[0] - y = poly[1] - lons = polyll[0] - lats = polyll[1] - mask = NX.logical_or(NX.greater(x,1.e20),NX.greater(y,1.e20)) - # replace values in polygons that are over the horizon. - xsave = False - ysave = False - if NX.sum(mask): - i1,i2 = self._splitseg(x,y,mask=mask) - # loop over segments of polygon that are outside projection limb. - for i,j in zip(i1,i2): - # if it's not the rest of the polygon ... - if i and j != len(x): - # compute distance and azimuth between projection center - # and last point inside project limb. - az1,alpha21,dist=gc.inv(lon_0,lat_0,math.radians(lons[i]),math.radians(lats[i]),radians=True) - # also compute lat, lon of that great circle, plus back - # azimuth. - lon1,lat1,az=gc.fwd(lon_0,lat_0,az1,0.5*math.pi*rad,radians=True) - # compute distance and azimuth between projection center - # and next point inside projection limb. - az2,alpha21,dist=gc.inv(lon_0,lat_0,math.radians(lons[j]),math.radians(lats[j]),radians=True) - # also compute lat, lon of that great circle, plus back - # azimuth. - lon2,lat2,az=gc.fwd(lon_0,lat_0,az2,0.5*math.pi*rad,radians=True) - # compute distance between those two points. - az12,az21,dist = gc.inv(lon1,lon2,lat1,lat2,radians=True) - # compute set of equally space points del_s meters apart - # along great circle between those two points (the last - # inside the projection limb and the next point inside the - # the projection limb). - npoints = int((dist+0.5*1000.*del_s)/(1000.*del_s)) - if npoints < 2: npoints=2 - lonlats = gc.npts(math.degrees(lon2),math.degrees(lat2),math.degrees(lon1),math.degrees(lat1),npoints) - lonstmp=[math.degrees(lon2)];latstmp=[math.degrees(lat2)] - for lon,lat in lonlats: - lonstmp.append(lon); latstmp.append(lat) - lonstmp.append(math.degrees(lon1)); latstmp.append(math.degrees(lat1)) - # convert that set of points to projection coordinates. - # replace the points in the polygon which were outside - # the projection limb. - xx, yy = self(lonstmp, latstmp) - xnew = x[i:j] + xx - ynew = y[i:j] + yy - coastpolygons.append((xnew,ynew)) - coastpolygontypes.append(polytype) - elif i == 0: - xsave = x[0:j] - ysave = y[0:j] - lats_save = lats[0:j] - lons_save = lons[0:j] - # it's the entire rest of the polygon ... - elif j == len(x): - xnew = x[i:j] + xsave - ynew = y[i:j] + ysave - lonsnew = lons[i:j] + lons_save - latsnew = lats[i:j] + lats_save - az1,alpha21,dist=gc.inv(lon_0,lat_0,math.radians(lonsnew[0]),math.radians(latsnew[0]),radians=True) - lon1,lat1,az=gc.fwd(lon_0,lat_0,az1,0.5*math.pi*rad,radians=True) - az2,alpha21,dist=gc.inv(lon_0,lat_0,math.radians(lonsnew[-1]),math.radians(latsnew[-1]),radians=True) - lon2,lat2,az=gc.fwd(lon_0,lat_0,az2,0.5*math.pi*rad,radians=True) - az12,az21,dist = gc.inv(lon2,lat2,lon1,lat1,radians=True) - npoints = int((dist+0.5*1000.*del_s)/(1000.*del_s)) - if npoints < 2: npoints=2 - lonlats = gc.npts(math.degrees(lon2),math.degrees(lat2),math.degrees(lon1),math.degrees(lat1),npoints) - lonstmp=[math.degrees(lon2)];latstmp=[math.degrees(lat2)] - for lon,lat in lonlats: - lonstmp.append(lon); latstmp.append(lat) - lonstmp.append(math.degrees(lon1));latstmp.append(math.degrees(lat1)) - xx, yy = self(lonstmp, latstmp) - xnew = xnew + xx - ynew = ynew + yy - coastpolygons.append((xnew,ynew)) - coastpolygontypes.append(polytype) - else: # no part of polygon outside projection limb. - coastpolygons.append(poly) - coastpolygontypes.append(polytype) - self.coastpolygons = coastpolygons - self.coastpolygontypes = coastpolygontypes - elif self.projection in ['moll','robin','sinu']: - lon_0 = self.projparams['lon_0'] - coastpolygons=[] - for poly,polytype,polyll in zip(self.coastpolygons,self.coastpolygontypes,coastpolygonsll): - x = poly[0] - y = poly[1] - lons = polyll[0] - lats = polyll[1] - xn=[] - yn=[] - # antarctic segment goes from 360 back to 0 - # reorder to go from lon_0-180 to lon_0+180. - if lats[-1] < -68.0: - lons.reverse() - lats.reverse() - xx,yy = self(lons,lats) - xx = NX.array(xx); yy = NX.array(yy) - xdist = NX.fabs(xx[1:]-xx[0:-1]) - if max(xdist) > 1000000: - nmin = NX.argmax(xdist)+1 - xnew = NX.zeros(len(xx),NX.Float64) - ynew = NX.zeros(len(xx),NX.Float64) - lonsnew = len(xx)*[0] - latsnew = len(xx)*[0] - xnew[0:len(xx)-nmin] = xx[nmin:] - ynew[0:len(xx)-nmin] = yy[nmin:] - xnew[len(xx)-nmin:] = xx[0:nmin] - ynew[len(xx)-nmin:] = yy[0:nmin] - lonsnew[0:len(xx)-nmin] = lons[nmin:] - latsnew[0:len(xx)-nmin] = lats[nmin:] - lonsnew[len(xx)-nmin:] = lons[0:nmin] - latsnew[len(xx)-nmin:] = lats[0:nmin] - x = xnew.tolist(); y = ynew.tolist() - lons = lonsnew; lats = latsnew - else: - x.reverse() - y.reverse() - # close polygon (add lines along left and right edges down to S pole) - for phi in NX.arange(-89.999,lats[0],0.1): - xx,yy = self(lon_0-179.99,phi) - xn.append(xx); yn.append(yy) - xn = xn+x - yn = yn+y - for phi in NX.arange(lats[-1],-89.999,-0.1): - xx,yy = self(lon_0+179.99,phi) - xn.append(xx); yn.append(yy) - # move points outside map to edge of map - # along constant latitude. - else: - for x,y,lon,lat in zip(x,y,lons,lats): - if lon > lon_0+180 or lon < lon_0-180: - if lon >= lon_0+180: lon=lon_0+180. - if lon <= lon_0-180: lon=lon_0-180. - xx,yy = self(lon,lat) - xn.append(xx); yn.append(yy) - else: - xn.append(x); yn.append(y) - coastpolygons.append((xn,yn)) - self.coastpolygons = coastpolygons - def _splitseg(self,xx,yy,mask=None): """split segment up around missing values (outside projection limb)""" if mask is None: @@ -1266,6 +770,138 @@ """ return self.projtran.makegrid(nx,ny,returnxy=returnxy) + def _readboundarydata(self,name): + msg = """ +Unable to open boundary dataset file. Only the 'crude', 'low' +and 'intermediate' resolution datasets are installed by default. If you +are requesting a 'high' resolution dataset, you need to download +and install those files manually (see the basemap README for details).""" + try: + bdatfile = open(os.path.join(basemap_datadir,name+'_'+self.resolution+'.dat'),'rb') + bdatmetafile = open(os.path.join(basemap_datadir,name+'meta_'+self.resolution+'.dat'),'r') + except: + raise IOError, msg + polygons = [] + polygon_types = [] + for line in bdatmetafile: + linesplit = line.split() + area = float(linesplit[1]) + type = int(linesplit[0]) + south = float(linesplit[2]) + north = float(linesplit[3]) + if area < 0.: area = 1.e30 + useit = self.latmax>=south and self.latmin<=north and area>self.area_thresh + # skip Antartica for now. + if name == 'gshhs' and south < -60.: useit=False + if useit: + offsetbytes = int(linesplit[4]) + bytecount = int(linesplit[5]) + bdatfile.seek(offsetbytes,0) + polystring = bdatfile.read(bytecount) + poly = wkb.loads(polystring) + if poly.intersects(self._boundarypoly): + #a = npy.asarray(self._boundarypoly.boundary) + #b = npy.asarray(poly.boundary) + #import pylab + #pylab.fill(a[:,0],a[:,1],'r') + #pylab.fill(b[:,0],b[:,1],'b') + #pylab.show() + poly = poly.intersection(self._boundarypoly) + if hasattr(poly,'geoms'): + geoms = poly.geoms + else: + geoms = [poly] + for psub in geoms: + if name == 'gshhs': + b = npy.asarray(psub.boundary) + else: + b = npy.asarray(psub.coords) + blons = b[:,0]; blats = b[:,1] + bx, by = self(blons, blats) + #if (bx > 1.20).any() or (by > 1.e20).any(): + # continue + polygons.append(zip(bx,by)) + polygon_types.append(type) + return polygons, polygon_types + + + def _getmapboundary(self): + """ + define map boundary polygon (in lat/lon coordinates) + """ + dtheta = 0.1 + dx = (self.xmax-self.xmin)/100. + dy = (self.ymax-self.ymin)/100. + if self.projection == 'ortho' and self._fulldisk: + # circular region. + thetas = npy.arange(0.,2.*npy.pi,dtheta) + radius = self.rmajor + x = radius*npy.cos(thetas) + 0.5*self.xmax + y = radius*npy.sin(thetas) + 0.5*self.ymax + elif self.projection == 'geos' and self._fulldisk: + # elliptical region + thetas = npy.arange(0.,2.*npy.pi+0.5*dtheta,dtheta) + rminor = self._height + rmajor = self._width + x = rmajor*npy.cos(thetas) + 0.5*self.xmax + y = rminor*npy.sin(thetas) + 0.5*self.ymax + elif self.projection in ['moll','robin','sinu']: + # quasi-elliptical region. + x = []; y = [] + # left side + lats = NX.arange(-89.9,89.9+dtheta,dtheta).tolist() + lons = len(lats)*[self.projparams['lon_0']-179.9] + x,y = self(lons,lats) + # top. + lons = NX.arange(self.projparams['lon_0']-179.9,self.projparams['lon_0']+179+dtheta,dtheta).tolist() + lats = len(lons)*[89.9] + xx,yy = self(lons,lats) + x = x+xx; y = y+yy + # right side + lats = NX.arange(89.9,-89.9-dtheta,-dtheta).tolist() + lons = len(lats)*[self.projparams['lon_0']+179.9] + xx,yy = self(lons,lats) + x = x+xx; y = y+yy + # bottom. + lons = NX.arange(self.projparams['lon_0']+179.9,self.projparams['lon_0']-180-dtheta,-dtheta).tolist() + lats = len(lons)*[-89.9] + xx,yy = self(lons,lats) + x = x+xx; y = y+yy + x = npy.array(x,npy.float64) + y = npy.array(y,npy.float64) + else: # all other projections are rectangular. + # left side (x = xmin, ymin <= y <= ymax) + yy = npy.arange(self.ymin, self.ymax+0.5*dy, dy) + x = len(yy)*[self.xmin]; y = yy.tolist() + # top (y = ymax, xmin <= x <= xmax) + xx = npy.arange(self.xmin, self.xmax+0.5*dx, dx) + x = x + xx.tolist() + y = y + len(xx)*[self.ymax] + # right side (x = xmax, ymin <= y <= ymax) + yy = npy.arange(self.ymax, self.ymin-0.5*dy, -dy) + x = x + len(yy)*[self.xmax]; y = y + yy.tolist() + # bottom (y = ymin, xmin <= x <= xmax) + xx = npy.arange(self.xmax, self.xmin-0.5*dx, -dx) + x = x + xx.tolist() + y = y + len(xx)*[self.ymin] + x = npy.array(x,npy.float64) + y = npy.array(y,npy.float64) + lons, lats = self(x,y,inverse=True) + # fix lons so there are no jumps. + n = 1 + lonprev = lons[0] + for lon,lat in zip(lons[1:],lats[1:]): + if npy.abs(lon-lonprev) > 90.: + if lonprev < 0: + lon = lon - 360. + else: + lon = lon + 360 + lons[n] = lon + lonprev = lon + n = n + 1 + return PolygonShape(zip(lons,lats)) + + def drawmapboundary(self,color='k',linewidth=1.0,ax=None): """ draw boundary around map projection region. If ax=None (default), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 03:16:10
|
Revision: 4075 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4075&view=rev Author: jswhit Date: 2007-10-31 20:16:07 -0700 (Wed, 31 Oct 2007) Log Message: ----------- new setup.py Modified Paths: -------------- trunk/toolkits/basemap-testing/setup.py Modified: trunk/toolkits/basemap-testing/setup.py =================================================================== --- trunk/toolkits/basemap-testing/setup.py 2007-11-01 03:10:51 UTC (rev 4074) +++ trunk/toolkits/basemap-testing/setup.py 2007-11-01 03:16:07 UTC (rev 4075) @@ -13,9 +13,6 @@ from distutils.core import Extension from distutils.util import convert_path -import numpy - - def dbf_macros(): """Return the macros to define when compiling the dbflib wrapper. @@ -39,9 +36,7 @@ packages = ['matplotlib.toolkits.basemap'] package_dirs = {'':'lib'} -extensions = [Extension("matplotlib.toolkits.basemap._proj", - deps+['src/_proj.c'], - include_dirs = ['src', numpy.get_include()],)] +extensions = [Extension("matplotlib.toolkits.basemap._proj",deps+['src/_proj.c'],include_dirs = ['src'],)] extensions.append(Extension("matplotlib.toolkits.basemap._geod",deps+['src/_geod.c'],include_dirs = ['src'],)) # install shapelib and dbflib. @@ -66,30 +61,19 @@ if 'setuptools' in sys.modules: # Are we running with setuptools? # if so, need to specify all the packages in heirarchy - additional_params = {'namespace_packages' : ['matplotlib.toolkits']} + additional_params = {'namespace_packages' : ['matplotlib.toolkits']} packages.extend(['matplotlib', 'matplotlib.toolkits']) setup = setuptools.setup else: additional_params = {} from distutils.core import setup - - + + # Specify all the required mpl data pyproj_datafiles = ['data/epsg', 'data/esri', 'data/esri.extra', 'data/GL27', 'data/nad.lst', 'data/nad27', 'data/nad83', 'data/ntv2_out.dist', 'data/other.extra', 'data/pj_out27.dist', 'data/pj_out83.dist', 'data/proj_def.dat', 'data/README', 'data/td_out.dist', 'data/test27', 'data/test83', 'data/testntv2', 'data/testvarious', 'data/world'] -basemap_datafiles = [ 'data/countries_c.txt', - 'data/states_c.txt', - 'data/rivers_c.txt', - 'data/gshhs_c.txt', - 'data/countries_l.txt', - 'data/states_l.txt', - 'data/rivers_l.txt', - 'data/gshhs_l.txt', - 'data/countries_i.txt', - 'data/states_i.txt', - 'data/rivers_i.txt', - 'data/gshhs_i.txt', - 'data/5minmask.bin', - ] +boundaryfiles = glob.glob('lib/matplotlib/toolkits/basemap/data/*dat') +boundaryfiles = [os.path.join('data',os.path.basename(bfile)) for bfile in boundaryfiles] +basemap_datafiles = boundaryfiles + ['data/5minmask.bin'] package_data = {'matplotlib.toolkits.basemap':pyproj_datafiles+basemap_datafiles} setup( name = "basemap", @@ -108,8 +92,8 @@ license = "OSI Approved", keywords = ["python","plotting","plots","graphs","charts","GIS","mapping","map projections","maps"], classifiers = ["Development Status :: 4 - Beta", - "Intended Audience :: Science/Research", - "License :: OSI Approved", + "Intended Audience :: Science/Research", + "License :: OSI Approved", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Libraries :: Python Modules", "Operating System :: OS Independent"], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-01 03:10:53
|
Revision: 4074 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4074&view=rev Author: jswhit Date: 2007-10-31 20:10:51 -0700 (Wed, 31 Oct 2007) Log Message: ----------- created new branch for testing Shapely integration Added Paths: ----------- trunk/toolkits/basemap-testing/ Copied: trunk/toolkits/basemap-testing (from rev 4073, trunk/toolkits/basemap) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ds...@us...> - 2007-10-31 19:53:53
|
Revision: 4073 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4073&view=rev Author: dsdale Date: 2007-10-31 12:53:35 -0700 (Wed, 31 Oct 2007) Log Message: ----------- add STIX license agreement Added Paths: ----------- trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/LICENSE_STIX trunk/matplotlib/license/LICENSE_STIX Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/LICENSE_STIX =================================================================== --- trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/LICENSE_STIX (rev 0) +++ trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/LICENSE_STIX 2007-10-31 19:53:35 UTC (rev 4073) @@ -0,0 +1,71 @@ +TERMS AND CONDITIONS + + 1. Permission is hereby granted, free of charge, to any person +obtaining a copy of the STIX Fonts-TM set accompanying this license +(collectively, the "Fonts") and the associated documentation files +(collectively with the Fonts, the "Font Software"), to reproduce and +distribute the Font Software, including the rights to use, copy, merge +and publish copies of the Font Software, and to permit persons to whom +the Font Software is furnished to do so same, subject to the following +terms and conditions (the "License"). + + 2. The following copyright and trademark notice and these Terms and +Conditions shall be included in all copies of one or more of the Font +typefaces and any derivative work created as permitted under this +License: + + Copyright (c) 2001-2005 by the STI Pub Companies, consisting of +the American Institute of Physics, the American Chemical Society, the +American Mathematical Society, the American Physical Society, Elsevier, +Inc., and The Institute of Electrical and Electronic Engineers, Inc. +Portions copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright +(c) 1990 by Elsevier, Inc. All rights reserved. STIX Fonts-TM is a +trademark of The Institute of Electrical and Electronics Engineers, Inc. + + 3. You may (a) convert the Fonts from one format to another (e.g., +from TrueType to PostScript), in which case the normal and reasonable +distortion that occurs during such conversion shall be permitted and (b) +embed or include a subset of the Fonts in a document for the purposes of +allowing users to read text in the document that utilizes the Fonts. In +each case, you may use the STIX Fonts-TM mark to designate the resulting +Fonts or subset of the Fonts. + + 4. You may also (a) add glyphs or characters to the Fonts, or modify +the shape of existing glyphs, so long as the base set of glyphs is not +removed and (b) delete glyphs or characters from the Fonts, provided +that the resulting font set is distributed with the following +disclaimer: "This [name] font does not include all the Unicode points +covered in the STIX Fonts-TM set but may include others." In each case, +the name used to denote the resulting font set shall not include the +term "STIX" or any similar term. + + 5. You may charge a fee in connection with the distribution of the +Font Software, provided that no copy of one or more of the individual +Font typefaces that form the STIX Fonts-TM set may be sold by itself. + + 6. THE FONT SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK OR OTHER RIGHT. IN NO EVENT SHALL +MICROPRESS OR ANY OF THE STI PUB COMPANIES BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, INCLUDING, BUT NOT LIMITED TO, ANY GENERAL, +SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR OUT OF THE USE OR +INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT +SOFTWARE. + + 7. Except as contained in the notice set forth in Section 2, the +names MicroPress Inc. and STI Pub Companies, as well as the names of the +companies/organizations that compose the STI Pub Companies, shall not be +used in advertising or otherwise to promote the sale, use or other +dealings in the Font Software without the prior written consent of the +respective company or organization. + + 8. This License shall become null and void in the event of any +material breach of the Terms and Conditions herein by licensee. + + 9. A substantial portion of the STIX Fonts set was developed by +MicroPress Inc. for the STI Pub Companies. To obtain additional +mathematical fonts, please contact MicroPress, Inc., 68-30 Harrow +Street, Forest Hills, NY 11375, USA - Phone: (718) 575-1816. + Added: trunk/matplotlib/license/LICENSE_STIX =================================================================== --- trunk/matplotlib/license/LICENSE_STIX (rev 0) +++ trunk/matplotlib/license/LICENSE_STIX 2007-10-31 19:53:35 UTC (rev 4073) @@ -0,0 +1,71 @@ +TERMS AND CONDITIONS + + 1. Permission is hereby granted, free of charge, to any person +obtaining a copy of the STIX Fonts-TM set accompanying this license +(collectively, the "Fonts") and the associated documentation files +(collectively with the Fonts, the "Font Software"), to reproduce and +distribute the Font Software, including the rights to use, copy, merge +and publish copies of the Font Software, and to permit persons to whom +the Font Software is furnished to do so same, subject to the following +terms and conditions (the "License"). + + 2. The following copyright and trademark notice and these Terms and +Conditions shall be included in all copies of one or more of the Font +typefaces and any derivative work created as permitted under this +License: + + Copyright (c) 2001-2005 by the STI Pub Companies, consisting of +the American Institute of Physics, the American Chemical Society, the +American Mathematical Society, the American Physical Society, Elsevier, +Inc., and The Institute of Electrical and Electronic Engineers, Inc. +Portions copyright (c) 1998-2003 by MicroPress, Inc. Portions copyright +(c) 1990 by Elsevier, Inc. All rights reserved. STIX Fonts-TM is a +trademark of The Institute of Electrical and Electronics Engineers, Inc. + + 3. You may (a) convert the Fonts from one format to another (e.g., +from TrueType to PostScript), in which case the normal and reasonable +distortion that occurs during such conversion shall be permitted and (b) +embed or include a subset of the Fonts in a document for the purposes of +allowing users to read text in the document that utilizes the Fonts. In +each case, you may use the STIX Fonts-TM mark to designate the resulting +Fonts or subset of the Fonts. + + 4. You may also (a) add glyphs or characters to the Fonts, or modify +the shape of existing glyphs, so long as the base set of glyphs is not +removed and (b) delete glyphs or characters from the Fonts, provided +that the resulting font set is distributed with the following +disclaimer: "This [name] font does not include all the Unicode points +covered in the STIX Fonts-TM set but may include others." In each case, +the name used to denote the resulting font set shall not include the +term "STIX" or any similar term. + + 5. You may charge a fee in connection with the distribution of the +Font Software, provided that no copy of one or more of the individual +Font typefaces that form the STIX Fonts-TM set may be sold by itself. + + 6. THE FONT SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK OR OTHER RIGHT. IN NO EVENT SHALL +MICROPRESS OR ANY OF THE STI PUB COMPANIES BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, INCLUDING, BUT NOT LIMITED TO, ANY GENERAL, +SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM OR OUT OF THE USE OR +INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT +SOFTWARE. + + 7. Except as contained in the notice set forth in Section 2, the +names MicroPress Inc. and STI Pub Companies, as well as the names of the +companies/organizations that compose the STI Pub Companies, shall not be +used in advertising or otherwise to promote the sale, use or other +dealings in the Font Software without the prior written consent of the +respective company or organization. + + 8. This License shall become null and void in the event of any +material breach of the Terms and Conditions herein by licensee. + + 9. A substantial portion of the STIX Fonts set was developed by +MicroPress Inc. for the STI Pub Companies. To obtain additional +mathematical fonts, please contact MicroPress, Inc., 68-30 Harrow +Street, Forest Hills, NY 11375, USA - Phone: (718) 575-1816. + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ds...@us...> - 2007-10-31 19:43:58
|
Revision: 4072 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4072&view=rev Author: dsdale Date: 2007-10-31 12:43:54 -0700 (Wed, 31 Oct 2007) Log Message: ----------- added STIX fonts Added Paths: ----------- trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/ trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXBeta.zip trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneral.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralBolIta.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralItalic.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntDis.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntDisBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntSma.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntSmaBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUp.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpDis.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpDisBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpSma.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpSmaBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUni.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniBolIta.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniIta.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz1Sym.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz1SymBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz2Sym.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz2SymBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz3Sym.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz3SymBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz4Sym.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz4SymBol.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz5Sym.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXVar.otf trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXVarBol.otf Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXBeta.zip =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXBeta.zip ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneral.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneral.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralBolIta.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralBolIta.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralItalic.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXGeneralItalic.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntDis.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntDis.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntDisBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntDisBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntSma.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntSma.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntSmaBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntSmaBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUp.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUp.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpDis.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpDis.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpDisBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpDisBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpSma.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpSma.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpSmaBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXIntUpSmaBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUni.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUni.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniBolIta.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniBolIta.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniIta.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXNonUniIta.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz1Sym.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz1Sym.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz1SymBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz1SymBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz2Sym.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz2Sym.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz2SymBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz2SymBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz3Sym.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz3Sym.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz3SymBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz3SymBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz4Sym.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz4Sym.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz4SymBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz4SymBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz5Sym.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXSiz5Sym.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXVar.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXVar.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXVarBol.otf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/mpl-data/fonts/otf/STIXVarBol.otf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ef...@us...> - 2007-10-31 06:01:00
|
Revision: 4071 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4071&view=rev Author: efiring Date: 2007-10-30 23:00:56 -0700 (Tue, 30 Oct 2007) Log Message: ----------- Numpification and some reformatting of pyproj and proj Modified Paths: -------------- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/proj.py trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/pyproj.py Modified: trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/proj.py =================================================================== --- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/proj.py 2007-10-31 05:56:06 UTC (rev 4070) +++ trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/proj.py 2007-10-31 06:00:56 UTC (rev 4071) @@ -1,4 +1,4 @@ -import matplotlib.numerix as NX +import numpy as npy import pyproj import math @@ -6,36 +6,44 @@ _dg2rad = math.radians(1.) _rad2dg = math.degrees(1.) +_upper_right_out_of_bounds = ( + 'the upper right corner of the plot is not in the map projection region') + +_lower_left_out_of_bounds = ( + 'the lower left corner of the plot is not in the map projection region') + + class Proj(object): """ - peforms cartographic transformations (converts from longitude,latitude - to native map projection x,y coordinates and vice versa) using proj - (http://proj.maptools.org/) - Uses a pyrex generated C-interface to libproj. - - __init__ method sets up projection information. - __call__ method compute transformations. - See docstrings for __init__ and __call__ for details. + peforms cartographic transformations (converts from longitude,latitude + to native map projection x,y coordinates and vice versa) using proj + (http://proj.maptools.org/) + Uses a pyrex generated C-interface to libproj. - Contact: Jeff Whitaker <jef...@no...> + __init__ method sets up projection information. + __call__ method compute transformations. + See docstrings for __init__ and __call__ for details. + + Contact: Jeff Whitaker <jef...@no...> """ - def __init__(self,projparams,llcrnrlon,llcrnrlat,urcrnrlon,urcrnrlat,urcrnrislatlon=True): + def __init__(self,projparams,llcrnrlon,llcrnrlat, + urcrnrlon,urcrnrlat,urcrnrislatlon=True): """ - initialize a Proj class instance. + initialize a Proj class instance. - Input 'projparams' is a dictionary containing proj map - projection control parameter key/value pairs. - See the proj documentation (http://www.remotesensing.org/proj/) - for details. + Input 'projparams' is a dictionary containing proj map + projection control parameter key/value pairs. + See the proj documentation (http://www.remotesensing.org/proj/) + for details. - llcrnrlon,llcrnrlat are lon and lat (in degrees) of lower left hand corner - of projection region. + llcrnrlon,llcrnrlat are lon and lat (in degrees) of lower + left hand corner of projection region. - urcrnrlon,urcrnrlat are lon and lat (in degrees) of upper right hand corner - of projection region if urcrnrislatlon=True (default). Otherwise, - urcrnrlon,urcrnrlat are x,y in projection coordinates (units meters), - assuming the lower left corner is x=0,y=0. + urcrnrlon,urcrnrlat are lon and lat (in degrees) of upper + right hand corner of projection region if urcrnrislatlon=True + (default). Otherwise, urcrnrlon,urcrnrlat are x,y in projection + coordinates (units meters), assuming the lower left corner is x=0,y=0. """ self.projparams = projparams self.projection = projparams['proj'] @@ -63,8 +71,9 @@ llcrnrx = llcrnrlon llcrnry = llcrnrlat elif self.projection == 'ortho': - if llcrnrlon == -180 and llcrnrlat == -90 and urcrnrlon == 180 and urcrnrlat == 90: - self._fulldisk = True + if (llcrnrlon == -180 and llcrnrlat == -90 and + urcrnrlon == 180 and urcrnrlat == 90): + self._fulldisk = True self._proj4 = pyproj.Proj(projparams) llcrnrx = -self.rmajor llcrnry = -self.rmajor @@ -75,27 +84,28 @@ self._proj4 = pyproj.Proj(projparams) llcrnrx, llcrnry = self(llcrnrlon,llcrnrlat) if llcrnrx > 1.e20 or llcrnry > 1.e20: - raise ValueError('the lower left corner of the plot is not in the map projection region') + raise ValueError(_lower_left_out_of_bounds) elif self.projection == 'geos': self._proj4 = pyproj.Proj(projparams) # find major and minor axes of ellipse defining map proj region. delta = 0.01 - lats = NX.arange(0,90,delta) + lats = npy.arange(0,90,delta) lon_0 = projparams['lon_0'] - lons = lon_0*NX.ones(len(lats),'d') + lons = lon_0*npy.ones(len(lats),'d') x, y = self._proj4(lons, lats) yi = (y > 1.e20).tolist() ny = yi.index(1)-1 height = y[ny] - lons = NX.arange(lon_0,lon_0+90,delta) - lats = NX.zeros(len(lons),'d') + lons = npy.arange(lon_0,lon_0+90,delta) + lats = npy.zeros(len(lons),'d') x, y = self(lons, lats) xi = (x > 1.e20).tolist() nx = xi.index(1)-1 width = x[nx] self._height = height self._width = width - if llcrnrlon == -180 and llcrnrlat == -90 and urcrnrlon == 180 and urcrnrlat == 90: + if (llcrnrlon == -180 and llcrnrlat == -90 and + urcrnrlon == 180 and urcrnrlat == 90): self._fulldisk = True llcrnrx = -width llcrnry = -height @@ -105,7 +115,7 @@ self._fulldisk = False llcrnrx, llcrnry = self(llcrnrlon,llcrnrlat) if llcrnrx > 1.e20 or llcrnry > 1.e20: - raise ValueError('the lower left corner of the plot is not in the map projection region') + raise ValueError(_lower_left_out_of_bounds) elif self.projection in ['moll','robin','sinu']: self._proj4 = pyproj.Proj(projparams) xtmp,urcrnry = self(projparams['lon_0'],90.) @@ -116,7 +126,7 @@ # note that for 'cyl' x,y == lon,lat self.projparams['x_0']=-llcrnrx self.projparams['y_0']=-llcrnry - # reset with x_0, y_0. + # reset with x_0, y_0. if self.projection != 'cyl': self._proj4 = pyproj.Proj(projparams) llcrnry = 0. @@ -136,7 +146,7 @@ else: urcrnrx,urcrnry = self(urcrnrlon,urcrnrlat) if urcrnrx > 1.e20 or urcrnry > 1.e20: - raise ValueError('the upper right corner of the plot is not in the map projection region') + raise ValueError(_upper_right_out_of_bounds) elif self.projection == 'geos': if self._fulldisk: urcrnrx = 2.*self._width @@ -144,7 +154,7 @@ else: urcrnrx,urcrnry = self(urcrnrlon,urcrnrlat) if urcrnrx > 1.e20 or urcrnry > 1.e20: - raise ValueError('the upper right corner of the plot is not in the map projection region') + raise ValueError(_upper_right_out_of_bounds) elif self.projection in ['moll','robin','sinu']: xtmp,urcrnry = self(projparams['lon_0'],90.) urcrnrx,xtmp = self(projparams['lon_0']+180.,0) @@ -172,24 +182,38 @@ self.ymax = llcrnry self.ymin = urcrnry - def __call__(self,x,y,inverse=False): + def __call__(self, *args, **kw): + # x,y,inverse=False): """ - Calling a Proj class instance with the arguments lon, lat will - convert lon/lat (in degrees) to x/y native map projection - coordinates (in meters). If optional keyword 'inverse' is - True (default is False), the inverse transformation from x/y - to lon/lat is performed. + Calling a Proj class instance with the arguments lon, lat will + convert lon/lat (in degrees) to x/y native map projection + coordinates (in meters). If optional keyword 'inverse' is + True (default is False), the inverse transformation from x/y + to lon/lat is performed. - For cylindrical equidistant projection ('cyl'), this - does nothing (i.e. x,y == lon,lat). + For cylindrical equidistant projection ('cyl'), this + does nothing (i.e. x,y == lon,lat). - lon,lat can be either scalar floats or N arrays. + lon,lat can be either scalar floats or N arrays. """ + if len(args) == 1: + xy = args[0] + onearray = True + else: + x,y = args + onearray = False if self.projection == 'cyl': # for cyl x,y == lon,lat - return x,y + if onearray: + return xy + else: + return x,y + inverse = kw.get('inverse', False) + if onearray: + outxy = self._proj4(xy, inverse=inverse) + else: + outx,outy = self._proj4(x, y, inverse=inverse) if inverse: - outx,outy = self._proj4(x,y,inverse=True) - if self.projection in ['merc','mill']: + if self.projection in ['merc','mill']: if self.projection == 'merc': coslat = math.cos(math.radians(self.projparams['lat_ts'])) sinlat = math.sin(math.radians(self.projparams['lat_ts'])) @@ -199,12 +223,14 @@ # radius of curvature of the ellipse perpendicular to # the plane of the meridian. rcurv = self.rmajor*coslat/math.sqrt(1.-self.esq*sinlat**2) - try: # x a scalar or an array - outx = _rad2dg*(x/rcurv) + self.llcrnrlon - except: # x a sequence - outx = [_rad2dg*(xi/rcurv) + self.llcrnrlon for xi in x] + if onearray: + outxy[:,0] = _rad2dg*(xy[:,0]/rcurv) + self.llcrnrlon + else: + try: # x a scalar or an array + outx = _rad2dg*(x/rcurv) + self.llcrnrlon + except: # x a sequence + outx = [_rad2dg*(xi/rcurv) + self.llcrnrlon for xi in x] else: - outx,outy = self._proj4(x,y) if self.projection in ['merc','mill']: if self.projection == 'merc': coslat = math.cos(math.radians(self.projparams['lat_ts'])) @@ -215,28 +241,52 @@ # radius of curvature of the ellipse perpendicular to # the plane of the meridian. rcurv = self.rmajor*coslat/math.sqrt(1.-self.esq*sinlat**2) - try: # x is a scalar or an array - outx = rcurv*_dg2rad*(x-self.llcrnrlon) - except: # x is a sequence. - outx = [rcurv*_dg2rad*(xi-self.llcrnrlon) for xi in x] - return outx,outy + if onearray: + outxy[:,0] = rcurv*_dg2rad*(xy[:,0]-self.llcrnrlon) + else: + try: # x is a scalar or an array + outx = rcurv*_dg2rad*(x-self.llcrnrlon) + except: # x is a sequence. + outx = [rcurv*_dg2rad*(xi-self.llcrnrlon) for xi in x] + if onearray: + return outxy + else: + return outx, outy def makegrid(self,nx,ny,returnxy=False): """ - return arrays of shape (ny,nx) containing lon,lat coordinates of - an equally spaced native projection grid. - if returnxy=True, the x,y values of the grid are returned also. + return arrays of shape (ny,nx) containing lon,lat coordinates of + an equally spaced native projection grid. + if returnxy=True, the x,y values of the grid are returned also. """ dx = (self.urcrnrx-self.llcrnrx)/(nx-1) dy = (self.urcrnry-self.llcrnry)/(ny-1) - x = self.llcrnrx+dx*NX.indices((ny,nx),NX.Float32)[1,:,:] - y = self.llcrnry+dy*NX.indices((ny,nx),NX.Float32)[0,:,:] + x = self.llcrnrx+dx*npy.indices((ny,nx),npy.float32)[1,:,:] + y = self.llcrnry+dy*npy.indices((ny,nx),npy.float32)[0,:,:] lons, lats = self(x, y, inverse=True) if returnxy: return lons, lats, x, y else: return lons, lats + def makegrid3d(self,nx,ny,returnxy=False): + """ + return array of shape (ny,nx, 2) containing lon,lat coordinates of + an equally spaced native projection grid. + if returnxy=True, the x,y values of the grid are returned also. + """ + dx = (self.urcrnrx-self.llcrnrx)/(nx-1) + dy = (self.urcrnry-self.llcrnry)/(ny-1) + xy = npy.empty((ny,nx,2), npy.float64) + xy[...,0] = self.llcrnrx+dx*npy.indices((ny,nx),npy.float32)[1,:,:] + xy[...,1] = self.llcrnry+dy*npy.indices((ny,nx),npy.float32)[0,:,:] + lonlat = self(xy, inverse=True) + if returnxy: + return lonlat, xy + else: + return lonlat + + if __name__ == "__main__": params = {} @@ -247,10 +297,10 @@ params['lon_0'] = -107 nx = 349; ny = 277; dx = 32463.41; dy = dx awips221 = Proj(params,-145.5,1.0,(nx-1)*dx,(ny-1)*dy,urcrnrislatlon=False) -# AWIPS grid 221 parameters -# (from http://www.nco.ncep.noaa.gov/pmb/docs/on388/tableb.html) + # AWIPS grid 221 parameters + # (from http://www.nco.ncep.noaa.gov/pmb/docs/on388/tableb.html) llcornerx, llcornery = awips221(-145.5,1.) -# find 4 lon/lat corners of AWIPS grid 221. + # find 4 lon/lat corners of AWIPS grid 221. llcornerx = 0.; llcornery = 0. lrcornerx = dx*(nx-1); lrcornery = 0. ulcornerx = 0.; ulcornery = dy*(ny-1) @@ -270,13 +320,22 @@ print ' -68.318 0.897' print ' -2.566 46.352' print ' 148.639 46.635' -# compute lons and lats for the whole AWIPS grid 221 (377x249). + # compute lons and lats for the whole AWIPS grid 221 (377x249). import time; t1 = time.clock() lons, lats = awips221.makegrid(nx,ny) t2 = time.clock() print 'compute lats/lons for all points on AWIPS 221 grid (%sx%s)' %(nx,ny) print 'max/min lons' - print min(NX.ravel(lons)),max(NX.ravel(lons)) + print min(npy.ravel(lons)),max(npy.ravel(lons)) print 'max/min lats' - print min(NX.ravel(lats)),max(NX.ravel(lats)) + print min(npy.ravel(lats)),max(npy.ravel(lats)) print 'took',t2-t1,'secs' + print 'Same thing but with a single 3-D array' + t1 = time.clock() + lonlat, xy = awips221.makegrid3d(nx,ny, returnxy=True) + t2 = time.clock() + print 'took',t2-t1,'secs' + + assert (lons==lonlat[...,0]).all(), "The longitudes are different" + assert (lats==lonlat[...,1]).all(), "The latitudes are different" + Modified: trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/pyproj.py =================================================================== --- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/pyproj.py 2007-10-31 05:56:06 UTC (rev 4070) +++ trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/pyproj.py 2007-10-31 06:00:56 UTC (rev 4071) @@ -1,5 +1,5 @@ """ -Pyrex wrapper to provide python interfaces to +Pyrex wrapper to provide python interfaces to PROJ.4 (http://proj.maptools.org) functions. Performs cartographic transformations and geodetic computations. @@ -53,68 +53,69 @@ from array import array from types import TupleType, ListType, NoneType import os +import numpy as npy pyproj_datadir = os.sep.join([os.path.dirname(__file__), 'data']) set_datapath(pyproj_datadir) class Proj(_Proj): """ -performs cartographic transformations (converts from -longitude,latitude to native map projection x,y coordinates and -vice versa) using proj (http://proj.maptools.org/) + performs cartographic transformations (converts from + longitude,latitude to native map projection x,y coordinates and + vice versa) using proj (http://proj.maptools.org/) -A Proj class instance is initialized with proj map projection -control parameter key/value pairs. The key/value pairs can -either be passed in a dictionary, or as keyword arguments. See -http://www.remotesensing.org/geotiff/proj_list for examples of -key/value pairs defining different map projections. + A Proj class instance is initialized with proj map projection + control parameter key/value pairs. The key/value pairs can + either be passed in a dictionary, or as keyword arguments. See + http://www.remotesensing.org/geotiff/proj_list for examples of + key/value pairs defining different map projections. -Calling a Proj class instance with the arguments lon, lat will -convert lon/lat (in degrees) to x/y native map projection -coordinates (in meters). If optional keyword 'inverse' is True -(default is False), the inverse transformation from x/y to -lon/lat is performed. If optional keyword 'radians' is True -(default is False) lon/lat are interpreted as radians instead of -degrees. If optional keyword 'errcheck' is True (default is -False) an exception is raised if the transformation is invalid. -If errcheck=False and the transformation is invalid, no -exception is raised and 1.e30 is returned. + Calling a Proj class instance with the arguments lon, lat will + convert lon/lat (in degrees) to x/y native map projection + coordinates (in meters). If optional keyword 'inverse' is True + (default is False), the inverse transformation from x/y to + lon/lat is performed. If optional keyword 'radians' is True + (default is False) lon/lat are interpreted as radians instead of + degrees. If optional keyword 'errcheck' is True (default is + False) an exception is raised if the transformation is invalid. + If errcheck=False and the transformation is invalid, no + exception is raised and 1.e30 is returned. -Works with numpy and regular python array objects, python -sequences and scalars. + Works with numpy and regular python array objects, python + sequences and scalars. """ def __new__(self, projparams=None, **kwargs): """ -initialize a Proj class instance. + initialize a Proj class instance. -Proj4 projection control parameters must either be given in a -dictionary 'projparams' or as keyword arguments. See the proj -documentation (http://proj.maptools.org) for more information -about specifying projection parameters. + Proj4 projection control parameters must either be given in a + dictionary 'projparams' or as keyword arguments. See the proj + documentation (http://proj.maptools.org) for more information + about specifying projection parameters. -Example usage: + Example usage: ->>> from pyproj import Proj ->>> p = Proj(proj='utm',zone=10,ellps='WGS84') ->>> x,y = p(-120.108, 34.36116666) ->>> print 'x=%9.3f y=%11.3f' % (x,y) -x=765975.641 y=3805993.134 ->>> print 'lon=%8.3f lat=%5.3f' % p(x,y,inverse=True) -lon=-120.108 lat=34.361 ->>> # do 3 cities at a time in a tuple (Fresno, LA, SF) ->>> lons = (-119.72,-118.40,-122.38) ->>> lats = (36.77, 33.93, 37.62 ) ->>> x,y = p(lons, lats) ->>> print 'x: %9.3f %9.3f %9.3f' % x -x: 792763.863 925321.537 554714.301 ->>> print 'y: %9.3f %9.3f %9.3f' % y -y: 4074377.617 3763936.941 4163835.303 ->>> lons, lats = p(x, y, inverse=True) # inverse transform ->>> print 'lons: %8.3f %8.3f %8.3f' % lons -lons: -119.720 -118.400 -122.380 ->>> print 'lats: %8.3f %8.3f %8.3f' % lats -lats: 36.770 33.930 37.620 + >>> from pyproj import Proj + >>> p = Proj(proj='utm',zone=10,ellps='WGS84') + >>> x,y = p(-120.108, 34.36116666) + >>> print 'x=%9.3f y=%11.3f' % (x,y) + x=765975.641 y=3805993.134 + >>> print 'lon=%8.3f lat=%5.3f' % p(x,y,inverse=True) + lon=-120.108 lat=34.361 + >>> # do 3 cities at a time in a tuple (Fresno, LA, SF) + >>> lons = (-119.72,-118.40,-122.38) + >>> lats = (36.77, 33.93, 37.62 ) + >>> x,y = p(lons, lats) + >>> print 'x: %9.3f %9.3f %9.3f' % x + x: 792763.863 925321.537 554714.301 + >>> print 'y: %9.3f %9.3f %9.3f' % y + y: 4074377.617 3763936.941 4163835.303 + >>> lons, lats = p(x, y, inverse=True) # inverse transform + >>> print 'lons: %8.3f %8.3f %8.3f' % lons + lons: -119.720 -118.400 -122.380 + >>> print 'lats: %8.3f %8.3f %8.3f' % lats + lats: 36.770 33.930 37.620 """ # if projparams is None, use kwargs. if projparams is None: @@ -130,25 +131,42 @@ projparams['units']='m' return _Proj.__new__(self, projparams) - def __call__(self,lon,lat,inverse=False,radians=False,errcheck=False): + def __call__(self, *args, **kw): + #,lon,lat,inverse=False,radians=False,errcheck=False): """ -Calling a Proj class instance with the arguments lon, lat will -convert lon/lat (in degrees) to x/y native map projection -coordinates (in meters). If optional keyword 'inverse' is True -(default is False), the inverse transformation from x/y to -lon/lat is performed. If optional keyword 'radians' is True -(default is False) the units of lon/lat are radians instead of -degrees. If optional keyword 'errcheck' is True (default is -False) an exception is raised if the transformation is invalid. -If errcheck=False and the transformation is invalid, no -execption is raised and 1.e30 is returned. + Calling a Proj class instance with the arguments lon, lat will + convert lon/lat (in degrees) to x/y native map projection + coordinates (in meters). If optional keyword 'inverse' is True + (default is False), the inverse transformation from x/y to + lon/lat is performed. If optional keyword 'radians' is True + (default is False) the units of lon/lat are radians instead of + degrees. If optional keyword 'errcheck' is True (default is + False) an exception is raised if the transformation is invalid. + If errcheck=False and the transformation is invalid, no + exception is raised and 1.e30 is returned. -Inputs should be doubles (they will be cast to doubles if they -are not, causing a slight performance hit). + Instead of calling with lon, lat, a single ndarray of + shape n,2 may be used, and one of the same shape will + be returned; this is more efficient. -Works with numpy and regular python array objects, python -sequences and scalars, but is fastest for array objects. + Inputs should be doubles (they will be cast to doubles if they + are not, causing a slight performance hit). + + Works with numpy and regular python array objects, python + sequences and scalars, but is fastest for array objects. """ + inverse = kw.get('inverse', False) + radians = kw.get('radians', False) + errcheck = kw.get('errcheck', False) + if len(args) == 1: + latlon = npy.array(args[0], copy=True, + order='C', dtype=float, ndmin=2) + if inverse: + _Proj._invn(self, latlon, radians=radians, errcheck=errcheck) + else: + _Proj._fwdn(self, latlon, radians=radians, errcheck=errcheck) + return latlon + lon, lat = args # process inputs, making copies that support buffer API. inx, xisfloat, xislist, xistuple = _copytobuffer(lon) iny, yisfloat, yislist, yistuple = _copytobuffer(lat) @@ -172,68 +190,68 @@ def transform(p1, p2, x, y, z=None, radians=False): """ -x2, y2, z2 = transform(p1, p2, x1, y1, z1, radians=False) + x2, y2, z2 = transform(p1, p2, x1, y1, z1, radians=False) -Transform points between two coordinate systems defined by the -Proj instances p1 and p2. + Transform points between two coordinate systems defined by the + Proj instances p1 and p2. -The points x1,y1,z1 in the coordinate system defined by p1 are -transformed to x2,y2,z2 in the coordinate system defined by p2. + The points x1,y1,z1 in the coordinate system defined by p1 are + transformed to x2,y2,z2 in the coordinate system defined by p2. -z1 is optional, if it is not set it is assumed to be zero (and -only x2 and y2 are returned). + z1 is optional, if it is not set it is assumed to be zero (and + only x2 and y2 are returned). -In addition to converting between cartographic and geographic -projection coordinates, this function can take care of datum -shifts (which cannot be done using the __call__ method of the -Proj instances). It also allows for one of the coordinate -systems to be geographic (proj = 'latlong'). + In addition to converting between cartographic and geographic + projection coordinates, this function can take care of datum + shifts (which cannot be done using the __call__ method of the + Proj instances). It also allows for one of the coordinate + systems to be geographic (proj = 'latlong'). -If optional keyword 'radians' is True (default is False) and p1 -is defined in geographic coordinate (pj.is_latlong() is True), -x1,y1 is interpreted as radians instead of the default degrees. -Similarly, if p2 is defined in geographic coordinates and -radians=True, x2, y2 are returned in radians instead of degrees. -if p1.is_latlong() and p2.is_latlong() both are False, the -radians keyword has no effect. + If optional keyword 'radians' is True (default is False) and p1 + is defined in geographic coordinate (pj.is_latlong() is True), + x1,y1 is interpreted as radians instead of the default degrees. + Similarly, if p2 is defined in geographic coordinates and + radians=True, x2, y2 are returned in radians instead of degrees. + if p1.is_latlong() and p2.is_latlong() both are False, the + radians keyword has no effect. -x,y and z can be numpy or regular python arrays, python -lists/tuples or scalars. Arrays are fastest. For projections in -geocentric coordinates, values of x and y are given in meters. -z is always meters. + x,y and z can be numpy or regular python arrays, python + lists/tuples or scalars. Arrays are fastest. For projections in + geocentric coordinates, values of x and y are given in meters. + z is always meters. -Example usage: + Example usage: ->>> # projection 1: UTM zone 15, grs80 ellipse, NAD83 datum ->>> # (defined by epsg code 26915) ->>> p1 = Proj(init='epsg:26915') ->>> # projection 2: UTM zone 15, clrk66 ellipse, NAD27 datum ->>> p2 = Proj(init='epsg:26715') ->>> # find x,y of Jefferson City, MO. ->>> x1, y1 = p1(-92.199881,38.56694) ->>> # transform this point to projection 2 coordinates. ->>> x2, y2 = transform(p1,p2,x1,y1) ->>> print '%9.3f %11.3f' % (x1,y1) -569704.566 4269024.671 ->>> print '%9.3f %11.3f' % (x2,y2) -569706.333 4268817.680 ->>> print '%8.3f %5.3f' % p2(x2,y2,inverse=True) - -92.200 38.567 ->>> # process 3 points at a time in a tuple ->>> lats = (38.83,39.32,38.75) # Columbia, KC and StL Missouri ->>> lons = (-92.22,-94.72,-90.37) ->>> x1, y1 = p1(lons,lats) ->>> x2, y2 = transform(p1,p2,x1,y1) ->>> xy = x1+y1 ->>> print '%9.3f %9.3f %9.3f %11.3f %11.3f %11.3f' % xy -567703.344 351730.944 728553.093 4298200.739 4353698.725 4292319.005 ->>> xy = x2+y2 ->>> print '%9.3f %9.3f %9.3f %11.3f %11.3f %11.3f' % xy -567705.072 351727.113 728558.917 4297993.157 4353490.111 4292111.678 ->>> lons, lats = p2(x2,y2,inverse=True) ->>> xy = lons+lats ->>> print '%8.3f %8.3f %8.3f %5.3f %5.3f %5.3f' % xy - -92.220 -94.720 -90.370 38.830 39.320 38.750 + >>> # projection 1: UTM zone 15, grs80 ellipse, NAD83 datum + >>> # (defined by epsg code 26915) + >>> p1 = Proj(init='epsg:26915') + >>> # projection 2: UTM zone 15, clrk66 ellipse, NAD27 datum + >>> p2 = Proj(init='epsg:26715') + >>> # find x,y of Jefferson City, MO. + >>> x1, y1 = p1(-92.199881,38.56694) + >>> # transform this point to projection 2 coordinates. + >>> x2, y2 = transform(p1,p2,x1,y1) + >>> print '%9.3f %11.3f' % (x1,y1) + 569704.566 4269024.671 + >>> print '%9.3f %11.3f' % (x2,y2) + 569706.333 4268817.680 + >>> print '%8.3f %5.3f' % p2(x2,y2,inverse=True) + -92.200 38.567 + >>> # process 3 points at a time in a tuple + >>> lats = (38.83,39.32,38.75) # Columbia, KC and StL Missouri + >>> lons = (-92.22,-94.72,-90.37) + >>> x1, y1 = p1(lons,lats) + >>> x2, y2 = transform(p1,p2,x1,y1) + >>> xy = x1+y1 + >>> print '%9.3f %9.3f %9.3f %11.3f %11.3f %11.3f' % xy + 567703.344 351730.944 728553.093 4298200.739 4353698.725 4292319.005 + >>> xy = x2+y2 + >>> print '%9.3f %9.3f %9.3f %11.3f %11.3f %11.3f' % xy + 567705.072 351727.113 728558.917 4297993.157 4353490.111 4292111.678 + >>> lons, lats = p2(x2,y2,inverse=True) + >>> xy = lons+lats + >>> print '%8.3f %8.3f %8.3f %5.3f %5.3f %5.3f' % xy + -92.220 -94.720 -90.370 38.830 39.320 38.750 """ # process inputs, making copies that support buffer API. inx, xisfloat, xislist, xistuple = _copytobuffer(x) @@ -254,13 +272,13 @@ return outx, outy def _copytobuffer(x): - """ -return a copy of x as an object that supports the python Buffer -API (python array if input is float, list or tuple, numpy array -if input is a numpy array). returns copyofx, isfloat, islist, -istuple (islist is True if input is a list, istuple is true if -input is a tuple, isfloat is true if input is a float). """ + return a copy of x as an object that supports the python Buffer + API (python array if input is float, list or tuple, numpy array + if input is a numpy array). returns copyofx, isfloat, islist, + istuple (islist is True if input is a list, istuple is true if + input is a tuple, isfloat is true if input is a float). + """ # make sure x supports Buffer API and contains doubles. isfloat = False; islist = False; istuple = False # first, if it's a numpy array scalar convert to float @@ -281,7 +299,7 @@ try: x.typecode inx = array('d',x) - except: + except: # try to convert to python array # a list. if type(x) is ListType: @@ -315,107 +333,107 @@ class Geod(_Geod): """ -performs forward and inverse geodetic, or Great Circle, -computations. The forward computation (using the 'fwd' method) -involves determining latitude, longitude and back azimuth of a -terminus point given the latitude and longitude of an initial -point, plus azimuth and distance. The inverse computation (using -the 'inv' method) involves determining the forward and back -azimuths and distance given the latitudes and longitudes of an -initial and terminus point. + performs forward and inverse geodetic, or Great Circle, + computations. The forward computation (using the 'fwd' method) + involves determining latitude, longitude and back azimuth of a + terminus point given the latitude and longitude of an initial + point, plus azimuth and distance. The inverse computation (using + the 'inv' method) involves determining the forward and back + azimuths and distance given the latitudes and longitudes of an + initial and terminus point. """ def __new__(self, initparams=None, **kwargs): """ -initialize a Geod class instance. + initialize a Geod class instance. -Geodetic parameters for specifying the ellipsoid or sphere to -use must either be given in a dictionary 'initparams' or as -keyword arguments. Following is a list of the ellipsoids that -may be defined using the 'ellps' keyword: + Geodetic parameters for specifying the ellipsoid or sphere to + use must either be given in a dictionary 'initparams' or as + keyword arguments. Following is a list of the ellipsoids that + may be defined using the 'ellps' keyword: - MERIT a=6378137.0 rf=298.257 MERIT 1983 - SGS85 a=6378136.0 rf=298.257 Soviet Geodetic System 85 - GRS80 a=6378137.0 rf=298.257222101 GRS 1980(IUGG, 1980) - IAU76 a=6378140.0 rf=298.257 IAU 1976 - airy a=6377563.396 b=6356256.910 Airy 1830 - APL4.9 a=6378137.0. rf=298.25 Appl. Physics. 1965 - NWL9D a=6378145.0. rf=298.25 Naval Weapons Lab., 1965 -mod_airy a=6377340.189 b=6356034.446 Modified Airy - andrae a=6377104.43 rf=300.0 Andrae 1876 (Den., Iclnd.) - aust_SA a=6378160.0 rf=298.25 Australian Natl & S. Amer. 1969 - GRS67 a=6378160.0 rf=298.2471674270 GRS 67(IUGG 1967) - bessel a=6377397.155 rf=299.1528128 Bessel 1841 -bess_nam a=6377483.865 rf=299.1528128 Bessel 1841 (Namibia) - clrk66 a=6378206.4 b=6356583.8 Clarke 1866 - clrk80 a=6378249.145 rf=293.4663 Clarke 1880 mod. - CPM a=6375738.7 rf=334.29 Comm. des Poids et Mesures 1799 - delmbr a=6376428. rf=311.5 Delambre 1810 (Belgium) - engelis a=6378136.05 rf=298.2566 Engelis 1985 - evrst30 a=6377276.345 rf=300.8017 Everest 1830 - evrst48 a=6377304.063 rf=300.8017 Everest 1948 - evrst56 a=6377301.243 rf=300.8017 Everest 1956 - evrst69 a=6377295.664 rf=300.8017 Everest 1969 - evrstSS a=6377298.556 rf=300.8017 Everest (Sabah & Sarawak) - fschr60 a=6378166. rf=298.3 Fischer (Mercury Datum) 1960 -fschr60m a=6378155. rf=298.3 Modified Fischer 1960 - fschr68 a=6378150. rf=298.3 Fischer 1968 - helmert a=6378200. rf=298.3 Helmert 1906 - hough a=6378270.0 rf=297. Hough - intl a=6378388.0 rf=297. International 1909 (Hayford) - krass a=6378245.0 rf=298.3 Krassovsky, 1942 - kaula a=6378163. rf=298.24 Kaula 1961 - lerch a=6378139. rf=298.257 Lerch 1979 - mprts a=6397300. rf=191. Maupertius 1738 -new_intl a=6378157.5 b=6356772.2 New International 1967 - plessis a=6376523. b=6355863. Plessis 1817 (France) - SEasia a=6378155.0 b=6356773.3205 Southeast Asia - walbeck a=6376896.0 b=6355834.8467 Walbeck - WGS60 a=6378165.0 rf=298.3 WGS 60 - WGS66 a=6378145.0 rf=298.25 WGS 66 - WGS72 a=6378135.0 rf=298.26 WGS 72 - WGS84 a=6378137.0 rf=298.257223563 WGS 84 - sphere a=6370997.0 b=6370997.0 Normal Sphere (r=6370997) + MERIT a=6378137.0 rf=298.257 MERIT 1983 + SGS85 a=6378136.0 rf=298.257 Soviet Geodetic System 85 + GRS80 a=6378137.0 rf=298.257222101 GRS 1980(IUGG, 1980) + IAU76 a=6378140.0 rf=298.257 IAU 1976 + airy a=6377563.396 b=6356256.910 Airy 1830 + APL4.9 a=6378137.0. rf=298.25 Appl. Physics. 1965 + NWL9D a=6378145.0. rf=298.25 Naval Weapons Lab., 1965 + mod_airy a=6377340.189 b=6356034.446 Modified Airy + andrae a=6377104.43 rf=300.0 Andrae 1876 (Den., Iclnd.) + aust_SA a=6378160.0 rf=298.25 Australian Natl & S. Amer. 1969 + GRS67 a=6378160.0 rf=298.2471674270 GRS 67(IUGG 1967) + bessel a=6377397.155 rf=299.1528128 Bessel 1841 + bess_nam a=6377483.865 rf=299.1528128 Bessel 1841 (Namibia) + clrk66 a=6378206.4 b=6356583.8 Clarke 1866 + clrk80 a=6378249.145 rf=293.4663 Clarke 1880 mod. + CPM a=6375738.7 rf=334.29 Comm. des Poids et Mesures 1799 + delmbr a=6376428. rf=311.5 Delambre 1810 (Belgium) + engelis a=6378136.05 rf=298.2566 Engelis 1985 + evrst30 a=6377276.345 rf=300.8017 Everest 1830 + evrst48 a=6377304.063 rf=300.8017 Everest 1948 + evrst56 a=6377301.243 rf=300.8017 Everest 1956 + evrst69 a=6377295.664 rf=300.8017 Everest 1969 + evrstSS a=6377298.556 rf=300.8017 Everest (Sabah & Sarawak) + fschr60 a=6378166. rf=298.3 Fischer (Mercury Datum) 1960 + fschr60m a=6378155. rf=298.3 Modified Fischer 1960 + fschr68 a=6378150. rf=298.3 Fischer 1968 + helmert a=6378200. rf=298.3 Helmert 1906 + hough a=6378270.0 rf=297. Hough + intl a=6378388.0 rf=297. International 1909 (Hayford) + krass a=6378245.0 rf=298.3 Krassovsky, 1942 + kaula a=6378163. rf=298.24 Kaula 1961 + lerch a=6378139. rf=298.257 Lerch 1979 + mprts a=6397300. rf=191. Maupertius 1738 + new_intl a=6378157.5 b=6356772.2 New International 1967 + plessis a=6376523. b=6355863. Plessis 1817 (France) + SEasia a=6378155.0 b=6356773.3205 Southeast Asia + walbeck a=6376896.0 b=6355834.8467 Walbeck + WGS60 a=6378165.0 rf=298.3 WGS 60 + WGS66 a=6378145.0 rf=298.25 WGS 66 + WGS72 a=6378135.0 rf=298.26 WGS 72 + WGS84 a=6378137.0 rf=298.257223563 WGS 84 + sphere a=6370997.0 b=6370997.0 Normal Sphere (r=6370997) -The parameters of the ellipsoid may also be set directly using -the 'a' (semi-major or equatorial axis radius) keyword, and -any one of the following keywords: 'b' (semi-minor, -or polar axis radius), 'e' (eccentricity), 'es' (eccentricity -squared), 'f' (flattening), or 'rf' (reciprocal flattening). + The parameters of the ellipsoid may also be set directly using + the 'a' (semi-major or equatorial axis radius) keyword, and + any one of the following keywords: 'b' (semi-minor, + or polar axis radius), 'e' (eccentricity), 'es' (eccentricity + squared), 'f' (flattening), or 'rf' (reciprocal flattening). -See the proj documentation (http://proj.maptools.org) for more -information about specifying ellipsoid parameters (specifically, -the chapter 'Specifying the Earth's figure' in the main Proj -users manual). + See the proj documentation (http://proj.maptools.org) for more + information about specifying ellipsoid parameters (specifically, + the chapter 'Specifying the Earth's figure' in the main Proj + users manual). -Example usage: + Example usage: ->>> from pyproj import Geod ->>> g = Geod(ellps='clrk66') # Use Clarke 1966 ellipsoid. ->>> # specify the lat/lons of some cities. ->>> boston_lat = 42.+(15./60.); boston_lon = -71.-(7./60.) ->>> portland_lat = 45.+(31./60.); portland_lon = -123.-(41./60.) ->>> newyork_lat = 40.+(47./60.); newyork_lon = -73.-(58./60.) ->>> london_lat = 51.+(32./60.); london_lon = -(5./60.) ->>> # compute forward and back azimuths, plus distance ->>> # between Boston and Portland. ->>> az12,az21,dist = g.inv(boston_lon,boston_lat,portland_lon,portland_lat) ->>> print "%7.3f %6.3f %12.3f" % (az12,az21,dist) --66.531 75.654 4164192.708 ->>> # compute latitude, longitude and back azimuth of Portland, ->>> # given Boston lat/lon, forward azimuth and distance to Portland. ->>> endlon, endlat, backaz = g.fwd(boston_lon, boston_lat, az12, dist) ->>> print "%6.3f %6.3f %13.3f" % (endlat,endlon,backaz) -45.517 -123.683 75.654 ->>> # compute the azimuths, distances from New York to several ->>> # cities (pass a list) ->>> lons1 = 3*[newyork_lon]; lats1 = 3*[newyork_lat] ->>> lons2 = [boston_lon, portland_lon, london_lon] ->>> lats2 = [boston_lat, portland_lat, london_lat] ->>> az12,az21,dist = g.inv(lons1,lats1,lons2,lats2) ->>> for faz,baz,d in zip(az12,az21,dist): print "%7.3f %7.3f %9.3f" % (faz,baz,d) - 54.663 -123.448 288303.720 --65.463 79.342 4013037.318 - 51.254 -71.576 5579916.649 + >>> from pyproj import Geod + >>> g = Geod(ellps='clrk66') # Use Clarke 1966 ellipsoid. + >>> # specify the lat/lons of some cities. + >>> boston_lat = 42.+(15./60.); boston_lon = -71.-(7./60.) + >>> portland_lat = 45.+(31./60.); portland_lon = -123.-(41./60.) + >>> newyork_lat = 40.+(47./60.); newyork_lon = -73.-(58./60.) + >>> london_lat = 51.+(32./60.); london_lon = -(5./60.) + >>> # compute forward and back azimuths, plus distance + >>> # between Boston and Portland. + >>> az12,az21,dist = g.inv(boston_lon,boston_lat,portland_lon,portland_lat) + >>> print "%7.3f %6.3f %12.3f" % (az12,az21,dist) + -66.531 75.654 4164192.708 + >>> # compute latitude, longitude and back azimuth of Portland, + >>> # given Boston lat/lon, forward azimuth and distance to Portland. + >>> endlon, endlat, backaz = g.fwd(boston_lon, boston_lat, az12, dist) + >>> print "%6.3f %6.3f %13.3f" % (endlat,endlon,backaz) + 45.517 -123.683 75.654 + >>> # compute the azimuths, distances from New York to several + >>> # cities (pass a list) + >>> lons1 = 3*[newyork_lon]; lats1 = 3*[newyork_lat] + >>> lons2 = [boston_lon, portland_lon, london_lon] + >>> lats2 = [boston_lat, portland_lat, london_lat] + >>> az12,az21,dist = g.inv(lons1,lats1,lons2,lats2) + >>> for faz,baz,d in zip(az12,az21,dist): print "%7.3f %7.3f %9.3f" % (faz,baz,d) + 54.663 -123.448 288303.720 + -65.463 79.342 4013037.318 + 51.254 -71.576 5579916.649 """ # if projparams is None, use kwargs. if initparams is None: @@ -433,16 +451,16 @@ def fwd(self, lons, lats, az, dist, radians=False): """ -forward transformation - Returns longitudes, latitudes and back -azimuths of terminus points given longitudes (lons) and -latitudes (lats) of initial points, plus forward azimuths (az) -and distances (dist). + forward transformation - Returns longitudes, latitudes and back + azimuths of terminus points given longitudes (lons) and + latitudes (lats) of initial points, plus forward azimuths (az) + and distances (dist). -Works with numpy and regular python array objects, python -sequences and scalars. + Works with numpy and regular python array objects, python + sequences and scalars. -if radians=True, lons/lats and azimuths are radians instead of -degrees. Distances are in meters. + if radians=True, lons/lats and azimuths are radians instead of + degrees. Distances are in meters. """ # process inputs, making copies that support buffer API. inx, xisfloat, xislist, xistuple = _copytobuffer(lons) @@ -459,15 +477,15 @@ def inv(self, lons1, lats1, lons2, lats2, radians=False): """ -inverse transformation - Returns forward and back azimuths, plus -distances between initial points (specified by lons1, lats1) and -terminus points (specified by lons2, lats2). + inverse transformation - Returns forward and back azimuths, plus + distances between initial points (specified by lons1, lats1) and + terminus points (specified by lons2, lats2). -Works with numpy and regular python array objects, python -sequences and scalars. + Works with numpy and regular python array objects, python + sequences and scalars. -if radians=True, lons/lats and azimuths are radians instead of -degrees. Distances are in meters. + if radians=True, lons/lats and azimuths are radians instead of + degrees. Distances are in meters. """ # process inputs, making copies that support buffer API. inx, xisfloat, xislist, xistuple = _copytobuffer(lons1) @@ -484,35 +502,35 @@ def npts(self, lon1, lat1, lon2, lat2, npts, radians=False): """ -Given a single initial point and terminus point (specified by -python floats lon1,lat1 and lon2,lat2), returns a list of -longitude/latitude pairs describing npts equally spaced -intermediate points along the geodesic between the initial and -terminus points. + Given a single initial point and terminus point (specified by + python floats lon1,lat1 and lon2,lat2), returns a list of + longitude/latitude pairs describing npts equally spaced + intermediate points along the geodesic between the initial and + terminus points. -if radians=True, lons/lats are radians instead of degrees. + if radians=True, lons/lats are radians instead of degrees. -Example usage: + Example usage: ->>> from pyproj import Geod ->>> g = Geod(ellps='clrk66') # Use Clarke 1966 ellipsoid. ->>> # specify the lat/lons of Boston and Portland. ->>> boston_lat = 42.+(15./60.); boston_lon = -71.-(7./60.) ->>> portland_lat = 45.+(31./60.); portland_lon = -123.-(41./60.) ->>> # find ten equally spaced points between Boston and Portland. ->>> lonlats = g.npts(boston_lon,boston_lat,portland_lon,portland_lat,10) ->>> for lon,lat in lonlats: print '%6.3f %7.3f' % (lat, lon) -43.528 -75.414 -44.637 -79.883 -45.565 -84.512 -46.299 -89.279 -46.830 -94.156 -47.149 -99.112 -47.251 -104.106 -47.136 -109.100 -46.805 -114.051 -46.262 -118.924 - """ + >>> from pyproj import Geod + >>> g = Geod(ellps='clrk66') # Use Clarke 1966 ellipsoid. + >>> # specify the lat/lons of Boston and Portland. + >>> boston_lat = 42.+(15./60.); boston_lon = -71.-(7./60.) + >>> portland_lat = 45.+(31./60.); portland_lon = -123.-(41./60.) + >>> # find ten equally spaced points between Boston and Portland. + >>> lonlats = g.npts(boston_lon,boston_lat,portland_lon,portland_lat,10) + >>> for lon,lat in lonlats: print '%6.3f %7.3f' % (lat, lon) + 43.528 -75.414 + 44.637 -79.883 + 45.565 -84.512 + 46.299 -89.279 + 46.830 -94.156 + 47.149 -99.112 + 47.251 -104.106 + 47.136 -109.100 + 46.805 -114.051 + 46.262 -118.924 + """ lons, lats = _Geod._npts(self,lon1,lat1,lon2,lat2,npts,radians=radians) return zip(lons, lats) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ef...@us...> - 2007-10-31 05:56:09
|
Revision: 4070 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4070&view=rev Author: efiring Date: 2007-10-30 22:56:06 -0700 (Tue, 30 Oct 2007) Log Message: ----------- Add numpy Nx2 array support to the pyrex proj wrapper Modified Paths: -------------- trunk/toolkits/basemap/setup.py trunk/toolkits/basemap/src/_proj.c trunk/toolkits/basemap/src/_proj.pyx Added Paths: ----------- trunk/toolkits/basemap/src/c_numpy.pxd Modified: trunk/toolkits/basemap/setup.py =================================================================== --- trunk/toolkits/basemap/setup.py 2007-10-30 20:53:46 UTC (rev 4069) +++ trunk/toolkits/basemap/setup.py 2007-10-31 05:56:06 UTC (rev 4070) @@ -13,6 +13,9 @@ from distutils.core import Extension from distutils.util import convert_path +import numpy + + def dbf_macros(): """Return the macros to define when compiling the dbflib wrapper. @@ -36,7 +39,9 @@ packages = ['matplotlib.toolkits.basemap'] package_dirs = {'':'lib'} -extensions = [Extension("matplotlib.toolkits.basemap._proj",deps+['src/_proj.c'],include_dirs = ['src'],)] +extensions = [Extension("matplotlib.toolkits.basemap._proj", + deps+['src/_proj.c'], + include_dirs = ['src', numpy.get_include()],)] extensions.append(Extension("matplotlib.toolkits.basemap._geod",deps+['src/_geod.c'],include_dirs = ['src'],)) # install shapelib and dbflib. @@ -61,21 +66,21 @@ if 'setuptools' in sys.modules: # Are we running with setuptools? # if so, need to specify all the packages in heirarchy - additional_params = {'namespace_packages' : ['matplotlib.toolkits']} + additional_params = {'namespace_packages' : ['matplotlib.toolkits']} packages.extend(['matplotlib', 'matplotlib.toolkits']) setup = setuptools.setup else: additional_params = {} from distutils.core import setup - - + + # Specify all the required mpl data pyproj_datafiles = ['data/epsg', 'data/esri', 'data/esri.extra', 'data/GL27', 'data/nad.lst', 'data/nad27', 'data/nad83', 'data/ntv2_out.dist', 'data/other.extra', 'data/pj_out27.dist', 'data/pj_out83.dist', 'data/proj_def.dat', 'data/README', 'data/td_out.dist', 'data/test27', 'data/test83', 'data/testntv2', 'data/testvarious', 'data/world'] basemap_datafiles = [ 'data/countries_c.txt', 'data/states_c.txt', 'data/rivers_c.txt', 'data/gshhs_c.txt', - 'data/countries_l.txt', + 'data/countries_l.txt', 'data/states_l.txt', 'data/rivers_l.txt', 'data/gshhs_l.txt', @@ -103,8 +108,8 @@ license = "OSI Approved", keywords = ["python","plotting","plots","graphs","charts","GIS","mapping","map projections","maps"], classifiers = ["Development Status :: 4 - Beta", - "Intended Audience :: Science/Research", - "License :: OSI Approved", + "Intended Audience :: Science/Research", + "License :: OSI Approved", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Libraries :: Python Modules", "Operating System :: OS Independent"], Modified: trunk/toolkits/basemap/src/_proj.c =================================================================== --- trunk/toolkits/basemap/src/_proj.c 2007-10-30 20:53:46 UTC (rev 4069) +++ trunk/toolkits/basemap/src/_proj.c 2007-10-31 05:56:06 UTC (rev 4070) @@ -1,4 +1,4 @@ -/* Generated by Cython 0.9.6.7 on Sun Oct 14 08:16:26 2007 */ +/* Generated by Cython 0.9.6.7 on Sun Oct 28 13:19:08 2007 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -25,6 +25,7 @@ #include "math.h" #include "geodesic.h" #include "proj_api.h" +#include "numpy/arrayobject.h" #ifdef __GNUC__ @@ -84,8 +85,17 @@ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ +static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size); /*proto*/ + static void __Pyx_AddTraceback(char *funcname); /*proto*/ +/* Declarations from c_numpy */ + +static PyTypeObject *__pyx_ptype_7c_numpy_dtype = 0; +static PyTypeObject *__pyx_ptype_7c_numpy_ndarray = 0; +static PyTypeObject *__pyx_ptype_7c_numpy_flatiter = 0; +static PyTypeObject *__pyx_ptype_7c_numpy_broadcast = 0; + /* Declarations from _proj */ @@ -99,16 +109,22 @@ }; static PyTypeObject *__pyx_ptype_5_proj_Proj = 0; -static PyObject *__pyx_k3; static PyObject *__pyx_k4; static PyObject *__pyx_k5; static PyObject *__pyx_k6; +static PyObject *__pyx_k7; +static PyObject *__pyx_k8; +static PyObject *__pyx_k9; +static PyObject *__pyx_k10; +static PyObject *__pyx_k11; /* Implementation of _proj */ -static char (__pyx_k2[]) = "1.8.3"; +static char (__pyx_k3[]) = "1.8.3"; +static PyObject *__pyx_n_c_numpy; +static PyObject *__pyx_n_numpy; static PyObject *__pyx_n_math; static PyObject *__pyx_n__dg2rad; static PyObject *__pyx_n__rad2dg; @@ -119,6 +135,8 @@ static PyObject *__pyx_n___dealloc__; static PyObject *__pyx_n___reduce__; static PyObject *__pyx_n__fwd; +static PyObject *__pyx_n__fwdn; +static PyObject *__pyx_n__invn; static PyObject *__pyx_n__inv; static PyObject *__pyx_n_is_latlong; static PyObject *__pyx_n_is_geocent; @@ -126,7 +144,7 @@ static PyObject *__pyx_n_radians; static PyObject *__pyx_n_degrees; -static PyObject *__pyx_k2p; +static PyObject *__pyx_k3p; static PyObject *__pyx_f_py_5_proj_set_datapath(PyObject *__pyx_self, PyObject *__pyx_v_datapath); /*proto*/ static PyObject *__pyx_f_py_5_proj_set_datapath(PyObject *__pyx_self, PyObject *__pyx_v_datapath) { @@ -134,20 +152,20 @@ PyObject *__pyx_r; Py_INCREF(__pyx_v_datapath); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":7 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":11 * def set_datapath(datapath): * cdef char *searchpath * searchpath = PyString_AsString(datapath) # <<<<<<<<<<<<<< * pj_set_searchpath(1, &searchpath) - * + * */ __pyx_v_searchpath = PyString_AsString(__pyx_v_datapath); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":8 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":12 * cdef char *searchpath * searchpath = PyString_AsString(datapath) * pj_set_searchpath(1, &searchpath) # <<<<<<<<<<<<<< - * + * * cdef class Proj: */ pj_set_searchpath(1,(&__pyx_v_searchpath)); @@ -162,17 +180,17 @@ static PyObject *__pyx_n_join; static PyObject *__pyx_n_RuntimeError; -static PyObject *__pyx_k7p; -static PyObject *__pyx_k8p; -static PyObject *__pyx_k9p; -static PyObject *__pyx_k10p; +static PyObject *__pyx_k12p; +static PyObject *__pyx_k13p; +static PyObject *__pyx_k14p; +static PyObject *__pyx_k15p; static PyObject *__pyx_builtin_RuntimeError; -static char (__pyx_k7[]) = "+"; -static char (__pyx_k8[]) = "="; -static char (__pyx_k9[]) = " "; -static char (__pyx_k10[]) = ""; +static char (__pyx_k12[]) = "+"; +static char (__pyx_k13[]) = "="; +static char (__pyx_k14[]) = " "; +static char (__pyx_k15[]) = ""; static int __pyx_f_py_5_proj_4Proj___new__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_f_py_5_proj_4Proj___new__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { @@ -196,7 +214,7 @@ __pyx_v_key = Py_None; Py_INCREF(Py_None); __pyx_v_value = Py_None; Py_INCREF(Py_None); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":18 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":22 * * def __new__(self, projparams): * self.projparams = projparams # <<<<<<<<<<<<<< @@ -207,30 +225,30 @@ Py_DECREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projparams); ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projparams = __pyx_v_projparams; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":20 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":24 * self.projparams = projparams * # setup proj initialization string. * pjargs = [] # <<<<<<<<<<<<<< * for key,value in projparams.iteritems(): * pjargs.append('+'+key+"="+str(value)+' ') */ - __pyx_1 = PyList_New(0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; goto __pyx_L1;} + __pyx_1 = PyList_New(0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;} Py_DECREF(__pyx_v_pjargs); __pyx_v_pjargs = __pyx_1; __pyx_1 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":21 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":25 * # setup proj initialization string. * pjargs = [] * for key,value in projparams.iteritems(): # <<<<<<<<<<<<<< * pjargs.append('+'+key+"="+str(value)+' ') * self.srs = ''.join(pjargs) */ - __pyx_1 = PyObject_GetAttr(__pyx_v_projparams, __pyx_n_iteritems); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} - __pyx_3 = PyObject_CallObject(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} + __pyx_1 = PyObject_GetAttr(__pyx_v_projparams, __pyx_n_iteritems); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_3 = PyObject_CallObject(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; if (PyList_CheckExact(__pyx_3)) { __pyx_2 = 0; __pyx_1 = __pyx_3; Py_INCREF(__pyx_1); } - else { __pyx_1 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} } + else { __pyx_1 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} } Py_DECREF(__pyx_3); __pyx_3 = 0; for (;;) { if (PyList_CheckExact(__pyx_1)) { if (__pyx_2 >= PyList_GET_SIZE(__pyx_1)) break; __pyx_3 = PyList_GET_ITEM(__pyx_1, __pyx_2++); Py_INCREF(__pyx_3); } @@ -254,70 +272,70 @@ Py_DECREF(__pyx_3); __pyx_3 = 0; } else { - __pyx_4 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} + __pyx_4 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} + __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} Py_DECREF(__pyx_v_key); __pyx_v_key = __pyx_5; __pyx_5 = 0; - __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} + __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} Py_DECREF(__pyx_v_value); __pyx_v_value = __pyx_5; __pyx_5 = 0; - if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} + if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; } - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":22 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":26 * pjargs = [] * for key,value in projparams.iteritems(): * pjargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<< * self.srs = ''.join(pjargs) * self.pjinitstring = PyString_AsString(self.srs) */ - __pyx_5 = PyObject_GetAttr(__pyx_v_pjargs, __pyx_n_append); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} - __pyx_3 = PyNumber_Add(__pyx_k7p, __pyx_v_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} - __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k8p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_5 = PyObject_GetAttr(__pyx_v_pjargs, __pyx_n_append); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_3 = PyNumber_Add(__pyx_k12p, __pyx_v_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k13p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} Py_INCREF(__pyx_v_value); PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_value); - __pyx_6 = PyObject_CallObject(((PyObject*)&PyString_Type), __pyx_3); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_6 = PyObject_CallObject(((PyObject*)&PyString_Type), __pyx_3); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_3 = PyNumber_Add(__pyx_4, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_3 = PyNumber_Add(__pyx_4, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; Py_DECREF(__pyx_6); __pyx_6 = 0; - __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k9p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k14p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_6 = PyTuple_New(1); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_6 = PyTuple_New(1); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_6, 0, __pyx_4); __pyx_4 = 0; - __pyx_3 = PyObject_CallObject(__pyx_5, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} + __pyx_3 = PyObject_CallObject(__pyx_5, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} Py_DECREF(__pyx_5); __pyx_5 = 0; Py_DECREF(__pyx_6); __pyx_6 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; } Py_DECREF(__pyx_1); __pyx_1 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":23 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":27 * for key,value in projparams.iteritems(): * pjargs.append('+'+key+"="+str(value)+' ') * self.srs = ''.join(pjargs) # <<<<<<<<<<<<<< * self.pjinitstring = PyString_AsString(self.srs) * # initialize projection */ - __pyx_4 = PyObject_GetAttr(__pyx_k10p, __pyx_n_join); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} - __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} + __pyx_4 = PyObject_GetAttr(__pyx_k15p, __pyx_n_join); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;} + __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;} Py_INCREF(__pyx_v_pjargs); PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_pjargs); - __pyx_6 = PyObject_CallObject(__pyx_4, __pyx_5); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} + __pyx_6 = PyObject_CallObject(__pyx_4, __pyx_5); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; Py_DECREF(__pyx_5); __pyx_5 = 0; Py_DECREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs = __pyx_6; __pyx_6 = 0; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":24 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":28 * pjargs.append('+'+key+"="+str(value)+' ') * self.srs = ''.join(pjargs) * self.pjinitstring = PyString_AsString(self.srs) # <<<<<<<<<<<<<< @@ -326,7 +344,7 @@ */ ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->pjinitstring = PyString_AsString(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->srs); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":26 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":30 * self.pjinitstring = PyString_AsString(self.srs) * # initialize projection * self.projpj = pj_init_plus(self.pjinitstring) # <<<<<<<<<<<<<< @@ -335,7 +353,7 @@ */ ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj = pj_init_plus(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->pjinitstring); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":27 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":31 * # initialize projection * self.projpj = pj_init_plus(self.pjinitstring) * if pj_errno != 0: # <<<<<<<<<<<<<< @@ -345,34 +363,34 @@ __pyx_7 = (pj_errno != 0); if (__pyx_7) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":28 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":32 * self.projpj = pj_init_plus(self.pjinitstring) * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< * self.proj_version = PJ_VERSION/100. * */ - __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; goto __pyx_L1;} - __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; goto __pyx_L1;} + __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} + __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_1, 0, __pyx_3); __pyx_3 = 0; - __pyx_4 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; goto __pyx_L1;} + __pyx_4 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} Py_DECREF(__pyx_1); __pyx_1 = 0; __Pyx_Raise(__pyx_4, 0, 0); Py_DECREF(__pyx_4); __pyx_4 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; goto __pyx_L1;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} goto __pyx_L4; } __pyx_L4:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":29 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":33 * if pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) * self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<< * * def __dealloc__(self): */ - __pyx_5 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; goto __pyx_L1;} + __pyx_5 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} Py_DECREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->proj_version); ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->proj_version = __pyx_5; __pyx_5 = 0; @@ -401,7 +419,7 @@ static void __pyx_f_py_5_proj_4Proj___dealloc__(PyObject *__pyx_v_self) { Py_INCREF(__pyx_v_self); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":33 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":37 * def __dealloc__(self): * """destroy projection definition""" * pj_free(self.projpj) # <<<<<<<<<<<<<< @@ -424,18 +442,18 @@ PyObject *__pyx_3 = 0; Py_INCREF(__pyx_v_self); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":37 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":41 * def __reduce__(self): * """special method that allows pyproj.Proj instance to be pickled""" * return (self.__class__,(self.projparams,)) # <<<<<<<<<<<<<< * * def _fwd(self, object lons, object lats, radians=False, errcheck=False): */ - __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n___class__); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} - __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} + __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n___class__); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} + __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} Py_INCREF(((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projparams); PyTuple_SET_ITEM(__pyx_2, 0, ((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projparams); - __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} + __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1); PyTuple_SET_ITEM(__pyx_3, 1, __pyx_2); __pyx_1 = 0; @@ -457,12 +475,12 @@ return __pyx_r; } -static PyObject *__pyx_k11p; +static PyObject *__pyx_k16p; -static char (__pyx_k11[]) = "Buffer lengths not the same"; +static char (__pyx_k16[]) = "Buffer lengths not the same"; static PyObject *__pyx_f_py_5_proj_4Proj__fwd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_5_proj_4Proj__fwd[] = "\n forward transformation - lons,lats to x,y (done in place).\n if radians=True, lons/lats are radians instead of degrees.\n if errcheck=True, an exception is raised if the forward transformation is invalid.\n if errcheck=False and the forward transformation is invalid, no exception is\n raised and 1.e30 is returned.\n "; +static char __pyx_doc_5_proj_4Proj__fwd[] = "\n forward transformation - lons,lats to x,y (done in place).\n if radians=True, lons/lats are radians instead of degrees.\n if errcheck=True, an exception is raised if the forward transformation is invalid.\n if errcheck=False and the forward transformation is invalid, no exception is\n raised and 1.e30 is returned.\n "; static PyObject *__pyx_f_py_5_proj_4Proj__fwd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_lons = 0; PyObject *__pyx_v_lats = 0; @@ -486,8 +504,8 @@ Py_ssize_t __pyx_5; double __pyx_6; static char *__pyx_argnames[] = {"lons","lats","radians","errcheck",0}; - __pyx_v_radians = __pyx_k3; - __pyx_v_errcheck = __pyx_k4; + __pyx_v_radians = __pyx_k4; + __pyx_v_errcheck = __pyx_k5; if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|OO", __pyx_argnames, &__pyx_v_lons, &__pyx_v_lats, &__pyx_v_radians, &__pyx_v_errcheck))) return 0; Py_INCREF(__pyx_v_self); Py_INCREF(__pyx_v_lons); @@ -495,7 +513,7 @@ Py_INCREF(__pyx_v_radians); Py_INCREF(__pyx_v_errcheck); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":53 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":57 * cdef void *londata, *latdata * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: # <<<<<<<<<<<<<< @@ -505,7 +523,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons,(&__pyx_v_londata),(&__pyx_v_buflenx)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":54 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":58 * # if buffer api is supported, get pointer to data buffers. * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -513,12 +531,12 @@ * raise RuntimeError */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; goto __pyx_L1;} goto __pyx_L2; } __pyx_L2:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":55 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":59 * if PyObject_AsWriteBuffer(lons, &londata, &buflenx) <> 0: * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &bufleny) <> 0: # <<<<<<<<<<<<<< @@ -528,7 +546,7 @@ __pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats,(&__pyx_v_latdata),(&__pyx_v_bufleny)) != 0); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":56 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":60 * raise RuntimeError * if PyObject_AsWriteBuffer(lats, &latdata, &bufleny) <> 0: * raise RuntimeError # <<<<<<<<<<<<<< @@ -536,12 +554,12 @@ * if buflenx != bufleny: */ __Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0); - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; goto __pyx_L1;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; goto __pyx_L1;} goto __pyx_L3; } __pyx_L3:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":58 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":62 * raise RuntimeError * # process data in buffer * if buflenx != bufleny: # <<<<<<<<<<<<<< @@ -551,42 +569,42 @@ __pyx_1 = (__pyx_v_buflenx != __pyx_v_bufleny); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":59 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":63 * # process data in buffer * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<< * ndim = buflenx/_doublesize * lonsdata = <double *>londata */ - __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; goto __pyx_L1;} - Py_INCREF(__pyx_k11p); - PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k11p); - __pyx_3 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; goto __pyx_L1;} + __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;} + Py_INCREF(__pyx_k16p); + PyTuple_SET_ITEM(__pyx_2, 0, __pyx_k16p); + __pyx_3 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; __Pyx_Raise(__pyx_3, 0, 0); Py_DECREF(__pyx_3); __pyx_3 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; goto __pyx_L1;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;} goto __pyx_L4; } __pyx_L4:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":60 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":64 * if buflenx != bufleny: * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx/_doublesize # <<<<<<<<<<<<<< * lonsdata = <double *>londata * latsdata = <double *>latdata */ - __pyx_2 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; goto __pyx_L1;} - __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__doublesize); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; goto __pyx_L1;} - __pyx_4 = PyNumber_Divide(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; goto __pyx_L1;} + __pyx_2 = PyInt_FromSsize_t(__pyx_v_buflenx); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;} + __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__doublesize); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;} + __pyx_4 = PyNumber_Divide(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_5 = __pyx_PyIndex_AsSsize_t(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; goto __pyx_L1;} + __pyx_5 = __pyx_PyIndex_AsSsize_t(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __pyx_v_ndim = __pyx_5; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":61 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":65 * raise RuntimeError("Buffer lengths not the same") * ndim = buflenx/_doublesize * lonsdata = <double *>londata # <<<<<<<<<<<<<< @@ -595,7 +613,7 @@ */ __pyx_v_lonsdata = ((double (*))__pyx_v_londata); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":62 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":66 * ndim = buflenx/_doublesize * lonsdata = <double *>londata * latsdata = <double *>latdata # <<<<<<<<<<<<<< @@ -604,7 +622,7 @@ */ __pyx_v_latsdata = ((double (*))__pyx_v_latdata); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":63 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":67 * lonsdata = <double *>londata * latsdata = <double *>latdata * for i from 0 <= i < ndim: # <<<<<<<<<<<<<< @@ -613,17 +631,17 @@ */ for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":64 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":68 * latsdata = <double *>latdata * for i from 0 <= i < ndim: * if radians: # <<<<<<<<<<<<<< * projlonlatin.u = lonsdata[i] * projlonlatin.v = latsdata[i] */ - __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;} + __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; goto __pyx_L1;} if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":65 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":69 * for i from 0 <= i < ndim: * if radians: * projlonlatin.u = lonsdata[i] # <<<<<<<<<<<<<< @@ -632,7 +650,7 @@ */ __pyx_v_projlonlatin.u = (__pyx_v_lonsdata[__pyx_v_i]); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":66 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":70 * if radians: * projlonlatin.u = lonsdata[i] * projlonlatin.v = latsdata[i] # <<<<<<<<<<<<<< @@ -644,41 +662,41 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":68 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":72 * projlonlatin.v = latsdata[i] * else: * projlonlatin.u = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<< * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) */ - __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; goto __pyx_L1;} - __pyx_3 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; goto __pyx_L1;} - __pyx_4 = PyNumber_Multiply(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; goto __pyx_L1;} + __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} + __pyx_3 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} + __pyx_4 = PyNumber_Multiply(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_6 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; goto __pyx_L1;} + __pyx_6 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __pyx_v_projlonlatin.u = __pyx_6; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":69 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":73 * else: * projlonlatin.u = _dg2rad*lonsdata[i] * projlonlatin.v = _dg2rad*latsdata[i] # <<<<<<<<<<<<<< * projxyout = pj_fwd(projlonlatin,self.projpj) * if errcheck and pj_errno != 0: */ - __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;} - __pyx_3 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;} - __pyx_4 = PyNumber_Multiply(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;} + __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; goto __pyx_L1;} + __pyx_3 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; goto __pyx_L1;} + __pyx_4 = PyNumber_Multiply(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; - __pyx_6 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;} + __pyx_6 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __pyx_v_projlonlatin.v = __pyx_6; } __pyx_L7:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":70 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":74 * projlonlatin.u = _dg2rad*lonsdata[i] * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) # <<<<<<<<<<<<<< @@ -687,7 +705,7 @@ */ __pyx_v_projxyout = pj_fwd(__pyx_v_projlonlatin,((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":71 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":75 * projlonlatin.v = _dg2rad*latsdata[i] * projxyout = pj_fwd(projlonlatin,self.projpj) * if errcheck and pj_errno != 0: # <<<<<<<<<<<<<< @@ -696,36 +714,36 @@ */ __pyx_2 = __pyx_v_errcheck; Py_INCREF(__pyx_2); - __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; goto __pyx_L1;} + __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;} if (__pyx_1) { Py_DECREF(__pyx_2); __pyx_2 = 0; - __pyx_2 = __Pyx_PyBool_FromLong((pj_errno != 0)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; goto __pyx_L1;} + __pyx_2 = __Pyx_PyBool_FromLong((pj_errno != 0)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;} } - __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; goto __pyx_L1;} + __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;} Py_DECREF(__pyx_2); __pyx_2 = 0; if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":72 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":76 * projxyout = pj_fwd(projlonlatin,self.projpj) * if errcheck and pj_errno != 0: * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< * # since HUGE_VAL can be 'inf', * # change it to a real (but very large) number. */ - __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} - __pyx_4 = PyTuple_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} + __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; goto __pyx_L1;} + __pyx_4 = PyTuple_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_4, 0, __pyx_3); __pyx_3 = 0; - __pyx_2 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} + __pyx_2 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __Pyx_Raise(__pyx_2, 0, 0); Py_DECREF(__pyx_2); __pyx_2 = 0; - {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;} + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; goto __pyx_L1;} goto __pyx_L8; } __pyx_L8:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":75 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":79 * # since HUGE_VAL can be 'inf', * # change it to a real (but very large) number. * if projxyout.u == HUGE_VAL: # <<<<<<<<<<<<<< @@ -735,7 +753,7 @@ __pyx_1 = (__pyx_v_projxyout.u == HUGE_VAL); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":76 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":80 * # change it to a real (but very large) number. * if projxyout.u == HUGE_VAL: * lonsdata[i] = 1.e30 # <<<<<<<<<<<<<< @@ -747,7 +765,7 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":78 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":82 * lonsdata[i] = 1.e30 * else: * lonsdata[i] = projxyout.u # <<<<<<<<<<<<<< @@ -758,21 +776,21 @@ } __pyx_L9:; - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":79 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":83 * else: * lonsdata[i] = projxyout.u * if projxyout.v == HUGE_VAL: # <<<<<<<<<<<<<< * latsdata[i] = 1.e30 - * else: + * else: */ __pyx_1 = (__pyx_v_projxyout.v == HUGE_VAL); if (__pyx_1) { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":80 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":84 * lonsdata[i] = projxyout.u * if projxyout.v == HUGE_VAL: * latsdata[i] = 1.e30 # <<<<<<<<<<<<<< - * else: + * else: * latsdata[i] = projxyout.v */ (__pyx_v_latsdata[__pyx_v_i]) = 1.e30; @@ -780,12 +798,12 @@ } /*else*/ { - /* "/Users/jsw/python/matplotlib/toolkits/basemap/src/_proj.pyx":82 + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":86 * latsdata[i] = 1.e30 - * else: + * else: * latsdata[i] = projxyout.v # <<<<<<<<<<<<<< * - * def _inv(self, object x, object y, radians=False, errcheck=False): + * def _fwdn(self, c_numpy.ndarray lonlat, radians=False, errcheck=False): */ (__pyx_v_latsdata[__pyx_v_i]) = __pyx_v_projxyout.v; } @@ -809,12 +827,485 @@ return __pyx_r; } -static PyObject *__pyx_k12p; +static PyObject *__pyx_f_py_5_proj_4Proj__fwdn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_5_proj_4Proj__fwdn[] = "\n forward transformation - lons,lats to x,y (done in place).\n Uses ndarray of shape ...,2.\n if radians=True, lons/lats are radians instead of degrees.\n if errcheck=True, an exception is raised if the forward\n transformation is invalid.\n if errcheck=False and the forward transformation is\n invalid, no exception is\n raised and 1.e30 is returned.\n "; +static PyObject *__pyx_f_py_5_proj_4Proj__fwdn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyArrayObject *__pyx_v_lonlat = 0; + PyObject *__pyx_v_radians = 0; + PyObject *__pyx_v_errcheck = 0; + projUV __pyx_v_projxyout; + projUV __pyx_v_projlonlatin; + projUV (*__pyx_v_llptr); + Py_ssize_t __pyx_v_npts; + Py_ssize_t __pyx_v_i; + PyObject *__pyx_r; + int __pyx_1; + PyObject *__pyx_2 = 0; + PyObject *__pyx_3 = 0; + PyObject *__pyx_4 = 0; + double __pyx_5; + static char *__pyx_argnames[] = {"lonlat","radians","errcheck",0}; + __pyx_v_radians = __pyx_k6; + __pyx_v_errcheck = __pyx_k7; + if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|OO", __pyx_argnames, &__pyx_v_lonlat, &__pyx_v_radians, &__pyx_v_errcheck))) return 0; + Py_INCREF(__pyx_v_self); + Py_INCREF(__pyx_v_lonlat); + Py_INCREF(__pyx_v_radians); + Py_INCREF(__pyx_v_errcheck); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lonlat), __pyx_ptype_7c_numpy_ndarray, 1, "lonlat"))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; goto __pyx_L1;} -static char (__pyx_k12[]) = "Buffer lengths not the same"; + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":102 + * cdef projUV *llptr + * cdef Py_ssize_t npts, i + * npts = c_numpy.PyArray_SIZE(lonlat)//2 # <<<<<<<<<<<<<< + * llptr = <projUV *>lonlat.data + * for i from 0 <= i < npts: + */ + __pyx_v_npts = (PyArray_SIZE(__pyx_v_lonlat) / 2); + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":103 + * cdef Py_ssize_t npts, i + * npts = c_numpy.PyArray_SIZE(lonlat)//2 + * llptr = <projUV *>lonlat.data # <<<<<<<<<<<<<< + * for i from 0 <= i < npts: + * if radians: + */ + __pyx_v_llptr = ((projUV (*))__pyx_v_lonlat->data); + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":104 + * npts = c_numpy.PyArray_SIZE(lonlat)//2 + * llptr = <projUV *>lonlat.data + * for i from 0 <= i < npts: # <<<<<<<<<<<<<< + * if radians: + * projlonlatin = llptr[i] + */ + for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_npts; __pyx_v_i++) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":105 + * llptr = <projUV *>lonlat.data + * for i from 0 <= i < npts: + * if radians: # <<<<<<<<<<<<<< + * projlonlatin = llptr[i] + * else: + */ + __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; goto __pyx_L1;} + if (__pyx_1) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":106 + * for i from 0 <= i < npts: + * if radians: + * projlonlatin = llptr[i] # <<<<<<<<<<<<<< + * else: + * projlonlatin.u = _dg2rad*llptr[i].u + */ + __pyx_v_projlonlatin = (__pyx_v_llptr[__pyx_v_i]); + goto __pyx_L4; + } + /*else*/ { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":108 + * projlonlatin = llptr[i] + * else: + * projlonlatin.u = _dg2rad*llptr[i].u # <<<<<<<<<<<<<< + * projlonlatin.v = _dg2rad*llptr[i].v + * projxyout = pj_fwd(projlonlatin,self.projpj) + */ + __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + __pyx_3 = PyFloat_FromDouble((__pyx_v_llptr[__pyx_v_i]).u); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + __pyx_4 = PyNumber_Multiply(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + Py_DECREF(__pyx_3); __pyx_3 = 0; + __pyx_5 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + Py_DECREF(__pyx_4); __pyx_4 = 0; + __pyx_v_projlonlatin.u = __pyx_5; + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":109 + * else: + * projlonlatin.u = _dg2rad*llptr[i].u + * projlonlatin.v = _dg2rad*llptr[i].v # <<<<<<<<<<<<<< + * projxyout = pj_fwd(projlonlatin,self.projpj) + * + */ + __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; goto __pyx_L1;} + __pyx_3 = PyFloat_FromDouble((__pyx_v_llptr[__pyx_v_i]).v); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; goto __pyx_L1;} + __pyx_4 = PyNumber_Multiply(__pyx_2, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + Py_DECREF(__pyx_3); __pyx_3 = 0; + __pyx_5 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; goto __pyx_L1;} + Py_DECREF(__pyx_4); __pyx_4 = 0; + __pyx_v_projlonlatin.v = __pyx_5; + } + __pyx_L4:; + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":110 + * projlonlatin.u = _dg2rad*llptr[i].u + * projlonlatin.v = _dg2rad*llptr[i].v + * projxyout = pj_fwd(projlonlatin,self.projpj) # <<<<<<<<<<<<<< + * + * if errcheck and pj_errno != 0: + */ + __pyx_v_projxyout = pj_fwd(__pyx_v_projlonlatin,((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":112 + * projxyout = pj_fwd(projlonlatin,self.projpj) + * + * if errcheck and pj_errno != 0: # <<<<<<<<<<<<<< + * raise RuntimeError(pj_strerrno(pj_errno)) + * # since HUGE_VAL can be 'inf', + */ + __pyx_2 = __pyx_v_errcheck; + Py_INCREF(__pyx_2); + __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; goto __pyx_L1;} + if (__pyx_1) { + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = __Pyx_PyBool_FromLong((pj_errno != 0)); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; goto __pyx_L1;} + } + __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_2); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + if (__pyx_1) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":113 + * + * if errcheck and pj_errno != 0: + * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< + * # since HUGE_VAL can be 'inf', + * # change it to a real (but very large) number. + */ + __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; goto __pyx_L1;} + __pyx_4 = PyTuple_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; goto __pyx_L1;} + PyTuple_SET_ITEM(__pyx_4, 0, __pyx_3); + __pyx_3 = 0; + __pyx_2 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_4); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; goto __pyx_L1;} + Py_DECREF(__pyx_4); __pyx_4 = 0; + __Pyx_Raise(__pyx_2, 0, 0); + Py_DECREF(__pyx_2); __pyx_2 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; goto __pyx_L1;} + goto __pyx_L5; + } + __pyx_L5:; + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":116 + * # since HUGE_VAL can be 'inf', + * # change it to a real (but very large) number. + * if projxyout.u == HUGE_VAL: # <<<<<<<<<<<<<< + * llptr[i].u = 1.e30 + * else: + */ + __pyx_1 = (__pyx_v_projxyout.u == HUGE_VAL); + if (__pyx_1) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":117 + * # change it to a real (but very large) number. + * if projxyout.u == HUGE_VAL: + * llptr[i].u = 1.e30 # <<<<<<<<<<<<<< + * else: + * llptr[i].u = projxyout.u + */ + (__pyx_v_llptr[__pyx_v_i]).u = 1.e30; + goto __pyx_L6; + } + /*else*/ { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":119 + * llptr[i].u = 1.e30 + * else: + * llptr[i].u = projxyout.u # <<<<<<<<<<<<<< + * if projxyout.v == HUGE_VAL: + * llptr[i].u = 1.e30 + */ + (__pyx_v_llptr[__pyx_v_i]).u = __pyx_v_projxyout.u; + } + __pyx_L6:; + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":120 + * else: + * llptr[i].u = projxyout.u + * if projxyout.v == HUGE_VAL: # <<<<<<<<<<<<<< + * llptr[i].u = 1.e30 + * else: + */ + __pyx_1 = (__pyx_v_projxyout.v == HUGE_VAL); + if (__pyx_1) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":121 + * llptr[i].u = projxyout.u + * if projxyout.v == HUGE_VAL: + * llptr[i].u = 1.e30 # <<<<<<<<<<<<<< + * else: + * llptr[i].v = projxyout.v + */ + (__pyx_v_llptr[__pyx_v_i]).u = 1.e30; + goto __pyx_L7; + } + /*else*/ { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":123 + * llptr[i].u = 1.e30 + * else: + * llptr[i].v = projxyout.v # <<<<<<<<<<<<<< + * + * def _invn(self, c_numpy.ndarray xy, radians=False, errcheck=False): + */ + (__pyx_v_llptr[__pyx_v_i]).v = __pyx_v_projxyout.v; + } + __pyx_L7:; + } + + __pyx_r = Py_None; Py_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_2); + Py_XDECREF(__pyx_3); + Py_XDECREF(__pyx_4); + __Pyx_AddTraceback("_proj.Proj._fwdn"); + __pyx_r = 0; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + Py_DECREF(__pyx_v_lonlat); + Py_DECREF(__pyx_v_radians); + Py_DECREF(__pyx_v_errcheck); + return __pyx_r; +} + +static PyObject *__pyx_f_py_5_proj_4Proj__invn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static char __pyx_doc_5_proj_4Proj__invn[] = "\n inverse transformation - x,y to lons,lats (done in place).\n Uses ndarray of shape ...,2.\n if radians=True, lons/lats are radians instead of degrees.\n if errcheck=True, an exception is raised if the inverse transformation is invalid.\n if errcheck=False and the inverse transformation is invalid, no exception is\n raised and 1.e30 is returned.\n "; +static PyObject *__pyx_f_py_5_proj_4Proj__invn(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyArrayObject *__pyx_v_xy = 0; + PyObject *__pyx_v_radians = 0; + PyObject *__pyx_v_errcheck = 0; + projUV __pyx_v_projxyin; + projUV __pyx_v_projlonlatout; + projUV (*__pyx_v_llptr); + Py_ssize_t __pyx_v_npts; + Py_ssize_t __pyx_v_i; + PyObject *__pyx_r; + PyObject *__pyx_1 = 0; + int __pyx_2; + PyObject *__pyx_3 = 0; + PyObject *__pyx_4 = 0; + double __pyx_5; + static char *__pyx_argnames[] = {"xy","radians","errcheck",0}; + __pyx_v_radians = __pyx_k8; + __pyx_v_errcheck = __pyx_k9; + if (unlikely(!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|OO", __pyx_argnames, &__pyx_v_xy, &__pyx_v_radians, &__pyx_v_errcheck))) return 0; + Py_INCREF(__pyx_v_self); + Py_INCREF(__pyx_v_xy); + Py_INCREF(__pyx_v_radians); + Py_INCREF(__pyx_v_errcheck); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xy), __pyx_ptype_7c_numpy_ndarray, 1, "xy"))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; goto __pyx_L1;} + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":137 + * cdef projUV *llptr + * cdef Py_ssize_t npts, i + * npts = c_numpy.PyArray_SIZE(xy)//2 # <<<<<<<<<<<<<< + * llptr = <projUV *>xy.data + * + */ + __pyx_v_npts = (PyArray_SIZE(__pyx_v_xy) / 2); + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":138 + * cdef Py_ssize_t npts, i + * npts = c_numpy.PyArray_SIZE(xy)//2 + * llptr = <projUV *>xy.data # <<<<<<<<<<<<<< + * + * for i from 0 <= i < npts: + */ + __pyx_v_llptr = ((projUV (*))__pyx_v_xy->data); + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":140 + * llptr = <projUV *>xy.data + * + * for i from 0 <= i < npts: # <<<<<<<<<<<<<< + * projxyin = llptr[i] + * projlonlatout = pj_inv(projxyin, self.projpj) + */ + for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_npts; __pyx_v_i++) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":141 + * + * for i from 0 <= i < npts: + * projxyin = llptr[i] # <<<<<<<<<<<<<< + * projlonlatout = pj_inv(projxyin, self.projpj) + * if errcheck and pj_errno != 0: + */ + __pyx_v_projxyin = (__pyx_v_llptr[__pyx_v_i]); + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":142 + * for i from 0 <= i < npts: + * projxyin = llptr[i] + * projlonlatout = pj_inv(projxyin, self.projpj) # <<<<<<<<<<<<<< + * if errcheck and pj_errno != 0: + * raise RuntimeError(pj_strerrno(pj_errno)) + */ + __pyx_v_projlonlatout = pj_inv(__pyx_v_projxyin,((struct __pyx_obj_5_proj_Proj *)__pyx_v_self)->projpj); + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":143 + * projxyin = llptr[i] + * projlonlatout = pj_inv(projxyin, self.projpj) + * if errcheck and pj_errno != 0: # <<<<<<<<<<<<<< + * raise RuntimeError(pj_strerrno(pj_errno)) + * # since HUGE_VAL can be 'inf', + */ + __pyx_1 = __pyx_v_errcheck; + Py_INCREF(__pyx_1); + __pyx_2 = __Pyx_PyObject_IsTrue(__pyx_1); if (unlikely(__pyx_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; goto __pyx_L1;} + if (__pyx_2) { + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = __Pyx_PyBool_FromLong((pj_errno != 0)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; goto __pyx_L1;} + } + __pyx_2 = __Pyx_PyObject_IsTrue(__pyx_1); if (unlikely(__pyx_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (__pyx_2) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":144 + * projlonlatout = pj_inv(projxyin, self.projpj) + * if errcheck and pj_errno != 0: + * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<< + * # since HUGE_VAL can be 'inf', + * # change it to a real (but very large) number. + */ + __pyx_1 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; goto __pyx_L1;} + __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; goto __pyx_L1;} + PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1); + __pyx_1 = 0; + __pyx_1 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; goto __pyx_L1;} + Py_DECREF(__pyx_3); __pyx_3 = 0; + __Pyx_Raise(__pyx_1, 0, 0); + Py_DECREF(__pyx_1); __pyx_1 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; goto __pyx_L1;} + goto __pyx_L4; + } + __pyx_L4:; + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":147 + * # since HUGE_VAL can be 'inf', + * # change it to a real (but very large) number. + * if projlonlatout.u == HUGE_VAL: # <<<<<<<<<<<<<< + * llptr[i].u = 1.e30 + * elif radians: + */ + __pyx_2 = (__pyx_v_projlonlatout.u == HUGE_VAL); + if (__pyx_2) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":148 + * # change it to a real (but very large) number. + * if projlonlatout.u == HUGE_VAL: + * llptr[i].u = 1.e30 # <<<<<<<<<<<<<< + * elif radians: + * llptr[i].u = projlonlatout.u + */ + (__pyx_v_llptr[__pyx_v_i]).u = 1.e30; + goto __pyx_L5; + } + __pyx_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; goto __pyx_L1;} + if (__pyx_2) { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":150 + * llptr[i].u = 1.e30 + * elif radians: + * llptr[i].u = projlonlatout.u # <<<<<<<<<<<<<< + * else: + * llptr[i].u = _rad2dg*projlonlatout.u + */ + (__pyx_v_llptr[__pyx_v_i]).u = __pyx_v_projlonlatout.u; + goto __pyx_L5; + } + /*else*/ { + + /* "/home/efiring/programs/py/mpl/basemap.dev/src/_proj.pyx":152 + * llptr[i].u = projlonlatout.u + * else: + * llptr[i].u = _rad2dg*projlonlatout.u # <<<<<<<<<<<<<< + * if projlonlatout.v == HUGE_VAL: + * llptr[i].v = 1.e30 + */ + __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_3)) {__py... [truncated message content] |
From: <jd...@us...> - 2007-10-30 20:53:47
|
Revision: 4069 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4069&view=rev Author: jdh2358 Date: 2007-10-30 13:53:46 -0700 (Tue, 30 Oct 2007) Log Message: ----------- added make clean Modified Paths: -------------- trunk/py4science/workbook/Makefile Modified: trunk/py4science/workbook/Makefile =================================================================== --- trunk/py4science/workbook/Makefile 2007-10-30 20:33:59 UTC (rev 4068) +++ trunk/py4science/workbook/Makefile 2007-10-30 20:53:46 UTC (rev 4069) @@ -1,5 +1,5 @@ solved: - rm -rf examples + rm -f examples ln -s examples_solved examples rm -f workbook_solved.tex ln -s main.tex workbook_solved.tex @@ -7,10 +7,12 @@ rm -f workbook_solved.tex skeletons: - rm -rf examples + rm -f examples ln -s examples_skel examples rm -f workbook_skeletons.tex ln -s main.tex workbook_skeletons.tex pdflatex workbook_skeletons rm -f workbook_skeletons.tex +clean: + rm -f *~ *.aux *.log *.toc *.out \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-30 20:34:01
|
Revision: 4068 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4068&view=rev Author: jdh2358 Date: 2007-10-30 13:33:59 -0700 (Tue, 30 Oct 2007) Log Message: ----------- minor mods to build Modified Paths: -------------- trunk/py4science/workbook/Makefile Modified: trunk/py4science/workbook/Makefile =================================================================== --- trunk/py4science/workbook/Makefile 2007-10-30 20:21:39 UTC (rev 4067) +++ trunk/py4science/workbook/Makefile 2007-10-30 20:33:59 UTC (rev 4068) @@ -1,11 +1,16 @@ solved: rm -rf examples ln -s examples_solved examples - cp main.tex workbook_solved.tex + rm -f workbook_solved.tex + ln -s main.tex workbook_solved.tex pdflatex workbook_solved + rm -f workbook_solved.tex skeletons: rm -rf examples ln -s examples_skel examples - cp main.tex workbook_skeletons.tex + rm -f workbook_skeletons.tex + ln -s main.tex workbook_skeletons.tex pdflatex workbook_skeletons + rm -f workbook_skeletons.tex + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-30 20:21:42
|
Revision: 4067 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4067&view=rev Author: jdh2358 Date: 2007-10-30 13:21:39 -0700 (Tue, 30 Oct 2007) Log Message: ----------- added solved vs skeletons Makefile build Modified Paths: -------------- trunk/py4science/workbook/convolution.tex trunk/py4science/workbook/fft_imdenoise.tex trunk/py4science/workbook/files_etc.tex trunk/py4science/workbook/glass_dots.tex trunk/py4science/workbook/lotka_volterra.tex trunk/py4science/workbook/qsort.tex trunk/py4science/workbook/quad_newton.tex trunk/py4science/workbook/stats_descriptives.tex trunk/py4science/workbook/stats_distributions.tex trunk/py4science/workbook/trapezoid.tex trunk/py4science/workbook/wallis_pi.tex trunk/py4science/workbook/wordfreqs.tex Added Paths: ----------- trunk/py4science/workbook/Makefile trunk/py4science/workbook/examples_skel/ trunk/py4science/workbook/examples_skel/convolution_demo.py trunk/py4science/workbook/examples_skel/fft_imdenoise.py trunk/py4science/workbook/examples_skel/glass_dots1.py trunk/py4science/workbook/examples_skel/lotka_volterra.py trunk/py4science/workbook/examples_skel/noisy_sine.py trunk/py4science/workbook/examples_skel/qsort.py trunk/py4science/workbook/examples_skel/quad_newton.py trunk/py4science/workbook/examples_skel/stats_descriptives.py trunk/py4science/workbook/examples_skel/stats_distributions.py trunk/py4science/workbook/examples_skel/stock_records.py trunk/py4science/workbook/examples_skel/trapezoid.py trunk/py4science/workbook/examples_skel/wallis_pi.py trunk/py4science/workbook/examples_skel/wordfreqs.py trunk/py4science/workbook/examples_solved Removed Paths: ------------- trunk/py4science/workbook/skel Added: trunk/py4science/workbook/Makefile =================================================================== --- trunk/py4science/workbook/Makefile (rev 0) +++ trunk/py4science/workbook/Makefile 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1,11 @@ +solved: + rm -rf examples + ln -s examples_solved examples + cp main.tex workbook_solved.tex + pdflatex workbook_solved + +skeletons: + rm -rf examples + ln -s examples_skel examples + cp main.tex workbook_skeletons.tex + pdflatex workbook_skeletons Modified: trunk/py4science/workbook/convolution.tex =================================================================== --- trunk/py4science/workbook/convolution.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/convolution.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -87,7 +87,7 @@ multiplication property to perform the same convolution in Fourier space to confirm the numerical result from \texttt{numpy.convolve}. -\lstinputlisting[label=code:convolution_demo,caption={IGNORED}]{skel/convolution_demo_skel.py} +\lstinputlisting[label=code:convolution_demo,caption={IGNORED}]{examples/convolution_demo.py} Added: trunk/py4science/workbook/examples_skel/convolution_demo.py =================================================================== --- trunk/py4science/workbook/examples_skel/convolution_demo.py (rev 0) +++ trunk/py4science/workbook/examples_skel/convolution_demo.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/convolution_demo_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/convolution_demo.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/fft_imdenoise.py =================================================================== --- trunk/py4science/workbook/examples_skel/fft_imdenoise.py (rev 0) +++ trunk/py4science/workbook/examples_skel/fft_imdenoise.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/fft_imdenoise_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/fft_imdenoise.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/glass_dots1.py =================================================================== --- trunk/py4science/workbook/examples_skel/glass_dots1.py (rev 0) +++ trunk/py4science/workbook/examples_skel/glass_dots1.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/glass_dots1_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/glass_dots1.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/lotka_volterra.py =================================================================== --- trunk/py4science/workbook/examples_skel/lotka_volterra.py (rev 0) +++ trunk/py4science/workbook/examples_skel/lotka_volterra.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/lotka_volterra_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/lotka_volterra.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/noisy_sine.py =================================================================== --- trunk/py4science/workbook/examples_skel/noisy_sine.py (rev 0) +++ trunk/py4science/workbook/examples_skel/noisy_sine.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/noisy_sine_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/noisy_sine.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/qsort.py =================================================================== --- trunk/py4science/workbook/examples_skel/qsort.py (rev 0) +++ trunk/py4science/workbook/examples_skel/qsort.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/qsort_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/qsort.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/quad_newton.py =================================================================== --- trunk/py4science/workbook/examples_skel/quad_newton.py (rev 0) +++ trunk/py4science/workbook/examples_skel/quad_newton.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/quad_newton_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/quad_newton.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/stats_descriptives.py =================================================================== --- trunk/py4science/workbook/examples_skel/stats_descriptives.py (rev 0) +++ trunk/py4science/workbook/examples_skel/stats_descriptives.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/stats_descriptives_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/stats_descriptives.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/stats_distributions.py =================================================================== --- trunk/py4science/workbook/examples_skel/stats_distributions.py (rev 0) +++ trunk/py4science/workbook/examples_skel/stats_distributions.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/stats_distributions_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/stats_distributions.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/stock_records.py =================================================================== --- trunk/py4science/workbook/examples_skel/stock_records.py (rev 0) +++ trunk/py4science/workbook/examples_skel/stock_records.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/stock_records_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/stock_records.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/trapezoid.py =================================================================== --- trunk/py4science/workbook/examples_skel/trapezoid.py (rev 0) +++ trunk/py4science/workbook/examples_skel/trapezoid.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/trapezoid_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/trapezoid.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/wallis_pi.py =================================================================== --- trunk/py4science/workbook/examples_skel/wallis_pi.py (rev 0) +++ trunk/py4science/workbook/examples_skel/wallis_pi.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/wallis_pi_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/wallis_pi.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/wordfreqs.py =================================================================== --- trunk/py4science/workbook/examples_skel/wordfreqs.py (rev 0) +++ trunk/py4science/workbook/examples_skel/wordfreqs.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/wordfreqs_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/wordfreqs.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_solved =================================================================== --- trunk/py4science/workbook/examples_solved (rev 0) +++ trunk/py4science/workbook/examples_solved 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../examples \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_solved ___________________________________________________________________ Name: svn:special + * Modified: trunk/py4science/workbook/fft_imdenoise.tex =================================================================== --- trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -41,7 +41,7 @@ to one. This serves to enhance contrast among the darker elements of the image, so it is not completely dominated by the brighter segments -\lstinputlisting[label=code:fft_imdenoise_skel,caption={IGNORED}]{skel/fft_imdenoise_skel.py} +\lstinputlisting[label=code:fft_imdenoise,caption={IGNORED}]{examples/fft_imdenoise.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/fft_imdenoise}\par\end{centering} Modified: trunk/py4science/workbook/files_etc.tex =================================================================== --- trunk/py4science/workbook/files_etc.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/files_etc.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -44,7 +44,7 @@ Here is the exercise skeleton of the script to create and plot the data file -\lstinputlisting[label=code:noisy_sine_skel,caption={IGNORED}]{skel/noisy_sine_skel.py} +\lstinputlisting[label=code:noisy_sine,caption={IGNORED}]{examples/noisy_sine.py} and the graph will look something like Figure~\ref{fig:noisy_sine} @@ -189,7 +189,7 @@ in 2003 and held to the present) for each stock. Here is the exercise skeleton.: -\lstinputlisting[label=code:stock_records_skel,caption={IGNORED}]{skel/stock_records_skel.py} +\lstinputlisting[label=code:stock_records,caption={IGNORED}]{examples/stock_records.py} The graph will look something like Figure~\ref{fig:stock_records}. Modified: trunk/py4science/workbook/glass_dots.tex =================================================================== --- trunk/py4science/workbook/glass_dots.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/glass_dots.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -38,7 +38,7 @@ \textit{stable node}, if one is greater than one and the other less than one, we have a \textit{saddle node}. -\lstinputlisting[label=code:glass_dots1_skel,caption={IGNORED}]{skel/glass_dots1_skel.py} +\lstinputlisting[label=code:glass_dots1,caption={IGNORED}]{examples/glass_dots1.py} Modified: trunk/py4science/workbook/lotka_volterra.tex =================================================================== --- trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -1,7 +1,7 @@ \section{Lotka-Volterra Equations} \label{sec:lotka_volterra} -\lstinputlisting[label=code:lotka_volterra_skel,caption={IGNORED}]{skel/lotka_volterra_skel.py} +\lstinputlisting[label=code:lotka_volterra,caption={IGNORED}]{examples/lotka_volterra.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/lotka_volterra}\par\end{centering} Modified: trunk/py4science/workbook/qsort.tex =================================================================== --- trunk/py4science/workbook/qsort.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/qsort.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -20,11 +20,11 @@ represents the sorting operation, $+$ indicates list concatenation and $[p]$ is the list containing the pivot as its single element. \end{enumerate} -The listing~\ref{code:qsort_skel} contains a skeleton with no implementation +The listing~\ref{code:qsort} contains a skeleton with no implementation but with tests already written (in the form of \emph{unit tests}, as described in the introduction). -\lstinputlisting[label=code:qsort_skel,caption={IGNORED}]{skel/qsort_skel.py} +\lstinputlisting[label=code:qsort,caption={IGNORED}]{examples/qsort.py} \subsection*{Hints} Modified: trunk/py4science/workbook/quad_newton.tex =================================================================== --- trunk/py4science/workbook/quad_newton.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/quad_newton.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -26,9 +26,9 @@ u=\frac{1}{4}.\] -The listing~\ref{code:quad_newton_skel} contains a skeleton that +The listing~\ref{code:quad_newton} contains a skeleton that includes for comparison the correct numerical value. -\lstinputlisting[label=code:quad_newton_skel,caption={IGNORED}]{skel/quad_newton_skel.py} +\lstinputlisting[label=code:quad_newton,caption={IGNORED}]{examples/quad_newton.py} Deleted: trunk/py4science/workbook/skel =================================================================== --- trunk/py4science/workbook/skel 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/skel 2007-10-30 20:21:39 UTC (rev 4067) @@ -1 +0,0 @@ -link ../examples/skel \ No newline at end of file Modified: trunk/py4science/workbook/stats_descriptives.tex =================================================================== --- trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -44,7 +44,7 @@ \end{lstlisting} -\lstinputlisting[label=code:stats_descriptives_skel,caption={IGNORED}]{skel/stats_descriptives_skel.py} +\lstinputlisting[label=code:stats_descriptives,caption={IGNORED}]{examples/stats_descriptives.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/stats_descriptives}\par\end{centering} Modified: trunk/py4science/workbook/stats_distributions.tex =================================================================== --- trunk/py4science/workbook/stats_distributions.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/stats_distributions.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -78,7 +78,7 @@ should look something like those in Figure~\ref{fig:stats_distributions}. -\lstinputlisting[label=code:stats_distributions_skel,caption={IGNORED}]{skel/stats_distributions_skel.py} +\lstinputlisting[label=code:stats_distributions,caption={IGNORED}]{examples/stats_distributions.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/stats_distributions}\par\end{centering} Modified: trunk/py4science/workbook/trapezoid.tex =================================================================== --- trunk/py4science/workbook/trapezoid.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/trapezoid.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -36,11 +36,11 @@ \end{figure} -Listing~\ref{code:trapezoid_skel} contains a skeleton for this problem, +Listing~\ref{code:trapezoid} contains a skeleton for this problem, written in the form of two incomplete functions and a set of automatic tests (in the form of \emph{unit tests}, as described in the introduction). -\lstinputlisting[label=code:trapezoid_skel,caption={IGNORED}]{skel/trapezoid_skel.py} +\lstinputlisting[label=code:trapezoid,caption={IGNORED}]{examples/trapezoid.py} In this exercise, you'll need to write two functions, \texttt{trapz} and \texttt{trapzf}. \texttt{trapz} applies the trapezoid formula Modified: trunk/py4science/workbook/wallis_pi.tex =================================================================== --- trunk/py4science/workbook/wallis_pi.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/wallis_pi.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -6,12 +6,12 @@ \pi=\prod_{i=1}^{\infty}\frac{4i^{2}}{4i^{2}-1}.\end{equation} -The listing~\ref{code:wallis_pi_skel} contains a skeleton with no +The listing~\ref{code:wallis_pi} contains a skeleton with no implementation but with some plotting commands already inserted, so that you can visualize the convergence rate of this formula as more terms are kept. -\lstinputlisting[label=code:wallis_pi_skel,caption={IGNORED}]{skel/wallis_pi_skel.py} +\lstinputlisting[label=code:wallis_pi,caption={IGNORED}]{examples/wallis_pi.py} After running the script successfully, you should obtain a plot similar to Figure~\ref{fig:wallis_pi}. Modified: trunk/py4science/workbook/wordfreqs.tex =================================================================== --- trunk/py4science/workbook/wordfreqs.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/wordfreqs.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -14,10 +14,10 @@ In this problem, you will need to count the frequencies of all the words contained in a compressed text file supplied as input. -The listing~\ref{code:wordfreqs_skel} contains a skeleton for this +The listing~\ref{code:wordfreqs} contains a skeleton for this problem, with \texttt{XXX} marking various places that are incomplete. -\lstinputlisting[label=code:wordfreqs_skel,caption={IGNORED}]{skel/wordfreqs_skel.py} +\lstinputlisting[label=code:wordfreqs,caption={IGNORED}]{examples/wordfreqs.py} \subsection*{Hints} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-30 19:18:30
|
Revision: 4066 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4066&view=rev Author: jdh2358 Date: 2007-10-30 12:18:26 -0700 (Tue, 30 Oct 2007) Log Message: ----------- increased fig size Modified Paths: -------------- trunk/py4science/workbook/fft_imdenoise.tex trunk/py4science/workbook/lotka_volterra.tex trunk/py4science/workbook/stats_descriptives.tex trunk/py4science/workbook/stats_distributions.tex trunk/py4science/workbook/trapezoid.tex Modified: trunk/py4science/workbook/fft_imdenoise.tex =================================================================== --- trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -44,7 +44,7 @@ \lstinputlisting[label=code:fft_imdenoise_skel,caption={IGNORED}]{skel/fft_imdenoise_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/fft_imdenoise}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/fft_imdenoise}\par\end{centering} \caption{\label{fig:fft_imdenoise}High freqeuency noise filtering of a 2D image in the Fourier domain. The upper panels show the original image (left) and spectral power (right) and the lower panels show the same data with the high frequency power set to zero. Although the input and output images are grayscale, you can provide colormaps to \texttt{pylab.imshow} to plot them in psudo-color} \end{figure} Modified: trunk/py4science/workbook/lotka_volterra.tex =================================================================== --- trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -4,7 +4,7 @@ \lstinputlisting[label=code:lotka_volterra_skel,caption={IGNORED}]{skel/lotka_volterra_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/lotka_volterra}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/lotka_volterra}\par\end{centering} \caption{\label{fig:lotka_volterra}Upper panel shows population trajectories for rabbits (blue) and foxes (green) simulated using Modified: trunk/py4science/workbook/stats_descriptives.tex =================================================================== --- trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -47,7 +47,7 @@ \lstinputlisting[label=code:stats_descriptives_skel,caption={IGNORED}]{skel/stats_descriptives_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/stats_descriptives}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/stats_descriptives}\par\end{centering} \caption{\label{fig:stats_descriptives}} \end{figure} Modified: trunk/py4science/workbook/stats_distributions.tex =================================================================== --- trunk/py4science/workbook/stats_distributions.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/stats_distributions.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -81,7 +81,7 @@ \lstinputlisting[label=code:stats_distributions_skel,caption={IGNORED}]{skel/stats_distributions_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/stats_distributions}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/stats_distributions}\par\end{centering} \caption{\label{fig:stats_distributions}} \end{figure} Modified: trunk/py4science/workbook/trapezoid.tex =================================================================== --- trunk/py4science/workbook/trapezoid.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/trapezoid.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -28,7 +28,7 @@ % \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/Composite_trapezoidal_rule_illustration}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/Composite_trapezoidal_rule_illustration}\par\end{centering} \caption{\label{fig:trapezoid}Illustration of the composite trapezoidal rule This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-30 19:14:22
|
Revision: 4065 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4065&view=rev Author: jdh2358 Date: 2007-10-30 12:14:17 -0700 (Tue, 30 Oct 2007) Log Message: ----------- added lotka volterra skeleton to workbook Modified Paths: -------------- trunk/py4science/workbook/main.tex Added Paths: ----------- trunk/py4science/workbook/fig/lotka_volterra.eps trunk/py4science/workbook/fig/lotka_volterra.png trunk/py4science/workbook/intro_dynsys.tex trunk/py4science/workbook/lotka_volterra.tex Added: trunk/py4science/workbook/fig/lotka_volterra.eps =================================================================== --- trunk/py4science/workbook/fig/lotka_volterra.eps (rev 0) +++ trunk/py4science/workbook/fig/lotka_volterra.eps 2007-10-30 19:14:17 UTC (rev 4065) @@ -0,0 +1,12596 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: lotka_volterra.eps +%%Creator: matplotlib version 0.90.1, http://matplotlib.sourceforge.net/ +%%CreationDate: Tue Oct 30 14:09:28 2007 +%%Orientation: portrait +%%BoundingBox: 18 180 594 612 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +closepath +} bind def +/clipbox { +box +clip +newpath +} bind def +/ellipse { +newpath +matrix currentmatrix 7 1 roll +translate +scale +0 0 1 5 3 roll arc +setmatrix +closepath +} bind def +/unitcircle { +newpath +-1. 0. moveto +-1.0 0.552284749831 -0.552284749831 1.0 0.0 1.0 curveto +0.552284749831 1.0 1.0 0.552284749831 1.0 0.0 curveto +1.0 -0.552284749831 0.552284749831 -1.0 0.0 -1.0 curveto +-0.552284749831 -1.0 -1.0 -0.552284749831 -1.0 0.0 curveto +closepath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: Bitstream Vera Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. +%%Creator: Converted from TrueType by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /BitstreamVeraSans-Roman def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-182 -235 1287 928]def +/FontType 3 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (Bitstream Vera Sans) def +/FullName (Bitstream Vera Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.) def +/Weight (Roman) def +/Version (Release 1.10) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -213 def +/UnderlineThickness 143 def +end readonly def +/CharStrings 31 dict dup begin +/space{318 0 0 0 0 0 _sc +}_d +/parenleft{390 0 86 -131 310 759 _sc +310 759 _m +266 683 234 609 213 536 _c +191 463 181 389 181 314 _c +181 238 191 164 213 91 _c +234 17 266 -56 310 -131 _c +232 -131 _l +183 -54 146 20 122 94 _c +98 168 86 241 86 314 _c +86 386 98 459 122 533 _c +146 607 182 682 232 759 _c +310 759 _l +_cl}_d +/parenright{390 0 80 -131 304 759 _sc +80 759 _m +158 759 _l +206 682 243 607 267 533 _c +291 459 304 386 304 314 _c +304 241 291 168 267 94 _c +243 20 206 -54 158 -131 _c +80 -131 _l +123 -56 155 17 177 91 _c +198 164 209 238 209 314 _c +209 389 198 463 177 536 _c +155 609 123 683 80 759 _c +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +}_e{370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/five{{636 0 77 -13 549 729 _sc +108 729 _m +495 729 _l +495 646 _l +198 646 _l +198 467 _l +212 472 227 476 241 478 _c +255 480 270 482 284 482 _c +365 482 429 459 477 415 _c +525 370 549 310 549 234 _c +549 155 524 94 475 51 _c +426 8 357 -13 269 -13 _c +238 -13 207 -10 175 -6 _c +143 -1 111 6 77 17 _c +77 116 _l +106 100 136 88 168 80 _c +199 72 232 69 267 69 _c +323 69 368 83 401 113 _c +433 143 450 183 450 234 _c +450 284 433 324 401 354 _c +368 384 323 399 267 399 _c +241 399 214 396 188 390 _c +162 384 135 375 108 363 _c +108 729 _l +_cl}_e}_d +/six{{636 0 70 -13 573 742 _sc +330 404 _m +286 404 251 388 225 358 _c +199 328 186 286 186 234 _c +186 181 199 139 225 109 _c +251 79 286 64 330 64 _c +374 64 409 79 435 109 _c +461 139 474 181 474 234 _c +474 286 461 328 435 358 _c +409 388 374 404 330 404 _c +526 713 _m +526 623 _l +501 635 476 644 451 650 _c +425 656 400 659 376 659 _c +310 659 260 637 226 593 _c +192 549 172 482 168 394 _c +187 422 211 444 240 459 _c +269 474 301 482 336 482 _c +409 482 467 459 509 415 _c +551 371 573 310 573 234 _c +573 159 550 99 506 54 _c +462 9 403 -13 330 -13 _c +246 -13 181 19 137 83 _c +92 147 70 241 70 364 _c +70 479 97 571 152 639 _c +206 707 280 742 372 742 _c +}_e{396 742 421 739 447 735 _c +472 730 498 723 526 713 _c +_cl}_e}_d +/eight{{636 0 68 -13 568 742 _sc +318 346 _m +271 346 234 333 207 308 _c +180 283 167 249 167 205 _c +167 161 180 126 207 101 _c +234 76 271 64 318 64 _c +364 64 401 76 428 102 _c +455 127 469 161 469 205 _c +469 249 455 283 429 308 _c +402 333 365 346 318 346 _c +219 388 _m +177 398 144 418 120 447 _c +96 476 85 511 85 553 _c +85 611 105 657 147 691 _c +188 725 245 742 318 742 _c +390 742 447 725 489 691 _c +530 657 551 611 551 553 _c +551 511 539 476 515 447 _c +491 418 459 398 417 388 _c +464 377 501 355 528 323 _c +554 291 568 251 568 205 _c +568 134 546 80 503 43 _c +459 5 398 -13 318 -13 _c +237 -13 175 5 132 43 _c +89 80 68 134 68 205 _c +68 251 81 291 108 323 _c +134 355 171 377 219 388 _c +}_e{183 544 _m +183 506 194 476 218 455 _c +242 434 275 424 318 424 _c +360 424 393 434 417 455 _c +441 476 453 506 453 544 _c +453 582 441 611 417 632 _c +393 653 360 664 318 664 _c +275 664 242 653 218 632 _c +194 611 183 582 183 544 _c +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +}_e{132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/j{278 0 -17 -207 184 760 _sc +94 547 _m +184 547 _l +184 -9 _l +184 -78 170 -128 144 -160 _c +117 -191 74 -207 16 -207 _c +-17 -207 _l +-17 -131 _l +6 -131 _l +40 -131 63 -123 75 -107 _c +87 -91 94 -58 94 -9 _c +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/m{{974 0 91 0 889 560 _sc +520 442 _m +542 482 569 511 600 531 _c +631 550 668 560 711 560 _c +767 560 811 540 842 500 _c +873 460 889 403 889 330 _c +889 0 _l +799 0 _l +799 327 _l +799 379 789 418 771 444 _c +752 469 724 482 686 482 _c +639 482 602 466 575 435 _c +548 404 535 362 535 309 _c +535 0 _l +445 0 _l +445 327 _l +445 379 435 418 417 444 _c +398 469 369 482 331 482 _c +285 482 248 466 221 435 _c +194 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +201 495 226 520 255 536 _c +283 552 317 560 357 560 _c +397 560 430 550 458 530 _c +486 510 506 480 520 442 _c +}_e{_cl}_e}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +}_e{301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/u{634 0 85 -13 543 547 _sc +85 216 _m +85 547 _l +175 547 _l +175 219 _l +175 167 185 129 205 103 _c +225 77 255 64 296 64 _c +344 64 383 79 411 110 _c +439 141 453 183 453 237 _c +453 547 _l +543 547 _l +543 0 _l +453 0 _l +453 84 _l +431 50 405 26 377 10 _c +348 -5 315 -13 277 -13 _c +214 -13 166 6 134 45 _c +101 83 85 140 85 216 _c +_cl}_d +/x{592 0 29 0 559 547 _sc +549 547 _m +351 281 _l +559 0 _l +453 0 _l +294 215 _l +135 0 _l +29 0 _l +241 286 _l +47 547 _l +153 547 _l +298 352 _l +443 547 _l +549 547 _l +_cl}_d +/y{592 0 30 -207 562 547 _sc +322 -50 _m +296 -114 271 -157 247 -177 _c +223 -197 191 -207 151 -207 _c +79 -207 _l +79 -132 _l +132 -132 _l +156 -132 175 -126 189 -114 _c +203 -102 218 -75 235 -31 _c +251 9 _l +30 547 _l +125 547 _l +296 119 _l +467 547 _l +562 547 _l +322 -50 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +%%EOF +end +%%EndProlog +mpldict begin +18 180 translate +576 432 0 0 clipbox +1.000 setgray +1.000 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0 0 m +0 432 l +576 432 l +576 0 l +closepath +gsave +fill +grestore +stroke +0.000 setgray +72 238.539 m +72 388.8 l +518.4 388.8 l +518.4 238.539 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +0.000 0.000 1.000 setrgbcolor +2.000 setlinewidth +gsave +446.4 150.261 72 238.539 clipbox +72 338.713 m +72.4464 328.518 l +72.8928 318.247 l +73.3392 308.278 l +73.7856 298.909 l +74.232 290.342 l +74.6784 282.686 l +75.1248 275.973 l +75.5712 270.176 l +76.0176 265.229 l +76.464 261.045 l +76.9104 257.53 l +77.3568 254.589 l +77.8032 252.137 l +78.2496 250.093 l +78.696 248.392 l +79.1424 246.974 l +79.5888 245.79 l +80.0352 244.8 l +80.4816 243.97 l +80.928 243.272 l +81.3744 242.684 l +81.8208 242.186 l +82.2672 241.763 l +82.7136 241.403 l +83.16 241.096 l +83.6064 240.832 l +84.0528 240.605 l +84.4992 240.41 l +84.9456 240.24 l +85.392 240.093 l +85.8384 239.965 l +86.2848 239.853 l +86.7312 239.755 l +87.1776 239.669 l +87.624 239.594 l +88.0704 239.527 l +88.5168 239.468 l +88.9632 239.417 l +89.4096 239.371 l +89.856 239.33 l +90.3024 239.294 l +90.7488 239.263 l +91.1952 239.235 l +91.6416 239.21 l +92.088 239.188 l +92.5344 239.169 l +92.9808 239.153 l +93.4272 239.138 l +93.8736 239.126 l +94.32 239.116 l +94.7664 239.108 l +95.2128 239.101 l +95.6592 239.096 l +96.1056 239.092 l +96.552 239.09 l +96.9984 239.089 l +97.4448 239.089 l +97.8912 239.091 l +98.3376 239.094 l +98.784 239.099 l +99.2304 239.104 l +99.6768 239.111 l +100.123 239.119 l +100.57 239.129 l +101.016 239.14 l +101.462 239.153 l +101.909 239.166 l +102.355 239.182 l +102.802 239.199 l +103.248 239.217 l +103.694 239.238 l +104.141 239.26 l +104.587 239.284 l +105.034 239.31 l +105.48 239.339 l +105.926 239.369 l +106.373 239.402 l +106.819 239.438 l +107.266 239.477 l +107.712 239.518 l +108.158 239.563 l +108.605 239.611 l +109.051 239.663 l +109.498 239.719 l +109.944 239.779 l +110.39 239.844 l +110.837 239.913 l +111.283 239.988 l +111.73 240.069 l +112.176 240.156 l +112.622 240.25 l +113.069 240.351 l +113.515 240.46 l +113.962 240.577 l +114.408 240.704 l +114.854 240.84 l +115.301 240.987 l +115.747 241.146 l +116.194 241.318 l +116.64 241.503 l +117.086 241.702 l +117.533 241.918 l +117.979 242.151 l +118.426 242.403 l +118.872 242.676 l +119.318 242.97 l +119.765 243.289 l +120.211 243.633 l +120.658 244.006 l +121.104 244.409 l +121.55 244.845 l +121.997 245.318 l +122.443 245.829 l +122.89 246.383 l +123.336 246.983 l +123.782 247.632 l +124.229 248.336 l +124.675 249.098 l +125.122 249.923 l +125.568 250.817 l +126.014 251.785 l +126.461 252.834 l +126.907 253.97 l +127.354 255.199 l +127.8 256.53 l +128.246 257.971 l +128.693 259.529 l +129.139 261.215 l +129.586 263.037 l +130.032 265.006 l +130.478 267.133 l +130.925 269.428 l +131.371 271.902 l +131.818 274.568 l +132.264 277.437 l +132.71 280.521 l +133.157 283.83 l +133.603 287.377 l +134.05 291.17 l +134.496 295.218 l +134.942 299.527 l +135.389 304.098 l +135.835 308.932 l +136.282 314.021 l +136.728 319.352 l +137.174 324.903 l +137.621 330.638 l +138.067 336.512 l +138.514 342.461 l +138.96 348.4 l +139.406 354.224 l +139.853 359.8 l +140.299 364.968 l +140.746 369.541 l +141.192 373.307 l +141.638 376.036 l +142.085 377.496 l +142.531 377.468 l +142.978 375.777 l +143.424 372.318 l +143.87 367.086 l +144.317 360.195 l +144.763 351.884 l +145.21 342.494 l +145.656 332.439 l +146.102 322.149 l +146.549 312.024 l +146.995 302.397 l +147.442 293.506 l +147.888 285.496 l +148.334 278.424 l +148.781 272.283 l +149.227 267.021 l +149.674 262.557 l +150.12 258.798 l +150.566 255.649 l +151.013 253.02 l +151.459 250.829 l +151.906 249.005 l +152.352 247.484 l +152.798 246.216 l +153.245 245.157 l +153.691 244.269 l +154.138 243.524 l +154.584 242.896 l +155.03 242.366 l +155.477 241.916 l +155.923 241.534 l +156.37 241.208 l +156.816 240.928 l +157.262 240.688 l +157.709 240.481 l +158.155 240.302 l +158.602 240.147 l +159.048 240.012 l +159.494 239.894 l +159.941 239.791 l +160.387 239.701 l +160.834 239.621 l +161.28 239.552 l +161.726 239.49 l +162.173 239.436 l +162.619 239.388 l +163.066 239.345 l +163.512 239.307 l +163.958 239.274 l +164.405 239.245 l +164.851 239.219 l +165.298 239.196 l +165.744 239.176 l +166.19 239.159 l +166.637 239.144 l +167.083 239.131 l +167.53 239.12 l +167.976 239.111 l +168.422 239.103 l +168.869 239.097 l +169.315 239.093 l +169.762 239.09 l +170.208 239.089 l +170.654 239.089 l +171.101 239.09 l +171.547 239.093 l +171.994 239.097 l +172.44 239.102 l +172.886 239.108 l +173.333 239.116 l +173.779 239.125 l +174.226 239.136 l +174.672 239.148 l +175.118 239.161 l +175.565 239.176 l +176.011 239.192 l +176.458 239.21 l +176.904 239.23 l +177.35 239.251 l +177.797 239.275 l +178.243 239.3 l +178.69 239.327 l +179.136 239.357 l +179.582 239.389 l +180.029 239.424 l +180.475 239.461 l +180.922 239.502 l +181.368 239.545 l +181.814 239.592 l +182.261 239.643 l +182.707 239.697 l +183.154 239.755 l +183.6 239.818 l +184.046 239.886 l +184.493 239.959 l +184.939 240.038 l +185.386 240.122 l +185.832 240.213 l +186.278 240.312 l +186.725 240.417 l +187.171 240.532 l +187.618 240.654 l +188.064 240.787 l +188.51 240.93 l +188.957 241.084 l +189.403 241.251 l +189.85 241.43 l +190.296 241.624 l +190.742 241.834 l +191.189 242.06 l +191.635 242.305 l +192.082 242.569 l +192.528 242.855 l +192.974 243.164 l +193.421 243.498 l +193.867 243.86 l +194.314 244.251 l +194.76 244.675 l +195.206 245.133 l +195.653 245.629 l +196.099 246.166 l +196.546 246.748 l +196.992 247.378 l +197.438 248.061 l +197.885 248.8 l +198.331 249.6 l +198.778 250.468 l +199.224 251.407 l +199.67 252.424 l +200.117 253.526 l +200.563 254.719 l +201.01 256.01 l +201.456 257.408 l +201.902 258.92 l +202.349 260.556 l +202.795 262.325 l +203.242 264.237 l +203.688 266.302 l +204.134 268.532 l +204.581 270.936 l +205.027 273.528 l +205.474 276.318 l +205.92 279.318 l +206.366 282.54 l +206.813 285.995 l +207.259 289.693 l +207.706 293.643 l +208.152 297.852 l +208.598 302.323 l +209.045 307.057 l +209.491 312.05 l +209.938 317.291 l +210.384 322.761 l +210.83 328.431 l +211.277 334.259 l +211.723 340.188 l +212.17 346.142 l +212.616 352.024 l +213.062 357.712 l +213.509 363.056 l +213.955 367.88 l +214.402 371.98 l +214.848 375.132 l +215.294 377.103 l +215.741 377.667 l +216.187 376.627 l +216.634 373.849 l +217.08 369.286 l +217.526 363.007 l +217.973 355.202 l +218.419 346.178 l +218.866 336.326 l +219.312 326.075 l +219.758 315.844 l +220.205 305.994 l +220.651 296.8 l +221.098 288.442 l +221.544 281.01 l +221.99 274.519 l +222.437 268.93 l +222.883 264.172 l +223.33 260.155 l +223.776 256.784 l +224.222 253.967 l +224.669 251.618 l +225.115 249.662 l +225.562 248.032 l +226.008 246.673 l +226.454 245.539 l +226.901 244.59 l +227.347 243.793 l +227.794 243.123 l +228.24 242.558 l +228.686 242.079 l +229.133 241.673 l +229.579 241.326 l +230.026 241.03 l +230.472 240.775 l +230.918 240.556 l +231.365 240.367 l +231.811 240.204 l +232.258 240.061 l +232.704 239.937 l +233.15 239.829 l +233.597 239.734 l +234.043 239.651 l +234.49 239.577 l +234.936 239.513 l +235.382 239.456 l +235.829 239.405 l +236.275 239.361 l +236.722 239.321 l +237.168 239.286 l +237.614 239.256 l +238.061 239.228 l +238.507 239.204 l +238.954 239.183 l +239.4 239.165 l +239.846 239.149 l +240.293 239.135 l +240.739 239.124 l +241.186 239.114 l +241.632 239.106 l +242.078 239.099 l +242.525 239.095 l +242.971 239.091 l +243.418 239.089 l +243.864 239.089 l +244.31 239.09 l +244.757 239.092 l +245.203 239.095 l +245.65 239.1 l +246.096 239.106 l +246.542 239.113 l +246.989 239.122 l +247.435 239.132 l +247.882 239.143 l +248.328 239.156 l +248.774 239.17 l +249.221 239.186 l +249.667 239.203 l +250.114 239.222 l +250.56 239.243 l +251.006 239.265 l +251.453 239.29 l +251.899 239.317 l +252.346 239.346 l +252.792 239.377 l +253.238 239.41 l +253.685 239.447 l +254.131 239.486 l +254.578 239.528 l +255.024 239.574 l +255.47 239.623 l +255.917 239.676 l +256.363 239.733 l +256.81 239.794 l +257.256 239.86 l +257.702 239.931 l +258.149 240.007 l +258.595 240.089 l +259.042 240.178 l +259.488 240.273 l +259.934 240.376 l +260.381 240.487 l +260.827 240.606 l +261.274 240.735 l +261.72 240.874 l +262.166 241.024 l +262.613 241.186 l +263.059 241.36 l +263.506 241.549 l +263.952 241.752 l +264.398 241.972 l +264.845 242.209 l +265.291 242.466 l +265.738 242.743 l +266.184 243.043 l +266.63 243.368 l +267.077 243.719 l +267.523 244.098 l +267.97 244.509 l +268.416 244.954 l +268.862 245.435 l +269.309 245.956 l +269.755 246.521 l +270.202 247.132 l +270.648 247.794 l +271.094 248.511 l +271.541 249.287 l +271.987 250.129 l +272.434 251.04 l +272.88 252.026 l +273.326 253.095 l +273.773 254.252 l +274.219 255.505 l +274.666 256.861 l +275.112 258.329 l +275.558 259.917 l +276.005 261.634 l +276.451 263.49 l +276.898 265.496 l +277.344 267.661 l +277.79 269.997 l +278.237 272.516 l +278.683 275.229 l +279.13 278.148 l +279.576 281.284 l +280.022 284.649 l +280.469 288.253 l +280.915 292.106 l +281.362 296.215 l +281.808 300.586 l +282.254 305.22 l +282.701 310.116 l +283.147 315.264 l +283.594 320.649 l +284.04 326.247 l +284.486 332.02 l +284.933 337.918 l +285.379 343.873 l +285.826 349.796 l +286.272 355.573 l +286.718 361.068 l +287.165 366.113 l +287.611 370.515 l +288.058 374.056 l +288.504 376.506 l +288.95 377.631 l +289.397 377.223 l +289.843 375.119 l +290.29 371.236 l +290.736 365.596 l +291.182 358.343 l +291.629 349.741 l +292.075 340.155 l +292.522 330.006 l +292.968 319.721 l +293.414 309.688 l +293.861 300.217 l +294.307 291.525 l +294.754 283.734 l +295.2 276.886 l +295.646 270.96 l +296.093 265.895 l +296.539 261.606 l +296.986 258 l +297.432 254.982 l +297.878 252.464 l +298.325 250.366 l +298.771 248.619 l +299.218 247.163 l +299.664 245.948 l +300.11 244.932 l +300.557 244.081 l +301.003 243.366 l +301.45 242.763 l +301.896 242.253 l +302.342 241.82 l +302.789 241.452 l +303.235 241.137 l +303.682 240.868 l +304.128 240.636 l +304.574 240.436 l +305.021 240.263 l +305.467 240.113 l +305.914 239.983 l +306.36 239.868 l +306.806 239.769 l +307.253 239.681 l +307.699 239.604 l +308.146 239.536 l +308.592 239.477 l +309.038 239.424 l +309.485 239.377 l +309.931 239.336 l +310.378 239.299 l +310.824 239.267 l +311.27 239.238 l +311.717 239.213 l +312.163 239.191 l +312.61 239.172 l +313.056 239.155 l +313.502 239.14 l +313.949 239.128 l +314.395 239.117 l +314.842 239.109 l +315.288 239.102 l +315.734 239.096 l +316.181 239.092 l +316.627 239.09 l +317.074 239.089 l +317.52 239.089 l +317.966 239.091 l +318.413 239.094 l +318.859 239.098 l +319.306 239.103 l +319.752 239.11 l +320.198 239.118 l +320.645 239.128 l +321.091 239.138 l +321.538 239.151 l +321.984 239.164 l +322.43 239.179 l +322.877 239.196 l +323.323 239.215 l +323.77 239.235 l +324.216 239.257 l +324.662 239.28 l +325.109 239.306 l +325.555 239.334 l +326.002 239.365 l +326.448 239.397 l +326.894 239.433 l +327.341 239.471 l +327.787 239.512 l +328.234 239.556 l +328.68 239.604 l +329.126 239.655 l +329.573 239.71 l +330.019 239.77 l +330.466 239.834 l +330.912 239.903 l +331.358 239.977 l +331.805 240.057 l +332.251 240.143 l +332.698 240.236 l +333.144 240.336 l +333.59 240.444 l +334.037 240.56 l +334.483 240.685 l +334.93 240.82 l +335.376 240.966 l +335.822 241.123 l +336.269 241.292 l +336.715 241.475 l +337.162 241.673 l +337.608 241.886 l +338.054 242.117 l +338.501 242.366 l +338.947 242.635 l +339.394 242.926 l +339.84 243.241 l +340.286 243.581 l +340.733 243.95 l +341.179 244.349 l +341.626 244.78 l +342.072 245.247 l +342.518 245.753 l +342.965 246.3 l +343.411 246.893 l +343.858 247.535 l +344.304 248.231 l +344.75 248.984 l +345.197 249.8 l +345.643 250.683 l +346.09 251.641 l +346.536 252.677 l +346.982 253.8 l +347.429 255.015 l +347.875 256.331 l +348.322 257.755 l +348.768 259.296 l +349.214 260.963 l +349.661 262.765 l +350.107 264.712 l +350.554 266.815 l +351 269.085 l +351.446 271.533 l +351.893 274.171 l +352.339 277.009 l +352.786 280.061 l +353.232 283.338 l +353.678 286.849 l +354.125 290.606 l +354.571 294.617 l +355.018 298.888 l +355.464 303.421 l +355.91 308.218 l +356.357 313.271 l +356.803 318.568 l +357.25 324.088 l +357.696 329.799 l +358.142 335.657 l +358.589 341.6 l +359.035 347.546 l +359.482 353.394 l +359.928 359.015 l +360.374 364.253 l +360.821 368.925 l +361.267 372.821 l +361.714 375.715 l +362.16 377.372 l +362.606 377.572 l +363.053 376.129 l +363.499 372.929 l +363.946 367.949 l +364.392 361.286 l +364.838 353.161 l +365.285 343.903 l +365.731 333.917 l +366.178 323.634 l +366.624 313.464 l +367.07 303.748 l +367.517 294.739 l +367.963 286.596 l +368.41 279.387 l +368.856 273.115 l +369.302 267.731 l +369.749 263.157 l +370.195 259.301 l +370.642 256.07 l +371.088 253.371 l +371.534 251.122 l +371.981 249.248 l +372.427 247.687 l +372.874 246.386 l +373.32 245.299 l +373.766 244.388 l +374.213 243.624 l +374.659 242.981 l +375.106 242.437 l +375.552 241.977 l +375.998 241.585 l +376.445 241.252 l +376.891 240.966 l +377.338 240.721 l +377.784 240.509 l +378.23 240.326 l +378.677 240.168 l +379.123 240.03 l +379.57 239.91 l +380.016 239.805 l +380.462 239.713 l +380.909 239.632 l +381.355 239.561 l +381.802 239.498 l +382.248 239.443 l +382.694 239.394 l +383.141 239.351 l +383.587 239.313 l +384.034 239.279 l +384.48 239.249 l +384.926 239.222 l +385.373 239.199 l +385.819 239.179 l +386.266 239.161 l +386.712 239.146 l +387.158 239.132 l +387.605 239.121 l +388.051 239.112 l +388.498 239.104 l +388.944 239.098 l +389.39 239.094 l +389.837 239.091 l +390.283 239.089 l +390.73 239.089 l +391.176 239.09 l +391.622 239.092 l +392.069 239.096 l +392.515 239.101 l +392.962 239.107 l +393.408 239.115 l +393.854 239.124 l +394.301 239.134 l +394.747 239.146 l +395.194 239.159 l +395.64 239.174 l +396.086 239.19 l +396.533 239.207 l +396.979 239.227 l +397.426 239.248 l +397.872 239.271 l +398.318 239.296 l +398.765 239.323 l +399.211 239.353 l +399.658 239.385 l +400.104 239.419 l +400.55 239.456 l +400.997 239.496 l +401.443 239.539 l +401.89 239.585 l +402.336 239.635 l +402.782 239.689 l +403.229 239.747 l +403.675 239.809 l +404.122 239.876 l +404.568 239.948 l +405.014 240.026 l +405.461 240.11 l +405.907 240.2 l +406.354 240.297 l +406.8 240.402 l +407.246 240.515 l +407.693 240.636 l +408.139 240.767 l +408.586 240.909 l +409.032 241.061 l +409.478 241.226 l +409.925 241.404 l +410.371 241.595 l +410.818 241.803 l +411.264 242.026 l +411.71 242.268 l +412.157 242.53 l +412.603 242.812 l +413.05 243.118 l +413.496 243.448 l +413.942 243.806 l +414.389 244.193 l +414.835 244.611 l +415.282 245.064 l +415.728 245.555 l +416.174 246.086 l +416.621 246.661 l +417.067 247.284 l +417.514 247.959 l +417.96 248.689 l +418.406 249.481 l +418.853 250.338 l +419.299 251.266 l +419.746 252.272 l +420.192 253.361 l +420.638 254.54 l +421.085 255.817 l +421.531 257.199 l +421.978 258.694 l +422.424 260.312 l +422.87 262.061 l +423.317 263.952 l +423.763 265.994 l +424.21 268.199 l +424.656 270.577 l +425.102 273.141 l +425.549 275.902 l +425.995 278.871 l +426.442 282.06 l +426.888 285.481 l +427.334 289.144 l +427.781 293.057 l +428.227 297.227 l +428.674 301.661 l +429.12 306.357 l +429.566 311.313 l +430.013 316.519 l +430.459 321.957 l +430.906 327.6 l +431.352 333.409 l +431.798 339.327 l +432.245 345.283 l +432.691 351.183 l +433.138 356.907 l +433.584 362.311 l +434.03 367.222 l +434.477 371.44 l +434.923 374.744 l +435.37 376.901 l +435.816 377.68 l +436.262 376.883 l +436.709 374.361 l +437.155 370.055 l +437.602 364.015 l +438.048 356.414 l +438.494 347.544 l +438.941 337.785 l +439.387 327.565 l +439.834 317.307 l +440.28 307.383 l +440.726 298.081 l +441.173 289.595 l +441.619 282.026 l +442.066 275.4 l +442.512 269.684 l +442.958 264.812 l +443.405 260.694 l +443.851 257.235 l +444.298 254.343 l +444.744 251.932 l +445.19 249.923 l +445.637 248.25 l +446.083 246.855 l +446.53 245.691 l +446.976 244.717 l +447.422 243.9 l +447.869 243.213 l +448.315 242.634 l +448.762 242.144 l +449.208 241.727 l +449.654 241.373 l +450.101 241.07 l +450.547 240.81 l +450.994 240.586 l +451.44 240.393 l +451.886 240.226 l +452.333 240.081 l +452.779 239.954 l +453.226 239.844 l +453.672 239.747 l +454.118 239.662 l +454.565 239.587 l +455.011 239.521 l +455.458 239.463 l +455.904 239.412 l +456.35 239.367 l +456.797 239.327 l +457.243 239.291 l +457.69 239.26 l +458.136 239.232 l +458.582 239.208 l +459.029 239.186 l +459.475 239.168 l +459.922 239.151 l +460.368 239.137 l +460.814 239.125 l +461.261 239.115 l +461.707 239.107 l +462.154 239.1 l +462.6 239.095 l +463.046 239.092 l +463.493 239.089 l +463.939 239.089 l +464.386 239.089 l +464.832 239.091 l +465.278 239.094 l +465.725 239.099 l +466.171 239.105 l +466.618 239.112 l +467.064 239.12 l +467.51 239.13 l +467.957 239.141 l +468.403 239.154 l +468.85 239.168 l +469.296 239.183 l +469.742 239.2 l +470.189 239.219 l +470.635 239.24 l +471.082 239.262 l +471.528 239.286 l +471.974 239.313 l +472.421 239.341 l +472.867 239.372 l +473.314 239.405 l +473.76 239.441 l +474.206 239.48 l +474.653 239.522 l +475.099 239.567 l +475.546 239.616 l +475.992 239.668 l +476.438 239.724 l +476.885 239.785 l +477.331 239.85 l +477.778 239.92 l +478.224 239.996 l +478.67 240.077 l +479.117 240.165 l +479.563 240.259 l +480.01 240.361 l +480.456 240.47 l +480.902 240.589 l +481.349 240.716 l +481.795 240.853 l +482.242 241.002 l +482.688 241.162 l +483.134 241.334 l +483.581 241.521 l +484.027 241.722 l +484.474 241.939 l +484.92 242.174 l +485.366 242.428 l +485.813 242.702 l +486.259 242.998 l +486.706 243.319 l +487.152 243.666 l +487.598 244.042 l +488.045 244.448 l +488.491 244.887 l +488.938 245.363 l +489.384 245.879 l +489.83 246.436 l +490.277 247.041 l +490.723 247.695 l +491.17 248.404 l +491.616 249.171 l +492.062 250.003 l +492.509 250.903 l +492.955 251.879 l +493.402 252.935 l +493.848 254.079 l +494.294 255.318 l +494.741 256.659 l +495.187 258.11 l +495.634 259.68 l +496.08 261.378 l +496.526 263.213 l +496.973 265.196 l +497.419 267.338 l +497.866 269.649 l +498.312 272.14 l +498.758 274.825 l +499.205 277.713 l +499.651 280.817 l +500.098 284.148 l +500.544 287.717 l +500.99 291.534 l +501.437 295.605 l +501.883 299.938 l +502.33 304.534 l +502.776 309.392 l +503.222 314.504 l +503.669 319.857 l +504.115 325.426 l +504.562 331.176 l +505.008 337.06 l +505.454 343.012 l +505.901 348.945 l +506.347 354.752 l +506.794 360.298 l +507.24 365.419 l +507.686 369.927 l +508.133 373.606 l +508.579 376.228 l +509.026 377.559 l +509.472 377.384 l +509.918 375.532 l +510.365 371.908 l +510.811 366.516 l +511.258 359.482 l +511.704 351.055 l +512.15 341.586 l +512.597 331.491 l +513.043 321.2 l +513.49 311.109 l +513.936 301.542 l +514.382 292.727 l +514.829 284.802 l +515.275 277.817 l +515.722 271.761 l +516.168 266.577 l +516.614 262.182 l +517.061 258.483 l +517.507 255.386 l +517.954 252.8 l +stroke +grestore +0.000 0.502 0.000 setrgbcolor +gsave +446.4 150.261 72 238.539 clipbox +72 288.626 m +72.4464 292.254 l +72.8928 295.558 l +73.3392 298.455 l +73.7856 300.892 l +74.232 302.85 l +74.6784 304.334 l +75.1248 305.372 l +75.5712 306.003 l +76.0176 306.276 l +76.464 306.242 l +76.9104 305.949 l +77.3568 305.442 l +77.8032 304.76 l +78.2496 303.939 l +78.696 303.008 l +79.1424 301.991 l +79.5888 300.91 l +80.0352 299.781 l +80.4816 298.618 l +80.928 297.432 l +81.3744 296.232 l +81.8208 295.027 l +82.2672 293.821 l +82.7136 292.62 l +83.16 291.427 l +83.6064 290.246 l +84.0528 289.079 l +84.4992 287.928 l +84.9456 286.795 l +85.392 285.68 l +85.8384 284.584 l +86.2848 283.509 l +86.7312 282.454 l +87.1776 281.42 l +87.624 280.407 l +88.0704 279.415 l +88.5168 278.443 l +88.9632 277.493 l +89.4096 276.564 l +89.856 275.655 l +90.3024 274.767 l +90.7488 273.898 l +91.1952 273.05 l +91.6416 272.221 l +92.088 271.411 l +92.5344 270.619 l +92.9808 269.847 l +93.4272 269.092 l +93.8736 268.356 l +94.32 267.636 l +94.7664 266.934 l +95.2128 266.249 l +95.6592 265.58 l +96.1056 264.927 l +96.552 264.289 l +96.9984 263.667 l +97.4448 263.06 l +97.8912 262.468 l +98.3376 261.89 l +98.784 261.326 l +99.2304 260.776 l +99.6768 260.239 l +100.123 259.716 l +100.57 259.205 l +101.016 258.707 l +101.462 258.221 l +101.909 257.747 l +102.355 257.284 l +102.802 256.833 l +103.248 256.394 l +103.694 255.965 l +104.141 255.547 l +104.587 255.139 l +105.034 254.741 l +105.48 254.354 l +105.926 253.976 l +106.373 253.607 l +106.819 253.248 l +107.266 252.898 l +107.712 252.557 l +108.158 252.225 l +108.605 251.901 l +109.051 251.585 l +109.498 251.278 l +109.944 250.978 l +110.39 250.686 l +110.837 250.402 l +111.283 250.126 l +111.73 249.856 l +112.176 249.594 l +112.622 249.339 l +113.069 249.091 l +113.515 248.85 l +113.962 248.615 l +114.408 248.387 l +114.854 248.165 l +115.301 247.95 l +115.747 247.741 l +116.194 247.538 l +116.64 247.341 l +117.086 247.15 l +117.533 246.964 l +117.979 246.785 l +118.426 246.612 l +118.872 246.444 l +119.318 246.282 l +119.765 246.125 l +120.211 245.974 l +120.658 245.829 l +121.104 245.689 l +121.55 245.555 l +121.997 245.427 l +122.443 245.304 l +122.89 245.187 l +123.336 245.076 l +123.782 244.971 l +124.229 244.871 l +124.675 244.778 l +125.122 244.691 l +125.568 244.61 l +126.014 244.536 l +126.461 244.469 l +126.907 244.409 l +127.354 244.356 l +127.8 244.312 l +128.246 244.275 l +128.693 244.248 l +129.139 244.229 l +129.586 244.221 l +130.032 244.223 l +130.478 244.237 l +130.925 244.264 l +131.371 244.305 l +131.818 244.36 l +132.264 244.433 l +132.71 244.524 l +133.157 244.636 l +133.603 244.771 l +134.05 244.933 l +134.496 245.125 l +134.942 245.351 l +135.389 245.616 l +135.835 245.925 l +136.282 246.287 l +136.728 246.708 l +137.174 247.2 l +137.621 247.773 l +138.067 248.441 l +138.514 249.221 l +138.96 250.13 l +139.406 251.191 l +139.853 252.428 l +140.299 253.869 l +140.746 255.541 l +141.192 257.475 l +141.638 259.698 l +142.085 262.231 l +142.531 265.088 l +142.978 268.264 l +143.424 271.734 l +143.87 275.449 l +144.317 279.331 l +144.763 283.28 l +145.21 287.178 l +145.656 290.903 l +146.102 294.342 l +146.549 297.402 l +146.995 300.019 l +147.442 302.16 l +147.888 303.823 l +148.334 305.026 l +148.781 305.807 l +149.227 306.211 l +149.674 306.288 l +150.12 306.088 l +150.566 305.658 l +151.013 305.038 l +151.459 304.267 l +151.906 303.374 l +152.352 302.388 l +152.798 301.329 l +153.245 300.216 l +153.691 299.065 l +154.138 297.886 l +154.584 296.691 l +155.03 295.487 l +155.477 294.281 l +155.923 293.077 l +156.37 291.881 l +156.816 290.695 l +157.262 289.523 l +157.709 288.365 l +158.155 287.225 l +158.602 286.103 l +159.048 285 l +159.494 283.917 l +159.941 282.854 l +160.387 281.812 l +160.834 280.791 l +161.28 279.791 l +161.726 278.811 l +162.173 277.853 l +162.619 276.916 l +163.066 275.999 l +163.512 275.103 l +163.958 274.227 l +164.405 273.371 l +164.851 272.535 l +165.298 271.717 l +165.744 270.919 l +166.19 270.139 l +166.637 269.378 l +167.083 268.635 l +167.53 267.909 l +167.976 267.2 l +168.422 266.508 l +168.869 265.833 l +169.315 265.174 l +169.762 264.531 l +170.208 263.903 l +170.654 263.29 l +171.101 262.692 l +171.547 262.109 l +171.994 261.54 l +172.44 260.984 l +172.886 260.443 l +173.333 259.914 l +173.779 259.398 l +174.226 258.895 l +174.672 258.405 l +175.118 257.926 l +175.565 257.459 l +176.011 257.004 l +176.458 256.56 l +176.904 256.127 l +177.35 255.705 l +177.797 255.293 l +178.243 254.892 l +178.69 254.5 l +179.136 254.119 l +179.582 253.747 l +180.029 253.384 l +180.475 253.031 l +180.922 252.686 l +181.368 252.35 l +181.814 252.023 l +182.261 251.704 l +182.707 251.394 l +183.154 251.091 l +183.6 250.797 l +184.046 250.51 l +184.493 250.23 l +184.939 249.958 l +185.386 249.693 l +185.832 249.436 l +186.278 249.185 l +186.725 248.941 l +187.171 248.704 l +187.618 248.473 l +188.064 248.249 l +188.51 248.031 l +188.957 247.82 l +189.403 247.614 l +189.85 247.415 l +190.296 247.222 l +190.742 247.034 l +191.189 246.853 l +191.635 246.677 l +192.082 246.507 l +192.528 246.343 l +192.974 246.184 l +193.421 246.031 l +193.867 245.884 l +194.314 245.742 l +194.76 245.606 l +195.206 245.475 l +195.653 245.35 l +196.099 245.231 l +196.546 245.118 l +196.992 245.01 l +197.438 244.908 l +197.885 244.813 l +198.331 244.723 l +198.778 244.64 l +199.224 244.564 l +199.67 244.494 l +200.117 244.431 l +200.563 244.376 l +201.01 244.328 l +201.456 244.288 l +201.902 244.257 l +202.349 244.235 l +202.795 244.223 l +203.242 244.221 l +203.688 244.231 l +204.134 244.252 l +204.581 244.287 l +205.027 244.337 l +205.474 244.403 l +205.92 244.487 l +206.366 244.591 l +206.813 244.717 l +207.259 244.868 l +207.706 245.048 l +208.152 245.26 l +208.598 245.51 l +209.045 245.801 l +209.491 246.142 l +209.938 246.54 l +210.384 247.004 l +210.83 247.544 l +211.277 248.174 l +211.723 248.909 l +212.17 249.766 l +212.616 250.767 l +213.062 251.934 l +213.509 253.293 l +213.955 254.874 l +214.402 256.705 l +214.848 258.814 l +215.294 261.227 l +215.741 263.96 l +216.187 267.016 l +216.634 270.378 l +217.08 274.007 l +217.526 277.836 l +217.973 281.773 l +218.419 285.705 l +218.866 289.51 l +219.312 293.07 l +219.758 296.284 l +220.205 299.075 l +220.651 301.4 l +221.098 303.244 l +221.544 304.619 l +221.99 305.556 l +222.437 306.098 l +222.883 306.294 l +223.33 306.194 l +223.776 305.847 l +224.222 305.295 l +224.669 304.577 l +225.115 303.727 l +225.562 302.774 l +226.008 301.74 l +226.454 300.646 l +226.901 299.508 l +227.347 298.338 l +227.794 297.148 l +228.24 295.947 l +228.686 294.741 l +229.133 293.536 l +229.579 292.336 l +230.026 291.146 l +230.472 289.968 l +230.918 288.805 l +231.365 287.658 l +231.811 286.529 l +232.258 285.418 l +232.704 284.328 l +233.15 283.257 l +233.597 282.207 l +234.043 281.178 l +234.49 280.17 l +234.936 279.182 l +235.382 278.216 l +235.829 277.271 l +236.275 276.347 l +236.722 275.443 l +237.168 274.559 l +237.614 273.695 l +238.061 272.851 l +238.507 272.027 l +238.954 271.221 l +239.4 270.435 l +239.846 269.666 l +240.293 268.916 l +240.739 268.184 l +241.186 267.468 l +241.632 266.77 l +242.078 266.089 l +242.525 265.423 l +242.971 264.774 l +243.418 264.14 l +243.864 263.522 l +244.31 262.919 l +244.757 262.33 l +245.203 261.755 l +245.65 261.195 l +246.096 260.648 l +246.542 260.114 l +246.989 259.594 l +247.435 259.086 l +247.882 258.59 l +248.328 258.107 l +248.774 257.636 l +249.221 257.176 l +249.667 256.728 l +250.114 256.291 l +250.56 255.865 l +251.006 255.449 l +251.453 255.044 l +251.899 254.648 l +252.346 254.263 l +252.792 253.887 l +253.238 253.521 l +253.685 253.164 l +254.131 252.816 l +254.578 252.477 l +255.024 252.147 l +255.47 251.825 l +255.917 251.511 l +256.363 251.206 l +256.81 250.908 l +257.256 250.618 l +257.702 250.336 l +258.149 250.061 l +258.595 249.794 l +259.042 249.533 l +259.488 249.28 l +259.934 249.033 l +260.381 248.794 l +260.827 248.56 l +261.274 248.334 l +261.72 248.114 l +262.166 247.9 l +262.613 247.692 l +263.059 247.49 l +263.506 247.295 l +263.952 247.105 l +264.398 246.921 l +264.845 246.744 l +265.291 246.571 l +265.738 246.405 l +266.184 246.244 l +266.63 246.089 l +267.077 245.939 l +267.523 245.795 l +267.97 245.657 l +268.416 245.524 l +268.862 245.397 l +269.309 245.276 l +269.755 245.16 l +270.202 245.05 l +270.648 244.946 l +271.094 244.848 l +271.541 244.757 l +271.987 244.671 l +272.434 244.592 l +272.88 244.52 l +273.326 244.454 l +273.773 244.396 l +274.219 244.345 l +274.666 244.302 l +275.112 244.268 l +275.558 244.242 l +276.005 244.226 l +276.451 244.221 l +276.898 244.226 l +277.344 244.243 l +277.79 244.272 l +278.237 244.316 l +278.683 244.376 l +279.13 244.453 l +279.576 244.549 l +280.022 244.666 l +280.469 244.807 l +280.915 244.976 l +281.362 245.175 l +281.808 245.41 l +282.254 245.685 l +282.701 246.006 l +283.147 246.381 l +283.594 246.818 l +284.04 247.328 l +284.486 247.922 l +284.933 248.615 l +285.379 249.424 l +285.826 250.367 l +286.272 251.467 l +286.718 252.75 l +287.165 254.243 l +287.611 255.975 l +288.058 257.975 l +288.504 260.269 l +288.95 262.879 l +289.397 265.812 l +289.843 269.061 l +290.29 272.595 l +290.736 276.357 l +291.182 280.265 l +291.629 284.213 l +292.075 288.081 l +292.522 291.748 l +292.968 295.104 l +293.414 298.064 l +293.861 300.57 l +294.307 302.597 l +294.754 304.148 l +295.2 305.248 l +295.646 305.935 l +296.093 306.257 l +296.539 306.264 l +296.986 306.006 l +297.432 305.527 l +297.878 304.868 l +298.325 304.065 l +298.771 303.148 l +299.218 302.143 l +299.664 301.07 l +300.11 299.946 l +300.557 298.787 l +301.003 297.604 l +301.45 296.406 l +301.896 295.201 l +302.342 293.995 l +302.789 292.793 l +303.235 291.599 l +303.682 290.416 l +304.128 289.247 l +304.574 288.094 l +305.021 286.957 l +305.467 285.84 l +305.914 284.741 l +306.36 283.663 l +306.806 282.605 l +307.253 281.568 l +307.699 280.552 l +308.146 279.557 l +308.592 278.582 l +309.038 277.629 l +309.485 276.697 l +309.931 275.785 l +310.378 274.894 l +310.824 274.023 l +311.27 273.171 l +311.717 272.339 l +312.163 271.526 l +312.61 270.733 l +313.056 269.957 l +313.502 269.2 l +313.949 268.461 l +314.395 267.739 l +314.842 267.035 l +315.288 266.347 l +315.734 265.675 l +316.181 265.02 l +316.627 264.38 l +317.074 263.756 l +317.52 263.147 l +317.966 262.553 l +318.413 261.973 l +318.859 261.407 l +319.306 260.855 l +319.752 260.316 l +320.198 259.791 l +320.645 259.278 l +321.091 258.778 l +321.538 258.29 l +321.984 257.814 l +322.43 257.35 l +322.877 256.898 l +323.323 256.456 l +323.77 256.026 l +324.216 255.606 l +324.662 255.197 l +325.109 254.798 l +325.555 254.409 l +326.002 254.03 l +326.448 253.66 l +326.894 253.299 l +327.341 252.948 l +327.787 252.606 l +328.234 252.272 l +328.68 251.947 l +329.126 251.63 l +329.573 251.321 l +330.019 251.021 l +330.466 250.728 l +330.912 250.443 l +331.358 250.165 l +331.805 249.895 l +332.251 249.632 l +332.698 249.376 l +333.144 249.127 l +333.59 248.884 l +334.037 248.649 l +334.483 248.42 l +334.93 248.197 l +335.376 247.981 l +335.822 247.771 l +336.269 247.567 l +336.715 247.369 l +337.162 247.177 l +337.608 246.991 l +338.054 246.811 l +338.501 246.636 l +338.947 246.468 l +339.394 246.305 l +339.84 246.147 l +340.286 245.996 l +340.733 245.85 l +341.179 245.709 l +341.626 245.574 l +342.072 245.445 l +342.518 245.322 l +342.965 245.204 l +343.411 245.092 l +343.858 244.985 l +344.304 244.885 l +344.75 244.791 l +345.197 244.703 l +345.643 244.621 l +346.09 244.546 l +346.536 244.478 l +346.982 244.417 l +347.429 244.364 l +347.875 244.318 l +348.322 244.28 l +348.768 244.251 l +349.214 244.231 l +349.661 244.222 l +350.107 244.222 l +350.554 244.235 l +351 244.259 l +351.446 244.298 l +351.893 244.351 l +352.339 244.421 l +352.786 244.51 l +353.232 244.619 l +353.678 244.75 l +354.125 244.908 l +354.571 245.095 l +355.018 245.316 l +355.464 245.575 l +355.91 245.877 l +356.357 246.231 l +356.803 246.643 l +357.25 247.124 l +357.696 247.685 l +358.142 248.338 l +358.589 249.1 l +359.035 249.99 l +359.482 251.027 l +359.928 252.238 l +360.374 253.647 l +360.821 255.284 l +361.267 257.178 l +361.714 259.358 l +362.16 261.845 l +362.606 264.655 l +363.053 267.786 l +363.499 271.216 l +363.946 274.899 l +364.392 278.763 l +364.838 282.71 l +365.285 286.623 l +365.731 290.38 l +366.178 293.866 l +366.624 296.986 l +367.07 299.669 l +367.517 301.88 l +367.963 303.611 l +368.41 304.879 l +368.856 305.719 l +369.302 306.174 l +369.749 306.295 l +370.195 306.133 l +370.642 305.733 l +371.088 305.138 l +371.534 304.387 l +371.981 303.51 l +372.427 302.535 l +372.874 301.486 l +373.32 300.38 l +373.766 299.233 l +374.213 298.058 l +374.659 296.864 l +375.106 295.661 l +375.552 294.455 l +375.998 293.251 l +376.445 292.053 l +376.891 290.866 l +377.338 289.691 l +377.784 288.532 l +378.23 287.389 l +378.677 286.264 l +379.123 285.158 l +379.57 284.072 l +380.016 283.006 l +380.462 281.961 l +380.909 280.937 l +381.355 279.934 l +381.802 278.952 l +382.248 277.991 l +382.694 277.05 l +383.141 276.131 l +383.587 275.231 l +384.034 274.353 l +384.48 273.494 l +384.926 272.654 l +385.373 271.834 l +385.819 271.033 l +386.266 270.251 l +386.712 269.487 l +387.158 268.741 l +387.605 268.013 l +388.051 267.301 l +388.498 266.607 l +388.944 265.93 l +389.39 265.268 l +389.837 264.623 l +390.283 263.993 l +390.73 263.378 l +391.176 262.778 l +391.622 262.192 l +392.069 261.621 l +392.515 261.064 l +392.962 260.52 l +393.408 259.99 l +393.854 259.472 l +394.301 258.967 l +394.747 258.475 l +395.194 257.995 l +395.64 257.526 l +396.086 257.069 l +396.533 256.624 l +396.979 256.189 l +397.426 255.765 l +397.872 255.352 l +398.318 254.949 l +398.765 254.556 l +399.211 254.173 l +399.658 253.8 l +400.104 253.436 l +400.55 253.081 l +400.997 252.735 l +401.443 252.398 l +401.89 252.07 l +402.336 251.75 l +402.782 251.438 l +403.229 251.135 l +403.675 250.839 l +404.122 250.551 l +404.568 250.27 l +405.014 249.997 l +405.461 249.731 l +405.907 249.473 l +406.354 249.221 l +406.8 248.976 l +407.246 248.738 l +407.693 248.506 l +408.139 248.281 l +408.586 248.062 l +409.032 247.85 l +409.478 247.644 l +409.925 247.444 l +410.371 247.249 l +410.818 247.061 l +411.264 246.879 l +411.71 246.702 l +412.157 246.531 l +412.603 246.366 l +413.05 246.207 l +413.496 246.053 l +413.942 245.905 l +414.389 245.762 l +414.835 245.625 l +415.282 245.494 l +415.728 245.368 l +416.174 245.248 l +416.621 245.134 l +417.067 245.025 l +417.514 244.923 l +417.96 244.826 l +418.406 244.736 l +418.853 244.652 l +419.299 244.574 l +419.746 244.503 l +420.192 244.44 l +420.638 244.383 l +421.085 244.334 l +421.531 244.293 l +421.978 244.261 l +422.424 244.238 l +422.87 244.224 l +423.317 244.221 l +423.763 244.229 l +424.21 244.248 l +424.656 244.282 l +425.102 244.329 l +425.549 244.393 l +425.995 244.474 l +426.442 244.574 l +426.888 244.697 l +427.334 244.845 l +427.781 245.02 l +428.227 245.227 l +428.674 245.471 l +429.12 245.756 l +429.566 246.09 l +430.013 246.479 l +430.459 246.932 l +430.906 247.461 l +431.352 248.077 l +431.798 248.796 l +432.245 249.634 l +432.691 250.613 l +433.138 251.754 l +433.584 253.084 l +434.03 254.631 l +434.477 256.423 l +434.923 258.491 l +435.37 260.859 l +435.816 263.545 l +436.262 266.554 l +436.709 269.874 l +437.155 273.468 l +437.602 277.274 l +438.048 281.202 l +438.494 285.141 l +438.941 288.972 l +439.387 292.575 l +439.834 295.844 l +440.28 298.7 l +440.726 301.094 l +441.173 303.007 l +441.619 304.448 l +442.066 305.446 l +442.512 306.042 l +442.958 306.285 l +443.405 306.225 l +443.851 305.91 l +444.298 305.385 l +444.744 304.69 l +445.19 303.857 l +445.637 302.917 l +446.083 301.894 l +446.53 300.807 l +446.976 299.674 l +447.422 298.509 l +447.869 297.321 l +448.315 296.121 l +448.762 294.915 l +449.208 293.71 l +449.654 292.509 l +450.101 291.318 l +450.547 290.138 l +450.994 288.972 l +451.44 287.823 l +451.886 286.691 l +452.333 285.578 l +452.779 284.484 l +453.226 283.41 l +453.672 282.357 l +454.118 281.325 l +454.565 280.314 l +455.011 279.324 l +455.458 278.355 l +455.904 277.407 l +456.35 276.479 l +456.797 275.572 l +457.243 274.686 l +457.69 273.819 l +458.136 272.972 l +458.582 272.145 l +459.029 271.337 l +459.475 270.547 l +459.922 269.776 l +460.368 269.023 l +460.814 268.288 l +461.261 267.571 l +461.707 266.87 l +462.154 266.186 l +462.6 265.519 l +463.046 264.867 l +463.493 264.231 l +463.939 263.611 l +464.386 263.005 l +464.832 262.414 l +465.278 261.837 l +465.725 261.275 l +466.171 260.726 l +466.618 260.19 l +467.064 259.668 l +467.51 259.158 l +467.957 258.661 l +468.403 258.176 l +468.85 257.703 l +469.296 257.242 l +469.742 256.792 l +470.189 256.354 l +470.635 255.926 l +471.082 255.508 l +471.528 255.102 l +471.974 254.705 l +472.421 254.318 l +472.867 253.941 l +473.314 253.574 l +473.76 253.215 l +474.206 252.866 l +474.653 252.526 l +475.099 252.194 l +475.546 251.871 l +475.992 251.556 l +476.438 251.25 l +476.885 250.951 l +477.331 250.66 l +477.778 250.376 l +478.224 250.1 l +478.67 249.832 l +479.117 249.57 l +479.563 249.316 l +480.01 249.069 l +480.456 248.828 l +480.902 248.594 l +481.349 248.366 l +481.795 248.145 l +482.242 247.93 l +482.688 247.722 l +483.134 247.519 l +483.581 247.323 l +484.027 247.132 l +484.474 246.948 l +484.92 246.769 l +485.366 246.596 l +485.813 246.429 l +486.259 246.267 l +486.706 246.111 l +487.152 245.961 l +487.598 245.816 l +488.045 245.677 l +488.491 245.543 l +488.938 245.415 l +489.384 245.293 l +489.83 245.177 l +490.277 245.066 l +490.723 244.961 l +491.17 244.862 l +491.616 244.77 l +492.062 244.683 l +492.509 244.603 l +492.955 244.53 l +493.402 244.463 l +493.848 244.404 l +494.294 244.352 l +494.741 244.308 l +495.187 244.272 l +495.634 244.246 l +496.08 244.228 l +496.526 244.221 l +496.973 244.224 l +497.419 244.239 l +497.866 244.267 l +498.312 244.309 l +498.758 244.366 l +499.205 244.441 l +499.651 244.534 l +500.098 244.648 l +500.544 244.785 l +500.99 244.95 l +501.437 245.144 l +501.883 245.373 l +502.33 245.642 l +502.776 245.956 l +503.222 246.323 l +503.669 246.751 l +504.115 247.249 l +504.562 247.831 l +505.008 248.508 l +505.454 249.299 l +505.901 250.221 l +506.347 251.298 l +506.794 252.552 l +507.24 254.013 l +507.686 255.708 l +508.133 257.668 l +508.579 259.919 l +509.026 262.482 l +509.472 265.368 l +509.918 268.573 l +510.365 272.068 l +510.811 275.802 l +511.258 279.695 l +511.704 283.645 l +512.15 287.532 l +512.597 291.235 l +513.043 294.642 l +513.49 297.663 l +513.936 300.237 l +514.382 302.334 l +514.829 303.953 l +515.275 305.115 l +515.722 305.859 l +516.168 306.231 l +516.614 306.281 l +517.061 306.058 l +517.507 305.608 l +517.954 304.973 l +stroke +grestore +0.000 setgray +/BitstreamVeraSans-Roman findfont +12.000 scalefont +setfont +68.977 225.461 m +0 0.172 rmoveto +(0) show +0.500 setlinewidth +0 setlinecap +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +161.28 238.539 m +161.28 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +161.28 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +161.28 388.8 o +154.475 225.461 m +0 0.172 rmoveto +(20) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +250.56 238.539 m +250.56 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +250.56 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +250.56 388.8 o +243.615 225.461 m +0 0.172 rmoveto +(40) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +339.84 238.539 m +339.84 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +339.84 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +339.84 388.8 o +333.02 225.461 m +0 0.172 rmoveto +(60) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +429.12 238.539 m +429.12 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +429.12 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +429.12 388.8 o +422.284 225.461 m +0 0.172 rmoveto +(80) show +507.994 225.461 m +0 0.172 rmoveto +(100) show +259.044 208.836 m +0 2.5 rmoveto +(time \(years\)) show +61.953 234 m +0 0.172 rmoveto +(0) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 263.583 m +518.4 263.583 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 263.583 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 263.583 o +62.328 259.122 m +0 0.172 rmoveto +(5) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 288.626 m +518.4 288.626 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 288.626 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 288.626 o +54.828 284.087 m +0 0.172 rmoveto +(10) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 313.67 m +518.4 313.67 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 313.67 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 313.67 o +55.078 309.209 m +0 0.172 rmoveto +(15) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 338.713 m +518.4 338.713 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 338.713 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 338.713 o +54.391 334.174 m +0 0.172 rmoveto +(20) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 363.757 m +518.4 363.757 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 363.757 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 363.757 o +54.641 359.217 m +0 0.172 rmoveto +(25) show +54.438 384.261 m +0 0.172 rmoveto +(30) show +49.391 282.787 m +gsave +90 rotate +0 2.5 rmoveto +(population) show +grestore +1.000 setlinewidth +2 setlinecap +72 238.539 m +518.4 238.539 l +518.4 388.8 l +72 388.8 l +72 238.539 l +stroke +/BitstreamVeraSans-Roman findfont +14.000 scalefont +setfont +155.887 391.805 m +0 2.906 rmoveto +(population trajectories and phase plane) show +412.181 356.305 m +412.181 385.795 l +509.472 385.795 l +509.472 356.305 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +0.000 0.000 1.000 setrgbcolor +2.000 setlinewidth +423.288 377.915 m +445.608 377.915 l +stroke +0.000 0.502 0.000 setrgbcolor +423.288 364.184 m +445.608 364.184 l +stroke +0.000 setgray +454.536 372.494 m +0 0.203 rmoveto +(rabbits) show +454.536 358.762 m +0 0.203 rmoveto +(foxes) show +1.000 setlinewidth +145.415 43.2 m +145.415 193.461 l +444.985 193.461 l +444.985 43.2 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +0.000 setlinewidth +0 setlinecap +gsave +299.6 150.3 145.4 43.2 clipbox +145.029 43.296 m +145.139 42.914 l +145.524 42.818 l +145.8 43.104 l +145.691 43.486 l +145.305 43.582 l +145.029 43.296 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +154.925 43.597 m +154.581 43.399 l +154.581 43.001 l +154.925 42.803 l +155.269 43.001 l +155.269 43.399 l +154.925 43.597 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +164.827 43.265 m +164.574 43.572 l +164.183 43.507 l +164.043 43.135 l +164.296 42.828 l +164.687 42.893 l +164.827 43.265 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +173.937 43.336 m +174.073 43.345 l +173.92 43.609 l +175.309 43.285 l +173.971 42.791 l +174.09 43.072 l +173.954 43.064 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +183.45 43.405 m +183.654 43.41 l +183.438 43.814 l +185.502 43.257 l +183.472 42.586 l +183.666 43.001 l +183.461 42.995 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +192.963 43.473 m +193.236 43.476 l +192.957 44.019 l +195.694 43.228 l +192.974 42.381 l +193.241 42.93 l +192.968 42.927 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +202.476 43.541 m +202.817 43.541 l +202.476 44.223 l +205.886 43.2 l +202.476 42.177 l +202.817 42.859 l +202.476 42.859 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +211.989 43.597 m +212.507 43.594 l +212.115 44.391 l +216.078 43.172 l... [truncated message content] |
From: <js...@us...> - 2007-10-29 22:56:07
|
Revision: 4064 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4064&view=rev Author: jswhit Date: 2007-10-29 15:56:03 -0700 (Mon, 29 Oct 2007) Log Message: ----------- fix formatting Modified Paths: -------------- trunk/toolkits/basemap/Changelog Modified: trunk/toolkits/basemap/Changelog =================================================================== --- trunk/toolkits/basemap/Changelog 2007-10-29 20:06:26 UTC (rev 4063) +++ trunk/toolkits/basemap/Changelog 2007-10-29 22:56:03 UTC (rev 4064) @@ -1,9 +1,9 @@ version 0.9.7 (not yet released) * fix rotate_vector so it works in S. Hem and for non-orthogonal - grids. Support for masked velocity vectors also added. (EF) + grids. Support for masked velocity vectors also added. (EF) * numpification. (EF) version 0.9.6 (svn revision 3888) - * fix addcyclic function so it handles masked arrays. + * fix addcyclic function so it handles masked arrays. * labelling of meridians and parallels now works with very small map regions (less than 0.2 degrees square). * Subregions of the globe may be specified with llcrnrlat, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-29 20:06:37
|
Revision: 4063 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4063&view=rev Author: jdh2358 Date: 2007-10-29 13:06:26 -0700 (Mon, 29 Oct 2007) Log Message: ----------- added josh's convolution patch Modified Paths: -------------- trunk/py4science/examples/skel/convolution_demo_skel.py Modified: trunk/py4science/examples/skel/convolution_demo_skel.py =================================================================== --- trunk/py4science/examples/skel/convolution_demo_skel.py 2007-10-29 19:00:25 UTC (rev 4062) +++ trunk/py4science/examples/skel/convolution_demo_skel.py 2007-10-29 20:06:26 UTC (rev 4063) @@ -48,12 +48,12 @@ # to the length of r + x do avoid circular convolution artifacts R = XXX # the zero padded FFT of r X = XXX # the zero padded FFT of x -Y = XXX # the product of R and S +Y = XXX # the product of R and X # now inverse fft and extract the real part, just the part up to # len(x) yi = XXX -# plot t vs x, t vs y and yi, and t vs r in three subplots +# plot x vs t, y and yi vs t, and r vs t in three subplots XXX show() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-29 19:00:26
|
Revision: 4062 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4062&view=rev Author: jdh2358 Date: 2007-10-29 12:00:25 -0700 (Mon, 29 Oct 2007) Log Message: ----------- added cohere demo Modified Paths: -------------- trunk/matplotlib/examples/backend_driver.py trunk/matplotlib/examples/image_slices_viewer.py Added Paths: ----------- trunk/matplotlib/examples/cohere_demo.py Modified: trunk/matplotlib/examples/backend_driver.py =================================================================== --- trunk/matplotlib/examples/backend_driver.py 2007-10-29 18:52:41 UTC (rev 4061) +++ trunk/matplotlib/examples/backend_driver.py 2007-10-29 19:00:25 UTC (rev 4062) @@ -32,9 +32,10 @@ 'barh_demo.py', 'color_demo.py', 'colorbar_only.py', + 'cohere_demo.py', 'contour_demo.py', 'contourf_demo.py', - 'csd_demo.py', + 'csd_demo.py', 'custom_ticker1.py', 'customize_rc.py', 'date_demo1.py', Added: trunk/matplotlib/examples/cohere_demo.py =================================================================== --- trunk/matplotlib/examples/cohere_demo.py (rev 0) +++ trunk/matplotlib/examples/cohere_demo.py 2007-10-29 19:00:25 UTC (rev 4062) @@ -0,0 +1,37 @@ +#!/usr/bin/env python +""" +Compute the coherence of two signals +""" +import numpy as n + +from pylab import figure, show + +dt = 0.01 +t = n.arange(0, 30, dt) +Nt = len(t) +nse1 = n.random.randn(Nt) # white noise 1 +nse2 = n.random.randn(Nt) # white noise 2 +r = n.exp(-t/0.05) + +cnse1 = n.convolve(nse1, r)*dt # colored noise 1 +cnse1 = cnse1[:Nt] +cnse2 = n.convolve(nse2, r)*dt # colored noise 2 +cnse2 = cnse2[:Nt] + +# two signals with a coherent part and a random part +s1 = 0.01*n.sin(2*n.pi*10*t) + cnse1 +s2 = 0.01*n.sin(2*n.pi*10*t) + cnse2 + +fig = figure() +ax = fig.add_subplot(211) +ax.plot(t, s1, 'b-', t, s2, 'g-') +ax.set_xlim(0,5) +ax.set_xlabel('time') +ax.set_ylabel('s1 and s2') + +ax = fig.add_subplot(212) +cxy, f = ax.cohere(s1, s2, 256, 1./dt) + +show() + + Modified: trunk/matplotlib/examples/image_slices_viewer.py =================================================================== --- trunk/matplotlib/examples/image_slices_viewer.py 2007-10-29 18:52:41 UTC (rev 4061) +++ trunk/matplotlib/examples/image_slices_viewer.py 2007-10-29 19:00:25 UTC (rev 4062) @@ -17,7 +17,7 @@ self.update() def onscroll(self, event): - + print event.button if event.button=='up': self.ind = numpy.clip(self.ind+1, 0, self.slices-1) else: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |