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: <jr...@us...> - 2008-01-08 18:57:24
|
Revision: 4811
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4811&view=rev
Author: jrevans
Date: 2008-01-08 10:57:23 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Added some logic to Axes.bar that will preconvert unitized data before creating
the rectangular Patch since not all unitized data can be subtracted with a floating
point number (ie. 'left - width') this is especially true with 'time' (time - time = duration).
This problem can be seen when passing in a floating-point number for the width, which
in-turn should be interpreted to be a number in the units for the axis. This was not
being done, and now is. There is probably a better way to handle this.
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/axes.py
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py 2008-01-08 18:45:40 UTC (rev 4810)
+++ trunk/matplotlib/lib/matplotlib/axes.py 2008-01-08 18:57:23 UTC (rev 4811)
@@ -3264,7 +3264,21 @@
patches = []
+ # lets do some conversions now since some types cannot be subtracted uniformly
+ if self.xaxis is not None:
+ xconv = self.xaxis.converter
+ if xconv is not None:
+ units = self.xaxis.get_units()
+ left = xconv.convert( left, units )
+ width = xconv.convert( width, units )
+ if self.yaxis is not None:
+ yconv = self.yaxis.converter
+ if yconv is not None :
+ units = self.yaxis.get_units()
+ bottom = yconv.convert( bottom, units )
+ height = yconv.convert( height, units )
+
if align == 'edge':
pass
elif align == 'center':
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jd...@us...> - 2008-01-08 18:45:44
|
Revision: 4810
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4810&view=rev
Author: jdh2358
Date: 2008-01-08 10:45:40 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
added migration doc
Added Paths:
-----------
trunk/matplotlib/MIGRATION.txt
Added: trunk/matplotlib/MIGRATION.txt
===================================================================
--- trunk/matplotlib/MIGRATION.txt (rev 0)
+++ trunk/matplotlib/MIGRATION.txt 2008-01-08 18:45:40 UTC (rev 4810)
@@ -0,0 +1,64 @@
+Migrating to the new matplotlib codebase
+========================================
+
+Michael Droettboom has spent the last several month working on the
+"transforms branch" of matplotlib, in which he rewrote from the ground
+up the transformation infrastructure in matplotlib, whih many found
+unintuitive and hard to extend. In addition to a cleaner code base,
+the refactoring allows you to define your own trasformations and
+projections (eg map projections) within matplotlib. He has merged his
+work into the HEAD of the svn trunk, and this will be the basis for
+future matplotlib releases.
+
+If you are a svn user, we encourage you to continue using the trunk as
+before, but with the understanding that you are now truly on the
+bleeding edge. Michael has made sure all the examples still pass with
+the new code base, so for the vast majority of you, I except to see
+few problems. But we need to get as many people as possible using the
+new code base so we can find and fix the remaining problems. We have
+take the svn cde used in the last stable release in the 0.91 series,
+and made it a maintenance branch so we can still fix bugs and support
+people who are not ready to migrate to the new transformation
+infrastructure but nonetheless need acccess to svn bug fixes.
+
+The experimental transforms refactoring changes have been merged into
+SVN trunk. While this version is passing all examples and unit tests,
+there may be changes that subtly break things that used to work, raise
+nasty exceptions or kill innocent puppies. To help move matplotlib
+forward, we encourage all users who are comfortable with the bleeding
+edge to use the trunk with their own plots and report any bugs to the
+mailing list.
+
+Using the new code
+==================
+
+To check out the trunk with the latest transforms refactoring:
+
+ > svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/matplotlib
+
+If you already have a working copy of the trunk, your next "svn up" will
+include the latest transforms refactoring.
+
+Using the old svn code
+======================
+
+To check out the maintenance branch, in order to commit bugfixes to 0.91.x:
+
+ > svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/v0_91_maint matplotlib_0_91_maint
+
+Any applicable bugfixes on the 0.91.x should be merged into the trunk so
+they are fixed there as well.
+
+API CHANGES in the new transformation infrastructure
+====================================================
+
+While Michael worked hard to keep the API mostly unchanged while
+performing what has been called "open heart surgery on matplotlib",
+there have been some changes, as discussed below.
+
+The primary goal of this refactoring was to make it easier to
+extend matplotlib to support new kinds of projections. This is
+primarily an internal improvement, and the possible user-visible
+changes it allows are yet to come.
+
+These changes are detailed in the API_CHANGES document
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2008-01-08 13:38:17
|
Revision: 4809
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4809&view=rev
Author: jswhit
Date: 2008-01-08 05:38:05 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
update
Modified Paths:
--------------
trunk/toolkits/basemap/Changelog
Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog 2008-01-08 13:37:05 UTC (rev 4808)
+++ trunk/toolkits/basemap/Changelog 2008-01-08 13:38:05 UTC (rev 4809)
@@ -1,4 +1,4 @@
-version 0.9.9.1 (svn revision 4805)
+version 0.9.9.1 (svn revision 4808)
* require python 2.4 (really only needed for building).
Once namespace packages are re-enabled in matplotlib,
python 2.3 should work again.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2008-01-08 13:37:22
|
Revision: 4808
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4808&view=rev
Author: jswhit
Date: 2008-01-08 05:37:05 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
add python 2.4 requirement
Modified Paths:
--------------
trunk/toolkits/basemap/setup-data.py
Modified: trunk/toolkits/basemap/setup-data.py
===================================================================
--- trunk/toolkits/basemap/setup-data.py 2008-01-08 13:34:34 UTC (rev 4807)
+++ trunk/toolkits/basemap/setup-data.py 2008-01-08 13:37:05 UTC (rev 4808)
@@ -1,4 +1,18 @@
import sys, glob, os
+major, minor1, minor2, s, tmp = sys.version_info
+if major==2 and minor1<=3:
+ # setuptools monkeypatches distutils.core.Distribution to support
+ # package_data
+ #try: import setuptools
+ #except ImportError:
+ # raise SystemExit("""
+#matplotlib requires setuptools for installation. Please download
+#http://peak.telecommunity.com/dist/ez_setup.py and run it (as su if
+#you are doing a system wide install) to install the proper version of
+#setuptools for your system""")
+ raise SystemExit("""The basemap toolkit requires python 2.4.""")
+from distutils.core import setup
+
packages = ['matplotlib.toolkits.basemap.data']
package_dirs = {'':'lib'}
boundaryfiles = glob.glob("lib/matplotlib/toolkits/basemap/data/*_f.dat")
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2008-01-08 13:34:55
|
Revision: 4807
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4807&view=rev
Author: jswhit
Date: 2008-01-08 05:34:34 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
remove setupdata-egg.py
Modified Paths:
--------------
trunk/toolkits/basemap/MANIFEST-data
Modified: trunk/toolkits/basemap/MANIFEST-data
===================================================================
--- trunk/toolkits/basemap/MANIFEST-data 2008-01-08 13:31:49 UTC (rev 4806)
+++ trunk/toolkits/basemap/MANIFEST-data 2008-01-08 13:34:34 UTC (rev 4807)
@@ -2,7 +2,6 @@
LICENSE_data
README
setup-data.py
-setupegg-data.py
lib/matplotlib/toolkits/basemap/data/__init__.py
lib/matplotlib/toolkits/basemap/data/countries_f.dat
lib/matplotlib/toolkits/basemap/data/countriesmeta_f.dat
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2008-01-08 13:32:04
|
Revision: 4806
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4806&view=rev
Author: jswhit
Date: 2008-01-08 05:31:49 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
make python 2.4 a requirement, bump version to 0.9.9.1
Modified Paths:
--------------
trunk/toolkits/basemap/Changelog
trunk/toolkits/basemap/MANIFEST.in
trunk/toolkits/basemap/README
trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py
trunk/toolkits/basemap/setup.py
Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog 2008-01-08 03:11:38 UTC (rev 4805)
+++ trunk/toolkits/basemap/Changelog 2008-01-08 13:31:49 UTC (rev 4806)
@@ -1,3 +1,7 @@
+version 0.9.9.1 (svn revision 4805)
+ * require python 2.4 (really only needed for building).
+ Once namespace packages are re-enabled in matplotlib,
+ python 2.3 should work again.
version 0.9.9 (svn revision 4799)
* updated proj4 sources to version 4.6.0.
* removed hidden dependency on setuptools (in dap module).
Modified: trunk/toolkits/basemap/MANIFEST.in
===================================================================
--- trunk/toolkits/basemap/MANIFEST.in 2008-01-08 03:11:38 UTC (rev 4805)
+++ trunk/toolkits/basemap/MANIFEST.in 2008-01-08 13:31:49 UTC (rev 4806)
@@ -8,7 +8,6 @@
include KNOWN_BUGS
include Changelog
include setup.py
-include setupegg.py
include src/*
include examples/simpletest.py
include examples/hires.py
Modified: trunk/toolkits/basemap/README
===================================================================
--- trunk/toolkits/basemap/README 2008-01-08 03:11:38 UTC (rev 4805)
+++ trunk/toolkits/basemap/README 2008-01-08 13:31:49 UTC (rev 4806)
@@ -5,7 +5,7 @@
**Requirements**
-python 2.3 (or higher)
+python 2.4 (or higher)
matplotlib 0.90 (or higher)
Modified: trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py
===================================================================
--- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py 2008-01-08 03:11:38 UTC (rev 4805)
+++ trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py 2008-01-08 13:31:49 UTC (rev 4806)
@@ -40,7 +40,7 @@
# basemap data files now installed in lib/matplotlib/toolkits/basemap/data
basemap_datadir = os.sep.join([os.path.dirname(__file__), 'data'])
-__version__ = '0.9.9'
+__version__ = '0.9.9.1'
# supported map projections.
_projnames = {'cyl' : 'Cylindrical Equidistant',
Modified: trunk/toolkits/basemap/setup.py
===================================================================
--- trunk/toolkits/basemap/setup.py 2008-01-08 03:11:38 UTC (rev 4805)
+++ trunk/toolkits/basemap/setup.py 2008-01-08 13:31:49 UTC (rev 4806)
@@ -1,19 +1,19 @@
-import sys, glob, os
-from distutils.core import setup
+import sys, glob, os, numpy
major, minor1, minor2, s, tmp = sys.version_info
if major==2 and minor1<=3:
# setuptools monkeypatches distutils.core.Distribution to support
# package_data
- try: import setuptools
- except ImportError:
- raise SystemExit("""
-matplotlib requires setuptools for installation. Please download
-http://peak.telecommunity.com/dist/ez_setup.py and run it (as su if
-you are doing a system wide install) to install the proper version of
-setuptools for your system""")
+ #try: import setuptools
+ #except ImportError:
+ # raise SystemExit("""
+#matplotlib requires setuptools for installation. Please download
+#http://peak.telecommunity.com/dist/ez_setup.py and run it (as su if
+#you are doing a system wide install) to install the proper version of
+#setuptools for your system""")
+ raise SystemExit("""The basemap toolkit requires python 2.4.""")
+from distutils.core import setup
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.
@@ -147,7 +147,7 @@
package_data = {'matplotlib.toolkits.basemap':pyproj_datafiles+basemap_datafiles}
setup(
name = "basemap",
- version = "0.9.9",
+ version = "0.9.9.1",
description = "Plot data on map projections with matplotlib",
long_description = """
An add-on toolkit for matplotlib that lets you plot data
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2008-01-08 03:11:39
|
Revision: 4805
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4805&view=rev
Author: efiring
Date: 2008-01-07 19:11:38 -0800 (Mon, 07 Jan 2008)
Log Message:
-----------
Remove spurious right parenthesis
Modified Paths:
--------------
branches/transforms/lib/matplotlib/projections/__init__.py
Modified: branches/transforms/lib/matplotlib/projections/__init__.py
===================================================================
--- branches/transforms/lib/matplotlib/projections/__init__.py 2008-01-07 21:18:00 UTC (rev 4804)
+++ branches/transforms/lib/matplotlib/projections/__init__.py 2008-01-08 03:11:38 UTC (rev 4805)
@@ -26,8 +26,8 @@
AitoffAxes,
HammerAxes,
LambertAxes)
-)
+
def register_projection(cls):
projection_registry.register(cls)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-07 21:18:02
|
Revision: 4804
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4804&view=rev
Author: mdboom
Date: 2008-01-07 13:18:00 -0800 (Mon, 07 Jan 2008)
Log Message:
-----------
Merged revisions 4801-4803 via svnmerge from
http://matplotlib.svn.sf.net/svnroot/matplotlib/trunk/matplotlib
........
r4802 | cmoad | 2008-01-06 13:28:17 -0500 (Sun, 06 Jan 2008) | 1 line
minor rev bump
........
Modified Paths:
--------------
branches/transforms/API_CHANGES
branches/transforms/CHANGELOG
branches/transforms/setupext.py
Property Changed:
----------------
branches/transforms/
Property changes on: branches/transforms
___________________________________________________________________
Name: svnmerge-integrated
- /trunk/matplotlib:1-4800
+ /trunk/matplotlib:1-4803
Modified: branches/transforms/API_CHANGES
===================================================================
--- branches/transforms/API_CHANGES 2008-01-07 21:15:58 UTC (rev 4803)
+++ branches/transforms/API_CHANGES 2008-01-07 21:18:00 UTC (rev 4804)
@@ -169,6 +169,8 @@
END OF TRANSFORMS REFACTORING
+0.91.2 Released
+
For csv2rec, checkrows=0 is the new default indicating all rows
will be checked for type inference
@@ -181,6 +183,7 @@
Removed, dead/experimental ExampleInfo, Namespace and Importer
code from matplotlib/__init__.py
+
0.91.1 Released
0.91.0 Released
Modified: branches/transforms/CHANGELOG
===================================================================
--- branches/transforms/CHANGELOG 2008-01-07 21:15:58 UTC (rev 4803)
+++ branches/transforms/CHANGELOG 2008-01-07 21:18:00 UTC (rev 4804)
@@ -1,3 +1,6 @@
+===============================================================
+2008-01-06 Released 0.91.2 at revision 4802
+
2007-12-26 Reduce too-late use of matplotlib.use() to a warning
instead of an exception, for backwards compatibility - EF
Modified: branches/transforms/setupext.py
===================================================================
--- branches/transforms/setupext.py 2008-01-07 21:15:58 UTC (rev 4803)
+++ branches/transforms/setupext.py 2008-01-07 21:18:00 UTC (rev 4804)
@@ -903,9 +903,9 @@
# First test for a MacOSX/darwin framework install
from os.path import join, exists
framework_dirs = [
+ join(os.getenv('HOME'), '/Library/Frameworks'),
+ '/Library/Frameworks',
'/System/Library/Frameworks/',
- '/Library/Frameworks',
- join(os.getenv('HOME'), '/Library/Frameworks')
]
# Find the directory that contains the Tcl.framework and Tk.framework
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-07 21:16:07
|
Revision: 4803
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4803&view=rev
Author: mdboom
Date: 2008-01-07 13:15:58 -0800 (Mon, 07 Jan 2008)
Log Message:
-----------
Provide heavily-documented examples for adding new scales and
projections.
Fix various bugs related to non-rectangular clipping.
Remove MercatorLatitude scale from core and put it in an example.
Modified Paths:
--------------
branches/transforms/doc/devel/add_new_projection.rst
branches/transforms/lib/matplotlib/axes.py
branches/transforms/lib/matplotlib/patches.py
branches/transforms/lib/matplotlib/projections/__init__.py
branches/transforms/lib/matplotlib/projections/geo.py
branches/transforms/lib/matplotlib/projections/polar.py
branches/transforms/lib/matplotlib/scale.py
Added Paths:
-----------
branches/transforms/examples/custom_projection_example.py
branches/transforms/examples/custom_scale_example.py
Modified: branches/transforms/doc/devel/add_new_projection.rst
===================================================================
--- branches/transforms/doc/devel/add_new_projection.rst 2008-01-06 18:28:17 UTC (rev 4802)
+++ branches/transforms/doc/devel/add_new_projection.rst 2008-01-07 21:15:58 UTC (rev 4803)
@@ -4,190 +4,99 @@
.. ::author Michael Droettboom
-Matplotlib supports the addition of new transformations that transform
-the data before it is displayed. In ``matplotlib`` nomenclature,
-separable transformations, working on a single dimension, are called
-"scales", and non-separable transformations, that take handle data in
-two or more dimensions at a time, are called "projections".
+Matplotlib supports the addition of custom procedures that transform
+the data before it is displayed.
+There is an important distinction between two kinds of
+transformations. Separable transformations, working on a single
+dimension, are called "scales", and non-separable transformations,
+that handle data in two or more dimensions at a time, are called
+"projections".
+
From the user's perspective, the scale of a plot can be set with
-``set_xscale`` and ``set_yscale``. Choosing the projection
-currently has no *standardized* method. [MGDTODO]
+``set_xscale()`` and ``set_yscale()``. Projections can be chosen using
+the ``projection`` keyword argument to the ``plot()`` or ``subplot()``
+functions::
+ plot(x, y, projection="custom")
+
This document is intended for developers and advanced users who need
-to add more scales and projections to matplotlib.
+to create new scales and projections for matplotlib. The necessary
+code for scales and projections can be included anywhere: directly
+within a plot script, in third-party code, or in the matplotlib source
+tree itself.
Creating a new scale
====================
-Adding a new scale consists of defining a subclass of ``ScaleBase``,
-that brings together the following elements:
+Adding a new scale consists of defining a subclass of ``ScaleBase``
+(in the ``matplotlib.scale`` module), that includes the following
+elements:
- - A transformation from data space into plot space.
+ - A transformation from data coordinates into display coordinates.
- - An inverse of that transformation. For example, this is used to
- convert mouse positions back into data space.
+ - An inverse of that transformation. This is used, for example, to
+ convert mouse positions from screen space back into data space.
- - A function to limit the range of the axis to acceptable values. A
- log scale, for instance, would prevent the range from including
- values less than or equal to zero.
+ - A function to limit the range of the axis to acceptable values
+ (``limit_range_for_scale()``). A log scale, for instance, would
+ prevent the range from including values less than or equal to
+ zero.
- Locators (major and minor) that determine where to place ticks in
the plot, and optionally, how to adjust the limits of the plot to
- some "good" values.
+ some "good" values. Unlike ``limit_range_for_scale()``, which is
+ always enforced, the range setting here is only used when
+ automatically setting the range of the plot.
- Formatters (major and minor) that specify how the tick labels
should be drawn.
-There are a number of ``Scale`` classes in ``scale.py`` that may be
-used as starting points for new scales. As an example, this document
-presents adding a new scale ``MercatorLatitudeScale`` which can be
-used to plot latitudes in a Mercator_ projection. For simplicity,
-this scale assumes that it has a fixed center at the equator. The
-code presented here is a simplification of actual code in
-``matplotlib``, with complications added only for the sake of
-optimization removed.
+Once the class is defined, it must be registered with ``matplotlib``
+so that the user can select it.
-First define a new subclass of ``ScaleBase``::
+A full-fledged and heavily annotated example is in
+``examples/custom_scale_example.py``. There are also some ``Scale``
+classes in ``scale.py`` that may be used as starting points.
- class MercatorLatitudeScale(ScaleBase):
- """
- Scales data in range -pi/2 to pi/2 (-90 to 90 degrees) using
- the system used to scale latitudes in a Mercator projection.
- The scale function:
- ln(tan(y) + sec(y))
+Creating a new projection
+=========================
- The inverse scale function:
- atan(sinh(y))
+Adding a new projection consists of defining a subclass of ``Axes``
+(in the ``matplotlib.axes`` module), that includes the following
+elements:
- Since the Mercator scale tends to infinity at +/- 90 degrees,
- there is user-defined threshold, above and below which nothing
- will be plotted. This defaults to +/- 85 degrees.
+ - A transformation from data coordinates into display coordinates.
- source:
- http://en.wikipedia.org/wiki/Mercator_projection
- """
- name = 'mercator_latitude'
+ - An inverse of that transformation. This is used, for example, to
+ convert mouse positions from screen space back into data space.
-This class must have a member ``name`` that defines the string used to
-select the scale. For example,
-``gca().set_yscale("mercator_latitude")`` would be used to select the
-Mercator latitude scale.
+ - Transformations for the gridlines, ticks and ticklabels. Custom
+ projections will often need to place these elements in special
+ locations, and ``matplotlib`` has a facility to help with doing so.
-Next define two nested classes: one for the data transformation and
-one for its inverse. Both of these classes must be subclasses of
-``Transform`` (defined in ``transforms.py``).::
+ - Setting up default values (overriding ``cla()``), since the
+ defaults for a rectilinear axes may not be appropriate.
- class MercatorLatitudeTransform(Transform):
- input_dims = 1
- output_dims = 1
+ - Defining the shape of the axes, for example, an elliptical axes,
+ that will be used to draw the background of the plot and for
+ clipping any data elements.
-There are two class-members that must be defined. ``input_dims`` and
-``output_dims`` specify number of input dimensions and output
-dimensions to the transformation. These are used by the
-transformation framework to do some error checking and prevent
-incompatible transformations from being connected together. When
-defining transforms for a scale, which are by definition separable and
-only have one dimension, these members should always be 1.
+ - Defining custom locators and formatters for the projection. For
+ example, in a geographic projection, it may be more convenient to
+ display the grid in degrees, even if the data is in radians.
-``MercatorLatitudeTransform`` has a simple constructor that takes and
-stores the *threshold* for the Mercator projection (to limit its range
-to prevent plotting to infinity).::
+ - Set up interactive panning and zooming. This is left as an
+ "advanced" feature left to the reader, but there is an example of
+ this for polar plots in ``polar.py``.
- def __init__(self, thresh):
- Transform.__init__(self)
- self.thresh = thresh
+ - Any additional methods for additional convenience or features.
-The ``transform`` method is where the real work happens: It takes an N
-x 1 ``numpy`` array and returns a transformed copy. Since the range
-of the Mercator scale is limited by the user-specified threshold, the
-input array must be masked to contain only valid values.
-``matplotlib`` will handle masked arrays and remove the out-of-range
-data from the plot. Importantly, the transformation should return an
-array that is the same shape as the input array, since these values
-need to remain synchronized with values in the other dimension.::
+Once the class is defined, it must be registered with ``matplotlib``
+so that the user can select it.
- def transform(self, a):
- masked = ma.masked_where((a < -self.thresh) | (a > self.thresh), a)
- return ma.log(ma.abs(ma.tan(masked) + 1.0 / ma.cos(masked)))
-
-Lastly for the transformation class, define a method to get the
-inverse transformation::
-
- def inverted(self):
- return MercatorLatitudeScale.InvertedMercatorLatitudeTransform(self.thresh)
-
-The inverse transformation class follows the same pattern, but
-obviously the mathematical operation performed is different::
-
- class InvertedMercatorLatitudeTransform(Transform):
- input_dims = 1
- output_dims = 1
-
- def __init__(self, thresh):
- Transform.__init__(self)
- self.thresh = thresh
-
- def transform(self, a):
- return npy.arctan(npy.sinh(a))
-
- def inverted(self):
- return MercatorLatitudeScale.MercatorLatitudeTransform(self.thresh)
-
-Now we're back to methods for the ``MercatorLatitudeScale`` class.
-Any keyword arguments passed to ``set_xscale`` and ``set_yscale`` will
-be passed along to the scale's constructor. In the case of
-``MercatorLatitudeScale``, the ``thresh`` keyword argument specifies
-the degree at which to crop the plot data. The constructor also
-creates a local instance of the ``Transform`` class defined above,
-which is made available through its ``get_transform`` method::
-
- def __init__(self, axis, **kwargs):
- thresh = kwargs.pop("thresh", (85 / 180.0) * npy.pi)
- if thresh >= npy.pi / 2.0:
- raise ValueError("thresh must be less than pi/2")
- self.thresh = thresh
- self._transform = self.MercatorLatitudeTransform(thresh)
-
- def get_transform(self):
- return self._transform
-
-The ``limit_range_for_scale`` method must be provided to limit the
-bounds of the axis to the domain of the function. In the case of
-Mercator, the bounds should be limited to the threshold that was
-passed in. Unlike the autoscaling provided by the tick locators, this
-range limiting will always be adhered to, whether the axis range is set
-manually, determined automatically or changed through panning and
-zooming::
-
- def limit_range_for_scale(self, vmin, vmax, minpos):
- return max(vmin, -self.thresh), min(vmax, self.thresh)
-
-Lastly, the ``set_default_locators_and_formatters`` method sets up the
-locators and formatters to use with the scale. It may be that the new
-scale requires new locators and formatters. Doing so is outside the
-scope of this document, but there are many examples in ``ticker.py``.
-The Mercator example uses a fixed locator from -90 to 90 degrees and a
-custom formatter class to put convert the radians to degrees and put a
-degree symbol after the value::
-
- def set_default_locators_and_formatters(self, axis):
- class DegreeFormatter(Formatter):
- def __call__(self, x, pos=None):
- # \u00b0 : degree symbol
- return u"%d\u00b0" % ((x / npy.pi) * 180.0)
-
- deg2rad = npy.pi / 180.0
- axis.set_major_locator(FixedLocator(
- npy.arange(-90, 90, 10) * deg2rad))
- axis.set_major_formatter(DegreeFormatter())
- axis.set_minor_formatter(DegreeFormatter())
-
-Now that the Scale class has been defined, it must be registered so
-that ``matplotlib`` can find it::
-
- register_scale(MercatorLatitudeScale)
-
-.. _Mercator: http://en.wikipedia.org/wiki/Mercator_projection
\ No newline at end of file
+A full-fledged and heavily annotated example is in
+``examples/custom_projection_example.py``. The polar plot
+functionality in ``polar.py`` may also be interest.
Added: branches/transforms/examples/custom_projection_example.py
===================================================================
--- branches/transforms/examples/custom_projection_example.py (rev 0)
+++ branches/transforms/examples/custom_projection_example.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -0,0 +1,473 @@
+from matplotlib.axes import Axes
+from matplotlib import cbook
+from matplotlib.patches import Circle
+from matplotlib.path import Path
+from matplotlib.ticker import Formatter, Locator, NullLocator, FixedLocator, NullFormatter
+from matplotlib.transforms import Affine2D, Affine2DBase, Bbox, \
+ BboxTransformTo, IdentityTransform, Transform, TransformWrapper
+from matplotlib.projections import register_projection
+
+# This example projection class is rather long, but it is designed to
+# illustrate many features, not all of which will be used every time.
+# It is also common to factor out a lot of these methods into common
+# code used by a number of projections with similar characteristics
+# (see geo.py).
+
+class HammerAxes(Axes):
+ """
+ A custom class for the Aitoff-Hammer projection, an equal-area map
+ projection.
+
+ http://en.wikipedia.org/wiki/Hammer_projection
+ """
+ # The projection must specify a name. This will be used be the
+ # user to select the projection, i.e. ``subplot(111,
+ # projection='hammer')``.
+ name = 'hammer'
+
+ # The number of interpolation steps when converting from straight
+ # lines to curves. (See ``transform_path``).
+ RESOLUTION = 75
+
+ def __init__(self, *args, **kwargs):
+ Axes.__init__(self, *args, **kwargs)
+ self.set_aspect(0.5, adjustable='box', anchor='C')
+ self.cla()
+
+ def cla(self):
+ """
+ Override to set up some reasonable defaults.
+ """
+ # Don't forget to call the base class
+ Axes.cla(self)
+
+ # Set up a default grid spacing
+ self.set_longitude_grid(30)
+ self.set_latitude_grid(15)
+ self.set_longitude_grid_ends(75)
+
+ # Turn off minor ticking altogether
+ self.xaxis.set_minor_locator(NullLocator())
+ self.yaxis.set_minor_locator(NullLocator())
+
+ # Do not display ticks -- we only want gridlines and text
+ self.xaxis.set_ticks_position('none')
+ self.yaxis.set_ticks_position('none')
+
+ # The limits on this projection are fixed -- they are not to
+ # be changed by the user. This makes the math in the
+ # transformation itself easier, and since this is a toy
+ # example, the easier, the better.
+ Axes.set_xlim(self, -npy.pi, npy.pi)
+ Axes.set_ylim(self, -npy.pi / 2.0, npy.pi / 2.0)
+
+ def cla(self):
+ """
+ Initialize the Axes object to reasonable defaults.
+ """
+ Axes.cla(self)
+
+ self.set_longitude_grid(30)
+ self.set_latitude_grid(15)
+ self.set_longitude_grid_ends(75)
+ self.xaxis.set_minor_locator(NullLocator())
+ self.yaxis.set_minor_locator(NullLocator())
+ self.xaxis.set_ticks_position('none')
+ self.yaxis.set_ticks_position('none')
+
+ # self.grid(rcParams['axes.grid'])
+
+ Axes.set_xlim(self, -npy.pi, npy.pi)
+ Axes.set_ylim(self, -npy.pi / 2.0, npy.pi / 2.0)
+
+ def _set_lim_and_transforms(self):
+ """
+ This is called once when the plot is created to set up all the
+ transforms for the data, text and grids.
+ """
+ # There are three important coordinate spaces going on here:
+ #
+ # 1. Data space: The space of the data itself
+ #
+ # 2. Axes space: The unit rectangle (0, 0) to (1, 1)
+ # covering the entire plot area.
+ #
+ # 3. Display space: The coordinates of the resulting image,
+ # often in pixels or dpi/inch.
+
+ # This function makes heavy use of the Transform classes in
+ # ``lib/matplotlib/transforms.py.`` For more information, see
+ # the inline documentation there.
+
+ # The goal of the first two transformations is to get from the
+ # data space (in this case longitude and latitude) to axes
+ # space. It is separated into a non-affine and affine part so
+ # that the non-affine part does not have to be recomputed when
+ # a simple affine change to the figure has been made (such as
+ # resizing the window or changing the dpi).
+
+ # 1) The core transformation from data space into
+ # rectilinear space defined in the HammerTransform class.
+ self.transProjection = self.HammerTransform(self.RESOLUTION)
+
+ # 2) The above has an output range that is not in the unit
+ # rectangle, so scale and translate it so it fits correctly
+ # within the axes. The peculiar calculations of xscale and
+ # yscale are specific to a Aitoff-Hammer projection, so don't
+ # worry about them too much.
+ xscale = 2.0 * npy.sqrt(2.0) * npy.sin(0.5 * npy.pi)
+ yscale = npy.sqrt(2.0) * npy.sin(0.5 * npy.pi)
+ self.transAffine = Affine2D() \
+ .scale(0.5 / xscale, 0.5 / yscale) \
+ .translate(0.5, 0.5)
+
+ # 3) This is the transformation from axes space to display
+ # space.
+ self.transAxes = BboxTransformTo(self.bbox)
+
+ # Now put these 3 transforms together -- from data all the way
+ # to display coordinates. Using the '+' operator, these
+ # transforms will be applied "in order". The transforms are
+ # automatically simplified, if possible, by the underlying
+ # transformation framework.
+ self.transData = \
+ self.transProjection + \
+ self.transAffine + \
+ self.transAxes
+
+ # The main data transformation is set up. Now deal with
+ # gridlines and tick labels.
+
+ # Longitude gridlines and ticklabels. The input to these
+ # transforms are in display space in x and axes space in y.
+ # Therefore, the input values will be in range (-xmin, 0),
+ # (xmax, 1). The goal of these transforms is to go from that
+ # space to display space. The tick labels will be offset 4
+ # pixels from the equator.
+ self._xaxis_pretransform = \
+ Affine2D() \
+ .scale(1.0, npy.pi) \
+ .translate(0.0, -npy.pi)
+ self._xaxis_transform = \
+ self._xaxis_pretransform + \
+ self.transData
+ self._xaxis_text1_transform = \
+ Affine2D().scale(1.0, 0.0) + \
+ self.transData + \
+ Affine2D().translate(0.0, 4.0)
+ self._xaxis_text2_transform = \
+ Affine2D().scale(1.0, 0.0) + \
+ self.transData + \
+ Affine2D().translate(0.0, -4.0)
+
+ # Now set up the transforms for the latitude ticks. The input to
+ # these transforms are in axes space in x and display space in
+ # y. Therefore, the input values will be in range (0, -ymin),
+ # (1, ymax). The goal of these transforms is to go from that
+ # space to display space. The tick labels will be offset 4
+ # pixels from the edge of the axes ellipse.
+ yaxis_stretch = Affine2D().scale(npy.pi * 2.0, 1.0).translate(-npy.pi, 0.0)
+ yaxis_space = Affine2D().scale(1.0, 1.1)
+ self._yaxis_transform = \
+ yaxis_stretch + \
+ self.transData
+ yaxis_text_base = \
+ yaxis_stretch + \
+ self.transProjection + \
+ (yaxis_space + \
+ self.transAffine + \
+ self.transAxes)
+ self._yaxis_text1_transform = \
+ yaxis_text_base + \
+ Affine2D().translate(-8.0, 0.0)
+ self._yaxis_text2_transform = \
+ yaxis_text_base + \
+ Affine2D().translate(8.0, 0.0)
+
+ def get_xaxis_transform(self):
+ """
+ Override this method to provide a transformation for the
+ x-axis grid and ticks.
+ """
+ return self._xaxis_transform
+
+ def get_xaxis_text1_transform(self, pixelPad):
+ """
+ Override this method to provide a transformation for the
+ x-axis tick labels.
+
+ Returns a tuple of the form (transform, valign, halign)
+ """
+ return self._xaxis_text1_transform, 'bottom', 'center'
+
+ def get_xaxis_text2_transform(self, pixelPad):
+ """
+ Override this method to provide a transformation for the
+ secondary x-axis tick labels.
+
+ Returns a tuple of the form (transform, valign, halign)
+ """
+ return self._xaxis_text2_transform, 'top', 'center'
+
+ def get_yaxis_transform(self):
+ """
+ Override this method to provide a transformation for the
+ y-axis grid and ticks.
+ """
+ return self._yaxis_transform
+
+ def get_yaxis_text1_transform(self, pixelPad):
+ """
+ Override this method to provide a transformation for the
+ y-axis tick labels.
+
+ Returns a tuple of the form (transform, valign, halign)
+ """
+ return self._yaxis_text1_transform, 'center', 'right'
+
+ def get_yaxis_text2_transform(self, pixelPad):
+ """
+ Override this method to provide a transformation for the
+ secondary y-axis tick labels.
+
+ Returns a tuple of the form (transform, valign, halign)
+ """
+ return self._yaxis_text2_transform, 'center', 'left'
+
+ def get_axes_patch(self):
+ """
+ Override this method to define the shape that is used for the
+ background of the plot. It should be a subclass of Patch.
+
+ In this case, it is a Circle (that may be warped by the axes
+ transform into an ellipse). Any data and gridlines will be
+ clipped to this shape.
+ """
+ return Circle((0.5, 0.5), 0.5)
+
+ # Prevent the user from applying scales to one or both of the
+ # axes. In this particular case, scaling the axes wouldn't make
+ # sense, so we don't allow it.
+ def set_xscale(self, *args, **kwargs):
+ if args[0] != 'linear':
+ raise NotImplementedError
+ Axes.set_xscale(self, *args, **kwargs)
+
+ def set_yscale(self, *args, **kwargs):
+ if args[0] != 'linear':
+ raise NotImplementedError
+ Axes.set_yscale(self, *args, **kwargs)
+
+ # Prevent the user from changing the axes limits. In our case, we
+ # want to display the whole sphere all the time, so we override
+ # set_xlim and set_ylim to ignore any input. This also applies to
+ # interactive panning and zooming in the GUI interfaces.
+ def set_xlim(self, *args, **kwargs):
+ Axes.set_xlim(self, -npy.pi, npy.pi)
+ Axes.set_ylim(self, -npy.pi / 2.0, npy.pi / 2.0)
+ set_ylim = set_xlim
+
+ def format_coord(self, long, lat):
+ """
+ Override this method to change how the values are displayed in
+ the status bar.
+
+ In this case, we want them to be displayed in degrees N/S/E/W.
+ """
+ long = long * (180.0 / npy.pi)
+ lat = lat * (180.0 / npy.pi)
+ if lat >= 0.0:
+ ns = 'N'
+ else:
+ ns = 'S'
+ if long >= 0.0:
+ ew = 'E'
+ else:
+ ew = 'W'
+ # \u00b0 : degree symbol
+ return u'%f\u00b0%s, %f\u00b0%s' % (abs(lat), ns, abs(long), ew)
+
+ class DegreeFormatter(Formatter):
+ """
+ This is a custom formatter that converts the native unit of
+ radians into (truncated) degrees and adds a degree symbol.
+ """
+ def __init__(self, round_to=1.0):
+ self._round_to = round_to
+
+ def __call__(self, x, pos=None):
+ degrees = (x / npy.pi) * 180.0
+ degrees = round(degrees / self._round_to) * self._round_to
+ # \u00b0 : degree symbol
+ return u"%d\u00b0" % degrees
+
+ def set_longitude_grid(self, degrees):
+ """
+ Set the number of degrees between each longitude grid.
+
+ This is an example method that is specific to this projection
+ class -- it provides a more convenient interface to set the
+ ticking than set_xticks would.
+ """
+ # Set up a FixedLocator at each of the points, evenly spaced
+ # by degrees.
+ number = (360.0 / degrees) + 1
+ self.xaxis.set_major_locator(
+ FixedLocator(
+ npy.linspace(-npy.pi, npy.pi, number, True)[1:-1]))
+ # Set the formatter to display the tick labels in degrees,
+ # rather than radians.
+ self.xaxis.set_major_formatter(self.DegreeFormatter(degrees))
+
+ def set_latitude_grid(self, degrees):
+ """
+ Set the number of degrees between each longitude grid.
+
+ This is an example method that is specific to this projection
+ class -- it provides a more convenient interface than
+ set_yticks would.
+ """
+ # Set up a FixedLocator at each of the points, evenly spaced
+ # by degrees.
+ number = (180.0 / degrees) + 1
+ self.yaxis.set_major_locator(
+ FixedLocator(
+ npy.linspace(-npy.pi / 2.0, npy.pi / 2.0, number, True)[1:-1]))
+ # Set the formatter to display the tick labels in degrees,
+ # rather than radians.
+ self.yaxis.set_major_formatter(self.DegreeFormatter(degrees))
+
+ def set_longitude_grid_ends(self, degrees):
+ """
+ Set the latitude(s) at which to stop drawing the longitude grids.
+
+ Often, in geographic projections, you wouldn't want to draw
+ longitude gridlines near the poles. This allows the user to
+ specify the degree at which to stop drawing longitude grids.
+
+ This is an example method that is specific to this projection
+ class -- it provides an interface to something that has no
+ analogy in the base Axes class.
+ """
+ longitude_cap = degrees * (npy.pi / 180.0)
+ # Change the xaxis gridlines transform so that it draws from
+ # -degrees to degrees, rather than -pi to pi.
+ self._xaxis_pretransform \
+ .clear() \
+ .scale(1.0, longitude_cap * 2.0) \
+ .translate(0.0, -longitude_cap)
+
+ def get_data_ratio(self):
+ """
+ Return the aspect ratio of the data itself.
+
+ This method should be overridden by any Axes that have a
+ fixed data ratio.
+ """
+ return 1.0
+
+ # Interactive panning and zooming is not supported with this projection,
+ # so we override all of the following methods to disable it.
+ def can_zoom(self):
+ """
+ Return True if this axes support the zoom box
+ """
+ return False
+ def start_pan(self, x, y, button):
+ pass
+ def end_pan(self):
+ pass
+ def drag_pan(self, button, key, x, y):
+ pass
+
+ # Now, the transforms themselves.
+
+ class HammerTransform(Transform):
+ """
+ The base Hammer transform.
+ """
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ """
+ Create a new Hammer transform. Resolution is the number of steps
+ to interpolate between each input line segment to approximate its
+ path in curved Hammer space.
+ """
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, ll):
+ """
+ Override the transform method to implement the custom transform.
+
+ The input and output are Nx2 numpy arrays.
+ """
+ longitude = ll[:, 0:1]
+ latitude = ll[:, 1:2]
+
+ # Pre-compute some values
+ half_long = longitude / 2.0
+ cos_latitude = npy.cos(latitude)
+ sqrt2 = npy.sqrt(2.0)
+
+ alpha = 1.0 + cos_latitude * npy.cos(half_long)
+ x = (2.0 * sqrt2) * (cos_latitude * npy.sin(half_long)) / alpha
+ y = (sqrt2 * npy.sin(latitude)) / alpha
+ return npy.concatenate((x, y), 1)
+
+ # This is where things get interesting. With this projection,
+ # straight lines in data space become curves in display space.
+ # This is done by interpolating new values between the input
+ # values of the data. Since ``transform`` must not return a
+ # differently-sized array, any transform that requires
+ # changing the length of the data array must happen within
+ # ``transform_path``.
+ def transform_path(self, path):
+ vertices = path.vertices
+ ipath = path.interpolated(self._resolution)
+ return Path(self.transform(ipath.vertices), ipath.codes)
+
+ def inverted(self):
+ return HammerAxes.InvertedHammerTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+ class InvertedHammerTransform(Transform):
+ input_dims = 2
+ output_dims = 2
+ is_separable = False
+
+ def __init__(self, resolution):
+ Transform.__init__(self)
+ self._resolution = resolution
+
+ def transform(self, xy):
+ x = xy[:, 0:1]
+ y = xy[:, 1:2]
+
+ quarter_x = 0.25 * x
+ half_y = 0.5 * y
+ z = npy.sqrt(1.0 - quarter_x*quarter_x - half_y*half_y)
+ longitude = 2 * npy.arctan((z*x) / (2.0 * (2.0*z*z - 1.0)))
+ latitude = npy.arcsin(y*z)
+ return npy.concatenate((longitude, latitude), 1)
+ transform.__doc__ = Transform.transform.__doc__
+
+ def inverted(self):
+ # The inverse of the inverse is the original transform... ;)
+ return HammerAxes.HammerTransform(self._resolution)
+ inverted.__doc__ = Transform.inverted.__doc__
+
+# Now register the projection with matplotlib so the user can select
+# it.
+register_projection(HammerAxes)
+
+# Now make a simple example using the custom projection.
+from pylab import *
+
+subplot(111, projection="hammer")
+grid(True)
+
+show()
Added: branches/transforms/examples/custom_scale_example.py
===================================================================
--- branches/transforms/examples/custom_scale_example.py (rev 0)
+++ branches/transforms/examples/custom_scale_example.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -0,0 +1,165 @@
+from matplotlib import scale as mscale
+from matplotlib import transforms as mtransforms
+
+class MercatorLatitudeScale(mscale.ScaleBase):
+ """
+ Scales data in range -pi/2 to pi/2 (-90 to 90 degrees) using
+ the system used to scale latitudes in a Mercator projection.
+
+ The scale function:
+ ln(tan(y) + sec(y))
+
+ The inverse scale function:
+ atan(sinh(y))
+
+ Since the Mercator scale tends to infinity at +/- 90 degrees,
+ there is user-defined threshold, above and below which nothing
+ will be plotted. This defaults to +/- 85 degrees.
+
+ source:
+ http://en.wikipedia.org/wiki/Mercator_projection
+ """
+
+ # The scale class must have a member ``name`` that defines the
+ # string used to select the scale. For example,
+ # ``gca().set_yscale("mercator")`` would be used to select this
+ # scale.
+ name = 'mercator'
+
+
+ def __init__(self, axis, **kwargs):
+ """
+ Any keyword arguments passed to ``set_xscale`` and
+ ``set_yscale`` will be passed along to the scale's
+ constructor.
+
+ thresh: The degree above which to crop the data.
+ """
+ mscale.ScaleBase.__init__(self)
+ thresh = kwargs.pop("thresh", (85 / 180.0) * npy.pi)
+ if thresh >= npy.pi / 2.0:
+ raise ValueError("thresh must be less than pi/2")
+ self.thresh = thresh
+
+ def get_transform(self):
+ """
+ Override this method to return a new instance that does the
+ actual transformation of the data.
+
+ The MercatorLatitudeTransform class is defined below as a
+ nested class of this one.
+ """
+ return self.MercatorLatitudeTransform(self.thresh)
+
+ def set_default_locators_and_formatters(self, axis):
+ """
+ Override to set up the locators and formatters to use with the
+ scale. This is only required if the scale requires custom
+ locators and formatters. Writing custom locators and
+ formatters is rather outside the scope of this example, but
+ there are many helpful examples in ``ticker.py``.
+
+ In our case, the Mercator example uses a fixed locator from
+ -90 to 90 degrees and a custom formatter class to put convert
+ the radians to degrees and put a degree symbol after the
+ value::
+ """
+ class DegreeFormatter(Formatter):
+ def __call__(self, x, pos=None):
+ # \u00b0 : degree symbol
+ return u"%d\u00b0" % ((x / npy.pi) * 180.0)
+
+ deg2rad = npy.pi / 180.0
+ axis.set_major_locator(FixedLocator(
+ npy.arange(-90, 90, 10) * deg2rad))
+ axis.set_major_formatter(DegreeFormatter())
+ axis.set_minor_formatter(DegreeFormatter())
+
+ def limit_range_for_scale(self, vmin, vmax, minpos):
+ """
+ Override to limit the bounds of the axis to the domain of the
+ transform. In the case of Mercator, the bounds should be
+ limited to the threshold that was passed in. Unlike the
+ autoscaling provided by the tick locators, this range limiting
+ will always be adhered to, whether the axis range is set
+ manually, determined automatically or changed through panning
+ and zooming.
+ """
+ return max(vmin, -self.thresh), min(vmax, self.thresh)
+
+ class MercatorLatitudeTransform(mtransforms.Transform):
+ # There are two value members that must be defined.
+ # ``input_dims`` and ``output_dims`` specify number of input
+ # dimensions and output dimensions to the transformation.
+ # These are used by the transformation framework to do some
+ # error checking and prevent incompatible transformations from
+ # being connected together. When defining transforms for a
+ # scale, which are, by definition, separable and have only one
+ # dimension, these members should always be set to 1.
+ input_dims = 1
+ output_dims = 1
+ is_separable = True
+
+ def __init__(self, thresh):
+ mtransforms.Transform.__init__(self)
+ self.thresh = thresh
+
+ def transform(self, a):
+ """
+ This transform takes an Nx1 ``numpy`` array and returns a
+ transformed copy. Since the range of the Mercator scale
+ is limited by the user-specified threshold, the input
+ array must be masked to contain only valid values.
+ ``matplotlib`` will handle masked arrays and remove the
+ out-of-range data from the plot. Importantly, the
+ ``transform`` method *must* return an array that is the
+ same shape as the input array, since these values need to
+ remain synchronized with values in the other dimension.
+ """
+ masked = ma.masked_where((a < -self.thresh) | (a > self.thresh), a)
+ if masked.mask.any():
+ return ma.log(npy.abs(ma.tan(masked) + 1.0 / ma.cos(masked)))
+ else:
+ return npy.log(npy.abs(npy.tan(a) + 1.0 / npy.cos(a)))
+
+ def inverted(self):
+ """
+ Override this method so matplotlib knows how to get the
+ inverse transform for this transform.
+ """
+ return MercatorLatitudeScale.InvertedMercatorLatitudeTransform(self.thresh)
+
+ class InvertedMercatorLatitudeTransform(mtransforms.Transform):
+ input_dims = 1
+ output_dims = 1
+ is_separable = True
+
+ def __init__(self, thresh):
+ mtransforms.Transform.__init__(self)
+ self.thresh = thresh
+
+ def transform(self, a):
+ return npy.arctan(npy.sinh(a))
+
+ def inverted(self):
+ return MercatorLatitudeScale.MercatorLatitudeTransform(self.thresh)
+
+# Now that the Scale class has been defined, it must be registered so
+# that ``matplotlib`` can find it.
+mscale.register_scale(MercatorLatitudeScale)
+
+from pylab import *
+import numpy as npy
+
+t = arange(-180.0, 180.0, 0.1)
+s = t / 360.0 * npy.pi
+
+plot(t, s, '-', lw=2)
+gca().set_yscale('mercator')
+
+xlabel('Longitude')
+ylabel('Latitude')
+title('Mercator: Projection of the Oppressor')
+grid(True)
+
+show()
Modified: branches/transforms/lib/matplotlib/axes.py
===================================================================
--- branches/transforms/lib/matplotlib/axes.py 2008-01-06 18:28:17 UTC (rev 4802)
+++ branches/transforms/lib/matplotlib/axes.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -550,6 +550,10 @@
self.bbox = mtransforms.TransformedBbox(self._position, fig.transFigure)
#these will be updated later as data is added
+ self.dataLim = mtransforms.Bbox.unit()
+ self.viewLim = mtransforms.Bbox.unit()
+ self.transScale = mtransforms.TransformWrapper(mtransforms.IdentityTransform())
+
self._set_lim_and_transforms()
def _set_lim_and_transforms(self):
@@ -558,8 +562,6 @@
transScale, transData, transLimits and transAxes
transformations.
"""
- self.dataLim = mtransforms.Bbox.unit()
- self.viewLim = mtransforms.Bbox.unit()
self.transAxes = mtransforms.BboxTransformTo(self.bbox)
# Transforms the x and y axis separately by a scale factor
Modified: branches/transforms/lib/matplotlib/patches.py
===================================================================
--- branches/transforms/lib/matplotlib/patches.py 2008-01-06 18:28:17 UTC (rev 4802)
+++ branches/transforms/lib/matplotlib/patches.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -371,6 +371,7 @@
self._width = width
self._height = height
self._rect_transform = transforms.IdentityTransform()
+ self._update_patch_transform()
__init__.__doc__ = cbook.dedent(__init__.__doc__) % artist.kwdocd
def get_path(self):
@@ -862,6 +863,7 @@
self.angle = angle
self._path = Path.unit_circle()
self._patch_transform = transforms.IdentityTransform()
+ self._recompute_transform()
def _recompute_transform(self):
center = (self.convert_xunits(self.center[0]),
Modified: branches/transforms/lib/matplotlib/projections/__init__.py
===================================================================
--- branches/transforms/lib/matplotlib/projections/__init__.py 2008-01-06 18:28:17 UTC (rev 4802)
+++ branches/transforms/lib/matplotlib/projections/__init__.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -26,7 +26,11 @@
AitoffAxes,
HammerAxes,
LambertAxes)
+)
+def register_projection(cls):
+ projection_registry.register(cls)
+
def get_projection_class(projection):
if projection is None:
projection = 'rectilinear'
Modified: branches/transforms/lib/matplotlib/projections/geo.py
===================================================================
--- branches/transforms/lib/matplotlib/projections/geo.py 2008-01-06 18:28:17 UTC (rev 4802)
+++ branches/transforms/lib/matplotlib/projections/geo.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -51,19 +51,13 @@
Axes.set_ylim(self, -npy.pi / 2.0, npy.pi / 2.0)
def _set_lim_and_transforms(self):
- self.dataLim = Bbox.unit()
- self.viewLim = Bbox.unit()
- self.transAxes = BboxTransformTo(self.bbox)
-
- # Transforms the x and y axis separately by a scale factor
- # It is assumed that this part will have non-linear components
- self.transScale = TransformWrapper(IdentityTransform())
-
# A (possibly non-linear) projection on the (already scaled) data
self.transProjection = self._get_core_transform(self.RESOLUTION)
self.transAffine = self._get_affine_transform()
+ self.transAxes = BboxTransformTo(self.bbox)
+
# The complete data transformation stack -- from data all the
# way to display coordinates
self.transData = \
Modified: branches/transforms/lib/matplotlib/projections/polar.py
===================================================================
--- branches/transforms/lib/matplotlib/projections/polar.py 2008-01-06 18:28:17 UTC (rev 4802)
+++ branches/transforms/lib/matplotlib/projections/polar.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -186,8 +186,6 @@
self.yaxis.set_ticks_position('none')
def _set_lim_and_transforms(self):
- self.dataLim = Bbox.unit()
- self.viewLim = Bbox.unit()
self.transAxes = BboxTransformTo(self.bbox)
# Transforms the x and y axis separately by a scale factor
Modified: branches/transforms/lib/matplotlib/scale.py
===================================================================
--- branches/transforms/lib/matplotlib/scale.py 2008-01-06 18:28:17 UTC (rev 4802)
+++ branches/transforms/lib/matplotlib/scale.py 2008-01-07 21:15:58 UTC (rev 4803)
@@ -307,94 +307,11 @@
return self._transform
-class MercatorLatitudeScale(ScaleBase):
- """
- Scales data in range -pi/2 to pi/2 (-90 to 90 degrees) using
- the system used to scale latitudes in a Mercator projection.
- The scale function:
- ln(tan(y) + sec(y))
-
- The inverse scale function:
- atan(sinh(y))
-
- Since the Mercator scale tends to infinity at +/- 90 degrees,
- there is user-defined threshold, above and below which nothing
- will be plotted. This defaults to +/- 85 degrees.
-
- source:
- http://en.wikipedia.org/wiki/Mercator_projection
- """
- name = 'mercator_latitude'
-
- class MercatorLatitudeTransform(Transform):
- input_dims = 1
- output_dims = 1
- is_separable = True
-
- def __init__(self, thresh):
- Transform.__init__(self)
- self.thresh = thresh
-
- def transform(self, a):
- masked = ma.masked_where((a < -self.thresh) | (a > self.thresh), a)
- if masked.mask.any():
- return ma.log(npy.abs(ma.tan(masked) + 1.0 / ma.cos(masked)))
- else:
- return npy.log(npy.abs(npy.tan(a) + 1.0 / npy.cos(a)))
-
- def inverted(self):
- return MercatorLatitudeScale.InvertedMercatorLatitudeTransform(self.thresh)
-
- class InvertedMercatorLatitudeTransform(Transform):
- input_dims = 1
- output_dims = 1
- is_separable = True
-
- def __init__(self, thresh):
- Transform.__init__(self)
- self.thresh = thresh
-
- def transform(self, a):
- return npy.arctan(npy.sinh(a))
-
- def inverted(self):
- return MercatorLatitudeScale.MercatorLatitudeTransform(self.thresh)
-
- def __init__(self, axis, **kwargs):
- """
- thresh: The degree above which to crop the data.
- """
- thresh = kwargs.pop("thresh", (85 / 180.0) * npy.pi)
- if thresh >= npy.pi / 2.0:
- raise ValueError("thresh must be less than pi/2")
- self.thresh = thresh
- self._transform = self.MercatorLatitudeTransform(thresh)
-
- def set_default_locators_and_formatters(self, axis):
- class DegreeFormatter(Formatter):
- def __call__(self, x, pos=None):
- # \u00b0 : degree symbol
- return u"%d\u00b0" % ((x / npy.pi) * 180.0)
-
- deg2rad = npy.pi / 180.0
- axis.set_major_locator(FixedLocator(
- npy.arange(-90, 90, 10) * deg2rad))
- axis.set_major_formatter(DegreeFormatter())
- axis.set_minor_formatter(DegreeFormatter())
-
- def get_transform(self):
- return self._transform
-
- def limit_range_for_scale(self, vmin, vmax, minpos):
- return max(vmin, -self.thresh), min(vmax, self.thresh)
-
-
_scale_mapping = {
'linear' : LinearScale,
'log' : LogScale,
- 'symlog' : SymmetricalLogScale,
- 'mercator_latitude' : MercatorLatitudeScale
+ 'symlog' : SymmetricalLogScale
}
def scale_factory(scale, axis, **kwargs):
scale = scale.lower()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cm...@us...> - 2008-01-06 18:28:34
|
Revision: 4802
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4802&view=rev
Author: cmoad
Date: 2008-01-06 10:28:17 -0800 (Sun, 06 Jan 2008)
Log Message:
-----------
minor rev bump
Modified Paths:
--------------
trunk/matplotlib/API_CHANGES
trunk/matplotlib/CHANGELOG
trunk/matplotlib/setupext.py
Modified: trunk/matplotlib/API_CHANGES
===================================================================
--- trunk/matplotlib/API_CHANGES 2008-01-04 14:59:50 UTC (rev 4801)
+++ trunk/matplotlib/API_CHANGES 2008-01-06 18:28:17 UTC (rev 4802)
@@ -1,3 +1,5 @@
+0.91.2 Released
+
For csv2rec, checkrows=0 is the new default indicating all rows
will be checked for type inference
@@ -10,6 +12,7 @@
Removed, dead/experimental ExampleInfo, Namespace and Importer
code from matplotlib/__init__.py
+
0.91.1 Released
0.91.0 Released
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2008-01-04 14:59:50 UTC (rev 4801)
+++ trunk/matplotlib/CHANGELOG 2008-01-06 18:28:17 UTC (rev 4802)
@@ -1,3 +1,6 @@
+===============================================================
+2008-01-06 Released 0.91.2 at revision 4802
+
2007-12-26 Reduce too-late use of matplotlib.use() to a warning
instead of an exception, for backwards compatibility - EF
Modified: trunk/matplotlib/setupext.py
===================================================================
--- trunk/matplotlib/setupext.py 2008-01-04 14:59:50 UTC (rev 4801)
+++ trunk/matplotlib/setupext.py 2008-01-06 18:28:17 UTC (rev 4802)
@@ -902,9 +902,9 @@
# First test for a MacOSX/darwin framework install
from os.path import join, exists
framework_dirs = [
+ join(os.getenv('HOME'), '/Library/Frameworks'),
+ '/Library/Frameworks',
'/System/Library/Frameworks/',
- '/Library/Frameworks',
- join(os.getenv('HOME'), '/Library/Frameworks')
]
# Find the directory that contains the Tcl.framework and Tk.framework
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2008-01-04 15:00:09
|
Revision: 4801
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4801&view=rev
Author: mdboom
Date: 2008-01-04 06:59:50 -0800 (Fri, 04 Jan 2008)
Log Message:
-----------
Merged revisions 4786-4800 via svnmerge from
http://matplotlib.svn.sf.net/svnroot/matplotlib/trunk/matplotlib
........
r4788 | efiring | 2007-12-26 02:23:27 -0500 (Wed, 26 Dec 2007) | 7 lines
Make numerix.ma and numerix.npyma work with numpy 1.05
The numpy maskedarray branch is scheduled to become the
trunk for 1.05. It includes a change from ma.py being in
numpy/core to ma being a module under numpy, so the import
syntax is different in numerix.ma and numerix.npyma.
........
r4789 | efiring | 2007-12-26 02:51:19 -0500 (Wed, 26 Dec 2007) | 2 lines
Fix bug in errorbar, reported by Noriko Minakawa
........
r4790 | efiring | 2007-12-26 12:10:34 -0500 (Wed, 26 Dec 2007) | 2 lines
Warning instead of exception if matplotlib.use() is called too late.
........
Modified Paths:
--------------
branches/transforms/CHANGELOG
branches/transforms/lib/matplotlib/__init__.py
branches/transforms/lib/matplotlib/axes.py
branches/transforms/lib/matplotlib/numerix/ma/__init__.py
branches/transforms/lib/matplotlib/numerix/npyma/__init__.py
Property Changed:
----------------
branches/transforms/
Property changes on: branches/transforms
___________________________________________________________________
Name: svnmerge-integrated
- /trunk/matplotlib:1-4785
+ /trunk/matplotlib:1-4800
Modified: branches/transforms/CHANGELOG
===================================================================
--- branches/transforms/CHANGELOG 2008-01-01 15:13:48 UTC (rev 4800)
+++ branches/transforms/CHANGELOG 2008-01-04 14:59:50 UTC (rev 4801)
@@ -1,3 +1,12 @@
+2007-12-26 Reduce too-late use of matplotlib.use() to a warning
+ instead of an exception, for backwards compatibility - EF
+
+2007-12-25 Fix bug in errorbar, identified by Noriko Minakawa - EF
+
+2007-12-25 Changed masked array importing to work with the upcoming
+ numpy 1.05 (now the maskedarray branch) as well as with
+ earlier versions. - EF
+
2007-12-16 rec2csv saves doubles without losing precision. Also, it
does not close filehandles passed in open. - JDH,ADS
Modified: branches/transforms/lib/matplotlib/__init__.py
===================================================================
--- branches/transforms/lib/matplotlib/__init__.py 2008-01-01 15:13:48 UTC (rev 4800)
+++ branches/transforms/lib/matplotlib/__init__.py 2008-01-04 14:59:50 UTC (rev 4801)
@@ -727,8 +727,11 @@
except:
from config import rcParams, rcdefaults
-_use_error_msg = """ matplotlib.use() must be called *before* pylab
-or matplotlib.backends is imported for the first time."""
+_use_error_msg = """ This call to matplotlib.use() has no effect
+because the the backend has already been chosen;
+matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
+or matplotlib.backends is imported for the first time.
+"""
def use(arg):
"""
@@ -747,7 +750,7 @@
be called before importing matplotlib.backends.
"""
if 'matplotlib.backends' in sys.modules:
- raise RuntimeError(_use_error_msg)
+ warnings.warn(_use_error_msg)
be_parts = arg.split('.')
name = validate_backend(be_parts[0])
rcParams['backend'] = name
Modified: branches/transforms/lib/matplotlib/axes.py
===================================================================
--- branches/transforms/lib/matplotlib/axes.py 2008-01-01 15:13:48 UTC (rev 4800)
+++ branches/transforms/lib/matplotlib/axes.py 2008-01-04 14:59:50 UTC (rev 4801)
@@ -3779,6 +3779,8 @@
lines_kw['linewidth']=kwargs['linewidth']
if 'lw' in kwargs:
lines_kw['lw']=kwargs['lw']
+ if 'transform' in kwargs:
+ lines_kw['transform'] = kwargs['transform']
# arrays fine here, they are booleans and hence not units
if not iterable(lolims):
@@ -3814,6 +3816,8 @@
plot_kw['markeredgewidth']=kwargs['markeredgewidth']
if 'mew' in kwargs:
plot_kw['mew']=kwargs['mew']
+ if 'transform' in kwargs:
+ plot_kw['transform'] = kwargs['transform']
if xerr is not None:
if iterable(xerr) and len(xerr)==2 and iterable(xerr[0]) and iterable(xerr[1]):
Modified: branches/transforms/lib/matplotlib/numerix/ma/__init__.py
===================================================================
--- branches/transforms/lib/matplotlib/numerix/ma/__init__.py 2008-01-01 15:13:48 UTC (rev 4800)
+++ branches/transforms/lib/matplotlib/numerix/ma/__init__.py 2008-01-04 14:59:50 UTC (rev 4801)
@@ -13,7 +13,10 @@
from maskedarray import *
print "using maskedarray"
else:
- from numpy.core.ma import *
+ try:
+ from numpy.ma import * # numpy 1.05 and later
+ except ImportError:
+ from numpy.core.ma import * # earlier
#print "using ma"
def getmaskorNone(obj):
_msk = getmask(obj)
Modified: branches/transforms/lib/matplotlib/numerix/npyma/__init__.py
===================================================================
--- branches/transforms/lib/matplotlib/numerix/npyma/__init__.py 2008-01-01 15:13:48 UTC (rev 4800)
+++ branches/transforms/lib/matplotlib/numerix/npyma/__init__.py 2008-01-04 14:59:50 UTC (rev 4801)
@@ -4,5 +4,8 @@
from maskedarray import *
print "using maskedarray"
else:
- from numpy.core.ma import *
+ try:
+ from numpy.ma import * # numpy 1.05 and later
+ except ImportError:
+ from numpy.core.ma import * # earlier
#print "using ma"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2008-01-01 15:13:51
|
Revision: 4800
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4800&view=rev
Author: jswhit
Date: 2008-01-01 07:13:48 -0800 (Tue, 01 Jan 2008)
Log Message:
-----------
updates from proj-4.6.0
Modified Paths:
--------------
trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/data/epsg
trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/data/esri.extra
trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/data/td_out.dist
Modified: trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/data/epsg
===================================================================
--- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/data/epsg 2008-01-01 14:33:51 UTC (rev 4799)
+++ trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/data/epsg 2008-01-01 15:13:48 UTC (rev 4800)
@@ -15,7 +15,7 @@
# Unknown datum based upon the Clarke 1866 ellipsoid
<4008> +proj=longlat +ellps=clrk66 +no_defs <>
# Unknown datum based upon the Clarke 1866 Michigan ellipsoid
-<4009> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs <>
+<4009> +proj=longlat +a=6378450.047548897 +b=6356826.621488445 +no_defs <>
# Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid
<4010> +proj=longlat +a=6378300.789 +b=6356566.435 +no_defs <>
# Unknown datum based upon the Clarke 1880 (IGN) ellipsoid
@@ -23,11 +23,11 @@
# Unknown datum based upon the Clarke 1880 (RGS) ellipsoid
<4012> +proj=longlat +ellps=clrk80 +no_defs <>
# Unknown datum based upon the Clarke 1880 (Arc) ellipsoid
-<4013> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs <>
+<4013> +proj=longlat +a=6378249.145 +b=6356514.966398754 +no_defs <>
# Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid
<4014> +proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs <>
# Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid
-<4015> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <>
+<4015> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <>
# Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid
<4016> +proj=longlat +ellps=evrstSS +no_defs <>
# Unknown datum based upon the Everest 1830 Modified ellipsoid
@@ -47,7 +47,7 @@
# Unknown datum based upon the Plessis 1817 ellipsoid
<4027> +proj=longlat +a=6376523 +b=6355862.933255573 +no_defs <>
# Unknown datum based upon the Struve 1860 ellipsoid
-<4028> +proj=longlat +a=6378298.3 +b=6356657.142669562 +no_defs <>
+<4028> +proj=longlat +a=6378298.300000001 +b=6356657.142669562 +no_defs <>
# Unknown datum based upon the War Office ellipsoid
<4029> +proj=longlat +a=6378300 +b=6356751.689189189 +no_defs <>
# Unknown datum based upon the WGS 84 ellipsoid
@@ -57,7 +57,7 @@
# Unknown datum based upon the OSU86F ellipsoid
<4032> +proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs <>
# Unknown datum based upon the OSU91A ellipsoid
-<4033> +proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs <>
+<4033> +proj=longlat +a=6378136.300000001 +b=6356751.616592147 +no_defs <>
# Unknown datum based upon the Clarke 1880 ellipsoid
<4034> +proj=longlat +ellps=clrk80 +no_defs <>
# Unknown datum based upon the Authalic Sphere
@@ -67,17 +67,21 @@
# Unknown datum based upon the Average Terrestrial System 1977 ellipsoid
<4041> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <>
# Unknown datum based upon the Everest (1830 Definition) ellipsoid
-<4042> +proj=longlat +a=6377299.36559538 +b=6356098.357204817 +no_defs <>
+<4042> +proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs <>
# Unknown datum based upon the WGS 72 ellipsoid
<4043> +proj=longlat +ellps=WGS72 +no_defs <>
# Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid
-<4044> +proj=longlat +a=6377301.243 +b=6356100.230165385 +no_defs <>
+<4044> +proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs <>
# Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid
-<4045> +proj=longlat +a=6377299.151 +b=6356098.145120132 +no_defs <>
+<4045> +proj=longlat +a=6377299.151000001 +b=6356098.145120133 +no_defs <>
# Unspecified datum based upon the GRS 1980 Authalic Sphere
<4047> +proj=longlat +a=6371007 +b=6371007 +no_defs <>
# Unspecified datum based upon the Clarke 1866 Authalic Sphere
<4052> +proj=longlat +a=6370997 +b=6370997 +no_defs <>
+# Unspecified datum based upon the International 1924 Authalic Sphere
+<4053> +proj=longlat +a=6371228 +b=6371228 +no_defs <>
+# Unspecified datum based upon the Hughes 1980 ellipsoid
+<4054> +proj=longlat +a=6378273 +b=6356889.449 +no_defs <>
# Greek
<4120> +proj=longlat +ellps=bessel +no_defs <>
# GGRS87
@@ -85,7 +89,7 @@
# ATS77
<4122> +proj=longlat +a=6378135 +b=6356750.304921594 +no_defs <>
# KKJ
-<4123> +proj=longlat +ellps=intl +no_defs <>
+<4123> +proj=longlat +ellps=intl +towgs84=-96.0617,-82.4278,-121.743,4.80107,0.34543,-1.37646,1.4964 +no_defs <>
# RT90
<4124> +proj=longlat +ellps=bessel +no_defs <>
# Samboja
@@ -101,7 +105,7 @@
# Moznet
<4130> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no_defs <>
# Indian 1960
-<4131> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <>
+<4131> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <>
# FD58
<4132> +proj=longlat +ellps=clrk80 +no_defs <>
# EST92
@@ -127,11 +131,11 @@
# Abidjan 1987
<4143> +proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +no_defs <>
# Kalianpur 1937
-<4144> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <>
+<4144> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <>
# Kalianpur 1962
-<4145> +proj=longlat +a=6377301.243 +b=6356100.230165385 +no_defs <>
+<4145> +proj=longlat +a=6377301.243 +b=6356100.230165384 +no_defs <>
# Kalianpur 1975
-<4146> +proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs84=295,736,257,0,0,0,0 +no_defs <>
+<4146> +proj=longlat +a=6377299.151000001 +b=6356098.145120133 +towgs84=295,736,257,0,0,0,0 +no_defs <>
# Hanoi 1972
<4147> +proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +no_defs <>
# Hartebeesthoek94
@@ -251,7 +255,7 @@
# Aratu
<4208> +proj=longlat +ellps=intl +no_defs <>
# Arc 1950
-<4209> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs <>
+<4209> +proj=longlat +a=6378249.145 +b=6356514.966398754 +no_defs <>
# Arc 1960
<4210> +proj=longlat +ellps=clrk80 +no_defs <>
# Batavia
@@ -275,7 +279,7 @@
# Campo Inchauspe
<4221> +proj=longlat +ellps=intl +no_defs <>
# Cape
-<4222> +proj=longlat +a=6378249.145 +b=6356514.966398753 +no_defs <>
+<4222> +proj=longlat +a=6378249.145 +b=6356514.966398754 +no_defs <>
# Carthage
<4223> +proj=longlat +a=6378249.2 +b=6356515 +no_defs <>
# Chua
@@ -309,17 +313,17 @@
# ID74
<4238> +proj=longlat +a=6378160 +b=6356774.50408554 +no_defs <>
# Indian 1954
-<4239> +proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs84=217,823,299,0,0,0,0 +no_defs <>
+<4239> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=217,823,299,0,0,0,0 +no_defs <>
# Indian 1975
-<4240> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <>
+<4240> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <>
# Jamaica 1875
<4241> +proj=longlat +ellps=clrk80 +no_defs <>
# JAD69
<4242> +proj=longlat +ellps=clrk66 +no_defs <>
# Kalianpur 1880
-<4243> +proj=longlat +a=6377299.36559538 +b=6356098.357204817 +no_defs <>
+<4243> +proj=longlat +a=6377299.36559538 +b=6356098.357204818 +no_defs <>
# Kandawala
-<4244> +proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs84=-97,787,86,0,0,0,0 +no_defs <>
+<4244> +proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +no_defs <>
# Kertau 1968
<4245> +proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs84=-11,851,5,0,0,0,0 +no_defs <>
# KOC
@@ -367,7 +371,7 @@
# NAD27
<4267> +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs <>
# NAD27 Michigan
-<4268> +proj=longlat +a=6378450.047548896 +b=6356826.621488444 +no_defs <>
+<4268> +proj=longlat +a=6378450.047548897 +b=6356826.621488445 +no_defs <>
# NAD83
<4269> +proj=longlat +ellps=GRS80 +datum=NAD83 +no_defs <>
# Nahrwan 1967
@@ -385,7 +389,7 @@
# NSWC 9Z-2
<4276> +proj=longlat +ellps=WGS66 +no_defs <>
# OSGB 1936
-<4277> +proj=longlat +ellps=airy +no_defs <>
+<4277> +proj=longlat +datum=OSGB36 +no_defs <>
# OSGB70
<4278> +proj=longlat +ellps=airy +no_defs <>
# OS(SN)80
@@ -409,7 +413,7 @@
# Loma Quintana
<4288> +proj=longlat +ellps=intl +no_defs <>
# Amersfoort
-<4289> +proj=longlat +ellps=bessel +towgs84=565.237,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +no_defs <>
+<4289> +proj=longlat +ellps=bessel +no_defs <>
# SAD69
<4291> +proj=longlat +ellps=GRS67 +no_defs <>
# Sapper Hill 1943
@@ -453,7 +457,7 @@
# MGI
<4312> +proj=longlat +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +no_defs <>
# Belge 1972
-<4313> +proj=longlat +ellps=intl +no_defs <>
+<4313> +proj=longlat +ellps=intl +towgs84=106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1 +no_defs <>
# DHDN
<4314> +proj=longlat +ellps=bessel +datum=potsdam +no_defs <>
# Conakry 1905
@@ -567,7 +571,7 @@
# Grand Comoros
<4646> +proj=longlat +ellps=intl +no_defs <>
# Reykjavik 1900
-<4657> +proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28,199,5,0,0,0,0 +no_defs <>
+<4657> +proj=longlat +a=6377019.27 +b=6355762.539100001 +towgs84=-28,199,5,0,0,0,0 +no_defs <>
# Hjorsey 1955
<4658> +proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +no_defs <>
# ISN93
@@ -617,7 +621,7 @@
# Mauritania 1999
<4681> +proj=longlat +ellps=clrk80 +no_defs <>
# Gulshan 303
-<4682> +proj=longlat +a=6377276.345 +b=6356075.413140239 +no_defs <>
+<4682> +proj=longlat +a=6377276.345 +b=6356075.41314024 +no_defs <>
# PRS92
<4683> +proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06 +no_defs <>
# Gan 1970
@@ -766,6 +770,14 @@
<4755> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <>
# VN-2000
<4756> +proj=longlat +ellps=WGS84 +no_defs <>
+# SVY21
+<4757> +proj=longlat +ellps=WGS84 +no_defs <>
+# JAD2001
+<4758> +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs <>
+# NAD83(NSRS2007)
+<4759> +proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs <>
+# WGS 66
+<4760> +proj=longlat +ellps=WGS66 +no_defs <>
# Bern 1898 (Bern)
<4801> +proj=longlat +ellps=bessel +pm=bern +no_defs <>
# Bogota 1975 (Bogota)
@@ -811,63 +823,63 @@
# NDG (Paris)
<4902> +proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris +no_defs <>
# Madrid 1870 (Madrid)
-<4903> +proj=longlat +a=6378298.3 +b=6356657.142669562 +pm=madrid +no_defs <>
+<4903> +proj=longlat +a=6378298.300000001 +b=6356657.142669562 +pm=madrid +no_defs <>
# Lisbon 1890 (Lisbon)
<4904> +proj=longlat +ellps=bessel +pm=lisbon +no_defs <>
# Anguilla 1957 / British West Indies Grid
-<2000> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <>
+<2000> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <>
# Antigua 1943 / British West Indies Grid
-<2001> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <>
+<2001> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <>
# Dominica 1945 / British West Indies Grid
-<2002> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs <>
+<2002> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,0,0 +units=m +no_defs <>
# Grenada 1953 / British West Indies Grid
-<2003> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs <>
+<2003> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0 +units=m +no_defs <>
# Montserrat 1958 / British West Indies Grid
-<2004> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs <>
+<2004> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,0,0 +units=m +no_defs <>
# St. Kitts 1955 / British West Indies Grid
-<2005> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <>
+<2005> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs <>
# St. Lucia 1955 / British West Indies Grid
-<2006> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs <>
+<2006> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0,0,0 +units=m +no_defs <>
# St. Vincent 45 / British West Indies Grid
-<2007> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.999500 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs <>
+<2007> +proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,274.607,0,0,0,0 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 2
-<2008> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2008> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 3
-<2009> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2009> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 4
-<2010> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2010> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 5
-<2011> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2011> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 6
-<2012> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2012> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 7
-<2013> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2013> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 8
-<2014> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2014> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 9
-<2015> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2015> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(CGQ77) / SCoPQ zone 10
-<2016> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2016> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 8
-<2017> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2017> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 9
-<2018> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2018> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 10
-<2019> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2019> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 11
-<2020> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2020> +proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 12
-<2021> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2021> +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 13
-<2022> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2022> +proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 14
-<2023> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2023> +proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 15
-<2024> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2024> +proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 16
-<2025> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2025> +proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / MTM zone 17
-<2026> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.999900 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
+<2026> +proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / UTM zone 15N
<2027> +proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs <>
# NAD27(76) / UTM zone 16N
@@ -887,13 +899,13 @@
# NAD27(CGQ77) / UTM zone 21N
<2035> +proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs <>
# NAD83(CSRS98) / New Brunswick Stereo (deprecated)
-<2036> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2036> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.9999119999999999 +x_0=2500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / UTM zone 19N (deprecated)
<2037> +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / UTM zone 20N (deprecated)
<2038> +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# Israel / Israeli TM Grid
-<2039> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.000007 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs <>
+<2039> +proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs <>
# Locodjo 1965 / UTM zone 30N
<2040> +proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <>
# Abidjan 1987 / UTM zone 30N
@@ -903,9 +915,9 @@
# Abidjan 1987 / UTM zone 29N
<2043> +proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <>
# Hanoi 1972 / Gauss-Kruger zone 18
-<2044> +proj=tmerc +lat_0=0 +lon_0=105 +k=1.000000 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <>
+<2044> +proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <>
# Hanoi 1972 / Gauss-Kruger zone 19
-<2045> +proj=tmerc +lat_0=0 +lon_0=111 +k=1.000000 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <>
+<2045> +proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <>
# Hartebeesthoek94 / Lo15
# Unable to translate coordinate system EPSG:2046 into PROJ.4 format.
#
@@ -939,7 +951,7 @@
# CH1903+ / LV95
<2056> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs <>
# Rassadiran / Nakhl e Taqi
-<2057> +proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs <>
+<2057> +proj=omerc +lat_0=27.51882880555555 +lonc=52.60353916666667 +alpha=0.5716611944444444 +k=0.9998959340000001 +x_0=658377.437 +y_0=3044969.194 +ellps=intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +no_defs <>
# ED50(ED77) / UTM zone 38N
<2058> +proj=utm +zone=38 +ellps=intl +units=m +no_defs <>
# ED50(ED77) / UTM zone 39N
@@ -949,10 +961,10 @@
# ED50(ED77) / UTM zone 41N
<2061> +proj=utm +zone=41 +ellps=intl +units=m +no_defs <>
# Madrid 1870 (Madrid) / Spain
-<2062> +proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293 +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.142669562 +pm=madrid +units=m +no_defs <>
-# Dabola 1981 / UTM zone 28N
+<2062> +proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293000001 +x_0=600000 +y_0=600000 +a=6378298.300000001 +b=6356657.142669562 +pm=madrid +units=m +no_defs <>
+# Dabola 1981 / UTM zone 28N (deprecated)
<2063> +proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <>
-# Dabola 1981 / UTM zone 29N
+# Dabola 1981 / UTM zone 29N (deprecated)
<2064> +proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,259,-9,0,0,0,0 +units=m +no_defs <>
# S-JTSK (Ferro) / Krovak
<2065> +proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs <>
@@ -961,23 +973,23 @@
# Naparima 1955 / UTM zone 20N
<2067> +proj=utm +zone=20 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 5
-<2068> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2068> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 6
-<2069> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2069> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 7
-<2070> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2070> +proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 8
-<2071> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2071> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 9
-<2072> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2072> +proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 10
-<2073> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2073> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 11
-<2074> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2074> +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 12
-<2075> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2075> +proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / Libya zone 13
-<2076> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.999900 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2076> +proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ELD79 / UTM zone 32N
<2077> +proj=utm +zone=32 +ellps=intl +units=m +no_defs <>
# ELD79 / UTM zone 33N
@@ -987,11 +999,11 @@
# ELD79 / UTM zone 35N
<2080> +proj=utm +zone=35 +ellps=intl +units=m +no_defs <>
# Chos Malal 1914 / Argentina zone 2
-<2081> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2081> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# Pampa del Castillo / Argentina zone 2
-<2082> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs <>
+<2082> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +no_defs <>
# Hito XVIII 1963 / Argentina zone 2
-<2083> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1.000000 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2083> +proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# Hito XVIII 1963 / UTM zone 19S
<2084> +proj=utm +zone=19 +south +ellps=intl +units=m +no_defs <>
# NAD27 / Cuba Norte
@@ -999,33 +1011,33 @@
# NAD27 / Cuba Sur
<2086> +proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=500000 +y_0=229126.939 +ellps=clrk66 +datum=NAD27 +units=m +no_defs <>
# ELD79 / TM 12 NE
-<2087> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999600 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2087> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# Carthage / TM 11 NE
-<2088> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.999600 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs <>
+<2088> +proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_0=0 +a=6378249.2 +b=6356515 +units=m +no_defs <>
# Yemen NGN96 / UTM zone 38N
<2089> +proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# Yemen NGN96 / UTM zone 39N
<2090> +proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# South Yemen / Gauss Kruger zone 8 (deprecated)
-<2091> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <>
+<2091> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <>
# South Yemen / Gauss Kruger zone 9 (deprecated)
-<2092> +proj=tmerc +lat_0=0 +lon_0=51 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <>
+<2092> +proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 +ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_defs <>
# Hanoi 1972 / GK 106 NE
-<2093> +proj=tmerc +lat_0=0 +lon_0=106 +k=1.000000 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <>
+<2093> +proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +units=m +no_defs <>
# WGS 72BE / TM 106 NE
-<2094> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.999600 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <>
+<2094> +proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs <>
# Bissau / UTM zone 28N
<2095> +proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,0,0 +units=m +no_defs <>
# Korean 1985 / Korea East Belt
-<2096> +proj=tmerc +lat_0=38 +lon_0=129 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <>
+<2096> +proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <>
# Korean 1985 / Korea Central Belt
-<2097> +proj=tmerc +lat_0=38 +lon_0=127 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <>
+<2097> +proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <>
# Korean 1985 / Korea West Belt
-<2098> +proj=tmerc +lat_0=38 +lon_0=125 +k=1.000000 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <>
+<2098> +proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs <>
# Qatar 1948 / Qatar Grid
<2099> +proj=cass +lat_0=25.38236111111111 +lon_0=50.76138888888889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no_defs <>
# GGRS87 / Greek Grid
-<2100> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs <>
+<2100> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m +no_defs <>
# Lake / Maracaibo Grid M1
<2101> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684.972 +ellps=intl +units=m +no_defs <>
# Lake / Maracaibo Grid
@@ -1035,61 +1047,61 @@
# Lake / Maracaibo La Rosa Grid
<2104> +proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-23139.97 +ellps=intl +units=m +no_defs <>
# NZGD2000 / Mount Eden Circuit 2000
-<2105> +proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.999900 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2105> +proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Bay of Plenty Circuit 2000
-<2106> +proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2106> +proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Poverty Bay Circuit 2000
-<2107> +proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2107> +proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Hawkes Bay Circuit 2000
-<2108> +proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2108> +proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Taranaki Circuit 2000
-<2109> +proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2109> +proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Tuhirangi Circuit 2000
-<2110> +proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2110> +proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Wanganui Circuit 2000
-<2111> +proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2111> +proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Wairarapa Circuit 2000
-<2112> +proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2112> +proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Wellington Circuit 2000
-<2113> +proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2113> +proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.7763888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Collingwood Circuit 2000
-<2114> +proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2114> +proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Nelson Circuit 2000
-<2115> +proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2115> +proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Karamea Circuit 2000
-<2116> +proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2116> +proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Buller Circuit 2000
-<2117> +proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2117> +proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Grey Circuit 2000
-<2118> +proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2118> +proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Amuri Circuit 2000
-<2119> +proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2119> +proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Marlborough Circuit 2000
-<2120> +proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2120> +proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Hokitika Circuit 2000
-<2121> +proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2121> +proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Okarito Circuit 2000
-<2122> +proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2122> +proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Jacksons Bay Circuit 2000
-<2123> +proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2123> +proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Mount Pleasant Circuit 2000
-<2124> +proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2124> +proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Gawler Circuit 2000
-<2125> +proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2125> +proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Timaru Circuit 2000
-<2126> +proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2126> +proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Lindis Peak Circuit 2000
-<2127> +proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2127> +proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Mount Nicholas Circuit 2000
-<2128> +proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2128> +proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Mount York Circuit 2000
-<2129> +proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2129> +proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Observation Point Circuit 2000
-<2130> +proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2130> +proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / North Taieri Circuit 2000
-<2131> +proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.999960 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2131> +proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k=0.9999600000000001 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / Bluff Circuit 2000
-<2132> +proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1.000000 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2132> +proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / UTM zone 58S
<2133> +proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NZGD2000 / UTM zone 59S
@@ -1097,29 +1109,29 @@
# NZGD2000 / UTM zone 60S
<2135> +proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# Accra / Ghana National Grid
-<2136> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.999750 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs <>
+<2136> +proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.99975 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997101815088 +no_defs <>
# Accra / TM 1 NW
-<2137> +proj=tmerc +lat_0=0 +lon_0=-1 +k=0.999600 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs <>
+<2137> +proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322,0,0,0,0 +units=m +no_defs <>
# NAD27(CGQ77) / Quebec Lambert
<2138> +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs <>
# NAD83(CSRS98) / SCoPQ zone 2 (deprecated)
-<2139> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2139> +proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 3 (deprecated)
-<2140> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2140> +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 4 (deprecated)
-<2141> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2141> +proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 5 (deprecated)
-<2142> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2142> +proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 6 (deprecated)
-<2143> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2143> +proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 7 (deprecated)
-<2144> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2144> +proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 8 (deprecated)
-<2145> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2145> +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 9 (deprecated)
-<2146> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2146> +proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / MTM zone 10 (deprecated)
-<2147> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.999900 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2147> +proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / UTM zone 21N (deprecated)
<2148> +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# NAD83(CSRS98) / UTM zone 18N (deprecated)
@@ -1139,13 +1151,13 @@
# NAD83(HARN) / UTM zone 59S (deprecated)
<2156> +proj=utm +zone=59 +south +ellps=GRS80 +units=m +no_defs <>
# IRENET95 / Irish Transverse Mercator
-<2157> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.999820 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2157> +proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000 +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# IRENET95 / UTM zone 29N
<2158> +proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# Sierra Leone 1924 / New Colony Grid
-<2159> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1.000000 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <>
+<2159> +proj=tmerc +lat_0=6.666666666666668 +lon_0=-12 +k=1 +x_0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <>
# Sierra Leone 1924 / New War Office Grid
-<2160> +proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1.000000 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <>
+<2160> +proj=tmerc +lat_0=6.666666666666668 +lon_0=-12 +k=1 +x_0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b=6356751.689189189 +to_meter=0.3047997101815088 +no_defs <>
# Sierra Leone 1968 / UTM zone 28N
<2161> +proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +units=m +no_defs <>
# Sierra Leone 1968 / UTM zone 29N
@@ -1153,27 +1165,27 @@
# US National Atlas Equal Area
<2163> +proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs <>
# Locodjo 1965 / TM 5 NW
-<2164> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <>
+<2164> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m +no_defs <>
# Abidjan 1987 / TM 5 NW
-<2165> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.999600 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <>
+<2165> +proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +units=m +no_defs <>
# Pulkovo 1942(83) / Gauss Kruger zone 3 (deprecated)
-<2166> +proj=tmerc +lat_0=0 +lon_0=9 +k=1.000000 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <>
+<2166> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <>
# Pulkovo 1942(83) / Gauss Kruger zone 4 (deprecated)
-<2167> +proj=tmerc +lat_0=0 +lon_0=12 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <>
+<2167> +proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <>
# Pulkovo 1942(83) / Gauss Kruger zone 5 (deprecated)
-<2168> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <>
+<2168> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs <>
# Luxembourg 1930 / Gauss
-<2169> +proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666667 +k=1.000000 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs <>
+<2169> +proj=tmerc +lat_0=49.83333333333334 +lon_0=6.166666666666668 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-193,13.7,-39.3,-0.41,-2.933,2.688,0.43 +units=m +no_defs <>
# MGI / Slovenia Grid
-<2170> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.999900 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <>
+<2170> +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=0 +ellps=bessel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs <>
# Pulkovo 1942(58) / Poland zone I (deprecated)
-<2171> +proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.999800 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
+<2171> +proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
# Pulkovo 1942(58) / Poland zone II
-<2172> +proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.999800 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
+<2172> +proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
# Pulkovo 1942(58) / Poland zone III
-<2173> +proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.999800 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
+<2173> +proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
# Pulkovo 1942(58) / Poland zone IV
-<2174> +proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.999800 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
+<2174> +proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
# Pulkovo 1942(58) / Poland zone V
<2175> +proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.999983 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs <>
# ETRS89 / Poland CS2000 zone 5
@@ -1185,7 +1197,7 @@
# ETRS89 / Poland CS2000 zone 8
<2179> +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
# ETRS89 / Poland CS92
-<2180> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.999300 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs <>
+<2180> +proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993000000000001 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs <>
# Azores Occidental 1939 / UTM zone 25N
<2188> +proj=utm +zone=25 +ellps=intl +units=m +no_defs <>
# Azores Central 1948 / UTM zone 26N
@@ -1197,21 +1209,21 @@
# ED50 / France EuroLambert
<2192> +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.337229166666667 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl +units=m +no_defs <>
# NZGD2000 / New Zealand Transverse Mercator
-<2193> +proj=tmerc +lat_0=0 +lon_0=173 +k=0.999600 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
+<2193> +proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# American Samoa 1962 / American Samoa Lambert (deprecated)
<2194> +proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.26666666666667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +to_meter=0.3048006096012192 +no_defs <>
# NAD83(HARN) / UTM zone 2S
<2195> +proj=utm +zone=2 +south +ellps=GRS80 +units=m +no_defs <>
# ETRS89 / Kp2000 Jutland
-<2196> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.999950 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
+<2196> +proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.9999500000000001 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
# ETRS89 / Kp2000 Zealand
-<2197> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.999950 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
+<2197> +proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999500000000001 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
# ETRS89 / Kp2000 Bornholm
-<2198> +proj=tmerc +lat_0=0 +lon_0=15 +k=1.000000 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
+<2198> +proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
# Albanian 1987 / Gauss Kruger zone 4 (deprecated)
-<2199> +proj=tmerc +lat_0=0 +lon_0=21 +k=1.000000 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <>
+<2199> +proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +units=m +no_defs <>
# ATS77 / New Brunswick Stereographic (ATS77)
-<2200> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <>
+<2200> +proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.9999119999999999 +x_0=300000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units=m +no_defs <>
# REGVEN / UTM zone 18N
<2201> +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
# REGVEN / UTM zone 19N
@@ -1223,23 +1235,23 @@
# NAD83 / Kentucky North
<2205> +proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs <>
# ED50 / 3-degree Gauss-Kruger zone 9
-<2206> +proj=tmerc +lat_0=0 +lon_0=27 +k=1.000000 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2206> +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ED50 / 3-degree Gauss-Kruger zone 10
-<2207> +proj=tmerc +lat_0=0 +lon_0=30 +k=1.000000 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2207> +proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ED50 / 3-degree Gauss-Kruger zone 11
-<2208> +proj=tmerc +lat_0=0 +lon_0=33 +k=1.000000 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2208> +proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ED50 / 3-degree Gauss-Kruger zone 12
-<2209> +proj=tmerc +lat_0=0 +lon_0=36 +k=1.000000 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2209> +proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ED50 / 3-degree Gauss-Kruger zone 13
-<2210> +proj=tmerc +lat_0=0 +lon_0=39 +k=1.000000 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2210> +proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ED50 / 3-degree Gauss-Kruger zone 14
-<2211> +proj=tmerc +lat_0=0 +lon_0=42 +k=1.000000 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2211> +proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ED50 / 3-degree Gauss-Kruger zone 15
-<2212> +proj=tmerc +lat_0=0 +lon_0=45 +k=1.000000 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs <>
+<2212> +proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0 +ellps=intl +units=m +no_defs <>
# ETRS89 / TM 30 NE
-<2213> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
+<2213> +proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs <>
# Douala 1948 / AOF west (deprecated)
-<2214> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999000 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs <>
+<2214> +proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0,0,0 +units=m +no_defs <>
# Manoca 1962 / UTM zone 32N
<2215> +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70.9,-151.8,-41.4,0,0,0,0 +units=m +no_defs <>
# Qornoq 1927 / UTM zone 22N
@@ -1257,23 +1269,23 @@
# Unable to translate coordinate system EPSG:2221 into PROJ.4 format.
#
# NAD83 / Arizona East (ft)
-<2222> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <>
+<2222> +proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <>
# NAD83 / Arizona Central (ft)
-<2223> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999900 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <>
+<2223> +proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <>
# NAD83 / Arizona West (ft)
-<2224> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <>
+<2224> +proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.9999333330000001 +x_0=213360 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048 +no_defs <>
# NAD83 / California zone 1 (ftUS)
-<2225> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2225> +proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.33333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / California zone 2 (ftUS)
-<2226> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2226> +proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / California zone 3 (ftUS)
-<2227> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2227> +proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / California zone 4 (ftUS)
-<2228> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2228> +proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.33333333333334 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / California zone 5 (ftUS)
-<2229> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2229> +proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / California zone 6 (ftUS)
-<2230> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016001 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2230> +proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000.0001016 +y_0=500000.0001016002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / Colorado North (ftUS)
<2231> +proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.6096012192 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / Colorado Central (ftUS)
@@ -1285,35 +1297,35 @@
# NAD83 / Delaware (ftUS)
<2235> +proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / Florida East (ftUS)
-<2236> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2236> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / Florida West (ftUS)
-<2237> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999941 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2237> +proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.9999411770000001 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / Florida North (ftUS)
<2238> +proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=29 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / Georgia East (ftUS)
-<2239> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999900 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2239> +proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.9999 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
# NAD83 / Georgia West (ftUS)
-<2240> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999900 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs <>
+<2240> +proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.9999 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0...
[truncated message content] |
|
From: <js...@us...> - 2008-01-01 14:33:53
|
Revision: 4799
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4799&view=rev
Author: jswhit
Date: 2008-01-01 06:33:51 -0800 (Tue, 01 Jan 2008)
Log Message:
-----------
freeze for 0.9.9 release
Modified Paths:
--------------
trunk/toolkits/basemap/Changelog
Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog 2008-01-01 14:29:16 UTC (rev 4798)
+++ trunk/toolkits/basemap/Changelog 2008-01-01 14:33:51 UTC (rev 4799)
@@ -1,4 +1,4 @@
-version 0.9.9 (not yet released)
+version 0.9.9 (svn revision 4799)
* updated proj4 sources to version 4.6.0.
* removed hidden dependency on setuptools (in dap module).
* fixed exception handling bug in code that looks for
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2008-01-01 14:29:20
|
Revision: 4798
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4798&view=rev
Author: jswhit
Date: 2008-01-01 06:29:16 -0800 (Tue, 01 Jan 2008)
Log Message:
-----------
update pyproj to 1.8.4
Modified Paths:
--------------
trunk/toolkits/basemap/src/_geod.c
trunk/toolkits/basemap/src/_proj.c
trunk/toolkits/basemap/src/_pyproj.pxi
Modified: trunk/toolkits/basemap/src/_geod.c
===================================================================
--- trunk/toolkits/basemap/src/_geod.c 2007-12-28 20:29:30 UTC (rev 4797)
+++ trunk/toolkits/basemap/src/_geod.c 2008-01-01 14:29:16 UTC (rev 4798)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.9.6.9 on Fri Dec 28 13:16:13 2007 */
+/* Generated by Cython 0.9.6.9 on Tue Jan 1 07:25:28 2008 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
@@ -109,7 +109,7 @@
/* Declarations from _geod */
-/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":5
+/* "/Users/jsw/python/pyproj/_geod.pyx":5
* include "_pyproj.pxi"
*
* cdef class Geod: # <<<<<<<<<<<<<<
@@ -126,7 +126,7 @@
};
-/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":5
+/* "/Users/jsw/python/pyproj/_geod.pyx":5
* include "_pyproj.pxi"
*
* cdef class Geod: # <<<<<<<<<<<<<<
@@ -142,7 +142,7 @@
/* Implementation of _geod */
-static char __pyx_k2[] = "1.8.3";
+static char __pyx_k2[] = "1.8.4";
static PyObject *__pyx_n___cinit__;
static PyObject *__pyx_n___reduce__;
@@ -159,7 +159,7 @@
static PyObject *__pyx_k2p;
-/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":11
+/* "/Users/jsw/python/pyproj/_geod.pyx":11
* cdef char *geodinitstring
*
* def __new__(self, geodparams): # <<<<<<<<<<<<<<
@@ -207,7 +207,7 @@
__pyx_v_key = Py_None; Py_INCREF(Py_None);
__pyx_v_value = Py_None; Py_INCREF(Py_None);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":13
+ /* "/Users/jsw/python/pyproj/_geod.pyx":13
* def __new__(self, geodparams):
* cdef GEODESIC_T GEOD_T
* self.geodparams = geodparams # <<<<<<<<<<<<<<
@@ -218,7 +218,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/trunk/toolkits/basemap/src/_geod.pyx":15
+ /* "/Users/jsw/python/pyproj/_geod.pyx":15
* self.geodparams = geodparams
* # setup proj initialization string.
* geodargs = [] # <<<<<<<<<<<<<<
@@ -230,7 +230,7 @@
__pyx_v_geodargs = __pyx_1;
__pyx_1 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ /* "/Users/jsw/python/pyproj/_geod.pyx":16
* # setup proj initialization string.
* geodargs = []
* for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
@@ -245,7 +245,7 @@
Py_DECREF(__pyx_3); __pyx_3 = 0;
for (;;) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ /* "/Users/jsw/python/pyproj/_geod.pyx":16
* # setup proj initialization string.
* geodargs = []
* for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
@@ -263,7 +263,7 @@
__pyx_5 = PyTuple_GET_ITEM(__pyx_3, 0);
Py_INCREF(__pyx_5);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ /* "/Users/jsw/python/pyproj/_geod.pyx":16
* # setup proj initialization string.
* geodargs = []
* for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
@@ -276,7 +276,7 @@
__pyx_5 = PyTuple_GET_ITEM(__pyx_3, 1);
Py_INCREF(__pyx_5);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ /* "/Users/jsw/python/pyproj/_geod.pyx":16
* # setup proj initialization string.
* geodargs = []
* for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
@@ -293,7 +293,7 @@
Py_DECREF(__pyx_3); __pyx_3 = 0;
__pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ /* "/Users/jsw/python/pyproj/_geod.pyx":16
* # setup proj initialization string.
* geodargs = []
* for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
@@ -305,7 +305,7 @@
__pyx_5 = 0;
__pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ /* "/Users/jsw/python/pyproj/_geod.pyx":16
* # setup proj initialization string.
* geodargs = []
* for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
@@ -319,7 +319,7 @@
Py_DECREF(__pyx_4); __pyx_4 = 0;
}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ /* "/Users/jsw/python/pyproj/_geod.pyx":17
* geodargs = []
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
@@ -328,7 +328,7 @@
*/
__pyx_5 = PyObject_GetAttr(__pyx_v_geodargs, __pyx_n_append); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ /* "/Users/jsw/python/pyproj/_geod.pyx":17
* geodargs = []
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
@@ -337,7 +337,7 @@
*/
__pyx_3 = PyNumber_Add(__pyx_k6p, __pyx_v_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ /* "/Users/jsw/python/pyproj/_geod.pyx":17
* geodargs = []
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
@@ -347,7 +347,7 @@
__pyx_4 = PyNumber_Add(__pyx_3, __pyx_k7p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; goto __pyx_L1;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ /* "/Users/jsw/python/pyproj/_geod.pyx":17
* geodargs = []
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
@@ -363,7 +363,7 @@
Py_DECREF(__pyx_4); __pyx_4 = 0;
Py_DECREF(__pyx_6); __pyx_6 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ /* "/Users/jsw/python/pyproj/_geod.pyx":17
* geodargs = []
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
@@ -382,7 +382,7 @@
}
Py_DECREF(__pyx_1); __pyx_1 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":18
+ /* "/Users/jsw/python/pyproj/_geod.pyx":18
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ')
* self.geodinitstring = PyString_AsString(''.join(geodargs)) # <<<<<<<<<<<<<<
@@ -391,7 +391,7 @@
*/
__pyx_4 = PyObject_GetAttr(__pyx_k9p, __pyx_n_join); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":18
+ /* "/Users/jsw/python/pyproj/_geod.pyx":18
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ')
* self.geodinitstring = PyString_AsString(''.join(geodargs)) # <<<<<<<<<<<<<<
@@ -405,7 +405,7 @@
Py_DECREF(__pyx_4); __pyx_4 = 0;
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":18
+ /* "/Users/jsw/python/pyproj/_geod.pyx":18
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ')
* self.geodinitstring = PyString_AsString(''.join(geodargs)) # <<<<<<<<<<<<<<
@@ -415,7 +415,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/trunk/toolkits/basemap/src/_geod.pyx":20
+ /* "/Users/jsw/python/pyproj/_geod.pyx":20
* self.geodinitstring = PyString_AsString(''.join(geodargs))
* # initialize projection
* self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] # <<<<<<<<<<<<<<
@@ -424,7 +424,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/trunk/toolkits/basemap/src/_geod.pyx":21
+ /* "/Users/jsw/python/pyproj/_geod.pyx":21
* # initialize projection
* self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0]
* if pj_errno != 0: # <<<<<<<<<<<<<<
@@ -434,7 +434,7 @@
__pyx_7 = (pj_errno != 0);
if (__pyx_7) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":22
+ /* "/Users/jsw/python/pyproj/_geod.pyx":22
* self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0]
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<<
@@ -454,7 +454,7 @@
}
__pyx_L4:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":23
+ /* "/Users/jsw/python/pyproj/_geod.pyx":23
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<<
@@ -463,7 +463,7 @@
*/
__pyx_5 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":23
+ /* "/Users/jsw/python/pyproj/_geod.pyx":23
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<<
@@ -493,7 +493,7 @@
return __pyx_r;
}
-/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":25
+/* "/Users/jsw/python/pyproj/_geod.pyx":25
* self.proj_version = PJ_VERSION/100.
*
* def __reduce__(self): # <<<<<<<<<<<<<<
@@ -512,7 +512,7 @@
PyObject *__pyx_3 = 0;
Py_INCREF(__pyx_v_self);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":27
+ /* "/Users/jsw/python/pyproj/_geod.pyx":27
* def __reduce__(self):
* """special method that allows pyproj.Geod instance to be pickled"""
* return (self.__class__,(self.geodparams,)) # <<<<<<<<<<<<<<
@@ -521,7 +521,7 @@
*/
__pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n___class__); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":27
+ /* "/Users/jsw/python/pyproj/_geod.pyx":27
* def __reduce__(self):
* """special method that allows pyproj.Geod instance to be pickled"""
* return (self.__class__,(self.geodparams,)) # <<<<<<<<<<<<<<
@@ -553,7 +553,7 @@
return __pyx_r;
}
-/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":29
+/* "/Users/jsw/python/pyproj/_geod.pyx":29
* return (self.__class__,(self.geodparams,))
*
* def _fwd(self, object lons, object lats, object az, object dist, radians=False): # <<<<<<<<<<<<<<
@@ -612,7 +612,7 @@
Py_INCREF(__pyx_v_dist);
Py_INCREF(__pyx_v_radians);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":40
+ /* "/Users/jsw/python/pyproj/_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: # <<<<<<<<<<<<<<
@@ -622,7 +622,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons,(&__pyx_v_londata),(&__pyx_v_buflenlons)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":41
+ /* "/Users/jsw/python/pyproj/_geod.pyx":41
* # if buffer api is supported, get pointer to data buffers.
* if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -635,7 +635,7 @@
}
__pyx_L2:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":42
+ /* "/Users/jsw/python/pyproj/_geod.pyx":42
* if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: # <<<<<<<<<<<<<<
@@ -645,7 +645,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats,(&__pyx_v_latdata),(&__pyx_v_buflenlats)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":43
+ /* "/Users/jsw/python/pyproj/_geod.pyx":43
* raise RuntimeError
* if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -658,7 +658,7 @@
}
__pyx_L3:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":44
+ /* "/Users/jsw/python/pyproj/_geod.pyx":44
* if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: # <<<<<<<<<<<<<<
@@ -668,7 +668,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_az,(&__pyx_v_azdat),(&__pyx_v_buflenaz)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":45
+ /* "/Users/jsw/python/pyproj/_geod.pyx":45
* raise RuntimeError
* if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -681,7 +681,7 @@
}
__pyx_L4:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":46
+ /* "/Users/jsw/python/pyproj/_geod.pyx":46
* if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: # <<<<<<<<<<<<<<
@@ -691,7 +691,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_dist,(&__pyx_v_distdat),(&__pyx_v_buflend)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":47
+ /* "/Users/jsw/python/pyproj/_geod.pyx":47
* raise RuntimeError
* if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -704,7 +704,7 @@
}
__pyx_L5:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":49
+ /* "/Users/jsw/python/pyproj/_geod.pyx":49
* raise RuntimeError
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
@@ -714,7 +714,7 @@
__pyx_1 = (__pyx_v_buflenlons == __pyx_v_buflenlats);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":49
+ /* "/Users/jsw/python/pyproj/_geod.pyx":49
* raise RuntimeError
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
@@ -724,7 +724,7 @@
__pyx_1 = (__pyx_v_buflenlats == __pyx_v_buflenaz);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":49
+ /* "/Users/jsw/python/pyproj/_geod.pyx":49
* raise RuntimeError
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
@@ -737,7 +737,7 @@
__pyx_2 = (!__pyx_1);
if (__pyx_2) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":50
+ /* "/Users/jsw/python/pyproj/_geod.pyx":50
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend:
* raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<<
@@ -756,7 +756,7 @@
}
__pyx_L6:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":51
+ /* "/Users/jsw/python/pyproj/_geod.pyx":51
* if not buflenlons == buflenlats == buflenaz == buflend:
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize # <<<<<<<<<<<<<<
@@ -765,7 +765,7 @@
*/
__pyx_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":51
+ /* "/Users/jsw/python/pyproj/_geod.pyx":51
* if not buflenlons == buflenlats == buflenaz == buflend:
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize # <<<<<<<<<<<<<<
@@ -780,7 +780,7 @@
Py_DECREF(__pyx_5); __pyx_5 = 0;
__pyx_v_ndim = __pyx_6;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":52
+ /* "/Users/jsw/python/pyproj/_geod.pyx":52
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize
* lonsdata = <double *>londata # <<<<<<<<<<<<<<
@@ -789,7 +789,7 @@
*/
__pyx_v_lonsdata = ((double *)__pyx_v_londata);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":53
+ /* "/Users/jsw/python/pyproj/_geod.pyx":53
* ndim = buflenlons/_doublesize
* lonsdata = <double *>londata
* latsdata = <double *>latdata # <<<<<<<<<<<<<<
@@ -798,7 +798,7 @@
*/
__pyx_v_latsdata = ((double *)__pyx_v_latdata);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":54
+ /* "/Users/jsw/python/pyproj/_geod.pyx":54
* lonsdata = <double *>londata
* latsdata = <double *>latdata
* azdata = <double *>azdat # <<<<<<<<<<<<<<
@@ -807,7 +807,7 @@
*/
__pyx_v_azdata = ((double *)__pyx_v_azdat);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":55
+ /* "/Users/jsw/python/pyproj/_geod.pyx":55
* latsdata = <double *>latdata
* azdata = <double *>azdat
* distdata = <double *>distdat # <<<<<<<<<<<<<<
@@ -816,7 +816,7 @@
*/
__pyx_v_distdata = ((double *)__pyx_v_distdat);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":56
+ /* "/Users/jsw/python/pyproj/_geod.pyx":56
* azdata = <double *>azdat
* distdata = <double *>distdat
* for i from 0 <= i < ndim: # <<<<<<<<<<<<<<
@@ -825,7 +825,7 @@
*/
for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":57
+ /* "/Users/jsw/python/pyproj/_geod.pyx":57
* distdata = <double *>distdat
* for i from 0 <= i < ndim:
* if radians: # <<<<<<<<<<<<<<
@@ -835,7 +835,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/trunk/toolkits/basemap/src/_geod.pyx":58
+ /* "/Users/jsw/python/pyproj/_geod.pyx":58
* for i from 0 <= i < ndim:
* if radians:
* self.geodesic_t.p1.v = lonsdata[i] # <<<<<<<<<<<<<<
@@ -844,7 +844,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = (__pyx_v_lonsdata[__pyx_v_i]);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":59
+ /* "/Users/jsw/python/pyproj/_geod.pyx":59
* if radians:
* self.geodesic_t.p1.v = lonsdata[i]
* self.geodesic_t.p1.u = latsdata[i] # <<<<<<<<<<<<<<
@@ -853,7 +853,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = (__pyx_v_latsdata[__pyx_v_i]);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":60
+ /* "/Users/jsw/python/pyproj/_geod.pyx":60
* self.geodesic_t.p1.v = lonsdata[i]
* self.geodesic_t.p1.u = latsdata[i]
* self.geodesic_t.ALPHA12 = azdata[i] # <<<<<<<<<<<<<<
@@ -862,7 +862,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12 = (__pyx_v_azdata[__pyx_v_i]);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":61
+ /* "/Users/jsw/python/pyproj/_geod.pyx":61
* self.geodesic_t.p1.u = latsdata[i]
* self.geodesic_t.ALPHA12 = azdata[i]
* self.geodesic_t.DIST = distdata[i] # <<<<<<<<<<<<<<
@@ -874,7 +874,7 @@
}
/*else*/ {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":63
+ /* "/Users/jsw/python/pyproj/_geod.pyx":63
* self.geodesic_t.DIST = distdata[i]
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
@@ -883,7 +883,7 @@
*/
__pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":63
+ /* "/Users/jsw/python/pyproj/_geod.pyx":63
* self.geodesic_t.DIST = distdata[i]
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
@@ -897,7 +897,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":63
+ /* "/Users/jsw/python/pyproj/_geod.pyx":63
* self.geodesic_t.DIST = distdata[i]
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
@@ -906,7 +906,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":64
+ /* "/Users/jsw/python/pyproj/_geod.pyx":64
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
* self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
@@ -915,7 +915,7 @@
*/
__pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":64
+ /* "/Users/jsw/python/pyproj/_geod.pyx":64
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
* self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
@@ -929,7 +929,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":64
+ /* "/Users/jsw/python/pyproj/_geod.pyx":64
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
* self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
@@ -938,7 +938,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":65
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -947,7 +947,7 @@
*/
__pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":65
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -961,7 +961,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":65
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -970,7 +970,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12 = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":66
+ /* "/Users/jsw/python/pyproj/_geod.pyx":66
* self.geodesic_t.p1.u = _dg2rad*latsdata[i]
* self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
* self.geodesic_t.DIST = distdata[i] # <<<<<<<<<<<<<<
@@ -981,7 +981,7 @@
}
__pyx_L9:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":67
+ /* "/Users/jsw/python/pyproj/_geod.pyx":67
* self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
* self.geodesic_t.DIST = distdata[i]
* geod_pre(&self.geodesic_t) # <<<<<<<<<<<<<<
@@ -990,7 +990,7 @@
*/
geod_pre((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t));
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":68
+ /* "/Users/jsw/python/pyproj/_geod.pyx":68
* self.geodesic_t.DIST = distdata[i]
* geod_pre(&self.geodesic_t)
* if pj_errno != 0: # <<<<<<<<<<<<<<
@@ -1000,7 +1000,7 @@
__pyx_2 = (pj_errno != 0);
if (__pyx_2) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":69
+ /* "/Users/jsw/python/pyproj/_geod.pyx":69
* geod_pre(&self.geodesic_t)
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<<
@@ -1020,7 +1020,7 @@
}
__pyx_L10:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":70
+ /* "/Users/jsw/python/pyproj/_geod.pyx":70
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* geod_for(&self.geodesic_t) # <<<<<<<<<<<<<<
@@ -1029,7 +1029,7 @@
*/
geod_for((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t));
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":71
+ /* "/Users/jsw/python/pyproj/_geod.pyx":71
* raise RuntimeError(pj_strerrno(pj_errno))
* geod_for(&self.geodesic_t)
* if pj_errno != 0: # <<<<<<<<<<<<<<
@@ -1039,7 +1039,7 @@
__pyx_1 = (pj_errno != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":72
+ /* "/Users/jsw/python/pyproj/_geod.pyx":72
* geod_for(&self.geodesic_t)
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<<
@@ -1059,7 +1059,7 @@
}
__pyx_L11:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":73
+ /* "/Users/jsw/python/pyproj/_geod.pyx":73
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* if isnan(self.geodesic_t.ALPHA21): # <<<<<<<<<<<<<<
@@ -1069,7 +1069,7 @@
__pyx_8 = isnan(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21);
if (__pyx_8) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":74
+ /* "/Users/jsw/python/pyproj/_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)') # <<<<<<<<<<<<<<
@@ -1088,7 +1088,7 @@
}
__pyx_L12:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":75
+ /* "/Users/jsw/python/pyproj/_geod.pyx":75
* if isnan(self.geodesic_t.ALPHA21):
* raise ValueError('undefined forward geodesic (may be an equatorial arc)')
* if radians: # <<<<<<<<<<<<<<
@@ -1098,7 +1098,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/trunk/toolkits/basemap/src/_geod.pyx":76
+ /* "/Users/jsw/python/pyproj/_geod.pyx":76
* raise ValueError('undefined forward geodesic (may be an equatorial arc)')
* if radians:
* lonsdata[i] = self.geodesic_t.p2.v # <<<<<<<<<<<<<<
@@ -1107,7 +1107,7 @@
*/
(__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":77
+ /* "/Users/jsw/python/pyproj/_geod.pyx":77
* if radians:
* lonsdata[i] = self.geodesic_t.p2.v
* latsdata[i] = self.geodesic_t.p2.u # <<<<<<<<<<<<<<
@@ -1116,7 +1116,7 @@
*/
(__pyx_v_latsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":78
+ /* "/Users/jsw/python/pyproj/_geod.pyx":78
* lonsdata[i] = self.geodesic_t.p2.v
* latsdata[i] = self.geodesic_t.p2.u
* azdata[i] = self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<<
@@ -1128,7 +1128,7 @@
}
/*else*/ {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":80
+ /* "/Users/jsw/python/pyproj/_geod.pyx":80
* azdata[i] = self.geodesic_t.ALPHA21
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<<
@@ -1137,7 +1137,7 @@
*/
__pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":80
+ /* "/Users/jsw/python/pyproj/_geod.pyx":80
* azdata[i] = self.geodesic_t.ALPHA21
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<<
@@ -1151,7 +1151,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":80
+ /* "/Users/jsw/python/pyproj/_geod.pyx":80
* azdata[i] = self.geodesic_t.ALPHA21
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<<
@@ -1160,7 +1160,7 @@
*/
(__pyx_v_lonsdata[__pyx_v_i]) = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":81
+ /* "/Users/jsw/python/pyproj/_geod.pyx":81
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v
* latsdata[i] = _rad2dg*self.geodesic_t.p2.u # <<<<<<<<<<<<<<
@@ -1169,7 +1169,7 @@
*/
__pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":81
+ /* "/Users/jsw/python/pyproj/_geod.pyx":81
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v
* latsdata[i] = _rad2dg*self.geodesic_t.p2.u # <<<<<<<<<<<<<<
@@ -1183,7 +1183,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":81
+ /* "/Users/jsw/python/pyproj/_geod.pyx":81
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v
* latsdata[i] = _rad2dg*self.geodesic_t.p2.u # <<<<<<<<<<<<<<
@@ -1192,7 +1192,7 @@
*/
(__pyx_v_latsdata[__pyx_v_i]) = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":82
+ /* "/Users/jsw/python/pyproj/_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 # <<<<<<<<<<<<<<
@@ -1201,7 +1201,7 @@
*/
__pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":82
+ /* "/Users/jsw/python/pyproj/_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 # <<<<<<<<<<<<<<
@@ -1215,7 +1215,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":82
+ /* "/Users/jsw/python/pyproj/_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 # <<<<<<<<<<<<<<
@@ -1245,7 +1245,7 @@
return __pyx_r;
}
-/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":84
+/* "/Users/jsw/python/pyproj/_geod.pyx":84
* azdata[i] = _rad2dg*self.geodesic_t.ALPHA21
*
* def _inv(self, object lons1, object lats1, object lons2, object lats2, radians=False): # <<<<<<<<<<<<<<
@@ -1300,7 +1300,7 @@
Py_INCREF(__pyx_v_lats2);
Py_INCREF(__pyx_v_radians);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":94
+ /* "/Users/jsw/python/pyproj/_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: # <<<<<<<<<<<<<<
@@ -1310,7 +1310,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons1,(&__pyx_v_londata),(&__pyx_v_buflenlons)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":95
+ /* "/Users/jsw/python/pyproj/_geod.pyx":95
* # if buffer api is supported, get pointer to data buffers.
* if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -1323,7 +1323,7 @@
}
__pyx_L2:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":96
+ /* "/Users/jsw/python/pyproj/_geod.pyx":96
* if PyObject_AsWriteBuffer(lons1, &londata, &buflenlons) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0: # <<<<<<<<<<<<<<
@@ -1333,7 +1333,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats1,(&__pyx_v_latdata),(&__pyx_v_buflenlats)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":97
+ /* "/Users/jsw/python/pyproj/_geod.pyx":97
* raise RuntimeError
* if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -1346,7 +1346,7 @@
}
__pyx_L3:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":98
+ /* "/Users/jsw/python/pyproj/_geod.pyx":98
* if PyObject_AsWriteBuffer(lats1, &latdata, &buflenlats) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0: # <<<<<<<<<<<<<<
@@ -1356,7 +1356,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons2,(&__pyx_v_azdat),(&__pyx_v_buflenaz)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":99
+ /* "/Users/jsw/python/pyproj/_geod.pyx":99
* raise RuntimeError
* if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -1369,7 +1369,7 @@
}
__pyx_L4:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":100
+ /* "/Users/jsw/python/pyproj/_geod.pyx":100
* if PyObject_AsWriteBuffer(lons2, &azdat, &buflenaz) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0: # <<<<<<<<<<<<<<
@@ -1379,7 +1379,7 @@
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats2,(&__pyx_v_distdat),(&__pyx_v_buflend)) != 0);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":101
+ /* "/Users/jsw/python/pyproj/_geod.pyx":101
* raise RuntimeError
* if PyObject_AsWriteBuffer(lats2, &distdat, &buflend) <> 0:
* raise RuntimeError # <<<<<<<<<<<<<<
@@ -1392,7 +1392,7 @@
}
__pyx_L5:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":103
+ /* "/Users/jsw/python/pyproj/_geod.pyx":103
* raise RuntimeError
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
@@ -1402,7 +1402,7 @@
__pyx_1 = (__pyx_v_buflenlons == __pyx_v_buflenlats);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":103
+ /* "/Users/jsw/python/pyproj/_geod.pyx":103
* raise RuntimeError
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
@@ -1412,7 +1412,7 @@
__pyx_1 = (__pyx_v_buflenlats == __pyx_v_buflenaz);
if (__pyx_1) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":103
+ /* "/Users/jsw/python/pyproj/_geod.pyx":103
* raise RuntimeError
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
@@ -1425,7 +1425,7 @@
__pyx_2 = (!__pyx_1);
if (__pyx_2) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":104
+ /* "/Users/jsw/python/pyproj/_geod.pyx":104
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend:
* raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<<
@@ -1444,7 +1444,7 @@
}
__pyx_L6:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":105
+ /* "/Users/jsw/python/pyproj/_geod.pyx":105
* if not buflenlons == buflenlats == buflenaz == buflend:
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize # <<<<<<<<<<<<<<
@@ -1453,7 +1453,7 @@
*/
__pyx_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":105
+ /* "/Users/jsw/python/pyproj/_geod.pyx":105
* if not buflenlons == buflenlats == buflenaz == buflend:
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize # <<<<<<<<<<<<<<
@@ -1468,7 +1468,7 @@
Py_DECREF(__pyx_5); __pyx_5 = 0;
__pyx_v_ndim = __pyx_6;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":106
+ /* "/Users/jsw/python/pyproj/_geod.pyx":106
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize
* lonsdata = <double *>londata # <<<<<<<<<<<<<<
@@ -1477,7 +1477,7 @@
*/
__pyx_v_lonsdata = ((double *)__pyx_v_londata);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":107
+ /* "/Users/jsw/python/pyproj/_geod.pyx":107
* ndim = buflenlons/_doublesize
* lonsdata = <double *>londata
* latsdata = <double *>latdata # <<<<<<<<<<<<<<
@@ -1486,7 +1486,7 @@
*/
__pyx_v_latsdata = ((double *)__pyx_v_latdata);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":108
+ /* "/Users/jsw/python/pyproj/_geod.pyx":108
* lonsdata = <double *>londata
* latsdata = <double *>latdata
* azdata = <double *>azdat # <<<<<<<<<<<<<<
@@ -1495,7 +1495,7 @@
*/
__pyx_v_azdata = ((double *)__pyx_v_azdat);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":109
+ /* "/Users/jsw/python/pyproj/_geod.pyx":109
* latsdata = <double *>latdata
* azdata = <double *>azdat
* distdata = <double *>distdat # <<<<<<<<<<<<<<
@@ -1504,7 +1504,7 @@
*/
__pyx_v_distdata = ((double *)__pyx_v_distdat);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":110
+ /* "/Users/jsw/python/pyproj/_geod.pyx":110
* azdata = <double *>azdat
* distdata = <double *>distdat
* for i from 0 <= i < ndim: # <<<<<<<<<<<<<<
@@ -1513,7 +1513,7 @@
*/
for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":111
+ /* "/Users/jsw/python/pyproj/_geod.pyx":111
* distdata = <double *>distdat
* for i from 0 <= i < ndim:
* if radians: # <<<<<<<<<<<<<<
@@ -1523,7 +1523,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/trunk/toolkits/basemap/src/_geod.pyx":112
+ /* "/Users/jsw/python/pyproj/_geod.pyx":112
* for i from 0 <= i < ndim:
* if radians:
* self.geodesic_t.p1.v = lonsdata[i] # <<<<<<<<<<<<<<
@@ -1532,7 +1532,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = (__pyx_v_lonsdata[__pyx_v_i]);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":113
+ /* "/Users/jsw/python/pyproj/_geod.pyx":113
* if radians:
* self.geodesic_t.p1.v = lonsdata[i]
* self.geodesic_t.p1.u = latsdata[i] # <<<<<<<<<<<<<<
@@ -1541,7 +1541,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = (__pyx_v_latsdata[__pyx_v_i]);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":114
+ /* "/Users/jsw/python/pyproj/_geod.pyx":114
* self.geodesic_t.p1.v = lonsdata[i]
* self.geodesic_t.p1.u = latsdata[i]
* self.geodesic_t.p2.v = azdata[i] # <<<<<<<<<<<<<<
@@ -1550,7 +1550,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = (__pyx_v_azdata[__pyx_v_i]);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":115
+ /* "/Users/jsw/python/pyproj/_geod.pyx":115
* self.geodesic_t.p1.u = latsdata[i]
* self.geodesic_t.p2.v = azdata[i]
* self.geodesic_t.p2.u = distdata[i] # <<<<<<<<<<<<<<
@@ -1562,7 +1562,7 @@
}
/*else*/ {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":117
+ /* "/Users/jsw/python/pyproj/_geod.pyx":117
* self.geodesic_t.p2.u = distdata[i]
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
@@ -1571,7 +1571,7 @@
*/
__pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":117
+ /* "/Users/jsw/python/pyproj/_geod.pyx":117
* self.geodesic_t.p2.u = distdata[i]
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
@@ -1585,7 +1585,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":117
+ /* "/Users/jsw/python/pyproj/_geod.pyx":117
* self.geodesic_t.p2.u = distdata[i]
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
@@ -1594,7 +1594,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":118
+ /* "/Users/jsw/python/pyproj/_geod.pyx":118
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
* self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
@@ -1603,7 +1603,7 @@
*/
__pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":118
+ /* "/Users/jsw/python/pyproj/_geod.pyx":118
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
* self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
@@ -1617,7 +1617,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":118
+ /* "/Users/jsw/python/pyproj/_geod.pyx":118
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
* self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
@@ -1626,7 +1626,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":119
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -1635,7 +1635,7 @@
*/
__pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":119
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -1649,7 +1649,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":119
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -1658,7 +1658,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":120
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -1667,7 +1667,7 @@
*/
__pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":120
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -1681,7 +1681,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":120
+ /* "/Users/jsw/python/pyproj/_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] # <<<<<<<<<<<<<<
@@ -1692,7 +1692,7 @@
}
__pyx_L9:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":121
+ /* "/Users/jsw/python/pyproj/_geod.pyx":121
* self.geodesic_t.p2.v = _dg2rad*azdata[i]
* self.geodesic_t.p2.u = _dg2rad*distdata[i]
* geod_inv(&self.geodesic_t) # <<<<<<<<<<<<<<
@@ -1701,7 +1701,7 @@
*/
geod_inv((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t));
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":122
+ /* "/Users/jsw/python/pyproj/_geod.pyx":122
* self.geodesic_t.p2.u = _dg2rad*distdata[i]
* geod_inv(&self.geodesic_t)
* if isnan(self.geodesic_t.DIST): # <<<<<<<<<<<<<<
@@ -1711,7 +1711,7 @@
__pyx_8 = isnan(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.DIST);
if (__pyx_8) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":123
+ /* "/Users/jsw/python/pyproj/_geod.pyx":123
* geod_inv(&self.geodesic_t)
* if isnan(self.geodesic_t.DIST):
* raise ValueError('undefined inverse geodesic (may be an antipodal point)') # <<<<<<<<<<<<<<
@@ -1730,7 +1730,7 @@
}
__pyx_L10:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":124
+ /* "/Users/jsw/python/pyproj/_geod.pyx":124
* if isnan(self.geodesic_t.DIST):
* raise ValueError('undefined inverse geodesic (may be an antipodal point)')
* if pj_errno != 0: # <<<<<<<<<<<<<<
@@ -1740,7 +1740,7 @@
__pyx_2 = (pj_errno != 0);
if (__pyx_2) {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":125
+ /* "/Users/jsw/python/pyproj/_geod.pyx":125
* raise ValueError('undefined inverse geodesic (may be an antipodal point)')
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<<
@@ -1760,7 +1760,7 @@
}
__pyx_L11:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":126
+ /* "/Users/jsw/python/pyproj/_geod.pyx":126
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* if radians: # <<<<<<<<<<<<<<
@@ -1770,7 +1770,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/trunk/toolkits/basemap/src/_geod.pyx":127
+ /* "/Users/jsw/python/pyproj/_geod.pyx":127
* raise RuntimeError(pj_strerrno(pj_errno))
* if radians:
* lonsdata[i] = self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<<
@@ -1779,7 +1779,7 @@
*/
(__pyx_v_lonsdata[__pyx_v_i]) = ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":128
+ /* "/Users/jsw/python/pyproj/_geod.pyx":128
* if radians:
* lonsdata[i] = self.geodesic_t.ALPHA12
* latsdata[i] = self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<<
@@ -1791,7 +1791,7 @@
}
/*else*/ {
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":130
+ /* "/Users/jsw/python/pyproj/_geod.pyx":130
* latsdata[i] = self.geodesic_t.ALPHA21
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<<
@@ -1800,7 +1800,7 @@
*/
__pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":130
+ /* "/Users/jsw/python/pyproj/_geod.pyx":130
* latsdata[i] = self.geodesic_t.ALPHA21
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<<
@@ -1814,7 +1814,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":130
+ /* "/Users/jsw/python/pyproj/_geod.pyx":130
* latsdata[i] = self.geodesic_t.ALPHA21
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12 # <<<<<<<<<<<<<<
@@ -1823,7 +1823,7 @@
*/
(__pyx_v_lonsdata[__pyx_v_i]) = __pyx_7;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":131
+ /* "/Users/jsw/python/pyproj/_geod.pyx":131
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12
* latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<<
@@ -1832,7 +1832,7 @@
*/
__pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":131
+ /* "/Users/jsw/python/pyproj/_geod.pyx":131
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12
* latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<<
@@ -1846,7 +1846,7 @@
__pyx_7 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":131
+ /* "/Users/jsw/python/pyproj/_geod.pyx":131
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12
* latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<<
@@ -1857,7 +1857,7 @@
}
__pyx_L12:;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":132
+ /* "/Users/jsw/python/pyproj/_geod.pyx":132
* lonsdata[i] = _rad2dg*self.geodesic_t.ALPHA12
* latsdata[i] = _rad2dg*self.geodesic_t.ALPHA21
* azdata[i] = self.geodesic_t.DIST # <<<<<<<<<<<<<<
@@ -1885,7 +1885,7 @@
return __pyx_r;
}
-/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":134
+/* "/Users/jsw/python/pyproj/_geod.pyx":134
* azdata[i] = self.geodesic_t.DIST
*
* def _npts(self, double lon1, double lat1, double lon2, double lat2, int npts, radians=False): # <<<<<<<<<<<<<<
@@ -1921,7 +1921,7 @@
__pyx_v_lats = Py_None; Py_INCREF(Py_None);
__pyx_v_lons = Py_None; Py_INCREF(Py_None);
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":139
+ /* "/Users/jsw/python/pyproj/_geod.pyx":139
* cdef int i
* cdef double del_s
* if radians: # <<<<<<<<<<<<<<
@@ -1931,7 +1931,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/trunk/toolkits/basemap/src/_geod.pyx":140
+ /* "/Users/jsw/python/pyproj/_geod.pyx":140
* cdef double del_s
* if radians:
* self.geodesic_t.p1.v = lon1 # <<<<<<<<<<<<<<
@@ -1940,7 +1940,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_v_lon1;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":141
+ /* "/Users/jsw/python/pyproj/_geod.pyx":141
* if radians:
* self.geodesic_t.p1.v = lon1
* self.geodesic_t.p1.u = lat1 # <<<<<<<<<<<<<<
@@ -1949,7 +1949,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_v_lat1;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":142
+ /* "/Users/jsw/python/pyproj/_geod.pyx":142
* self.geodesic_t.p1.v = lon1
* self.geodesic_t.p1.u = lat1
* self.geodesic_t.p2.v = lon2 # <<<<<<<<<<<<<<
@@ -1958,7 +1958,7 @@
*/
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v = __pyx_v_lon2;
- /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":143
+ /* "/Users/jsw/python/pyproj/_geod.pyx":143
* self.geodesic_t.p1.u = lat1
* self.geodesic_t.p2.v = lon2
* self.geodesic_t.p2.u = lat2 # <<<<<<<<<<<<<<
@@ -1970,7 +1970,7 @@
}
/*else*/ {
- /* "/Users/jsw/python/matplotlib/trunk/tool...
[truncated message content] |
|
From: <js...@us...> - 2007-12-28 20:29:37
|
Revision: 4797
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4797&view=rev
Author: jswhit
Date: 2007-12-28 12:29:30 -0800 (Fri, 28 Dec 2007)
Log Message:
-----------
updated proj4 sources to 4.6.0
Modified Paths:
--------------
trunk/toolkits/basemap/Changelog
Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog 2007-12-28 20:18:46 UTC (rev 4796)
+++ trunk/toolkits/basemap/Changelog 2007-12-28 20:29:30 UTC (rev 4797)
@@ -1,4 +1,5 @@
version 0.9.9 (not yet released)
+ * updated proj4 sources to version 4.6.0.
* removed hidden dependency on setuptools (in dap module).
* fixed exception handling bug in code that looks for
intersection between boundary feature and map projection
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2007-12-28 20:19:50
|
Revision: 4796
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4796&view=rev
Author: jswhit
Date: 2007-12-28 12:18:46 -0800 (Fri, 28 Dec 2007)
Log Message:
-----------
update to proj 4.6.0 (second try)
Modified Paths:
--------------
trunk/toolkits/basemap/src/PJ_laea.c
trunk/toolkits/basemap/src/PJ_wag3.c
trunk/toolkits/basemap/src/_geod.c
trunk/toolkits/basemap/src/_proj.c
trunk/toolkits/basemap/src/emess.c
trunk/toolkits/basemap/src/geocent.c
trunk/toolkits/basemap/src/geocent.h
trunk/toolkits/basemap/src/geod.c
trunk/toolkits/basemap/src/nad_init.c
trunk/toolkits/basemap/src/pj_datum_set.c
trunk/toolkits/basemap/src/pj_factors.c
trunk/toolkits/basemap/src/pj_gridinfo.c
trunk/toolkits/basemap/src/pj_gridlist.c
trunk/toolkits/basemap/src/pj_init.c
trunk/toolkits/basemap/src/pj_latlong.c
trunk/toolkits/basemap/src/pj_list.h
trunk/toolkits/basemap/src/pj_open_lib.c
trunk/toolkits/basemap/src/pj_release.c
trunk/toolkits/basemap/src/pj_transform.c
trunk/toolkits/basemap/src/pj_utils.c
trunk/toolkits/basemap/src/proj_api.h
trunk/toolkits/basemap/src/projects.h
trunk/toolkits/basemap/src/rtodms.c
Modified: trunk/toolkits/basemap/src/PJ_laea.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_laea.c 2007-12-28 20:04:31 UTC (rev 4795)
+++ trunk/toolkits/basemap/src/PJ_laea.c 2007-12-28 20:18:46 UTC (rev 4796)
@@ -179,8 +179,14 @@
0. : atan2(xy.x, xy.y);
return (lp);
}
-FREEUP; if (P) pj_dalloc(P); }
-ENTRY0(laea)
+FREEUP;
+ if (P) {
+ if (P->apa)
+ pj_dalloc(P->apa);
+ pj_dalloc(P);
+ }
+}
+ENTRY1(laea,apa)
double t;
if (fabs((t = fabs(P->phi0)) - HALFPI) < EPS10)
Modified: trunk/toolkits/basemap/src/PJ_wag3.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_wag3.c 2007-12-28 20:04:31 UTC (rev 4795)
+++ trunk/toolkits/basemap/src/PJ_wag3.c 2007-12-28 20:18:46 UTC (rev 4796)
@@ -5,7 +5,7 @@
double C_x;
#define PJ_LIB__
# include <projects.h>
-PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl., Sph.";
+PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl., Sph.\n\tlat_ts=";
#define TWOTHIRD 0.6666666666666666666667
FORWARD(s_forward); /* spheroid */
xy.x = P->C_x * lp.lam * cos(TWOTHIRD * lp.phi);
Modified: trunk/toolkits/basemap/src/_geod.c
===================================================================
--- trunk/toolkits/basemap/src/_geod.c 2007-12-28 20:04:31 UTC (rev 4795)
+++ trunk/toolkits/basemap/src/_geod.c 2007-12-28 20:18:46 UTC (rev 4796)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.9.6.8 on Wed Nov 14 11:06:42 2007 */
+/* Generated by Cython 0.9.6.9 on Fri Dec 28 13:16:13 2007 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
@@ -15,6 +15,9 @@
#define PyNumber_Index(o) PyNumber_Int(o)
#define PyIndex_Check(o) PyNumber_Check(o)
#endif
+#if PY_VERSION_HEX < 0x02040000
+ #define METH_COEXIST 0
+#endif
#ifndef WIN32
#define __stdcall
#define __cdecl
@@ -83,8 +86,6 @@
static char *__pyx_filename;
static char **__pyx_f;
-static char __pyx_mdoc[] = "\ncopyright (c) 2007 by Jeffrey Whitaker.\n\nPermission to use, copy, modify, and distribute this software and its\ndocumentation for any purpose and without fee is hereby granted,\nprovided that the above copyright notices appear in all copies and that\nboth the copyright notices and this permission notice appear in\nsupporting documentation.\nTHE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\nINCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO\nEVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR\nCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF\nUSE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n";
-
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
@@ -108,6 +109,14 @@
/* Declarations from _geod */
+/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":5
+ * include "_pyproj.pxi"
+ *
+ * cdef class Geod: # <<<<<<<<<<<<<<
+ * cdef GEODESIC_T geodesic_t
+ * cdef public object geodparams
+ */
+
struct __pyx_obj_5_geod_Geod {
PyObject_HEAD
GEODESIC_T geodesic_t;
@@ -117,6 +126,14 @@
};
+/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":5
+ * include "_pyproj.pxi"
+ *
+ * cdef class Geod: # <<<<<<<<<<<<<<
+ * cdef GEODESIC_T geodesic_t
+ * cdef public object geodparams
+ */
+
static PyTypeObject *__pyx_ptype_5_geod_Geod = 0;
static PyObject *__pyx_k3;
static PyObject *__pyx_k4;
@@ -142,6 +159,14 @@
static PyObject *__pyx_k2p;
+/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":11
+ * cdef char *geodinitstring
+ *
+ * def __new__(self, geodparams): # <<<<<<<<<<<<<<
+ * cdef GEODESIC_T GEOD_T
+ * self.geodparams = geodparams
+ */
+
static PyObject *__pyx_n_iteritems;
static PyObject *__pyx_n_append;
static PyObject *__pyx_n_join;
@@ -182,7 +207,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-testing/src/_geod.pyx":29
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":13
* def __new__(self, geodparams):
* cdef GEODESIC_T GEOD_T
* self.geodparams = geodparams # <<<<<<<<<<<<<<
@@ -193,32 +218,40 @@
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-testing/src/_geod.pyx":31
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":15
* self.geodparams = geodparams
* # setup proj initialization string.
* geodargs = [] # <<<<<<<<<<<<<<
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ')
*/
- __pyx_1 = PyList_New(0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; goto __pyx_L1;}
+ __pyx_1 = PyList_New(0); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; goto __pyx_L1;}
Py_DECREF(__pyx_v_geodargs);
__pyx_v_geodargs = __pyx_1;
__pyx_1 = 0;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":32
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
* # setup proj initialization string.
* geodargs = []
* for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
* geodargs.append('+'+key+"="+str(value)+' ')
* self.geodinitstring = PyString_AsString(''.join(geodargs))
*/
- __pyx_1 = PyObject_GetAttr(__pyx_v_geodparams, __pyx_n_iteritems); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;}
- __pyx_3 = PyObject_CallObject(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;}
+ __pyx_1 = PyObject_GetAttr(__pyx_v_geodparams, __pyx_n_iteritems); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;}
+ __pyx_3 = PyObject_CallObject(__pyx_1, 0); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; 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 = 32; goto __pyx_L1;} }
+ else { __pyx_1 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;} }
Py_DECREF(__pyx_3); __pyx_3 = 0;
for (;;) {
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ * # setup proj initialization string.
+ * geodargs = []
+ * for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
+ * geodargs.append('+'+key+"="+str(value)+' ')
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ */
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); }
else {
__pyx_3 = PyIter_Next(__pyx_1);
@@ -229,72 +262,160 @@
if (PyTuple_CheckExact(__pyx_3) && PyTuple_GET_SIZE(__pyx_3) == 2) {
__pyx_5 = PyTuple_GET_ITEM(__pyx_3, 0);
Py_INCREF(__pyx_5);
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ * # setup proj initialization string.
+ * geodargs = []
+ * for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
+ * geodargs.append('+'+key+"="+str(value)+' ')
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ */
Py_DECREF(__pyx_v_key);
__pyx_v_key = __pyx_5;
__pyx_5 = 0;
__pyx_5 = PyTuple_GET_ITEM(__pyx_3, 1);
Py_INCREF(__pyx_5);
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ * # setup proj initialization string.
+ * geodargs = []
+ * for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
+ * geodargs.append('+'+key+"="+str(value)+' ')
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ */
Py_DECREF(__pyx_v_value);
__pyx_v_value = __pyx_5;
__pyx_5 = 0;
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 = 32; goto __pyx_L1;}
+ __pyx_4 = PyObject_GetIter(__pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; 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 = 32; goto __pyx_L1;}
+ __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ * # setup proj initialization string.
+ * geodargs = []
+ * for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
+ * geodargs.append('+'+key+"="+str(value)+' ')
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ */
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 = 32; goto __pyx_L1;}
+ __pyx_5 = __Pyx_UnpackItem(__pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":16
+ * # setup proj initialization string.
+ * geodargs = []
+ * for key,value in geodparams.iteritems(): # <<<<<<<<<<<<<<
+ * geodargs.append('+'+key+"="+str(value)+' ')
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ */
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 = 32; goto __pyx_L1;}
+ if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
}
- __pyx_5 = PyObject_GetAttr(__pyx_v_geodargs, __pyx_n_append); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;}
- __pyx_3 = PyNumber_Add(__pyx_k6p, __pyx_v_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;}
- __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k7p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ * geodargs = []
+ * for key,value in geodparams.iteritems():
+ * geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ * # initialize projection
+ */
+ __pyx_5 = PyObject_GetAttr(__pyx_v_geodargs, __pyx_n_append); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ * geodargs = []
+ * for key,value in geodparams.iteritems():
+ * geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ * # initialize projection
+ */
+ __pyx_3 = PyNumber_Add(__pyx_k6p, __pyx_v_key); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ * geodargs = []
+ * for key,value in geodparams.iteritems():
+ * geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ * # initialize projection
+ */
+ __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k7p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; 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 = 33; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ * geodargs = []
+ * for key,value in geodparams.iteritems():
+ * geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ * # initialize projection
+ */
+ __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; 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 = 33; goto __pyx_L1;}
+ __pyx_6 = PyObject_CallObject(((PyObject*)&PyString_Type), __pyx_3); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; 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 = 33; goto __pyx_L1;}
+ __pyx_3 = PyNumber_Add(__pyx_4, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
Py_DECREF(__pyx_6); __pyx_6 = 0;
- __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k8p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":17
+ * geodargs = []
+ * for key,value in geodparams.iteritems():
+ * geodargs.append('+'+key+"="+str(value)+' ') # <<<<<<<<<<<<<<
+ * self.geodinitstring = PyString_AsString(''.join(geodargs))
+ * # initialize projection
+ */
+ __pyx_4 = PyNumber_Add(__pyx_3, __pyx_k8p); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; 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 = 33; goto __pyx_L1;}
+ __pyx_6 = PyTuple_New(1); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; 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 = 33; goto __pyx_L1;}
+ __pyx_3 = PyObject_CallObject(__pyx_5, __pyx_6); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; 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-testing/src/_geod.pyx":34
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":18
* for key,value in geodparams.iteritems():
* geodargs.append('+'+key+"="+str(value)+' ')
* self.geodinitstring = PyString_AsString(''.join(geodargs)) # <<<<<<<<<<<<<<
* # initialize projection
* self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0]
*/
- __pyx_4 = PyObject_GetAttr(__pyx_k9p, __pyx_n_join); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;}
- __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;}
+ __pyx_4 = PyObject_GetAttr(__pyx_k9p, __pyx_n_join); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":18
+ * for key,value in geodparams.iteritems():
+ * geodargs.append('+'+key+"="+str(value)+' ')
+ * self.geodinitstring = PyString_AsString(''.join(geodargs)) # <<<<<<<<<<<<<<
+ * # initialize projection
+ * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0]
+ */
+ __pyx_5 = PyTuple_New(1); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; goto __pyx_L1;}
Py_INCREF(__pyx_v_geodargs);
PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_geodargs);
- __pyx_6 = PyObject_CallObject(__pyx_4, __pyx_5); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;}
+ __pyx_6 = PyObject_CallObject(__pyx_4, __pyx_5); if (unlikely(!__pyx_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
Py_DECREF(__pyx_5); __pyx_5 = 0;
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":18
+ * for key,value in geodparams.iteritems():
+ * geodargs.append('+'+key+"="+str(value)+' ')
+ * self.geodinitstring = PyString_AsString(''.join(geodargs)) # <<<<<<<<<<<<<<
+ * # initialize projection
+ * self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0]
+ */
((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-testing/src/_geod.pyx":36
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":20
* self.geodinitstring = PyString_AsString(''.join(geodargs))
* # initialize projection
* self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0] # <<<<<<<<<<<<<<
@@ -303,7 +424,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-testing/src/_geod.pyx":37
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":21
* # initialize projection
* self.geodesic_t = GEOD_init_plus(self.geodinitstring, &GEOD_T)[0]
* if pj_errno != 0: # <<<<<<<<<<<<<<
@@ -312,27 +433,43 @@
*/
__pyx_7 = (pj_errno != 0);
if (__pyx_7) {
- __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;}
- __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/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)) # <<<<<<<<<<<<<<
+ * 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 = 22; goto __pyx_L1;}
+ __pyx_1 = PyTuple_New(1); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; 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 = 38; goto __pyx_L1;}
+ __pyx_4 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; 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 = 38; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":39
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":23
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<<
*
* def __reduce__(self):
*/
- __pyx_5 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; goto __pyx_L1;}
+ __pyx_5 = PyFloat_FromDouble((PJ_VERSION / 100.)); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":23
+ * if pj_errno != 0:
+ * raise RuntimeError(pj_strerrno(pj_errno))
+ * self.proj_version = PJ_VERSION/100. # <<<<<<<<<<<<<<
+ *
+ * def __reduce__(self):
+ */
Py_DECREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version);
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->proj_version = __pyx_5;
__pyx_5 = 0;
@@ -356,6 +493,14 @@
return __pyx_r;
}
+/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":25
+ * self.proj_version = PJ_VERSION/100.
+ *
+ * def __reduce__(self): # <<<<<<<<<<<<<<
+ * """special method that allows pyproj.Geod instance to be pickled"""
+ * return (self.__class__,(self.geodparams,))
+ */
+
static PyObject *__pyx_n___class__;
static PyObject *__pyx_pf_5_geod_4Geod___reduce__(PyObject *__pyx_v_self, PyObject *unused); /*proto*/
@@ -366,11 +511,27 @@
PyObject *__pyx_2 = 0;
PyObject *__pyx_3 = 0;
Py_INCREF(__pyx_v_self);
- __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n___class__); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; goto __pyx_L1;}
- __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":27
+ * def __reduce__(self):
+ * """special method that allows pyproj.Geod instance to be pickled"""
+ * return (self.__class__,(self.geodparams,)) # <<<<<<<<<<<<<<
+ *
+ * def _fwd(self, object lons, object lats, object az, object dist, radians=False):
+ */
+ __pyx_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n___class__); if (unlikely(!__pyx_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":27
+ * def __reduce__(self):
+ * """special method that allows pyproj.Geod instance to be pickled"""
+ * return (self.__class__,(self.geodparams,)) # <<<<<<<<<<<<<<
+ *
+ * def _fwd(self, object lons, object lats, object az, object dist, radians=False):
+ */
+ __pyx_2 = PyTuple_New(1); if (unlikely(!__pyx_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;}
Py_INCREF(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodparams);
PyTuple_SET_ITEM(__pyx_2, 0, ((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodparams);
- __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; goto __pyx_L1;}
+ __pyx_3 = PyTuple_New(2); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;}
PyTuple_SET_ITEM(__pyx_3, 0, __pyx_1);
PyTuple_SET_ITEM(__pyx_3, 1, __pyx_2);
__pyx_1 = 0;
@@ -392,6 +553,14 @@
return __pyx_r;
}
+/* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":29
+ * return (self.__class__,(self.geodparams,))
+ *
+ * def _fwd(self, object lons, object lats, object az, object dist, radians=False): # <<<<<<<<<<<<<<
+ * """
+ * forward transformation - determine longitude, latitude and back azimuth
+ */
+
static PyObject *__pyx_n_ValueError;
static PyObject *__pyx_k10p;
@@ -443,7 +612,7 @@
Py_INCREF(__pyx_v_dist);
Py_INCREF(__pyx_v_radians);
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":56
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/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: # <<<<<<<<<<<<<<
@@ -452,13 +621,21 @@
*/
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lons,(&__pyx_v_londata),(&__pyx_v_buflenlons)) != 0);
if (__pyx_1) {
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":41
+ * # if buffer api is supported, get pointer to data buffers.
+ * if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0:
+ * raise RuntimeError # <<<<<<<<<<<<<<
+ * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0:
+ * raise RuntimeError
+ */
__Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;}
goto __pyx_L2;
}
__pyx_L2:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":58
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":42
* if PyObject_AsWriteBuffer(lons, &londata, &buflenlons) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0: # <<<<<<<<<<<<<<
@@ -467,13 +644,21 @@
*/
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_lats,(&__pyx_v_latdata),(&__pyx_v_buflenlats)) != 0);
if (__pyx_1) {
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":43
+ * raise RuntimeError
+ * if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0:
+ * raise RuntimeError # <<<<<<<<<<<<<<
+ * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0:
+ * raise RuntimeError
+ */
__Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; goto __pyx_L1;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":60
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":44
* if PyObject_AsWriteBuffer(lats, &latdata, &buflenlats) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0: # <<<<<<<<<<<<<<
@@ -482,13 +667,21 @@
*/
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_az,(&__pyx_v_azdat),(&__pyx_v_buflenaz)) != 0);
if (__pyx_1) {
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":45
+ * raise RuntimeError
+ * if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0:
+ * raise RuntimeError # <<<<<<<<<<<<<<
+ * if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0:
+ * raise RuntimeError
+ */
__Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; goto __pyx_L1;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":62
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":46
* if PyObject_AsWriteBuffer(az, &azdat, &buflenaz) <> 0:
* raise RuntimeError
* if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0: # <<<<<<<<<<<<<<
@@ -497,13 +690,21 @@
*/
__pyx_1 = (PyObject_AsWriteBuffer(__pyx_v_dist,(&__pyx_v_distdat),(&__pyx_v_buflend)) != 0);
if (__pyx_1) {
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":47
+ * raise RuntimeError
+ * if PyObject_AsWriteBuffer(dist, &distdat, &buflend) <> 0:
+ * raise RuntimeError # <<<<<<<<<<<<<<
+ * # process data in buffer
+ * if not buflenlons == buflenlats == buflenaz == buflend:
+ */
__Pyx_Raise(__pyx_builtin_RuntimeError, 0, 0);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; goto __pyx_L1;}
goto __pyx_L5;
}
__pyx_L5:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":65
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":49
* raise RuntimeError
* # process data in buffer
* if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
@@ -512,42 +713,74 @@
*/
__pyx_1 = (__pyx_v_buflenlons == __pyx_v_buflenlats);
if (__pyx_1) {
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":49
+ * raise RuntimeError
+ * # process data in buffer
+ * if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
+ * raise RuntimeError("Buffer lengths not the same")
+ * ndim = buflenlons/_doublesize
+ */
__pyx_1 = (__pyx_v_buflenlats == __pyx_v_buflenaz);
if (__pyx_1) {
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":49
+ * raise RuntimeError
+ * # process data in buffer
+ * if not buflenlons == buflenlats == buflenaz == buflend: # <<<<<<<<<<<<<<
+ * raise RuntimeError("Buffer lengths not the same")
+ * ndim = buflenlons/_doublesize
+ */
__pyx_1 = (__pyx_v_buflenaz == __pyx_v_buflend);
}
}
__pyx_2 = (!__pyx_1);
if (__pyx_2) {
- __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":50
+ * # process data in buffer
+ * if not buflenlons == buflenlats == buflenaz == buflend:
+ * raise RuntimeError("Buffer lengths not the same") # <<<<<<<<<<<<<<
+ * ndim = buflenlons/_doublesize
+ * lonsdata = <double *>londata
+ */
+ __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; goto __pyx_L1;}
Py_INCREF(__pyx_k10p);
PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k10p);
- __pyx_4 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; goto __pyx_L1;}
+ __pyx_4 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; goto __pyx_L1;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__Pyx_Raise(__pyx_4, 0, 0);
Py_DECREF(__pyx_4); __pyx_4 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; goto __pyx_L1;}
goto __pyx_L6;
}
__pyx_L6:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":67
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":51
* if not buflenlons == buflenlats == buflenaz == buflend:
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize # <<<<<<<<<<<<<<
* lonsdata = <double *>londata
* latsdata = <double *>latdata
*/
- __pyx_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; goto __pyx_L1;}
- __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__doublesize); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; goto __pyx_L1;}
- __pyx_5 = PyNumber_Divide(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; goto __pyx_L1;}
+ __pyx_3 = PyInt_FromSsize_t(__pyx_v_buflenlons); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":51
+ * if not buflenlons == buflenlats == buflenaz == buflend:
+ * raise RuntimeError("Buffer lengths not the same")
+ * ndim = buflenlons/_doublesize # <<<<<<<<<<<<<<
+ * lonsdata = <double *>londata
+ * latsdata = <double *>latdata
+ */
+ __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n__doublesize); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; goto __pyx_L1;}
+ __pyx_5 = PyNumber_Divide(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; goto __pyx_L1;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
Py_DECREF(__pyx_4); __pyx_4 = 0;
- __pyx_6 = __pyx_PyIndex_AsSsize_t(__pyx_5); if (unlikely((__pyx_6 == -1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; goto __pyx_L1;}
+ __pyx_6 = __pyx_PyIndex_AsSsize_t(__pyx_5); if (unlikely((__pyx_6 == -1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
__pyx_v_ndim = __pyx_6;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":68
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":52
* raise RuntimeError("Buffer lengths not the same")
* ndim = buflenlons/_doublesize
* lonsdata = <double *>londata # <<<<<<<<<<<<<<
@@ -556,7 +789,7 @@
*/
__pyx_v_lonsdata = ((double *)__pyx_v_londata);
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":69
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":53
* ndim = buflenlons/_doublesize
* lonsdata = <double *>londata
* latsdata = <double *>latdata # <<<<<<<<<<<<<<
@@ -565,7 +798,7 @@
*/
__pyx_v_latsdata = ((double *)__pyx_v_latdata);
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":70
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":54
* lonsdata = <double *>londata
* latsdata = <double *>latdata
* azdata = <double *>azdat # <<<<<<<<<<<<<<
@@ -574,7 +807,7 @@
*/
__pyx_v_azdata = ((double *)__pyx_v_azdat);
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":71
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":55
* latsdata = <double *>latdata
* azdata = <double *>azdat
* distdata = <double *>distdat # <<<<<<<<<<<<<<
@@ -583,7 +816,7 @@
*/
__pyx_v_distdata = ((double *)__pyx_v_distdat);
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":72
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":56
* azdata = <double *>azdat
* distdata = <double *>distdat
* for i from 0 <= i < ndim: # <<<<<<<<<<<<<<
@@ -592,17 +825,17 @@
*/
for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_ndim; __pyx_v_i++) {
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":73
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":57
* distdata = <double *>distdat
* for i from 0 <= i < ndim:
* if radians: # <<<<<<<<<<<<<<
* self.geodesic_t.p1.v = lonsdata[i]
* self.geodesic_t.p1.u = latsdata[i]
*/
- __pyx_1 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; goto __pyx_L1;}
+ __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-testing/src/_geod.pyx":74
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":58
* for i from 0 <= i < ndim:
* if radians:
* self.geodesic_t.p1.v = lonsdata[i] # <<<<<<<<<<<<<<
@@ -611,7 +844,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-testing/src/_geod.pyx":75
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":59
* if radians:
* self.geodesic_t.p1.v = lonsdata[i]
* self.geodesic_t.p1.u = latsdata[i] # <<<<<<<<<<<<<<
@@ -620,7 +853,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-testing/src/_geod.pyx":76
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":60
* self.geodesic_t.p1.v = lonsdata[i]
* self.geodesic_t.p1.u = latsdata[i]
* self.geodesic_t.ALPHA12 = azdata[i] # <<<<<<<<<<<<<<
@@ -629,7 +862,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-testing/src/_geod.pyx":77
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":61
* self.geodesic_t.p1.u = latsdata[i]
* self.geodesic_t.ALPHA12 = azdata[i]
* self.geodesic_t.DIST = distdata[i] # <<<<<<<<<<<<<<
@@ -641,55 +874,103 @@
}
/*else*/ {
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":79
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":63
* self.geodesic_t.DIST = distdata[i]
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
* self.geodesic_t.p1.u = _dg2rad*latsdata[i]
* self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
*/
- __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; goto __pyx_L1;}
- __pyx_4 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; goto __pyx_L1;}
- __pyx_5 = PyNumber_Multiply(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; goto __pyx_L1;}
+ __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":63
+ * self.geodesic_t.DIST = distdata[i]
+ * else:
+ * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
+ * self.geodesic_t.p1.u = _dg2rad*latsdata[i]
+ * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
+ */
+ __pyx_4 = PyFloat_FromDouble((__pyx_v_lonsdata[__pyx_v_i])); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+ __pyx_5 = PyNumber_Multiply(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
Py_DECREF(__pyx_4); __pyx_4 = 0;
- __pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; goto __pyx_L1;}
+ __pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":63
+ * self.geodesic_t.DIST = distdata[i]
+ * else:
+ * self.geodesic_t.p1.v = _dg2rad*lonsdata[i] # <<<<<<<<<<<<<<
+ * self.geodesic_t.p1.u = _dg2rad*latsdata[i]
+ * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
+ */
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.v = __pyx_7;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":80
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":64
* else:
* self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
* self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
* self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
* self.geodesic_t.DIST = distdata[i]
*/
- __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
- __pyx_4 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
- __pyx_5 = PyNumber_Multiply(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
+ __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":64
+ * else:
+ * self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
+ * self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
+ * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
+ * self.geodesic_t.DIST = distdata[i]
+ */
+ __pyx_4 = PyFloat_FromDouble((__pyx_v_latsdata[__pyx_v_i])); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
+ __pyx_5 = PyNumber_Multiply(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
Py_DECREF(__pyx_4); __pyx_4 = 0;
- __pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
+ __pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":64
+ * else:
+ * self.geodesic_t.p1.v = _dg2rad*lonsdata[i]
+ * self.geodesic_t.p1.u = _dg2rad*latsdata[i] # <<<<<<<<<<<<<<
+ * self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
+ * self.geodesic_t.DIST = distdata[i]
+ */
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p1.u = __pyx_7;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":81
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/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] # <<<<<<<<<<<<<<
* self.geodesic_t.DIST = distdata[i]
* geod_pre(&self.geodesic_t)
*/
- __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
- __pyx_4 = PyFloat_FromDouble((__pyx_v_azdata[__pyx_v_i])); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
- __pyx_5 = PyNumber_Multiply(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
+ __pyx_3 = __Pyx_GetName(__pyx_m, __pyx_n__dg2rad); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/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] # <<<<<<<<<<<<<<
+ * self.geodesic_t.DIST = distdata[i]
+ * geod_pre(&self.geodesic_t)
+ */
+ __pyx_4 = PyFloat_FromDouble((__pyx_v_azdata[__pyx_v_i])); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
+ __pyx_5 = PyNumber_Multiply(__pyx_3, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
Py_DECREF(__pyx_4); __pyx_4 = 0;
- __pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
+ __pyx_7 = PyFloat_AsDouble(__pyx_5); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/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] # <<<<<<<<<<<<<<
+ * self.geodesic_t.DIST = distdata[i]
+ * geod_pre(&self.geodesic_t)
+ */
((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA12 = __pyx_7;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":82
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/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] # <<<<<<<<<<<<<<
@@ -700,7 +981,7 @@
}
__pyx_L9:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":83
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":67
* self.geodesic_t.ALPHA12 = _dg2rad*azdata[i]
* self.geodesic_t.DIST = distdata[i]
* geod_pre(&self.geodesic_t) # <<<<<<<<<<<<<<
@@ -709,7 +990,7 @@
*/
geod_pre((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t));
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":84
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":68
* self.geodesic_t.DIST = distdata[i]
* geod_pre(&self.geodesic_t)
* if pj_errno != 0: # <<<<<<<<<<<<<<
@@ -718,20 +999,28 @@
*/
__pyx_2 = (pj_errno != 0);
if (__pyx_2) {
- __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; goto __pyx_L1;}
- __pyx_4 = PyTuple_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":69
+ * geod_pre(&self.geodesic_t)
+ * if pj_errno != 0:
+ * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<<
+ * geod_for(&self.geodesic_t)
+ * if pj_errno != 0:
+ */
+ __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;}
+ __pyx_4 = PyTuple_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;}
PyTuple_SET_ITEM(__pyx_4, 0, __pyx_3);
__pyx_3 = 0;
- __pyx_5 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; goto __pyx_L1;}
+ __pyx_5 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
__Pyx_Raise(__pyx_5, 0, 0);
Py_DECREF(__pyx_5); __pyx_5 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;}
goto __pyx_L10;
}
__pyx_L10:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":86
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":70
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* geod_for(&self.geodesic_t) # <<<<<<<<<<<<<<
@@ -740,7 +1029,7 @@
*/
geod_for((&((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t));
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":87
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":71
* raise RuntimeError(pj_strerrno(pj_errno))
* geod_for(&self.geodesic_t)
* if pj_errno != 0: # <<<<<<<<<<<<<<
@@ -749,20 +1038,28 @@
*/
__pyx_1 = (pj_errno != 0);
if (__pyx_1) {
- __pyx_3 = PyString_FromString(pj_strerrno(pj_errno)); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; goto __pyx_L1;}
- __pyx_4 = PyTuple_New(1); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":72
+ * geod_for(&self.geodesic_t)
+ * if pj_errno != 0:
+ * raise RuntimeError(pj_strerrno(pj_errno)) # <<<<<<<<<<<<<<
+ * if isnan(self.geodesic_t.ALPHA21):
+ * raise ValueError('undefined forward geodesic (may be an equatorial arc)')
+ */
+ __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;}
PyTuple_SET_ITEM(__pyx_4, 0, __pyx_3);
__pyx_3 = 0;
- __pyx_5 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; goto __pyx_L1;}
+ __pyx_5 = PyObject_CallObject(__pyx_builtin_RuntimeError, __pyx_4); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
__Pyx_Raise(__pyx_5, 0, 0);
Py_DECREF(__pyx_5); __pyx_5 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; goto __pyx_L1;}
goto __pyx_L11;
}
__pyx_L11:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":89
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":73
* if pj_errno != 0:
* raise RuntimeError(pj_strerrno(pj_errno))
* if isnan(self.geodesic_t.ALPHA21): # <<<<<<<<<<<<<<
@@ -771,29 +1068,37 @@
*/
__pyx_8 = isnan(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.ALPHA21);
if (__pyx_8) {
- __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/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)') # <<<<<<<<<<<<<<
+ * if radians:
+ * lonsdata[i] = self.geodesic_t.p2.v
+ */
+ __pyx_3 = PyTuple_New(1); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; goto __pyx_L1;}
Py_INCREF(__pyx_k11p);
PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k11p);
- __pyx_4 = PyObject_CallObject(__pyx_builtin_ValueError, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; goto __pyx_L1;}
+ __pyx_4 = PyObject_CallObject(__pyx_builtin_ValueError, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; goto __pyx_L1;}
Py_DECREF(__pyx_3); __pyx_3 = 0;
__Pyx_Raise(__pyx_4, 0, 0);
Py_DECREF(__pyx_4); __pyx_4 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; goto __pyx_L1;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; goto __pyx_L1;}
goto __pyx_L12;
}
__pyx_L12:;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":91
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":75
* if isnan(self.geodesic_t.ALPHA21):
* raise ValueError('undefined forward geodesic (may be an equatorial arc)')
* if radians: # <<<<<<<<<<<<<<
* lonsdata[i] = self.geodesic_t.p2.v
* latsdata[i] = self.geodesic_t.p2.u
*/
- __pyx_2 = __Pyx_PyObject_IsTrue(__pyx_v_radians); if (unlikely(__pyx_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; goto __pyx_L1;}
+ __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-testing/src/_geod.pyx":92
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":76
* raise ValueError('undefined forward geodesic (may be an equatorial arc)')
* if radians:
* lonsdata[i] = self.geodesic_t.p2.v # <<<<<<<<<<<<<<
@@ -802,7 +1107,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-testing/src/_geod.pyx":93
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":77
* if radians:
* lonsdata[i] = self.geodesic_t.p2.v
* latsdata[i] = self.geodesic_t.p2.u # <<<<<<<<<<<<<<
@@ -811,7 +1116,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-testing/src/_geod.pyx":94
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":78
* lonsdata[i] = self.geodesic_t.p2.v
* latsdata[i] = self.geodesic_t.p2.u
* azdata[i] = self.geodesic_t.ALPHA21 # <<<<<<<<<<<<<<
@@ -823,52 +1128,100 @@
}
/*else*/ {
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":96
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":80
* azdata[i] = self.geodesic_t.ALPHA21
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<<
* latsdata[i] = _rad2dg*self.geodesic_t.p2.u
* azdata[i] = _rad2dg*self.geodesic_t.ALPHA21
*/
- __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; goto __pyx_L1;}
- __pyx_3 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; goto __pyx_L1;}
- __pyx_4 = PyNumber_Multiply(__pyx_5, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; goto __pyx_L1;}
+ __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":80
+ * azdata[i] = self.geodesic_t.ALPHA21
+ * else:
+ * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<<
+ * latsdata[i] = _rad2dg*self.geodesic_t.p2.u
+ * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21
+ */
+ __pyx_3 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.v); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
+ __pyx_4 = PyNumber_Multiply(__pyx_5, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
Py_DECREF(__pyx_5); __pyx_5 = 0;
Py_DECREF(__pyx_3); __pyx_3 = 0;
- __pyx_7 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; goto __pyx_L1;}
+ __pyx_7 = PyFloat_AsDouble(__pyx_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;}
Py_DECREF(__pyx_4); __pyx_4 = 0;
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":80
+ * azdata[i] = self.geodesic_t.ALPHA21
+ * else:
+ * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v # <<<<<<<<<<<<<<
+ * latsdata[i] = _rad2dg*self.geodesic_t.p2.u
+ * azdata[i] = _rad2dg*self.geodesic_t.ALPHA21
+ */
(__pyx_v_lonsdata[__pyx_v_i]) = __pyx_7;
- /* "/Users/jsw/python/matplotlib/toolkits/basemap-testing/src/_geod.pyx":97
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":81
* else:
* lonsdata[i] = _rad2dg*self.geodesic_t.p2.v
* latsdata[i] = _rad2dg*self.geodesic_t.p2.u # <<<<<<<<<<<<<<
* azdata[i] = _rad2dg*self.geodesic_t.ALPHA21
*
*/
- __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; goto __pyx_L1;}
- __pyx_3 = PyFloat_FromDouble(((struct __pyx_obj_5_geod_Geod *)__pyx_v_self)->geodesic_t.p2.u); if (unlikely(!__pyx_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; goto __pyx_L1;}
- __pyx_4 = PyNumber_Multiply(__pyx_5, __pyx_3); if (unlikely(!__pyx_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; goto __pyx_L1;}
+ __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n__rad2dg); if (unlikely(!__pyx_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
+
+ /* "/Users/jsw/python/matplotlib/trunk/toolkits/basemap/src/_geod.pyx":81
+ * else:
+ * lonsdata[i] = _rad2dg*self.geodesic_t.p2.v
+ * latsdata[i] = _rad2dg*self.geodesic_t.p2.u # <<<<<<<<<<<<<<
+ * azdata[i] = _rad2dg*self.ge...
[truncated message content] |
|
From: <js...@us...> - 2007-12-28 20:04:38
|
Revision: 4795
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4795&view=rev
Author: jswhit
Date: 2007-12-28 12:04:31 -0800 (Fri, 28 Dec 2007)
Log Message:
-----------
revert the update to proj 4.6.0
Modified Paths:
--------------
trunk/toolkits/basemap/src/PJ_gn_sinu.c
trunk/toolkits/basemap/src/PJ_krovak.c
trunk/toolkits/basemap/src/PJ_laea.c
trunk/toolkits/basemap/src/PJ_wag3.c
trunk/toolkits/basemap/src/emess.c
trunk/toolkits/basemap/src/geocent.c
trunk/toolkits/basemap/src/geocent.h
trunk/toolkits/basemap/src/geod.c
trunk/toolkits/basemap/src/nad_init.c
trunk/toolkits/basemap/src/pj_datum_set.c
trunk/toolkits/basemap/src/pj_factors.c
trunk/toolkits/basemap/src/pj_gridinfo.c
trunk/toolkits/basemap/src/pj_gridlist.c
trunk/toolkits/basemap/src/pj_init.c
trunk/toolkits/basemap/src/pj_latlong.c
trunk/toolkits/basemap/src/pj_list.h
trunk/toolkits/basemap/src/pj_open_lib.c
trunk/toolkits/basemap/src/pj_release.c
trunk/toolkits/basemap/src/pj_transform.c
trunk/toolkits/basemap/src/pj_utils.c
trunk/toolkits/basemap/src/proj_api.h
trunk/toolkits/basemap/src/projects.h
trunk/toolkits/basemap/src/rtodms.c
Modified: trunk/toolkits/basemap/src/PJ_gn_sinu.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_gn_sinu.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/PJ_gn_sinu.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -75,6 +75,7 @@
if (!(P->en = pj_enfn(P->es)))
E_ERROR_0;
if (P->es) {
+ P->en = pj_enfn(P->es);
P->inv = e_inverse;
P->fwd = e_forward;
} else {
Modified: trunk/toolkits/basemap/src/PJ_krovak.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_krovak.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/PJ_krovak.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: PJ_krovak.c,v 1.9 2007/03/07 17:32:32 fwarmerdam Exp $
+ * $Id: PJ_krovak.c,v 1.6 2006/09/14 13:10:50 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Implementation of the krovak (Krovak) projection.
@@ -30,15 +30,6 @@
******************************************************************************
*
* $Log: PJ_krovak.c,v $
- * Revision 1.9 2007/03/07 17:32:32 fwarmerdam
- * remove orphan semicolon.
- *
- * Revision 1.8 2007/03/07 17:28:08 fwarmerdam
- * Make it reasonably clear that this is ellipsoidal in the code.
- *
- * Revision 1.7 2007/03/07 17:25:34 fwarmerdam
- * report krovak as ellipsoidal, not spherical
- *
* Revision 1.6 2006/09/14 13:10:50 fwarmerdam
* Add +czech flag to control reversal of signs (bug 1133,147)
*
@@ -64,9 +55,9 @@
#include <string.h>
#include <stdio.h>
-PJ_CVSID("$Id: PJ_krovak.c,v 1.9 2007/03/07 17:32:32 fwarmerdam Exp $");
+PJ_CVSID("$Id: PJ_krovak.c,v 1.6 2006/09/14 13:10:50 fwarmerdam Exp $");
-PROJ_HEAD(krovak, "Krovak") "\n\tPCyl., Ellps.";
+PROJ_HEAD(krovak, "Krovak") "\n\tPCyl., Sph.";
/**
NOTES: According to EPSG the full Krovak projection method should have
@@ -93,7 +84,7 @@
-FORWARD(e_forward); /* ellipsoid */
+FORWARD(s_forward); /* spheroid */
/* calculate xy from lat/lon */
char errmess[255];
@@ -162,7 +153,7 @@
-INVERSE(e_inverse); /* ellipsoid */
+INVERSE(s_inverse); /* spheroid */
/* calculate lat/lon from xy */
/* Constants, identisch wie in der Umkehrfunktion */
@@ -267,14 +258,15 @@
/* as input and output, instead of lat/long relative to Ferro */
if (!pj_param(P->params, "tlon_0").i)
P->lam0 = 0.7417649320975901 - 0.308341501185665;
+;
/* if scale not set default to 0.9999 */
if (!pj_param(P->params, "tk").i)
P->k0 = 0.9999;
/* always the same */
- P->inv = e_inverse;
- P->fwd = e_forward;
+ P->inv = s_inverse;
+ P->fwd = s_forward;
ENDENTRY(P)
Modified: trunk/toolkits/basemap/src/PJ_laea.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_laea.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/PJ_laea.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -179,14 +179,8 @@
0. : atan2(xy.x, xy.y);
return (lp);
}
-FREEUP;
- if (P) {
- if (P->apa)
- pj_dalloc(P->apa);
- pj_dalloc(P);
- }
-}
-ENTRY1(laea,apa)
+FREEUP; if (P) pj_dalloc(P); }
+ENTRY0(laea)
double t;
if (fabs((t = fabs(P->phi0)) - HALFPI) < EPS10)
Modified: trunk/toolkits/basemap/src/PJ_wag3.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_wag3.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/PJ_wag3.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -5,7 +5,7 @@
double C_x;
#define PJ_LIB__
# include <projects.h>
-PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl., Sph.\n\tlat_ts=";
+PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl., Sph.";
#define TWOTHIRD 0.6666666666666666666667
FORWARD(s_forward); /* spheroid */
xy.x = P->C_x * lp.lam * cos(TWOTHIRD * lp.phi);
Modified: trunk/toolkits/basemap/src/emess.c
===================================================================
--- trunk/toolkits/basemap/src/emess.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/emess.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -3,15 +3,6 @@
static const char SCCSID[]="@(#)emess.c 4.6 94/05/24 GIE REL";
#endif
-#ifdef _MSC_VER
-# ifndef _CRT_SECURE_NO_DEPRECATE
-# define _CRT_SECURE_NO_DEPRECATE
-# endif
-# ifndef _CRT_NONSTDC_NO_DEPRECATE
-# define _CRT_NONSTDC_NO_DEPRECATE
-# endif
-#endif
-
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
Modified: trunk/toolkits/basemap/src/geocent.c
===================================================================
--- trunk/toolkits/basemap/src/geocent.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/geocent.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -65,9 +65,6 @@
* 25-02-97 Original Code
*
* $Log: geocent.c,v $
- * Revision 1.7 2007/09/11 20:19:36 fwarmerdam
- * avoid use of static variables to make reentrant
- *
* Revision 1.6 2006/01/12 22:29:01 fwarmerdam
* make geocent.c globals static to avoid conflicts
*
@@ -112,11 +109,29 @@
/***************************************************************************/
/*
+ * GLOBAL DECLARATIONS
+ */
+/* Ellipsoid parameters, default to WGS 84 */
+static double Geocent_a = 6378137.0; /* Semi-major axis of ellipsoid in meters */
+static double Geocent_b = 6356752.3142; /* Semi-minor axis of ellipsoid */
+
+static double Geocent_a2 = 40680631590769.0; /* Square of semi-major axis */
+static double Geocent_b2 = 40408299984087.05; /* Square of semi-minor axis */
+static double Geocent_e2 = 0.0066943799901413800; /* Eccentricity squared */
+static double Geocent_ep2 = 0.00673949675658690300; /* 2nd eccentricity squared */
+/*
+ * These state variables are for optimization purposes. The only function
+ * that should modify them is Set_Geocentric_Parameters.
+ */
+
+
+/***************************************************************************/
+/*
* FUNCTIONS
*/
-long pj_Set_Geocentric_Parameters (GeocentricInfo *gi, double a, double b)
+long pj_Set_Geocentric_Parameters (double a, double b)
{ /* BEGIN Set_Geocentric_Parameters */
/*
@@ -126,30 +141,29 @@
* a : Semi-major axis, in meters. (input)
* b : Semi-minor axis, in meters. (input)
*/
- long Error_Code = GEOCENT_NO_ERROR;
+ long Error_Code = GEOCENT_NO_ERROR;
- if (a <= 0.0)
- Error_Code |= GEOCENT_A_ERROR;
- if (b <= 0.0)
- Error_Code |= GEOCENT_B_ERROR;
- if (a < b)
- Error_Code |= GEOCENT_A_LESS_B_ERROR;
- if (!Error_Code)
- {
- gi->Geocent_a = a;
- gi->Geocent_b = b;
- gi->Geocent_a2 = a * a;
- gi->Geocent_b2 = b * b;
- gi->Geocent_e2 = (gi->Geocent_a2 - gi->Geocent_b2) / gi->Geocent_a2;
- gi->Geocent_ep2 = (gi->Geocent_a2 - gi->Geocent_b2) / gi->Geocent_b2;
- }
- return (Error_Code);
+ if (a <= 0.0)
+ Error_Code |= GEOCENT_A_ERROR;
+ if (b <= 0.0)
+ Error_Code |= GEOCENT_B_ERROR;
+ if (a < b)
+ Error_Code |= GEOCENT_A_LESS_B_ERROR;
+ if (!Error_Code)
+ {
+ Geocent_a = a;
+ Geocent_b = b;
+ Geocent_a2 = a * a;
+ Geocent_b2 = b * b;
+ Geocent_e2 = (Geocent_a2 - Geocent_b2) / Geocent_a2;
+ Geocent_ep2 = (Geocent_a2 - Geocent_b2) / Geocent_b2;
+ }
+ return (Error_Code);
} /* END OF Set_Geocentric_Parameters */
-void pj_Get_Geocentric_Parameters (GeocentricInfo *gi,
- double *a,
- double *b)
+void pj_Get_Geocentric_Parameters (double *a,
+ double *b)
{ /* BEGIN Get_Geocentric_Parameters */
/*
* The function Get_Geocentric_Parameters returns the ellipsoid parameters
@@ -159,18 +173,17 @@
* b : Semi-minor axis, in meters. (output)
*/
- *a = gi->Geocent_a;
- *b = gi->Geocent_b;
+ *a = Geocent_a;
+ *b = Geocent_b;
} /* END OF Get_Geocentric_Parameters */
-long pj_Convert_Geodetic_To_Geocentric (GeocentricInfo *gi,
- double Latitude,
- double Longitude,
- double Height,
- double *X,
- double *Y,
- double *Z)
+long pj_Convert_Geodetic_To_Geocentric (double Latitude,
+ double Longitude,
+ double Height,
+ double *X,
+ double *Y,
+ double *Z)
{ /* BEGIN Convert_Geodetic_To_Geocentric */
/*
* The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
@@ -212,10 +225,10 @@
Sin_Lat = sin(Latitude);
Cos_Lat = cos(Latitude);
Sin2_Lat = Sin_Lat * Sin_Lat;
- Rn = gi->Geocent_a / (sqrt(1.0e0 - gi->Geocent_e2 * Sin2_Lat));
+ Rn = Geocent_a / (sqrt(1.0e0 - Geocent_e2 * Sin2_Lat));
*X = (Rn + Height) * Cos_Lat * cos(Longitude);
*Y = (Rn + Height) * Cos_Lat * sin(Longitude);
- *Z = ((Rn * (1 - gi->Geocent_e2)) + Height) * Sin_Lat;
+ *Z = ((Rn * (1 - Geocent_e2)) + Height) * Sin_Lat;
}
return (Error_Code);
@@ -236,13 +249,12 @@
#define USE_ITERATIVE_METHOD
-void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi,
- double X,
- double Y,
- double Z,
- double *Latitude,
- double *Longitude,
- double *Height)
+void pj_Convert_Geocentric_To_Geodetic (double X,
+ double Y,
+ double Z,
+ double *Latitude,
+ double *Longitude,
+ double *Height)
{ /* BEGIN Convert_Geocentric_To_Geodetic */
#if !defined(USE_ITERATIVE_METHOD)
/*
@@ -309,12 +321,12 @@
Sin_B0 = T0 / S0;
Cos_B0 = W / S0;
Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;
- T1 = Z + gi->Geocent_b * gi->Geocent_ep2 * Sin3_B0;
- Sum = W - gi->Geocent_a * gi->Geocent_e2 * Cos_B0 * Cos_B0 * Cos_B0;
+ T1 = Z + Geocent_b * Geocent_ep2 * Sin3_B0;
+ Sum = W - Geocent_a * Geocent_e2 * Cos_B0 * Cos_B0 * Cos_B0;
S1 = sqrt(T1*T1 + Sum * Sum);
Sin_p1 = T1 / S1;
Cos_p1 = Sum / S1;
- Rn = gi->Geocent_a / sqrt(1.0 - gi->Geocent_e2 * Sin_p1 * Sin_p1);
+ Rn = Geocent_a / sqrt(1.0 - Geocent_e2 * Sin_p1 * Sin_p1);
if (Cos_p1 >= COS_67P5)
{
*Height = W / Cos_p1 - Rn;
@@ -325,7 +337,7 @@
}
else
{
- *Height = Z / Sin_p1 + Rn * (gi->Geocent_e2 - 1.0);
+ *Height = Z / Sin_p1 + Rn * (Geocent_e2 - 1.0);
}
if (At_Pole == FALSE)
{
@@ -389,7 +401,7 @@
RR = sqrt(X*X+Y*Y+Z*Z);
/* special cases for latitude and longitude */
- if (P/gi->Geocent_a < genau) {
+ if (P/Geocent_a < genau) {
/* special case, if P=0. (X=0., Y=0.) */
At_Pole = TRUE;
@@ -397,9 +409,9 @@
/* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
* of ellipsoid (=center of mass), Latitude becomes PI/2 */
- if (RR/gi->Geocent_a < genau) {
+ if (RR/Geocent_a < genau) {
*Latitude = PI_OVER_2;
- *Height = -gi->Geocent_b;
+ *Height = -Geocent_b;
return ;
}
@@ -421,8 +433,8 @@
*/
CT = Z/RR;
ST = P/RR;
- RX = 1.0/sqrt(1.0-gi->Geocent_e2*(2.0-gi->Geocent_e2)*ST*ST);
- CPHI0 = ST*(1.0-gi->Geocent_e2)*RX;
+ RX = 1.0/sqrt(1.0-Geocent_e2*(2.0-Geocent_e2)*ST*ST);
+ CPHI0 = ST*(1.0-Geocent_e2)*RX;
SPHI0 = CT*RX;
iter = 0;
@@ -431,12 +443,12 @@
do
{
iter++;
- RN = gi->Geocent_a/sqrt(1.0-gi->Geocent_e2*SPHI0*SPHI0);
+ RN = Geocent_a/sqrt(1.0-Geocent_e2*SPHI0*SPHI0);
/* ellipsoidal (geodetic) height */
- *Height = P*CPHI0+Z*SPHI0-RN*(1.0-gi->Geocent_e2*SPHI0*SPHI0);
+ *Height = P*CPHI0+Z*SPHI0-RN*(1.0-Geocent_e2*SPHI0*SPHI0);
- RK = gi->Geocent_e2*RN/(RN+*Height);
+ RK = Geocent_e2*RN/(RN+*Height);
RX = 1.0/sqrt(1.0-RK*(2.0-RK)*ST*ST);
CPHI = ST*(1.0-RK)*RX;
SPHI = CT*RX;
Modified: trunk/toolkits/basemap/src/geocent.h
===================================================================
--- trunk/toolkits/basemap/src/geocent.h 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/geocent.h 2007-12-28 20:04:31 UTC (rev 4795)
@@ -92,21 +92,9 @@
extern "C" {
#endif
-typedef struct
-{
- double Geocent_a; /* Semi-major axis of ellipsoid in meters */
- double Geocent_b; /* Semi-minor axis of ellipsoid */
- double Geocent_a2; /* Square of semi-major axis */
- double Geocent_b2; /* Square of semi-minor axis */
- double Geocent_e2; /* Eccentricity squared */
- double Geocent_ep2; /* 2nd eccentricity squared */
-} GeocentricInfo;
-void pj_Init_Geocentric( GeocentricInfo *gi );
-long pj_Set_Geocentric_Parameters( GeocentricInfo *gi,
- double a,
- double b);
-
+ long pj_Set_Geocentric_Parameters (double a,
+ double b);
/*
* The function Set_Geocentric_Parameters receives the ellipsoid parameters
* as inputs and sets the corresponding state variables.
@@ -116,10 +104,8 @@
*/
-void pj_Get_Geocentric_Parameters ( GeocentricInfo *gi,
- double *a,
- double *b);
-
+ void pj_Get_Geocentric_Parameters (double *a,
+ double *b);
/*
* The function Get_Geocentric_Parameters returns the ellipsoid parameters
* to be used in geocentric coordinate conversions.
@@ -129,13 +115,12 @@
*/
-long pj_Convert_Geodetic_To_Geocentric ( GeocentricInfo *gi,
- double Latitude,
- double Longitude,
- double Height,
- double *X,
- double *Y,
- double *Z);
+ long pj_Convert_Geodetic_To_Geocentric (double Latitude,
+ double Longitude,
+ double Height,
+ double *X,
+ double *Y,
+ double *Z);
/*
* The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
* (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
@@ -151,13 +136,12 @@
*/
-void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi,
- double X,
- double Y,
- double Z,
- double *Latitude,
- double *Longitude,
- double *Height);
+ void pj_Convert_Geocentric_To_Geodetic (double X,
+ double Y,
+ double Z,
+ double *Latitude,
+ double *Longitude,
+ double *Height);
/*
* The function Convert_Geocentric_To_Geodetic converts geocentric
* coordinates (X, Y, Z) to geodetic coordinates (latitude, longitude,
Modified: trunk/toolkits/basemap/src/geod.c
===================================================================
--- trunk/toolkits/basemap/src/geod.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/geod.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -2,11 +2,11 @@
static const char SCCSID[]="@(#)geod.c 4.8 95/09/23 GIE REL";
#endif
/* <<<< Geodesic filter program >>>> */
+# include <ctype.h>
+# include <stdio.h>
# include "projects.h"
# include "geodesic.h"
# include "emess.h"
-# include <ctype.h>
-# include <stdio.h>
# include <string.h>
# define MAXLINE 200
Modified: trunk/toolkits/basemap/src/nad_init.c
===================================================================
--- trunk/toolkits/basemap/src/nad_init.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/nad_init.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: nad_init.c,v 1.10 2007/09/11 20:16:33 fwarmerdam Exp $
+ * $Id: nad_init.c,v 1.8 2003/03/17 18:56:01 warmerda Exp $
*
* Project: PROJ.4
* Purpose: Load datum shift files into memory.
@@ -28,12 +28,6 @@
******************************************************************************
*
* $Log: nad_init.c,v $
- * Revision 1.10 2007/09/11 20:16:33 fwarmerdam
- * Improve error recovery if ctable datum shift files fails to load.
- *
- * Revision 1.9 2006/11/17 22:16:30 mloskot
- * Uploaded PROJ.4 port for Windows CE.
- *
* Revision 1.8 2003/03/17 18:56:01 warmerda
* implement delayed loading of ctable format files
*
@@ -59,18 +53,9 @@
#include <projects.h>
#include <stdio.h>
#include <errno.h>
+#include <assert.h>
#include <string.h>
-#ifdef _WIN32_WCE
-/* assert.h includes all Windows API headers and causes 'LP' name clash.
- * Here assert we disable assert() for Windows CE.
- * TODO - mloskot: re-implement porting friendly assert
- */
-# define assert(exp) ((void)0)
-#else
-# include <assert.h>
-#endif /* _WIN32_WCE */
-
/************************************************************************/
/* nad_ctable_load() */
/* */
@@ -90,15 +75,6 @@
if( ct->cvs == NULL
|| fread(ct->cvs, sizeof(FLP), a_size, fid) != a_size )
{
- pj_dalloc( ct->cvs );
- ct->cvs = NULL;
-
- if( getenv("PROJ_DEBUG") != NULL )
- {
- fprintf( stderr,
- "ctable loading failed on fread() - binary incompatible?\n" );
- }
-
pj_errno = -38;
return 0;
}
Modified: trunk/toolkits/basemap/src/pj_datum_set.c
===================================================================
--- trunk/toolkits/basemap/src/pj_datum_set.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_datum_set.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_datum_set.c,v 1.4 2007/11/29 21:06:50 fwarmerdam Exp $
+ * $Id: pj_datum_set.c,v 1.2 2001/04/04 21:13:21 warmerda Exp $
*
* Project: PROJ.4
* Purpose: Apply datum definition to PJ structure from initialization string.
@@ -28,12 +28,6 @@
******************************************************************************
*
* $Log: pj_datum_set.c,v $
- * Revision 1.4 2007/11/29 21:06:50 fwarmerdam
- * make sure we only look for 7 parameters
- *
- * Revision 1.3 2007/01/31 06:41:01 fwarmerdam
- * dont parse more datum parameters than we have room for in datum_params[]
- *
* Revision 1.2 2001/04/04 21:13:21 warmerda
* do arcsecond/radian and ppm datum parm transformation in pj_set_datum()
*
@@ -119,7 +113,7 @@
/* parse out the parameters */
s = towgs84;
- for( s = towgs84; *s != '\0' && parm_count < 7; )
+ for( s = towgs84; *s != '\0'; )
{
projdef->datum_params[parm_count++] = atof(s);
while( *s != '\0' && *s != ',' )
Modified: trunk/toolkits/basemap/src/pj_factors.c
===================================================================
--- trunk/toolkits/basemap/src/pj_factors.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_factors.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -20,16 +20,15 @@
return 1;
} else { /* proceed */
errno = pj_errno = 0;
- if (h < EPS)
- h = DEFAULT_H;
- if (fabs(lp.phi) > (HALFPI - h))
- /* adjust to value around pi/2 where derived still exists*/
- lp.phi = lp.phi < 0. ? (-HALFPI+h) : (HALFPI-h);
+ if (fabs(t) <= EPS) /* adjust to pi/2 */
+ lp.phi = lp.phi < 0. ? -HALFPI : HALFPI;
else if (P->geoc)
lp.phi = atan(P->rone_es * tan(lp.phi));
lp.lam -= P->lam0; /* compute del lp.lam */
if (!P->over)
lp.lam = adjlon(lp.lam); /* adjust del longitude */
+ if (h <= 0.)
+ h = DEFAULT_H;
if (P->spc) /* get what projection analytic values */
P->spc(lp, P, fac);
if (((fac->code & (IS_ANAL_XL_YL+IS_ANAL_XP_YP)) !=
Modified: trunk/toolkits/basemap/src/pj_gridinfo.c
===================================================================
--- trunk/toolkits/basemap/src/pj_gridinfo.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_gridinfo.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_gridinfo.c,v 1.8 2006/11/17 22:16:30 mloskot Exp $
+ * $Id: pj_gridinfo.c,v 1.7 2005/07/07 00:16:03 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Functions for handling individual PJ_GRIDINFO's. Includes
@@ -29,9 +29,6 @@
******************************************************************************
*
* $Log: pj_gridinfo.c,v $
- * Revision 1.8 2006/11/17 22:16:30 mloskot
- * Uploaded PROJ.4 port for Windows CE.
- *
* Revision 1.7 2005/07/07 00:16:03 fwarmerdam
* Fixed debug fprintf syntax per:
* http://bugzilla.remotesensing.org/show_bug.cgi?id=886
@@ -62,17 +59,8 @@
#include <string.h>
#include <math.h>
#include <errno.h>
+#include <assert.h>
-#ifdef _WIN32_WCE
-/* assert.h includes all Windows API headers and causes 'LP' name clash.
- * Here assert we disable assert() for Windows CE.
- * TODO - mloskot: re-implement porting friendly assert
- */
-# define assert(exp) ((void)0)
-#else
-# include <assert.h>
-#endif /* _WIN32_WCE */
-
/************************************************************************/
/* swap_words() */
/* */
Modified: trunk/toolkits/basemap/src/pj_gridlist.c
===================================================================
--- trunk/toolkits/basemap/src/pj_gridlist.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_gridlist.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_gridlist.c,v 1.5 2006/11/17 22:16:30 mloskot Exp $
+ * $Id: pj_gridlist.c,v 1.4 2005/11/01 05:56:13 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Code to manage the list of currently loaded (cached) PJ_GRIDINFOs
@@ -29,9 +29,6 @@
******************************************************************************
*
* $Log: pj_gridlist.c,v $
- * Revision 1.5 2006/11/17 22:16:30 mloskot
- * Uploaded PROJ.4 port for Windows CE.
- *
* Revision 1.4 2005/11/01 05:56:13 fwarmerdam
* improved error handling if gridcount is zero
*
@@ -51,17 +48,8 @@
#include <projects.h>
#include <string.h>
#include <math.h>
+#include <assert.h>
-#ifdef _WIN32_WCE
-/* assert.h includes all Windows API headers and causes 'LP' name clash.
- * Here assert we disable assert() for Windows CE.
- * TODO - mloskot: re-implement porting friendly assert
- */
-# define assert(exp) ((void)0)
-#else
-# include <assert.h>
-#endif /* _WIN32_WCE */
-
static PJ_GRIDINFO *grid_list = NULL;
/* used only by pj_load_nadgrids() and pj_deallocate_grids() */
Modified: trunk/toolkits/basemap/src/pj_init.c
===================================================================
--- trunk/toolkits/basemap/src/pj_init.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_init.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_init.c,v 1.19 2007/11/26 00:21:59 fwarmerdam Exp $
+ * $Id: pj_init.c,v 1.18 2006/10/12 21:04:39 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Initialize projection object from string definition. Includes
@@ -30,15 +30,6 @@
******************************************************************************
*
* $Log: pj_init.c,v $
- * Revision 1.19 2007/11/26 00:21:59 fwarmerdam
- * Modified PJ structure to hold a_orig, es_orig, ellipsoid definition before
- * adjustment for spherical projections.
- * Modified pj_datum_transform() to use the original ellipsoid parameters,
- * not the ones adjusted for spherical projections.
- * Modified pj_datum_transform() to not attempt any datum shift via
- * geocentric coordinates if the source *or* destination are raw ellipsoids
- * (ie. PJD_UNKNOWN). All per PROJ bug #1602, GDAL bug #2025.
- *
* Revision 1.18 2006/10/12 21:04:39 fwarmerdam
* Added experimental +lon_wrap argument to set a "center point" for
* longitude wrapping of longitude values coming out of pj_transform().
@@ -82,7 +73,7 @@
#include <string.h>
#include <errno.h>
-PJ_CVSID("$Id: pj_init.c,v 1.19 2007/11/26 00:21:59 fwarmerdam Exp $");
+PJ_CVSID("$Id: pj_init.c,v 1.18 2006/10/12 21:04:39 fwarmerdam Exp $");
extern FILE *pj_open_lib(char *, char *);
@@ -291,9 +282,6 @@
/* set ellipsoid/sphere parameters */
if (pj_ell_set(start, &PIN->a, &PIN->es)) goto bum_call;
- PIN->a_orig = PIN->a;
- PIN->es_orig = PIN->es;
-
PIN->e = sqrt(PIN->es);
PIN->ra = 1. / PIN->a;
PIN->one_es = 1. - PIN->es;
Modified: trunk/toolkits/basemap/src/pj_latlong.c
===================================================================
--- trunk/toolkits/basemap/src/pj_latlong.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_latlong.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_latlong.c,v 1.3 2007/11/30 20:02:31 fwarmerdam Exp $
+ * $Id: pj_latlong.c,v 1.2 2000/07/07 06:04:23 warmerda Exp $
*
* Project: PROJ.4
* Purpose: Stub projection implementation for lat/long coordinates. We
@@ -30,9 +30,6 @@
******************************************************************************
*
* $Log: pj_latlong.c,v $
- * Revision 1.3 2007/11/30 20:02:31 fwarmerdam
- * add latlon and lonlat aliases
- *
* Revision 1.2 2000/07/07 06:04:23 warmerda
* added longlat alias
*
@@ -44,10 +41,8 @@
/* very loosely based upon DMA code by Bradford W. Drew */
#define PJ_LIB__
#include <projects.h>
-PROJ_HEAD(lonlat, "Lat/long (Geodetic)") "\n\t";
-PROJ_HEAD(latlon, "Lat/long (Geodetic alias)") "\n\t";
-PROJ_HEAD(latlong, "Lat/long (Geodetic alias)") "\n\t";
-PROJ_HEAD(longlat, "Lat/long (Geodetic alias)") "\n\t";
+PROJ_HEAD(latlong, "Lat/long (Geodetic)") "\n\t";
+PROJ_HEAD(longlat, "Lat/long (Geodetic)") "\n\t";
FORWARD(forward);
@@ -76,17 +71,3 @@
P->y0 = 0.0;
P->inv = inverse; P->fwd = forward;
ENDENTRY(P)
-
-ENTRY0(latlon)
- P->is_latlong = 1;
- P->x0 = 0.0;
- P->y0 = 0.0;
- P->inv = inverse; P->fwd = forward;
-ENDENTRY(P)
-
-ENTRY0(lonlat)
- P->is_latlong = 1;
- P->x0 = 0.0;
- P->y0 = 0.0;
- P->inv = inverse; P->fwd = forward;
-ENDENTRY(P)
Modified: trunk/toolkits/basemap/src/pj_list.h
===================================================================
--- trunk/toolkits/basemap/src/pj_list.h 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_list.h 2007-12-28 20:04:31 UTC (rev 4795)
@@ -55,10 +55,8 @@
PROJ_HEAD(lagrng, "Lagrange")
PROJ_HEAD(larr, "Larrivee")
PROJ_HEAD(lask, "Laskowski")
-PROJ_HEAD(lonlat, "Lat/long (Geodetic)")
-PROJ_HEAD(latlon, "Lat/long (Geodetic alias)")
-PROJ_HEAD(latlong, "Lat/long (Geodetic alias)")
-PROJ_HEAD(longlat, "Lat/long (Geodetic alias)")
+PROJ_HEAD(latlong, "Lat/long (Geodetic)")
+PROJ_HEAD(longlat, "Lat/long (Geodetic)")
PROJ_HEAD(lcc, "Lambert Conformal Conic")
PROJ_HEAD(lcca, "Lambert Conformal Conic Alternative")
PROJ_HEAD(leac, "Lambert Equal Area Conic")
@@ -73,6 +71,7 @@
PROJ_HEAD(merc, "Mercator")
PROJ_HEAD(mil_os, "Miller Oblated Stereographic")
PROJ_HEAD(mill, "Miller Cylindrical")
+PROJ_HEAD(mpoly, "Modified Polyconic")
PROJ_HEAD(moll, "Mollweide")
PROJ_HEAD(murd1, "Murdoch I")
PROJ_HEAD(murd2, "Murdoch II")
Modified: trunk/toolkits/basemap/src/pj_open_lib.c
===================================================================
--- trunk/toolkits/basemap/src/pj_open_lib.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_open_lib.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_open_lib.c,v 1.9 2007/07/06 14:58:03 fwarmerdam Exp $
+ * $Id: pj_open_lib.c,v 1.6 2004/09/16 15:14:01 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Implementation of pj_open_lib(), and pj_set_finder(). These
@@ -31,15 +31,6 @@
******************************************************************************
*
* $Log: pj_open_lib.c,v $
- * Revision 1.9 2007/07/06 14:58:03 fwarmerdam
- * improve searchpath clearning with pj_set_searchpath()
- *
- * Revision 1.8 2007/03/11 17:03:18 fwarmerdam
- * support drive letter prefixes on win32 and related fixes (bug 1499)
- *
- * Revision 1.7 2006/11/17 22:16:30 mloskot
- * Uploaded PROJ.4 port for Windows CE.
- *
* Revision 1.6 2004/09/16 15:14:01 fwarmerdam
* * src/pj_open_lib.c: added pj_set_searchpath() provided by Eric Miller.
*
@@ -54,7 +45,7 @@
#include <string.h>
#include <errno.h>
-PJ_CVSID("$Id: pj_open_lib.c,v 1.9 2007/07/06 14:58:03 fwarmerdam Exp $");
+PJ_CVSID("$Id: pj_open_lib.c,v 1.6 2004/09/16 15:14:01 fwarmerdam Exp $");
static const char *(*pj_finder)(const char *) = NULL;
static int path_count = 0;
@@ -80,8 +71,7 @@
/* pj_set_searchpath() */
/* */
/* Path control for callers that can't practically provide */
-/* pj_set_finder() style callbacks. Call with (0,NULL) as args */
-/* to clear the searchpath set. */
+/* pj_set_finder() style callbacks. */
/************************************************************************/
void pj_set_searchpath ( int count, const char **path )
@@ -99,16 +89,13 @@
search_path = NULL;
}
- if( count > 0 )
+ search_path = pj_malloc(sizeof *search_path * count);
+ for (i = 0; i < count; i++)
{
- search_path = pj_malloc(sizeof *search_path * count);
- for (i = 0; i < count; i++)
- {
- search_path[i] = pj_malloc(strlen(path[i]) + 1);
- strcpy(search_path[i], path[i]);
- }
+ search_path[i] = pj_malloc(strlen(path[i]) + 1);
+ strcpy(search_path[i], path[i]);
}
-
+
path_count = count;
}
@@ -123,16 +110,9 @@
FILE *fid;
int n = 0;
int i;
-#ifdef WIN32
- static const char dir_chars[] = "/\\";
-#else
- static const char dir_chars[] = "/";
-#endif
-#ifndef _WIN32_WCE
-
/* check if ~/name */
- if (*name == '~' && strchr(dir_chars,name[1]) )
+ if (*name == '~' && name[1] == DIR_CHAR)
if (sysname = getenv("HOME")) {
(void)strcpy(fname, sysname);
fname[n = strlen(fname)] = DIR_CHAR;
@@ -143,10 +123,8 @@
return NULL;
/* or fixed path: /name, ./name or ../name */
- else if (strchr(dir_chars,*name)
- || (*name == '.' && strchr(dir_chars,name[1]))
- || (!strncmp(name, "..", 2) && strchr(dir_chars,name[2]))
- || (name[1] == ':' && strchr(dir_chars,name[2])) )
+ else if (*name == DIR_CHAR || (*name == '.' && name[1] == DIR_CHAR) ||
+ (!strncmp(name, "..", 2) && name[2] == DIR_CHAR) )
sysname = name;
/* or try to use application provided file finder */
@@ -185,7 +163,4 @@
fid == NULL ? "failed" : "succeeded" );
return(fid);
-#else
- return NULL;
-#endif /* _WIN32_WCE */
}
Modified: trunk/toolkits/basemap/src/pj_release.c
===================================================================
--- trunk/toolkits/basemap/src/pj_release.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_release.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -2,7 +2,7 @@
#include <projects.h>
-char const pj_release[]="Rel. 4.6.0, 21 Dec 2007";
+char const pj_release[]="Rel. 4.5.0, 22 Oct 2006";
const char *pj_get_release()
Modified: trunk/toolkits/basemap/src/pj_transform.c
===================================================================
--- trunk/toolkits/basemap/src/pj_transform.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_transform.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_transform.c,v 1.24 2007/12/03 15:48:20 fwarmerdam Exp $
+ * $Id: pj_transform.c,v 1.20 2006/10/12 21:04:39 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Perform overall coordinate system to coordinate system
@@ -30,24 +30,6 @@
******************************************************************************
*
* $Log: pj_transform.c,v $
- * Revision 1.24 2007/12/03 15:48:20 fwarmerdam
- * Improve WGS84 ES precision to avoid unnecesary transformation (#1531)
- *
- * Revision 1.23 2007/11/26 00:21:59 fwarmerdam
- * Modified PJ structure to hold a_orig, es_orig, ellipsoid definition before
- * adjustment for spherical projections.
- * Modified pj_datum_transform() to use the original ellipsoid parameters,
- * not the ones adjusted for spherical projections.
- * Modified pj_datum_transform() to not attempt any datum shift via
- * geocentric coordinates if the source *or* destination are raw ellipsoids
- * (ie. PJD_UNKNOWN). All per PROJ bug #1602, GDAL bug #2025.
- *
- * Revision 1.22 2007/09/11 20:32:25 fwarmerdam
- * mark the transient error array const
- *
- * Revision 1.21 2007/09/11 20:19:36 fwarmerdam
- * avoid use of static variables to make reentrant
- *
* Revision 1.20 2006/10/12 21:04:39 fwarmerdam
* Added experimental +lon_wrap argument to set a "center point" for
* longitude wrapping of longitude values coming out of pj_transform().
@@ -128,14 +110,14 @@
#include <math.h>
#include "geocent.h"
-PJ_CVSID("$Id: pj_transform.c,v 1.24 2007/12/03 15:48:20 fwarmerdam Exp $");
+PJ_CVSID("$Id: pj_transform.c,v 1.20 2006/10/12 21:04:39 fwarmerdam Exp $");
#ifndef SRS_WGS84_SEMIMAJOR
#define SRS_WGS84_SEMIMAJOR 6378137.0
#endif
#ifndef SRS_WGS84_ESQUARED
-#define SRS_WGS84_ESQUARED 0.0066943799901413165
+#define SRS_WGS84_ESQUARED 0.006694379990
#endif
#define Dx_BF (defn->datum_params[0])
@@ -157,7 +139,7 @@
** list or something, but while experimenting with it this should be fine.
*/
-static const int transient_error[45] = {
+static int transient_error[45] = {
/* 0 1 2 3 4 5 6 7 8 9 */
/* 0 to 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 10 to 19 */ 0, 0, 0, 0, 1, 1, 0, 1, 1, 1,
@@ -209,7 +191,7 @@
}
}
- if( pj_geocentric_to_geodetic( srcdefn->a_orig, srcdefn->es_orig,
+ if( pj_geocentric_to_geodetic( srcdefn->a, srcdefn->es,
point_count, point_offset,
x, y, z ) != 0)
return pj_errno;
@@ -306,7 +288,7 @@
return PJD_ERR_GEOCENTRIC;
}
- pj_geodetic_to_geocentric( dstdefn->a_orig, dstdefn->es_orig,
+ pj_geodetic_to_geocentric( dstdefn->a, dstdefn->es,
point_count, point_offset, x, y, z );
if( dstdefn->fr_meter != 1.0 )
@@ -390,7 +372,6 @@
{
double b;
int i;
- GeocentricInfo gi;
pj_errno = 0;
@@ -399,7 +380,7 @@
else
b = a * sqrt(1-es);
- if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 )
+ if( pj_Set_Geocentric_Parameters( a, b ) != 0 )
{
pj_errno = PJD_ERR_GEOCENTRIC;
return pj_errno;
@@ -412,7 +393,7 @@
if( x[io] == HUGE_VAL )
continue;
- if( pj_Convert_Geodetic_To_Geocentric( &gi, y[io], x[io], z[io],
+ if( pj_Convert_Geodetic_To_Geocentric( y[io], x[io], z[io],
x+io, y+io, z+io ) != 0 )
{
pj_errno = -14;
@@ -435,14 +416,13 @@
{
double b;
int i;
- GeocentricInfo gi;
if( es == 0.0 )
b = a;
else
b = a * sqrt(1-es);
- if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 )
+ if( pj_Set_Geocentric_Parameters( a, b ) != 0 )
{
pj_errno = PJD_ERR_GEOCENTRIC;
return pj_errno;
@@ -455,8 +435,8 @@
if( x[io] == HUGE_VAL )
continue;
- pj_Convert_Geocentric_To_Geodetic( &gi, x[io], y[io], z[io],
- y+io, x+io, z+io );
+ pj_Convert_Geocentric_To_Geodetic( x[io], y[io], z[io],
+ y+io, x+io, z+io );
}
return 0;
@@ -476,8 +456,8 @@
{
return 0;
}
- else if( srcdefn->a_orig != dstdefn->a_orig
- || ABS(srcdefn->es_orig - dstdefn->es_orig) > 0.000000000050 )
+ else if( srcdefn->a != dstdefn->a
+ || ABS(srcdefn->es - dstdefn->es) > 0.000000000050 )
{
/* the tolerence for es is to ensure that GRS80 and WGS84 are
considered identical */
@@ -610,10 +590,6 @@
/************************************************************************/
/* pj_datum_transform() */
-/* */
-/* The input should be long/lat/z coordinates in radians in the */
-/* source datum, and the output should be long/lat/z */
-/* coordinates in radians in the destination datum. */
/************************************************************************/
int pj_datum_transform( PJ *srcdefn, PJ *dstdefn,
@@ -627,26 +603,16 @@
pj_errno = 0;
/* -------------------------------------------------------------------- */
-/* We cannot do any meaningful datum transformation if either */
-/* the source or destination are of an unknown datum type */
-/* (ie. only a +ellps declaration, no +datum). This is new */
-/* behavior for PROJ 4.6.0. */
-/* -------------------------------------------------------------------- */
- if( srcdefn->datum_type == PJD_UNKNOWN
- || dstdefn->datum_type == PJD_UNKNOWN )
- return 0;
-
-/* -------------------------------------------------------------------- */
/* Short cut if the datums are identical. */
/* -------------------------------------------------------------------- */
if( pj_compare_datums( srcdefn, dstdefn ) )
return 0;
- src_a = srcdefn->a_orig;
- src_es = srcdefn->es_orig;
+ src_a = srcdefn->a;
+ src_es = srcdefn->es;
- dst_a = dstdefn->a_orig;
- dst_es = dstdefn->es_orig;
+ dst_a = dstdefn->a;
+ dst_es = dstdefn->es;
/* -------------------------------------------------------------------- */
/* Create a temporary Z array if one is not provided. */
Modified: trunk/toolkits/basemap/src/pj_utils.c
===================================================================
--- trunk/toolkits/basemap/src/pj_utils.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/pj_utils.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_utils.c,v 1.5 2007/03/12 14:05:35 fwarmerdam Exp $
+ * $Id: pj_utils.c,v 1.4 2005/07/06 14:04:09 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Some utility functions we don't want to bother putting in
@@ -29,9 +29,6 @@
******************************************************************************
*
* $Log: pj_utils.c,v $
- * Revision 1.5 2007/03/12 14:05:35 fwarmerdam
- * Removed duplicate towgs84 definition code.
- *
* Revision 1.4 2005/07/06 14:04:09 fwarmerdam
* Improved precision of es encoding for pj_latlong_from_proj() per:
* http://bugzilla.remotesensing.org/show_bug.cgi?id=881
@@ -138,6 +135,10 @@
sprintf( defn+strlen(defn), " +towgs84=%s",
pj_param(pj_in->params,"stowgs84").s );
+ if( pj_param(pj_in->params, "ttowgs84").i )
+ sprintf( defn+strlen(defn), " +towgs84=%s",
+ pj_param(pj_in->params,"stowgs84").s );
+
if( pj_param(pj_in->params, "tnadgrids").i )
sprintf( defn+strlen(defn), " +nadgrids=%s",
pj_param(pj_in->params,"snadgrids").s );
Modified: trunk/toolkits/basemap/src/proj_api.h
===================================================================
--- trunk/toolkits/basemap/src/proj_api.h 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/proj_api.h 2007-12-28 20:04:31 UTC (rev 4795)
@@ -28,12 +28,6 @@
******************************************************************************
*
* $Log: proj_api.h,v $
- * Revision 1.16 2007/11/29 21:07:49 fwarmerdam
- * prepare for 4.6.0 release
- *
- * Revision 1.15 2007/08/20 13:40:06 fwarmerdam
- * avoid warnings in c++ for some prototypes
- *
* Revision 1.14 2006/04/20 04:19:59 fwarmerdam
* updated version
*
@@ -92,7 +86,7 @@
#endif
/* Try to update this every version! */
-#define PJ_VERSION 460
+#define PJ_VERSION 450
extern char const pj_release[]; /* global release id string */
@@ -132,7 +126,7 @@
int pj_apply_gridshift( const char *, int,
long point_count, int point_offset,
double *x, double *y, double *z );
-void pj_deallocate_grids(void);
+void pj_deallocate_grids();
int pj_is_latlong(projPJ);
int pj_is_geocent(projPJ);
void pj_pr_list(projPJ);
@@ -146,8 +140,8 @@
void *pj_malloc(size_t);
void pj_dalloc(void *);
char *pj_strerrno(int);
-int *pj_get_errno_ref(void);
-const char *pj_get_release(void);
+int *pj_get_errno_ref();
+const char *pj_get_release();
#ifdef __cplusplus
}
Modified: trunk/toolkits/basemap/src/projects.h
===================================================================
--- trunk/toolkits/basemap/src/projects.h 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/projects.h 2007-12-28 20:04:31 UTC (rev 4795)
@@ -28,21 +28,6 @@
******************************************************************************
*
* $Log: projects.h,v $
- * Revision 1.27 2007/11/26 00:21:59 fwarmerdam
- * Modified PJ structure to hold a_orig, es_orig, ellipsoid definition before
- * adjustment for spherical projections.
- * Modified pj_datum_transform() to use the original ellipsoid parameters,
- * not the ones adjusted for spherical projections.
- * Modified pj_datum_transform() to not attempt any datum shift via
- * geocentric coordinates if the source *or* destination are raw ellipsoids
- * (ie. PJD_UNKNOWN). All per PROJ bug #1602, GDAL bug #2025.
- *
- * Revision 1.26 2007/03/11 17:03:18 fwarmerdam
- * support drive letter prefixes on win32 and related fixes (bug 1499)
- *
- * Revision 1.25 2006/11/17 22:16:30 mloskot
- * Uploaded PROJ.4 port for Windows CE.
- *
* Revision 1.24 2006/10/18 04:34:03 fwarmerdam
* added mlist functions from libproj4
*
@@ -164,15 +149,6 @@
extern double hypot(double, double);
#endif
-#ifdef _WIN32_WCE
-# include <wce_stdlib.h>
-# include <wce_stdio.h>
-# define rewind wceex_rewind
-# define getenv wceex_getenv
-# define strdup _strdup
-# define hypot _hypot
-#endif
-
/* some useful constants */
#define HALFPI 1.5707963267948966
#define FORTPI 0.78539816339744833
@@ -188,17 +164,8 @@
#define ID_TAG_MAX 50
#endif
-/* Use WIN32 as a standard windows 32 bit declaration */
-#if defined(_WIN32) && !defined(WIN32) && !defined(_WIN32_WCE)
-# define WIN32
-#endif
-
-#if defined(_WINDOWS) && !defined(WIN32) && !defined(_WIN32_WCE)
-# define WIN32
-#endif
-
/* directory delimiter for DOS support */
-#ifdef WIN32
+#ifdef DOS
#define DIR_CHAR '\\'
#else
#define DIR_CHAR '/'
@@ -298,10 +265,8 @@
int is_geocent; /* proj=geocent ... not really a projection at all */
double
a, /* major axis or radius if es==0 */
- a_orig, /* major axis before any +proj related adjustment */
- es, /* e ^ 2 */
- es_orig, /* es before any +proj related adjustment */
e, /* eccentricity */
+ es, /* e ^ 2 */
ra, /* 1/A */
one_es, /* 1 - e^2 */
rone_es, /* 1/one_es */
@@ -309,7 +274,7 @@
x0, y0, /* easting and northing */
k0, /* general scaling factor */
to_meter, fr_meter; /* cartesian scaling */
-
+
int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */
double datum_params[7];
double from_greenwich; /* prime meridian offset (in radians) */
Modified: trunk/toolkits/basemap/src/rtodms.c
===================================================================
--- trunk/toolkits/basemap/src/rtodms.c 2007-12-28 19:44:55 UTC (rev 4794)
+++ trunk/toolkits/basemap/src/rtodms.c 2007-12-28 20:04:31 UTC (rev 4795)
@@ -53,9 +53,7 @@
sec = fmod(r / RES, 60.);
r = floor(r / RES60);
min = fmod(r, 60.);
- r = floor(r / 60.);
- deg = r;
-
+ deg = r / 60.;
if (dolong)
(void)sprintf(ss,format,deg,min,sec,sign);
else if (sec) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2007-12-28 19:45:03
|
Revision: 4794
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4794&view=rev
Author: jswhit
Date: 2007-12-28 11:44:55 -0800 (Fri, 28 Dec 2007)
Log Message:
-----------
update proj4 sources to version 4.6.0
Modified Paths:
--------------
trunk/toolkits/basemap/src/PJ_gn_sinu.c
trunk/toolkits/basemap/src/PJ_krovak.c
trunk/toolkits/basemap/src/PJ_laea.c
trunk/toolkits/basemap/src/PJ_wag3.c
trunk/toolkits/basemap/src/emess.c
trunk/toolkits/basemap/src/geocent.c
trunk/toolkits/basemap/src/geocent.h
trunk/toolkits/basemap/src/geod.c
trunk/toolkits/basemap/src/nad_init.c
trunk/toolkits/basemap/src/pj_datum_set.c
trunk/toolkits/basemap/src/pj_factors.c
trunk/toolkits/basemap/src/pj_gridinfo.c
trunk/toolkits/basemap/src/pj_gridlist.c
trunk/toolkits/basemap/src/pj_init.c
trunk/toolkits/basemap/src/pj_latlong.c
trunk/toolkits/basemap/src/pj_list.h
trunk/toolkits/basemap/src/pj_open_lib.c
trunk/toolkits/basemap/src/pj_release.c
trunk/toolkits/basemap/src/pj_transform.c
trunk/toolkits/basemap/src/pj_utils.c
trunk/toolkits/basemap/src/proj_api.h
trunk/toolkits/basemap/src/projects.h
trunk/toolkits/basemap/src/rtodms.c
Modified: trunk/toolkits/basemap/src/PJ_gn_sinu.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_gn_sinu.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/PJ_gn_sinu.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -75,7 +75,6 @@
if (!(P->en = pj_enfn(P->es)))
E_ERROR_0;
if (P->es) {
- P->en = pj_enfn(P->es);
P->inv = e_inverse;
P->fwd = e_forward;
} else {
Modified: trunk/toolkits/basemap/src/PJ_krovak.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_krovak.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/PJ_krovak.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: PJ_krovak.c,v 1.6 2006/09/14 13:10:50 fwarmerdam Exp $
+ * $Id: PJ_krovak.c,v 1.9 2007/03/07 17:32:32 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Implementation of the krovak (Krovak) projection.
@@ -30,6 +30,15 @@
******************************************************************************
*
* $Log: PJ_krovak.c,v $
+ * Revision 1.9 2007/03/07 17:32:32 fwarmerdam
+ * remove orphan semicolon.
+ *
+ * Revision 1.8 2007/03/07 17:28:08 fwarmerdam
+ * Make it reasonably clear that this is ellipsoidal in the code.
+ *
+ * Revision 1.7 2007/03/07 17:25:34 fwarmerdam
+ * report krovak as ellipsoidal, not spherical
+ *
* Revision 1.6 2006/09/14 13:10:50 fwarmerdam
* Add +czech flag to control reversal of signs (bug 1133,147)
*
@@ -55,9 +64,9 @@
#include <string.h>
#include <stdio.h>
-PJ_CVSID("$Id: PJ_krovak.c,v 1.6 2006/09/14 13:10:50 fwarmerdam Exp $");
+PJ_CVSID("$Id: PJ_krovak.c,v 1.9 2007/03/07 17:32:32 fwarmerdam Exp $");
-PROJ_HEAD(krovak, "Krovak") "\n\tPCyl., Sph.";
+PROJ_HEAD(krovak, "Krovak") "\n\tPCyl., Ellps.";
/**
NOTES: According to EPSG the full Krovak projection method should have
@@ -84,7 +93,7 @@
-FORWARD(s_forward); /* spheroid */
+FORWARD(e_forward); /* ellipsoid */
/* calculate xy from lat/lon */
char errmess[255];
@@ -153,7 +162,7 @@
-INVERSE(s_inverse); /* spheroid */
+INVERSE(e_inverse); /* ellipsoid */
/* calculate lat/lon from xy */
/* Constants, identisch wie in der Umkehrfunktion */
@@ -258,15 +267,14 @@
/* as input and output, instead of lat/long relative to Ferro */
if (!pj_param(P->params, "tlon_0").i)
P->lam0 = 0.7417649320975901 - 0.308341501185665;
-;
/* if scale not set default to 0.9999 */
if (!pj_param(P->params, "tk").i)
P->k0 = 0.9999;
/* always the same */
- P->inv = s_inverse;
- P->fwd = s_forward;
+ P->inv = e_inverse;
+ P->fwd = e_forward;
ENDENTRY(P)
Modified: trunk/toolkits/basemap/src/PJ_laea.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_laea.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/PJ_laea.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -179,8 +179,14 @@
0. : atan2(xy.x, xy.y);
return (lp);
}
-FREEUP; if (P) pj_dalloc(P); }
-ENTRY0(laea)
+FREEUP;
+ if (P) {
+ if (P->apa)
+ pj_dalloc(P->apa);
+ pj_dalloc(P);
+ }
+}
+ENTRY1(laea,apa)
double t;
if (fabs((t = fabs(P->phi0)) - HALFPI) < EPS10)
Modified: trunk/toolkits/basemap/src/PJ_wag3.c
===================================================================
--- trunk/toolkits/basemap/src/PJ_wag3.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/PJ_wag3.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -5,7 +5,7 @@
double C_x;
#define PJ_LIB__
# include <projects.h>
-PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl., Sph.";
+PROJ_HEAD(wag3, "Wagner III") "\n\tPCyl., Sph.\n\tlat_ts=";
#define TWOTHIRD 0.6666666666666666666667
FORWARD(s_forward); /* spheroid */
xy.x = P->C_x * lp.lam * cos(TWOTHIRD * lp.phi);
Modified: trunk/toolkits/basemap/src/emess.c
===================================================================
--- trunk/toolkits/basemap/src/emess.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/emess.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -3,6 +3,15 @@
static const char SCCSID[]="@(#)emess.c 4.6 94/05/24 GIE REL";
#endif
+#ifdef _MSC_VER
+# ifndef _CRT_SECURE_NO_DEPRECATE
+# define _CRT_SECURE_NO_DEPRECATE
+# endif
+# ifndef _CRT_NONSTDC_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+# endif
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
Modified: trunk/toolkits/basemap/src/geocent.c
===================================================================
--- trunk/toolkits/basemap/src/geocent.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/geocent.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -65,6 +65,9 @@
* 25-02-97 Original Code
*
* $Log: geocent.c,v $
+ * Revision 1.7 2007/09/11 20:19:36 fwarmerdam
+ * avoid use of static variables to make reentrant
+ *
* Revision 1.6 2006/01/12 22:29:01 fwarmerdam
* make geocent.c globals static to avoid conflicts
*
@@ -109,29 +112,11 @@
/***************************************************************************/
/*
- * GLOBAL DECLARATIONS
- */
-/* Ellipsoid parameters, default to WGS 84 */
-static double Geocent_a = 6378137.0; /* Semi-major axis of ellipsoid in meters */
-static double Geocent_b = 6356752.3142; /* Semi-minor axis of ellipsoid */
-
-static double Geocent_a2 = 40680631590769.0; /* Square of semi-major axis */
-static double Geocent_b2 = 40408299984087.05; /* Square of semi-minor axis */
-static double Geocent_e2 = 0.0066943799901413800; /* Eccentricity squared */
-static double Geocent_ep2 = 0.00673949675658690300; /* 2nd eccentricity squared */
-/*
- * These state variables are for optimization purposes. The only function
- * that should modify them is Set_Geocentric_Parameters.
- */
-
-
-/***************************************************************************/
-/*
* FUNCTIONS
*/
-long pj_Set_Geocentric_Parameters (double a, double b)
+long pj_Set_Geocentric_Parameters (GeocentricInfo *gi, double a, double b)
{ /* BEGIN Set_Geocentric_Parameters */
/*
@@ -141,29 +126,30 @@
* a : Semi-major axis, in meters. (input)
* b : Semi-minor axis, in meters. (input)
*/
- long Error_Code = GEOCENT_NO_ERROR;
+ long Error_Code = GEOCENT_NO_ERROR;
- if (a <= 0.0)
- Error_Code |= GEOCENT_A_ERROR;
- if (b <= 0.0)
- Error_Code |= GEOCENT_B_ERROR;
- if (a < b)
- Error_Code |= GEOCENT_A_LESS_B_ERROR;
- if (!Error_Code)
- {
- Geocent_a = a;
- Geocent_b = b;
- Geocent_a2 = a * a;
- Geocent_b2 = b * b;
- Geocent_e2 = (Geocent_a2 - Geocent_b2) / Geocent_a2;
- Geocent_ep2 = (Geocent_a2 - Geocent_b2) / Geocent_b2;
- }
- return (Error_Code);
+ if (a <= 0.0)
+ Error_Code |= GEOCENT_A_ERROR;
+ if (b <= 0.0)
+ Error_Code |= GEOCENT_B_ERROR;
+ if (a < b)
+ Error_Code |= GEOCENT_A_LESS_B_ERROR;
+ if (!Error_Code)
+ {
+ gi->Geocent_a = a;
+ gi->Geocent_b = b;
+ gi->Geocent_a2 = a * a;
+ gi->Geocent_b2 = b * b;
+ gi->Geocent_e2 = (gi->Geocent_a2 - gi->Geocent_b2) / gi->Geocent_a2;
+ gi->Geocent_ep2 = (gi->Geocent_a2 - gi->Geocent_b2) / gi->Geocent_b2;
+ }
+ return (Error_Code);
} /* END OF Set_Geocentric_Parameters */
-void pj_Get_Geocentric_Parameters (double *a,
- double *b)
+void pj_Get_Geocentric_Parameters (GeocentricInfo *gi,
+ double *a,
+ double *b)
{ /* BEGIN Get_Geocentric_Parameters */
/*
* The function Get_Geocentric_Parameters returns the ellipsoid parameters
@@ -173,17 +159,18 @@
* b : Semi-minor axis, in meters. (output)
*/
- *a = Geocent_a;
- *b = Geocent_b;
+ *a = gi->Geocent_a;
+ *b = gi->Geocent_b;
} /* END OF Get_Geocentric_Parameters */
-long pj_Convert_Geodetic_To_Geocentric (double Latitude,
- double Longitude,
- double Height,
- double *X,
- double *Y,
- double *Z)
+long pj_Convert_Geodetic_To_Geocentric (GeocentricInfo *gi,
+ double Latitude,
+ double Longitude,
+ double Height,
+ double *X,
+ double *Y,
+ double *Z)
{ /* BEGIN Convert_Geodetic_To_Geocentric */
/*
* The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
@@ -225,10 +212,10 @@
Sin_Lat = sin(Latitude);
Cos_Lat = cos(Latitude);
Sin2_Lat = Sin_Lat * Sin_Lat;
- Rn = Geocent_a / (sqrt(1.0e0 - Geocent_e2 * Sin2_Lat));
+ Rn = gi->Geocent_a / (sqrt(1.0e0 - gi->Geocent_e2 * Sin2_Lat));
*X = (Rn + Height) * Cos_Lat * cos(Longitude);
*Y = (Rn + Height) * Cos_Lat * sin(Longitude);
- *Z = ((Rn * (1 - Geocent_e2)) + Height) * Sin_Lat;
+ *Z = ((Rn * (1 - gi->Geocent_e2)) + Height) * Sin_Lat;
}
return (Error_Code);
@@ -249,12 +236,13 @@
#define USE_ITERATIVE_METHOD
-void pj_Convert_Geocentric_To_Geodetic (double X,
- double Y,
- double Z,
- double *Latitude,
- double *Longitude,
- double *Height)
+void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi,
+ double X,
+ double Y,
+ double Z,
+ double *Latitude,
+ double *Longitude,
+ double *Height)
{ /* BEGIN Convert_Geocentric_To_Geodetic */
#if !defined(USE_ITERATIVE_METHOD)
/*
@@ -321,12 +309,12 @@
Sin_B0 = T0 / S0;
Cos_B0 = W / S0;
Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;
- T1 = Z + Geocent_b * Geocent_ep2 * Sin3_B0;
- Sum = W - Geocent_a * Geocent_e2 * Cos_B0 * Cos_B0 * Cos_B0;
+ T1 = Z + gi->Geocent_b * gi->Geocent_ep2 * Sin3_B0;
+ Sum = W - gi->Geocent_a * gi->Geocent_e2 * Cos_B0 * Cos_B0 * Cos_B0;
S1 = sqrt(T1*T1 + Sum * Sum);
Sin_p1 = T1 / S1;
Cos_p1 = Sum / S1;
- Rn = Geocent_a / sqrt(1.0 - Geocent_e2 * Sin_p1 * Sin_p1);
+ Rn = gi->Geocent_a / sqrt(1.0 - gi->Geocent_e2 * Sin_p1 * Sin_p1);
if (Cos_p1 >= COS_67P5)
{
*Height = W / Cos_p1 - Rn;
@@ -337,7 +325,7 @@
}
else
{
- *Height = Z / Sin_p1 + Rn * (Geocent_e2 - 1.0);
+ *Height = Z / Sin_p1 + Rn * (gi->Geocent_e2 - 1.0);
}
if (At_Pole == FALSE)
{
@@ -401,7 +389,7 @@
RR = sqrt(X*X+Y*Y+Z*Z);
/* special cases for latitude and longitude */
- if (P/Geocent_a < genau) {
+ if (P/gi->Geocent_a < genau) {
/* special case, if P=0. (X=0., Y=0.) */
At_Pole = TRUE;
@@ -409,9 +397,9 @@
/* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
* of ellipsoid (=center of mass), Latitude becomes PI/2 */
- if (RR/Geocent_a < genau) {
+ if (RR/gi->Geocent_a < genau) {
*Latitude = PI_OVER_2;
- *Height = -Geocent_b;
+ *Height = -gi->Geocent_b;
return ;
}
@@ -433,8 +421,8 @@
*/
CT = Z/RR;
ST = P/RR;
- RX = 1.0/sqrt(1.0-Geocent_e2*(2.0-Geocent_e2)*ST*ST);
- CPHI0 = ST*(1.0-Geocent_e2)*RX;
+ RX = 1.0/sqrt(1.0-gi->Geocent_e2*(2.0-gi->Geocent_e2)*ST*ST);
+ CPHI0 = ST*(1.0-gi->Geocent_e2)*RX;
SPHI0 = CT*RX;
iter = 0;
@@ -443,12 +431,12 @@
do
{
iter++;
- RN = Geocent_a/sqrt(1.0-Geocent_e2*SPHI0*SPHI0);
+ RN = gi->Geocent_a/sqrt(1.0-gi->Geocent_e2*SPHI0*SPHI0);
/* ellipsoidal (geodetic) height */
- *Height = P*CPHI0+Z*SPHI0-RN*(1.0-Geocent_e2*SPHI0*SPHI0);
+ *Height = P*CPHI0+Z*SPHI0-RN*(1.0-gi->Geocent_e2*SPHI0*SPHI0);
- RK = Geocent_e2*RN/(RN+*Height);
+ RK = gi->Geocent_e2*RN/(RN+*Height);
RX = 1.0/sqrt(1.0-RK*(2.0-RK)*ST*ST);
CPHI = ST*(1.0-RK)*RX;
SPHI = CT*RX;
Modified: trunk/toolkits/basemap/src/geocent.h
===================================================================
--- trunk/toolkits/basemap/src/geocent.h 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/geocent.h 2007-12-28 19:44:55 UTC (rev 4794)
@@ -92,9 +92,21 @@
extern "C" {
#endif
+typedef struct
+{
+ double Geocent_a; /* Semi-major axis of ellipsoid in meters */
+ double Geocent_b; /* Semi-minor axis of ellipsoid */
+ double Geocent_a2; /* Square of semi-major axis */
+ double Geocent_b2; /* Square of semi-minor axis */
+ double Geocent_e2; /* Eccentricity squared */
+ double Geocent_ep2; /* 2nd eccentricity squared */
+} GeocentricInfo;
- long pj_Set_Geocentric_Parameters (double a,
- double b);
+void pj_Init_Geocentric( GeocentricInfo *gi );
+long pj_Set_Geocentric_Parameters( GeocentricInfo *gi,
+ double a,
+ double b);
+
/*
* The function Set_Geocentric_Parameters receives the ellipsoid parameters
* as inputs and sets the corresponding state variables.
@@ -104,8 +116,10 @@
*/
- void pj_Get_Geocentric_Parameters (double *a,
- double *b);
+void pj_Get_Geocentric_Parameters ( GeocentricInfo *gi,
+ double *a,
+ double *b);
+
/*
* The function Get_Geocentric_Parameters returns the ellipsoid parameters
* to be used in geocentric coordinate conversions.
@@ -115,12 +129,13 @@
*/
- long pj_Convert_Geodetic_To_Geocentric (double Latitude,
- double Longitude,
- double Height,
- double *X,
- double *Y,
- double *Z);
+long pj_Convert_Geodetic_To_Geocentric ( GeocentricInfo *gi,
+ double Latitude,
+ double Longitude,
+ double Height,
+ double *X,
+ double *Y,
+ double *Z);
/*
* The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
* (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
@@ -136,12 +151,13 @@
*/
- void pj_Convert_Geocentric_To_Geodetic (double X,
- double Y,
- double Z,
- double *Latitude,
- double *Longitude,
- double *Height);
+void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi,
+ double X,
+ double Y,
+ double Z,
+ double *Latitude,
+ double *Longitude,
+ double *Height);
/*
* The function Convert_Geocentric_To_Geodetic converts geocentric
* coordinates (X, Y, Z) to geodetic coordinates (latitude, longitude,
Modified: trunk/toolkits/basemap/src/geod.c
===================================================================
--- trunk/toolkits/basemap/src/geod.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/geod.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -2,11 +2,11 @@
static const char SCCSID[]="@(#)geod.c 4.8 95/09/23 GIE REL";
#endif
/* <<<< Geodesic filter program >>>> */
-# include <ctype.h>
-# include <stdio.h>
# include "projects.h"
# include "geodesic.h"
# include "emess.h"
+# include <ctype.h>
+# include <stdio.h>
# include <string.h>
# define MAXLINE 200
Modified: trunk/toolkits/basemap/src/nad_init.c
===================================================================
--- trunk/toolkits/basemap/src/nad_init.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/nad_init.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: nad_init.c,v 1.8 2003/03/17 18:56:01 warmerda Exp $
+ * $Id: nad_init.c,v 1.10 2007/09/11 20:16:33 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Load datum shift files into memory.
@@ -28,6 +28,12 @@
******************************************************************************
*
* $Log: nad_init.c,v $
+ * Revision 1.10 2007/09/11 20:16:33 fwarmerdam
+ * Improve error recovery if ctable datum shift files fails to load.
+ *
+ * Revision 1.9 2006/11/17 22:16:30 mloskot
+ * Uploaded PROJ.4 port for Windows CE.
+ *
* Revision 1.8 2003/03/17 18:56:01 warmerda
* implement delayed loading of ctable format files
*
@@ -53,9 +59,18 @@
#include <projects.h>
#include <stdio.h>
#include <errno.h>
-#include <assert.h>
#include <string.h>
+#ifdef _WIN32_WCE
+/* assert.h includes all Windows API headers and causes 'LP' name clash.
+ * Here assert we disable assert() for Windows CE.
+ * TODO - mloskot: re-implement porting friendly assert
+ */
+# define assert(exp) ((void)0)
+#else
+# include <assert.h>
+#endif /* _WIN32_WCE */
+
/************************************************************************/
/* nad_ctable_load() */
/* */
@@ -75,6 +90,15 @@
if( ct->cvs == NULL
|| fread(ct->cvs, sizeof(FLP), a_size, fid) != a_size )
{
+ pj_dalloc( ct->cvs );
+ ct->cvs = NULL;
+
+ if( getenv("PROJ_DEBUG") != NULL )
+ {
+ fprintf( stderr,
+ "ctable loading failed on fread() - binary incompatible?\n" );
+ }
+
pj_errno = -38;
return 0;
}
Modified: trunk/toolkits/basemap/src/pj_datum_set.c
===================================================================
--- trunk/toolkits/basemap/src/pj_datum_set.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_datum_set.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_datum_set.c,v 1.2 2001/04/04 21:13:21 warmerda Exp $
+ * $Id: pj_datum_set.c,v 1.4 2007/11/29 21:06:50 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Apply datum definition to PJ structure from initialization string.
@@ -28,6 +28,12 @@
******************************************************************************
*
* $Log: pj_datum_set.c,v $
+ * Revision 1.4 2007/11/29 21:06:50 fwarmerdam
+ * make sure we only look for 7 parameters
+ *
+ * Revision 1.3 2007/01/31 06:41:01 fwarmerdam
+ * dont parse more datum parameters than we have room for in datum_params[]
+ *
* Revision 1.2 2001/04/04 21:13:21 warmerda
* do arcsecond/radian and ppm datum parm transformation in pj_set_datum()
*
@@ -113,7 +119,7 @@
/* parse out the parameters */
s = towgs84;
- for( s = towgs84; *s != '\0'; )
+ for( s = towgs84; *s != '\0' && parm_count < 7; )
{
projdef->datum_params[parm_count++] = atof(s);
while( *s != '\0' && *s != ',' )
Modified: trunk/toolkits/basemap/src/pj_factors.c
===================================================================
--- trunk/toolkits/basemap/src/pj_factors.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_factors.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -20,15 +20,16 @@
return 1;
} else { /* proceed */
errno = pj_errno = 0;
- if (fabs(t) <= EPS) /* adjust to pi/2 */
- lp.phi = lp.phi < 0. ? -HALFPI : HALFPI;
+ if (h < EPS)
+ h = DEFAULT_H;
+ if (fabs(lp.phi) > (HALFPI - h))
+ /* adjust to value around pi/2 where derived still exists*/
+ lp.phi = lp.phi < 0. ? (-HALFPI+h) : (HALFPI-h);
else if (P->geoc)
lp.phi = atan(P->rone_es * tan(lp.phi));
lp.lam -= P->lam0; /* compute del lp.lam */
if (!P->over)
lp.lam = adjlon(lp.lam); /* adjust del longitude */
- if (h <= 0.)
- h = DEFAULT_H;
if (P->spc) /* get what projection analytic values */
P->spc(lp, P, fac);
if (((fac->code & (IS_ANAL_XL_YL+IS_ANAL_XP_YP)) !=
Modified: trunk/toolkits/basemap/src/pj_gridinfo.c
===================================================================
--- trunk/toolkits/basemap/src/pj_gridinfo.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_gridinfo.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_gridinfo.c,v 1.7 2005/07/07 00:16:03 fwarmerdam Exp $
+ * $Id: pj_gridinfo.c,v 1.8 2006/11/17 22:16:30 mloskot Exp $
*
* Project: PROJ.4
* Purpose: Functions for handling individual PJ_GRIDINFO's. Includes
@@ -29,6 +29,9 @@
******************************************************************************
*
* $Log: pj_gridinfo.c,v $
+ * Revision 1.8 2006/11/17 22:16:30 mloskot
+ * Uploaded PROJ.4 port for Windows CE.
+ *
* Revision 1.7 2005/07/07 00:16:03 fwarmerdam
* Fixed debug fprintf syntax per:
* http://bugzilla.remotesensing.org/show_bug.cgi?id=886
@@ -59,8 +62,17 @@
#include <string.h>
#include <math.h>
#include <errno.h>
-#include <assert.h>
+#ifdef _WIN32_WCE
+/* assert.h includes all Windows API headers and causes 'LP' name clash.
+ * Here assert we disable assert() for Windows CE.
+ * TODO - mloskot: re-implement porting friendly assert
+ */
+# define assert(exp) ((void)0)
+#else
+# include <assert.h>
+#endif /* _WIN32_WCE */
+
/************************************************************************/
/* swap_words() */
/* */
Modified: trunk/toolkits/basemap/src/pj_gridlist.c
===================================================================
--- trunk/toolkits/basemap/src/pj_gridlist.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_gridlist.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_gridlist.c,v 1.4 2005/11/01 05:56:13 fwarmerdam Exp $
+ * $Id: pj_gridlist.c,v 1.5 2006/11/17 22:16:30 mloskot Exp $
*
* Project: PROJ.4
* Purpose: Code to manage the list of currently loaded (cached) PJ_GRIDINFOs
@@ -29,6 +29,9 @@
******************************************************************************
*
* $Log: pj_gridlist.c,v $
+ * Revision 1.5 2006/11/17 22:16:30 mloskot
+ * Uploaded PROJ.4 port for Windows CE.
+ *
* Revision 1.4 2005/11/01 05:56:13 fwarmerdam
* improved error handling if gridcount is zero
*
@@ -48,8 +51,17 @@
#include <projects.h>
#include <string.h>
#include <math.h>
-#include <assert.h>
+#ifdef _WIN32_WCE
+/* assert.h includes all Windows API headers and causes 'LP' name clash.
+ * Here assert we disable assert() for Windows CE.
+ * TODO - mloskot: re-implement porting friendly assert
+ */
+# define assert(exp) ((void)0)
+#else
+# include <assert.h>
+#endif /* _WIN32_WCE */
+
static PJ_GRIDINFO *grid_list = NULL;
/* used only by pj_load_nadgrids() and pj_deallocate_grids() */
Modified: trunk/toolkits/basemap/src/pj_init.c
===================================================================
--- trunk/toolkits/basemap/src/pj_init.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_init.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_init.c,v 1.18 2006/10/12 21:04:39 fwarmerdam Exp $
+ * $Id: pj_init.c,v 1.19 2007/11/26 00:21:59 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Initialize projection object from string definition. Includes
@@ -30,6 +30,15 @@
******************************************************************************
*
* $Log: pj_init.c,v $
+ * Revision 1.19 2007/11/26 00:21:59 fwarmerdam
+ * Modified PJ structure to hold a_orig, es_orig, ellipsoid definition before
+ * adjustment for spherical projections.
+ * Modified pj_datum_transform() to use the original ellipsoid parameters,
+ * not the ones adjusted for spherical projections.
+ * Modified pj_datum_transform() to not attempt any datum shift via
+ * geocentric coordinates if the source *or* destination are raw ellipsoids
+ * (ie. PJD_UNKNOWN). All per PROJ bug #1602, GDAL bug #2025.
+ *
* Revision 1.18 2006/10/12 21:04:39 fwarmerdam
* Added experimental +lon_wrap argument to set a "center point" for
* longitude wrapping of longitude values coming out of pj_transform().
@@ -73,7 +82,7 @@
#include <string.h>
#include <errno.h>
-PJ_CVSID("$Id: pj_init.c,v 1.18 2006/10/12 21:04:39 fwarmerdam Exp $");
+PJ_CVSID("$Id: pj_init.c,v 1.19 2007/11/26 00:21:59 fwarmerdam Exp $");
extern FILE *pj_open_lib(char *, char *);
@@ -282,6 +291,9 @@
/* set ellipsoid/sphere parameters */
if (pj_ell_set(start, &PIN->a, &PIN->es)) goto bum_call;
+ PIN->a_orig = PIN->a;
+ PIN->es_orig = PIN->es;
+
PIN->e = sqrt(PIN->es);
PIN->ra = 1. / PIN->a;
PIN->one_es = 1. - PIN->es;
Modified: trunk/toolkits/basemap/src/pj_latlong.c
===================================================================
--- trunk/toolkits/basemap/src/pj_latlong.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_latlong.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_latlong.c,v 1.2 2000/07/07 06:04:23 warmerda Exp $
+ * $Id: pj_latlong.c,v 1.3 2007/11/30 20:02:31 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Stub projection implementation for lat/long coordinates. We
@@ -30,6 +30,9 @@
******************************************************************************
*
* $Log: pj_latlong.c,v $
+ * Revision 1.3 2007/11/30 20:02:31 fwarmerdam
+ * add latlon and lonlat aliases
+ *
* Revision 1.2 2000/07/07 06:04:23 warmerda
* added longlat alias
*
@@ -41,8 +44,10 @@
/* very loosely based upon DMA code by Bradford W. Drew */
#define PJ_LIB__
#include <projects.h>
-PROJ_HEAD(latlong, "Lat/long (Geodetic)") "\n\t";
-PROJ_HEAD(longlat, "Lat/long (Geodetic)") "\n\t";
+PROJ_HEAD(lonlat, "Lat/long (Geodetic)") "\n\t";
+PROJ_HEAD(latlon, "Lat/long (Geodetic alias)") "\n\t";
+PROJ_HEAD(latlong, "Lat/long (Geodetic alias)") "\n\t";
+PROJ_HEAD(longlat, "Lat/long (Geodetic alias)") "\n\t";
FORWARD(forward);
@@ -71,3 +76,17 @@
P->y0 = 0.0;
P->inv = inverse; P->fwd = forward;
ENDENTRY(P)
+
+ENTRY0(latlon)
+ P->is_latlong = 1;
+ P->x0 = 0.0;
+ P->y0 = 0.0;
+ P->inv = inverse; P->fwd = forward;
+ENDENTRY(P)
+
+ENTRY0(lonlat)
+ P->is_latlong = 1;
+ P->x0 = 0.0;
+ P->y0 = 0.0;
+ P->inv = inverse; P->fwd = forward;
+ENDENTRY(P)
Modified: trunk/toolkits/basemap/src/pj_list.h
===================================================================
--- trunk/toolkits/basemap/src/pj_list.h 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_list.h 2007-12-28 19:44:55 UTC (rev 4794)
@@ -55,8 +55,10 @@
PROJ_HEAD(lagrng, "Lagrange")
PROJ_HEAD(larr, "Larrivee")
PROJ_HEAD(lask, "Laskowski")
-PROJ_HEAD(latlong, "Lat/long (Geodetic)")
-PROJ_HEAD(longlat, "Lat/long (Geodetic)")
+PROJ_HEAD(lonlat, "Lat/long (Geodetic)")
+PROJ_HEAD(latlon, "Lat/long (Geodetic alias)")
+PROJ_HEAD(latlong, "Lat/long (Geodetic alias)")
+PROJ_HEAD(longlat, "Lat/long (Geodetic alias)")
PROJ_HEAD(lcc, "Lambert Conformal Conic")
PROJ_HEAD(lcca, "Lambert Conformal Conic Alternative")
PROJ_HEAD(leac, "Lambert Equal Area Conic")
@@ -71,7 +73,6 @@
PROJ_HEAD(merc, "Mercator")
PROJ_HEAD(mil_os, "Miller Oblated Stereographic")
PROJ_HEAD(mill, "Miller Cylindrical")
-PROJ_HEAD(mpoly, "Modified Polyconic")
PROJ_HEAD(moll, "Mollweide")
PROJ_HEAD(murd1, "Murdoch I")
PROJ_HEAD(murd2, "Murdoch II")
Modified: trunk/toolkits/basemap/src/pj_open_lib.c
===================================================================
--- trunk/toolkits/basemap/src/pj_open_lib.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_open_lib.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_open_lib.c,v 1.6 2004/09/16 15:14:01 fwarmerdam Exp $
+ * $Id: pj_open_lib.c,v 1.9 2007/07/06 14:58:03 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Implementation of pj_open_lib(), and pj_set_finder(). These
@@ -31,6 +31,15 @@
******************************************************************************
*
* $Log: pj_open_lib.c,v $
+ * Revision 1.9 2007/07/06 14:58:03 fwarmerdam
+ * improve searchpath clearning with pj_set_searchpath()
+ *
+ * Revision 1.8 2007/03/11 17:03:18 fwarmerdam
+ * support drive letter prefixes on win32 and related fixes (bug 1499)
+ *
+ * Revision 1.7 2006/11/17 22:16:30 mloskot
+ * Uploaded PROJ.4 port for Windows CE.
+ *
* Revision 1.6 2004/09/16 15:14:01 fwarmerdam
* * src/pj_open_lib.c: added pj_set_searchpath() provided by Eric Miller.
*
@@ -45,7 +54,7 @@
#include <string.h>
#include <errno.h>
-PJ_CVSID("$Id: pj_open_lib.c,v 1.6 2004/09/16 15:14:01 fwarmerdam Exp $");
+PJ_CVSID("$Id: pj_open_lib.c,v 1.9 2007/07/06 14:58:03 fwarmerdam Exp $");
static const char *(*pj_finder)(const char *) = NULL;
static int path_count = 0;
@@ -71,7 +80,8 @@
/* pj_set_searchpath() */
/* */
/* Path control for callers that can't practically provide */
-/* pj_set_finder() style callbacks. */
+/* pj_set_finder() style callbacks. Call with (0,NULL) as args */
+/* to clear the searchpath set. */
/************************************************************************/
void pj_set_searchpath ( int count, const char **path )
@@ -89,13 +99,16 @@
search_path = NULL;
}
- search_path = pj_malloc(sizeof *search_path * count);
- for (i = 0; i < count; i++)
+ if( count > 0 )
{
- search_path[i] = pj_malloc(strlen(path[i]) + 1);
- strcpy(search_path[i], path[i]);
+ search_path = pj_malloc(sizeof *search_path * count);
+ for (i = 0; i < count; i++)
+ {
+ search_path[i] = pj_malloc(strlen(path[i]) + 1);
+ strcpy(search_path[i], path[i]);
+ }
}
-
+
path_count = count;
}
@@ -110,9 +123,16 @@
FILE *fid;
int n = 0;
int i;
+#ifdef WIN32
+ static const char dir_chars[] = "/\\";
+#else
+ static const char dir_chars[] = "/";
+#endif
+#ifndef _WIN32_WCE
+
/* check if ~/name */
- if (*name == '~' && name[1] == DIR_CHAR)
+ if (*name == '~' && strchr(dir_chars,name[1]) )
if (sysname = getenv("HOME")) {
(void)strcpy(fname, sysname);
fname[n = strlen(fname)] = DIR_CHAR;
@@ -123,8 +143,10 @@
return NULL;
/* or fixed path: /name, ./name or ../name */
- else if (*name == DIR_CHAR || (*name == '.' && name[1] == DIR_CHAR) ||
- (!strncmp(name, "..", 2) && name[2] == DIR_CHAR) )
+ else if (strchr(dir_chars,*name)
+ || (*name == '.' && strchr(dir_chars,name[1]))
+ || (!strncmp(name, "..", 2) && strchr(dir_chars,name[2]))
+ || (name[1] == ':' && strchr(dir_chars,name[2])) )
sysname = name;
/* or try to use application provided file finder */
@@ -163,4 +185,7 @@
fid == NULL ? "failed" : "succeeded" );
return(fid);
+#else
+ return NULL;
+#endif /* _WIN32_WCE */
}
Modified: trunk/toolkits/basemap/src/pj_release.c
===================================================================
--- trunk/toolkits/basemap/src/pj_release.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_release.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -2,7 +2,7 @@
#include <projects.h>
-char const pj_release[]="Rel. 4.5.0, 22 Oct 2006";
+char const pj_release[]="Rel. 4.6.0, 21 Dec 2007";
const char *pj_get_release()
Modified: trunk/toolkits/basemap/src/pj_transform.c
===================================================================
--- trunk/toolkits/basemap/src/pj_transform.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_transform.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_transform.c,v 1.20 2006/10/12 21:04:39 fwarmerdam Exp $
+ * $Id: pj_transform.c,v 1.24 2007/12/03 15:48:20 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Perform overall coordinate system to coordinate system
@@ -30,6 +30,24 @@
******************************************************************************
*
* $Log: pj_transform.c,v $
+ * Revision 1.24 2007/12/03 15:48:20 fwarmerdam
+ * Improve WGS84 ES precision to avoid unnecesary transformation (#1531)
+ *
+ * Revision 1.23 2007/11/26 00:21:59 fwarmerdam
+ * Modified PJ structure to hold a_orig, es_orig, ellipsoid definition before
+ * adjustment for spherical projections.
+ * Modified pj_datum_transform() to use the original ellipsoid parameters,
+ * not the ones adjusted for spherical projections.
+ * Modified pj_datum_transform() to not attempt any datum shift via
+ * geocentric coordinates if the source *or* destination are raw ellipsoids
+ * (ie. PJD_UNKNOWN). All per PROJ bug #1602, GDAL bug #2025.
+ *
+ * Revision 1.22 2007/09/11 20:32:25 fwarmerdam
+ * mark the transient error array const
+ *
+ * Revision 1.21 2007/09/11 20:19:36 fwarmerdam
+ * avoid use of static variables to make reentrant
+ *
* Revision 1.20 2006/10/12 21:04:39 fwarmerdam
* Added experimental +lon_wrap argument to set a "center point" for
* longitude wrapping of longitude values coming out of pj_transform().
@@ -110,14 +128,14 @@
#include <math.h>
#include "geocent.h"
-PJ_CVSID("$Id: pj_transform.c,v 1.20 2006/10/12 21:04:39 fwarmerdam Exp $");
+PJ_CVSID("$Id: pj_transform.c,v 1.24 2007/12/03 15:48:20 fwarmerdam Exp $");
#ifndef SRS_WGS84_SEMIMAJOR
#define SRS_WGS84_SEMIMAJOR 6378137.0
#endif
#ifndef SRS_WGS84_ESQUARED
-#define SRS_WGS84_ESQUARED 0.006694379990
+#define SRS_WGS84_ESQUARED 0.0066943799901413165
#endif
#define Dx_BF (defn->datum_params[0])
@@ -139,7 +157,7 @@
** list or something, but while experimenting with it this should be fine.
*/
-static int transient_error[45] = {
+static const int transient_error[45] = {
/* 0 1 2 3 4 5 6 7 8 9 */
/* 0 to 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 10 to 19 */ 0, 0, 0, 0, 1, 1, 0, 1, 1, 1,
@@ -191,7 +209,7 @@
}
}
- if( pj_geocentric_to_geodetic( srcdefn->a, srcdefn->es,
+ if( pj_geocentric_to_geodetic( srcdefn->a_orig, srcdefn->es_orig,
point_count, point_offset,
x, y, z ) != 0)
return pj_errno;
@@ -288,7 +306,7 @@
return PJD_ERR_GEOCENTRIC;
}
- pj_geodetic_to_geocentric( dstdefn->a, dstdefn->es,
+ pj_geodetic_to_geocentric( dstdefn->a_orig, dstdefn->es_orig,
point_count, point_offset, x, y, z );
if( dstdefn->fr_meter != 1.0 )
@@ -372,6 +390,7 @@
{
double b;
int i;
+ GeocentricInfo gi;
pj_errno = 0;
@@ -380,7 +399,7 @@
else
b = a * sqrt(1-es);
- if( pj_Set_Geocentric_Parameters( a, b ) != 0 )
+ if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 )
{
pj_errno = PJD_ERR_GEOCENTRIC;
return pj_errno;
@@ -393,7 +412,7 @@
if( x[io] == HUGE_VAL )
continue;
- if( pj_Convert_Geodetic_To_Geocentric( y[io], x[io], z[io],
+ if( pj_Convert_Geodetic_To_Geocentric( &gi, y[io], x[io], z[io],
x+io, y+io, z+io ) != 0 )
{
pj_errno = -14;
@@ -416,13 +435,14 @@
{
double b;
int i;
+ GeocentricInfo gi;
if( es == 0.0 )
b = a;
else
b = a * sqrt(1-es);
- if( pj_Set_Geocentric_Parameters( a, b ) != 0 )
+ if( pj_Set_Geocentric_Parameters( &gi, a, b ) != 0 )
{
pj_errno = PJD_ERR_GEOCENTRIC;
return pj_errno;
@@ -435,8 +455,8 @@
if( x[io] == HUGE_VAL )
continue;
- pj_Convert_Geocentric_To_Geodetic( x[io], y[io], z[io],
- y+io, x+io, z+io );
+ pj_Convert_Geocentric_To_Geodetic( &gi, x[io], y[io], z[io],
+ y+io, x+io, z+io );
}
return 0;
@@ -456,8 +476,8 @@
{
return 0;
}
- else if( srcdefn->a != dstdefn->a
- || ABS(srcdefn->es - dstdefn->es) > 0.000000000050 )
+ else if( srcdefn->a_orig != dstdefn->a_orig
+ || ABS(srcdefn->es_orig - dstdefn->es_orig) > 0.000000000050 )
{
/* the tolerence for es is to ensure that GRS80 and WGS84 are
considered identical */
@@ -590,6 +610,10 @@
/************************************************************************/
/* pj_datum_transform() */
+/* */
+/* The input should be long/lat/z coordinates in radians in the */
+/* source datum, and the output should be long/lat/z */
+/* coordinates in radians in the destination datum. */
/************************************************************************/
int pj_datum_transform( PJ *srcdefn, PJ *dstdefn,
@@ -603,16 +627,26 @@
pj_errno = 0;
/* -------------------------------------------------------------------- */
+/* We cannot do any meaningful datum transformation if either */
+/* the source or destination are of an unknown datum type */
+/* (ie. only a +ellps declaration, no +datum). This is new */
+/* behavior for PROJ 4.6.0. */
+/* -------------------------------------------------------------------- */
+ if( srcdefn->datum_type == PJD_UNKNOWN
+ || dstdefn->datum_type == PJD_UNKNOWN )
+ return 0;
+
+/* -------------------------------------------------------------------- */
/* Short cut if the datums are identical. */
/* -------------------------------------------------------------------- */
if( pj_compare_datums( srcdefn, dstdefn ) )
return 0;
- src_a = srcdefn->a;
- src_es = srcdefn->es;
+ src_a = srcdefn->a_orig;
+ src_es = srcdefn->es_orig;
- dst_a = dstdefn->a;
- dst_es = dstdefn->es;
+ dst_a = dstdefn->a_orig;
+ dst_es = dstdefn->es_orig;
/* -------------------------------------------------------------------- */
/* Create a temporary Z array if one is not provided. */
Modified: trunk/toolkits/basemap/src/pj_utils.c
===================================================================
--- trunk/toolkits/basemap/src/pj_utils.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/pj_utils.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -1,5 +1,5 @@
/******************************************************************************
- * $Id: pj_utils.c,v 1.4 2005/07/06 14:04:09 fwarmerdam Exp $
+ * $Id: pj_utils.c,v 1.5 2007/03/12 14:05:35 fwarmerdam Exp $
*
* Project: PROJ.4
* Purpose: Some utility functions we don't want to bother putting in
@@ -29,6 +29,9 @@
******************************************************************************
*
* $Log: pj_utils.c,v $
+ * Revision 1.5 2007/03/12 14:05:35 fwarmerdam
+ * Removed duplicate towgs84 definition code.
+ *
* Revision 1.4 2005/07/06 14:04:09 fwarmerdam
* Improved precision of es encoding for pj_latlong_from_proj() per:
* http://bugzilla.remotesensing.org/show_bug.cgi?id=881
@@ -135,10 +138,6 @@
sprintf( defn+strlen(defn), " +towgs84=%s",
pj_param(pj_in->params,"stowgs84").s );
- if( pj_param(pj_in->params, "ttowgs84").i )
- sprintf( defn+strlen(defn), " +towgs84=%s",
- pj_param(pj_in->params,"stowgs84").s );
-
if( pj_param(pj_in->params, "tnadgrids").i )
sprintf( defn+strlen(defn), " +nadgrids=%s",
pj_param(pj_in->params,"snadgrids").s );
Modified: trunk/toolkits/basemap/src/proj_api.h
===================================================================
--- trunk/toolkits/basemap/src/proj_api.h 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/proj_api.h 2007-12-28 19:44:55 UTC (rev 4794)
@@ -28,6 +28,12 @@
******************************************************************************
*
* $Log: proj_api.h,v $
+ * Revision 1.16 2007/11/29 21:07:49 fwarmerdam
+ * prepare for 4.6.0 release
+ *
+ * Revision 1.15 2007/08/20 13:40:06 fwarmerdam
+ * avoid warnings in c++ for some prototypes
+ *
* Revision 1.14 2006/04/20 04:19:59 fwarmerdam
* updated version
*
@@ -86,7 +92,7 @@
#endif
/* Try to update this every version! */
-#define PJ_VERSION 450
+#define PJ_VERSION 460
extern char const pj_release[]; /* global release id string */
@@ -126,7 +132,7 @@
int pj_apply_gridshift( const char *, int,
long point_count, int point_offset,
double *x, double *y, double *z );
-void pj_deallocate_grids();
+void pj_deallocate_grids(void);
int pj_is_latlong(projPJ);
int pj_is_geocent(projPJ);
void pj_pr_list(projPJ);
@@ -140,8 +146,8 @@
void *pj_malloc(size_t);
void pj_dalloc(void *);
char *pj_strerrno(int);
-int *pj_get_errno_ref();
-const char *pj_get_release();
+int *pj_get_errno_ref(void);
+const char *pj_get_release(void);
#ifdef __cplusplus
}
Modified: trunk/toolkits/basemap/src/projects.h
===================================================================
--- trunk/toolkits/basemap/src/projects.h 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/projects.h 2007-12-28 19:44:55 UTC (rev 4794)
@@ -28,6 +28,21 @@
******************************************************************************
*
* $Log: projects.h,v $
+ * Revision 1.27 2007/11/26 00:21:59 fwarmerdam
+ * Modified PJ structure to hold a_orig, es_orig, ellipsoid definition before
+ * adjustment for spherical projections.
+ * Modified pj_datum_transform() to use the original ellipsoid parameters,
+ * not the ones adjusted for spherical projections.
+ * Modified pj_datum_transform() to not attempt any datum shift via
+ * geocentric coordinates if the source *or* destination are raw ellipsoids
+ * (ie. PJD_UNKNOWN). All per PROJ bug #1602, GDAL bug #2025.
+ *
+ * Revision 1.26 2007/03/11 17:03:18 fwarmerdam
+ * support drive letter prefixes on win32 and related fixes (bug 1499)
+ *
+ * Revision 1.25 2006/11/17 22:16:30 mloskot
+ * Uploaded PROJ.4 port for Windows CE.
+ *
* Revision 1.24 2006/10/18 04:34:03 fwarmerdam
* added mlist functions from libproj4
*
@@ -149,6 +164,15 @@
extern double hypot(double, double);
#endif
+#ifdef _WIN32_WCE
+# include <wce_stdlib.h>
+# include <wce_stdio.h>
+# define rewind wceex_rewind
+# define getenv wceex_getenv
+# define strdup _strdup
+# define hypot _hypot
+#endif
+
/* some useful constants */
#define HALFPI 1.5707963267948966
#define FORTPI 0.78539816339744833
@@ -164,8 +188,17 @@
#define ID_TAG_MAX 50
#endif
+/* Use WIN32 as a standard windows 32 bit declaration */
+#if defined(_WIN32) && !defined(WIN32) && !defined(_WIN32_WCE)
+# define WIN32
+#endif
+
+#if defined(_WINDOWS) && !defined(WIN32) && !defined(_WIN32_WCE)
+# define WIN32
+#endif
+
/* directory delimiter for DOS support */
-#ifdef DOS
+#ifdef WIN32
#define DIR_CHAR '\\'
#else
#define DIR_CHAR '/'
@@ -265,8 +298,10 @@
int is_geocent; /* proj=geocent ... not really a projection at all */
double
a, /* major axis or radius if es==0 */
+ a_orig, /* major axis before any +proj related adjustment */
+ es, /* e ^ 2 */
+ es_orig, /* es before any +proj related adjustment */
e, /* eccentricity */
- es, /* e ^ 2 */
ra, /* 1/A */
one_es, /* 1 - e^2 */
rone_es, /* 1/one_es */
@@ -274,7 +309,7 @@
x0, y0, /* easting and northing */
k0, /* general scaling factor */
to_meter, fr_meter; /* cartesian scaling */
-
+
int datum_type; /* PJD_UNKNOWN/3PARAM/7PARAM/GRIDSHIFT/WGS84 */
double datum_params[7];
double from_greenwich; /* prime meridian offset (in radians) */
Modified: trunk/toolkits/basemap/src/rtodms.c
===================================================================
--- trunk/toolkits/basemap/src/rtodms.c 2007-12-27 13:05:41 UTC (rev 4793)
+++ trunk/toolkits/basemap/src/rtodms.c 2007-12-28 19:44:55 UTC (rev 4794)
@@ -53,7 +53,9 @@
sec = fmod(r / RES, 60.);
r = floor(r / RES60);
min = fmod(r, 60.);
- deg = r / 60.;
+ r = floor(r / 60.);
+ deg = r;
+
if (dolong)
(void)sprintf(ss,format,deg,min,sec,sign);
else if (sec) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2007-12-27 13:05:46
|
Revision: 4793
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4793&view=rev
Author: jswhit
Date: 2007-12-27 05:05:41 -0800 (Thu, 27 Dec 2007)
Log Message:
-----------
adjust title
Modified Paths:
--------------
trunk/toolkits/basemap/examples/hires.py
Modified: trunk/toolkits/basemap/examples/hires.py
===================================================================
--- trunk/toolkits/basemap/examples/hires.py 2007-12-27 13:02:56 UTC (rev 4792)
+++ trunk/toolkits/basemap/examples/hires.py 2007-12-27 13:05:41 UTC (rev 4793)
@@ -42,5 +42,5 @@
# draw meridians
meridians = arange(-12,13,2)
m.drawmeridians(meridians,labels=[0,0,1,1])
-title("High-Res British Isles",y=1.075)
+title("High-Res British Isles",y=1.04)
show()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2007-12-27 13:03:00
|
Revision: 4792
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4792&view=rev
Author: jswhit
Date: 2007-12-27 05:02:56 -0800 (Thu, 27 Dec 2007)
Log Message:
-----------
add runtime_library_dirs to _geos Extension initialization.
Modified Paths:
--------------
trunk/toolkits/basemap/setup.py
Modified: trunk/toolkits/basemap/setup.py
===================================================================
--- trunk/toolkits/basemap/setup.py 2007-12-26 20:01:29 UTC (rev 4791)
+++ trunk/toolkits/basemap/setup.py 2007-12-27 13:02:56 UTC (rev 4792)
@@ -65,18 +65,18 @@
break
else:
geos_version = check_geosversion(GEOS_dir)
-if geos_version != '"2.2.3"':
- raise SystemExit("""
-Can't find geos library version 2.2.3. Please set the
-environment variable GEOS_DIR to point to the location
-where geos 2.2.3 is installed (for example, if geos_c.h
-is in /usr/local/include, and libgeos_c is in /usr/local/lib,
-set GEOS_DIR to /usr/local), or edit the setup.py script
-manually and set the variable GEOS_dir (right after the line
-that says "set GEOS_dir manually here".""")
-else:
- geos_include_dirs=[os.path.join(GEOS_dir,'include'),numpy.get_include()]
- geos_library_dirs=[os.path.join(GEOS_dir,'lib'),os.path.join(GEOS_dir,'lib64')]
+#if geos_version != '"2.2.3"':
+# raise SystemExit("""
+#Can't find geos library version 2.2.3. Please set the
+#environment variable GEOS_DIR to point to the location
+#where geos 2.2.3 is installed (for example, if geos_c.h
+#is in /usr/local/include, and libgeos_c is in /usr/local/lib,
+#set GEOS_DIR to /usr/local), or edit the setup.py script
+#manually and set the variable GEOS_dir (right after the line
+#that says "set GEOS_dir manually here".""")
+#else:
+geos_include_dirs=[os.path.join(GEOS_dir,'include'),numpy.get_include()]
+geos_library_dirs=[os.path.join(GEOS_dir,'lib'),os.path.join(GEOS_dir,'lib64')]
# proj4 and geos extensions.
deps = glob.glob('src/*.c')
@@ -90,7 +90,11 @@
extensions.append(Extension("matplotlib.toolkits.basemap._geod",deps+['src/_geod.c'],include_dirs = ['src'],))
# for some reason, pickling won't work if this extension is installed
# as "matplotlib.toolkits.basemap._geos"
-extensions.append(Extension("_geos",['src/_geos.c'],library_dirs=geos_library_dirs,include_dirs=geos_include_dirs,libraries=['geos_c','geos']))
+extensions.append(Extension("_geos",['src/_geos.c'],
+ library_dirs=geos_library_dirs,
+ runtime_library_dirs=geos_library_dirs,
+ include_dirs=geos_include_dirs,
+ libraries=['geos_c','geos']))
# install shapelib and dbflib.
packages = packages + ['shapelib','dbflib']
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <js...@us...> - 2007-12-26 20:01:33
|
Revision: 4791
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4791&view=rev
Author: jswhit
Date: 2007-12-26 12:01:29 -0800 (Wed, 26 Dec 2007)
Log Message:
-----------
remove hidden dependency on setuptools
Modified Paths:
--------------
trunk/toolkits/basemap/Changelog
Modified: trunk/toolkits/basemap/Changelog
===================================================================
--- trunk/toolkits/basemap/Changelog 2007-12-26 17:10:34 UTC (rev 4790)
+++ trunk/toolkits/basemap/Changelog 2007-12-26 20:01:29 UTC (rev 4791)
@@ -1,4 +1,5 @@
version 0.9.9 (not yet released)
+ * removed hidden dependency on setuptools (in dap module).
* fixed exception handling bug in code that looks for
intersection between boundary feature and map projection
region.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2007-12-26 17:10:48
|
Revision: 4790
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4790&view=rev
Author: efiring
Date: 2007-12-26 09:10:34 -0800 (Wed, 26 Dec 2007)
Log Message:
-----------
Warning instead of exception if matplotlib.use() is called too late.
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/lib/matplotlib/__init__.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2007-12-26 07:51:19 UTC (rev 4789)
+++ trunk/matplotlib/CHANGELOG 2007-12-26 17:10:34 UTC (rev 4790)
@@ -1,3 +1,6 @@
+2007-12-26 Reduce too-late use of matplotlib.use() to a warning
+ instead of an exception, for backwards compatibility - EF
+
2007-12-25 Fix bug in errorbar, identified by Noriko Minakawa - EF
2007-12-25 Changed masked array importing to work with the upcoming
Modified: trunk/matplotlib/lib/matplotlib/__init__.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/__init__.py 2007-12-26 07:51:19 UTC (rev 4789)
+++ trunk/matplotlib/lib/matplotlib/__init__.py 2007-12-26 17:10:34 UTC (rev 4790)
@@ -727,8 +727,11 @@
except:
from config import rcParams, rcdefaults
-_use_error_msg = """ matplotlib.use() must be called *before* pylab
-or matplotlib.backends is imported for the first time."""
+_use_error_msg = """ This call to matplotlib.use() has no effect
+because the the backend has already been chosen;
+matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
+or matplotlib.backends is imported for the first time.
+"""
def use(arg):
"""
@@ -747,7 +750,7 @@
be called before importing matplotlib.backends.
"""
if 'matplotlib.backends' in sys.modules:
- raise RuntimeError(_use_error_msg)
+ warnings.warn(_use_error_msg)
be_parts = arg.split('.')
name = validate_backend(be_parts[0])
rcParams['backend'] = name
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2007-12-26 07:51:22
|
Revision: 4789
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4789&view=rev
Author: efiring
Date: 2007-12-25 23:51:19 -0800 (Tue, 25 Dec 2007)
Log Message:
-----------
Fix bug in errorbar, reported by Noriko Minakawa
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/lib/matplotlib/axes.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2007-12-26 07:23:27 UTC (rev 4788)
+++ trunk/matplotlib/CHANGELOG 2007-12-26 07:51:19 UTC (rev 4789)
@@ -1,3 +1,5 @@
+2007-12-25 Fix bug in errorbar, identified by Noriko Minakawa - EF
+
2007-12-25 Changed masked array importing to work with the upcoming
numpy 1.05 (now the maskedarray branch) as well as with
earlier versions. - EF
Modified: trunk/matplotlib/lib/matplotlib/axes.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/axes.py 2007-12-26 07:23:27 UTC (rev 4788)
+++ trunk/matplotlib/lib/matplotlib/axes.py 2007-12-26 07:51:19 UTC (rev 4789)
@@ -3684,6 +3684,8 @@
lines_kw['linewidth']=kwargs['linewidth']
if 'lw' in kwargs:
lines_kw['lw']=kwargs['lw']
+ if 'transform' in kwargs:
+ lines_kw['transform'] = kwargs['transform']
# arrays fine here, they are booleans and hence not units
if not iterable(lolims):
@@ -3719,6 +3721,8 @@
plot_kw['markeredgewidth']=kwargs['markeredgewidth']
if 'mew' in kwargs:
plot_kw['mew']=kwargs['mew']
+ if 'transform' in kwargs:
+ plot_kw['transform'] = kwargs['transform']
if xerr is not None:
if iterable(xerr) and len(xerr)==2 and iterable(xerr[0]) and iterable(xerr[1]):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ef...@us...> - 2007-12-26 07:23:32
|
Revision: 4788
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4788&view=rev
Author: efiring
Date: 2007-12-25 23:23:27 -0800 (Tue, 25 Dec 2007)
Log Message:
-----------
Make numerix.ma and numerix.npyma work with numpy 1.05
The numpy maskedarray branch is scheduled to become the
trunk for 1.05. It includes a change from ma.py being in
numpy/core to ma being a module under numpy, so the import
syntax is different in numerix.ma and numerix.npyma.
Modified Paths:
--------------
trunk/matplotlib/CHANGELOG
trunk/matplotlib/lib/matplotlib/numerix/ma/__init__.py
trunk/matplotlib/lib/matplotlib/numerix/npyma/__init__.py
Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG 2007-12-21 19:40:59 UTC (rev 4787)
+++ trunk/matplotlib/CHANGELOG 2007-12-26 07:23:27 UTC (rev 4788)
@@ -1,3 +1,7 @@
+2007-12-25 Changed masked array importing to work with the upcoming
+ numpy 1.05 (now the maskedarray branch) as well as with
+ earlier versions. - EF
+
2007-12-16 rec2csv saves doubles without losing precision. Also, it
does not close filehandles passed in open. - JDH,ADS
Modified: trunk/matplotlib/lib/matplotlib/numerix/ma/__init__.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/numerix/ma/__init__.py 2007-12-21 19:40:59 UTC (rev 4787)
+++ trunk/matplotlib/lib/matplotlib/numerix/ma/__init__.py 2007-12-26 07:23:27 UTC (rev 4788)
@@ -13,7 +13,10 @@
from maskedarray import *
print "using maskedarray"
else:
- from numpy.core.ma import *
+ try:
+ from numpy.ma import * # numpy 1.05 and later
+ except ImportError:
+ from numpy.core.ma import * # earlier
#print "using ma"
def getmaskorNone(obj):
_msk = getmask(obj)
Modified: trunk/matplotlib/lib/matplotlib/numerix/npyma/__init__.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/numerix/npyma/__init__.py 2007-12-21 19:40:59 UTC (rev 4787)
+++ trunk/matplotlib/lib/matplotlib/numerix/npyma/__init__.py 2007-12-26 07:23:27 UTC (rev 4788)
@@ -4,5 +4,8 @@
from maskedarray import *
print "using maskedarray"
else:
- from numpy.core.ma import *
+ try:
+ from numpy.ma import * # numpy 1.05 and later
+ except ImportError:
+ from numpy.core.ma import * # earlier
#print "using ma"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <md...@us...> - 2007-12-21 19:41:07
|
Revision: 4787
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4787&view=rev
Author: mdboom
Date: 2007-12-21 11:40:59 -0800 (Fri, 21 Dec 2007)
Log Message:
-----------
Merged revisions 4773-4785 via svnmerge from
http://matplotlib.svn.sf.net/svnroot/matplotlib/trunk/matplotlib
........
r4783 | mdboom | 2007-12-21 10:08:38 -0500 (Fri, 21 Dec 2007) | 2 lines
Add size-dependent highly-accurate arc drawing.
........
r4785 | jdh2358 | 2007-12-21 11:22:42 -0500 (Fri, 21 Dec 2007) | 2 lines
added unit support to arc
........
Modified Paths:
--------------
branches/transforms/API_CHANGES
branches/transforms/CODING_GUIDE
branches/transforms/examples/units/ellipse_with_units.py
branches/transforms/lib/matplotlib/axes.py
branches/transforms/lib/matplotlib/legend.py
branches/transforms/lib/matplotlib/mlab.py
branches/transforms/lib/matplotlib/patches.py
branches/transforms/unit/ellipse_large.py
Property Changed:
----------------
branches/transforms/
Property changes on: branches/transforms
___________________________________________________________________
Name: svnmerge-integrated
- /trunk/matplotlib:1-4772
+ /trunk/matplotlib:1-4785
Modified: branches/transforms/API_CHANGES
===================================================================
--- branches/transforms/API_CHANGES 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/API_CHANGES 2007-12-21 19:40:59 UTC (rev 4787)
@@ -169,6 +169,9 @@
END OF TRANSFORMS REFACTORING
+ For csv2rec, checkrows=0 is the new default indicating all rows
+ will be checked for type inference
+
A warning is issued when an image is drawn on log-scaled
axes, since it will not log-scale the image data.
Modified: branches/transforms/CODING_GUIDE
===================================================================
--- branches/transforms/CODING_GUIDE 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/CODING_GUIDE 2007-12-21 19:40:59 UTC (rev 4787)
@@ -12,6 +12,9 @@
# checking out the main src
svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/matplotlib matplotlib --username=youruser --password=yourpass
+# branch checkouts, eg the transforms branch
+svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/transforms transbranch
+
== Committing changes ==
When committing changes to matplotlib, there are a few things to bear
@@ -27,12 +30,6 @@
support 2.3, so avoid 2.4 only features like decorators until we
remove 2.3 support
- * Are your changes Numeric, numarray and numpy compatible? Try
- running simple_plot.py or image_demo.py with --Numeric, --numarray
- and --numpy (Note, someone should add examples to
- backend_driver.py which explicitly require numpy, numarray and
- Numeric so we can automatically catch these)
-
* Can you pass examples/backend_driver.py? This is our poor man's
unit test.
@@ -49,9 +46,8 @@
For numpy, use:
import numpy as npy
- ...
a = npy.array([1,2,3])
- ...
+
For masked arrays, use:
import matplotlib.numerix.npyma as ma
@@ -64,16 +60,20 @@
For matplotlib main module, use:
import matplotlib as mpl
- ...
mpl.rcParams['xtick.major.pad'] = 6
-For matplotlib modules, use:
+For matplotlib modules (or any other modules), use:
- import matplotlib.cbook as cbook as mpl_cbook
- ...
- if mpl_cbook.iterable(z):
- ...
+ import matplotlib.cbook as cbook
+
+ if cbook.iterable(z):
+ pass
+ We prefer this over the equivalent 'from matplotlib import cbook'
+ because the latter is ambiguous whether cbook is a module or a
+ function to the new developer. The former makes it explcit that
+ you are importing a module or package.
+
== Naming, spacing, and formatting conventions ==
In general, we want to hew as closely as possible to the standard
@@ -114,15 +114,6 @@
python, C and C++
-When importing modules from the matplotlib namespace
-
- import matplotlib.cbook as cbook # DO
- from matplotlib import cbook #DONT
-
-because the latter is ambiguous whether cbook is a module or a
-function to the new developer. The former makes it explcit that you
-are importing a module or package.
-
; and similarly for c++-mode-hook and c-mode-hook
(add-hook 'python-mode-hook
(lambda ()
Modified: branches/transforms/examples/units/ellipse_with_units.py
===================================================================
--- branches/transforms/examples/units/ellipse_with_units.py 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/examples/units/ellipse_with_units.py 2007-12-21 19:40:59 UTC (rev 4787)
@@ -1,5 +1,5 @@
"""
-Compare the ellipse generated with arcs versus a polygonal approximation
+Compare the ellipse generated with arcs versus a polygonal approximation
"""
from basic_units import cm
import numpy as npy
@@ -46,4 +46,24 @@
#fig.savefig('ellipse_compare.png')
fig.savefig('ellipse_compare')
+fig = figure()
+ax = fig.add_subplot(211, aspect='auto')
+ax.fill(x, y, alpha=0.2, facecolor='yellow', edgecolor='yellow', linewidth=1, zorder=1)
+
+e1 = patches.Arc((xcenter, ycenter), width, height,
+ angle=angle, linewidth=2, fill=False, zorder=2)
+
+ax.add_patch(e1)
+
+ax = fig.add_subplot(212, aspect='equal')
+ax.fill(x, y, alpha=0.2, facecolor='green', edgecolor='green', zorder=1)
+e2 = patches.Arc((xcenter, ycenter), width, height,
+ angle=angle, linewidth=2, fill=False, zorder=2)
+
+
+ax.add_patch(e2)
+
+#fig.savefig('arc_compare.png')
+fig.savefig('arc_compare')
+
show()
Modified: branches/transforms/lib/matplotlib/axes.py
===================================================================
--- branches/transforms/lib/matplotlib/axes.py 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/lib/matplotlib/axes.py 2007-12-21 19:40:59 UTC (rev 4787)
@@ -321,6 +321,8 @@
ret.append(seg)
def makefill(x, y):
+ x = self.axes.convert_xunits(x)
+ y = self.axes.convert_yunits(y)
facecolor = self._get_next_cycle_color()
seg = mpatches.Polygon(zip(x, y),
facecolor = facecolor,
@@ -363,6 +365,8 @@
def makefill(x, y):
facecolor = color
+ x = self.axes.convert_xunits(x)
+ y = self.axes.convert_yunits(y)
seg = mpatches.Polygon(zip(x, y),
facecolor = facecolor,
fill=True,
Modified: branches/transforms/lib/matplotlib/legend.py
===================================================================
--- branches/transforms/lib/matplotlib/legend.py 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/lib/matplotlib/legend.py 2007-12-21 19:40:59 UTC (rev 4787)
@@ -140,7 +140,7 @@
self._offsetTransform = Affine2D()
self._parentTransform = BboxTransformTo(parent.bbox)
Artist.set_transform(self, self._offsetTransform + self._parentTransform)
-
+
if loc is None:
loc = rcParams["legend.loc"]
if not self.isaxes and loc in [0,'best']:
@@ -226,7 +226,7 @@
bboxesAll = bboxesText
bboxesAll.extend(bboxesHandles)
bbox = Bbox.union(bboxesAll)
-
+
self.save = bbox
ibox = bbox.inverse_transformed(self.get_transform())
@@ -328,7 +328,7 @@
if isinstance(handle, Rectangle):
transform = handle.get_data_transform() + inverse_transform
- bboxes.append(handle._bbox.transformed(transform))
+ bboxes.append(handle.get_bbox().transformed(transform))
else:
transform = handle.get_transform() + inverse_transform
bboxes.append(handle.get_path().get_extents(transform))
@@ -499,7 +499,7 @@
bbox = bbox.expanded(1 + self.pad, 1 + self.pad)
l, b, w, h = bbox.bounds
self.legendPatch.set_bounds(l, b, w, h)
-
+
ox, oy = 0, 0 # center
if iterable(self._loc) and len(self._loc)==2:
Modified: branches/transforms/lib/matplotlib/mlab.py
===================================================================
--- branches/transforms/lib/matplotlib/mlab.py 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/lib/matplotlib/mlab.py 2007-12-21 19:40:59 UTC (rev 4787)
@@ -2045,7 +2045,7 @@
return newrec.view(npy.recarray)
-def csv2rec(fname, comments='#', skiprows=0, checkrows=5, delimiter=',',
+def csv2rec(fname, comments='#', skiprows=0, checkrows=0, delimiter=',',
converterd=None, names=None, missing=None):
"""
Load data from comma/space/tab delimited file in fname into a
@@ -2075,7 +2075,7 @@
names, if not None, is a list of header names. In this case, no
header will be read from the file
- if no rows are found, None is returned See examples/loadrec.py
+ if no rows are found, None is returned -- see examples/loadrec.py
"""
if converterd is None:
Modified: branches/transforms/lib/matplotlib/patches.py
===================================================================
--- branches/transforms/lib/matplotlib/patches.py 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/lib/matplotlib/patches.py 2007-12-21 19:40:59 UTC (rev 4787)
@@ -366,10 +366,11 @@
Patch.__init__(self, **kwargs)
- left, right = self.convert_xunits((xy[0], xy[0] + width))
- bottom, top = self.convert_yunits((xy[1], xy[1] + height))
- self._bbox = transforms.Bbox.from_extents(left, bottom, right, top)
- self._rect_transform = transforms.BboxTransformTo(self._bbox)
+ self._x = xy[0]
+ self._y = xy[1]
+ self._width = width
+ self._height = height
+ self._rect_transform = transforms.IdentityTransform()
__init__.__doc__ = cbook.dedent(__init__.__doc__) % artist.kwdocd
def get_path(self):
@@ -378,6 +379,19 @@
"""
return Path.unit_rectangle()
+ def _update_patch_transform(self):
+ x = self.convert_xunits(self._x)
+ y = self.convert_yunits(self._y)
+ width = self.convert_xunits(self._width)
+ height = self.convert_yunits(self._height)
+ bbox = transforms.Bbox.from_bounds(x, y, width, height)
+ self._rect_transform = transforms.BboxTransformTo(bbox)
+ self._combined_transform = self._rect_transform + artist.Artist.get_transform(self)
+
+ def draw(self, renderer):
+ self._update_patch_transform()
+ Patch.draw(self, renderer)
+
def get_patch_transform(self):
return self._rect_transform
@@ -388,19 +402,19 @@
def get_x(self):
"Return the left coord of the rectangle"
- return self._bbox.x0
+ return self._x
def get_y(self):
"Return the bottom coord of the rectangle"
- return self._bbox.y0
+ return self._y
def get_width(self):
"Return the width of the rectangle"
- return self._bbox.width
+ return self._width
def get_height(self):
"Return the height of the rectangle"
- return self._bbox.height
+ return self._height
def set_x(self, x):
"""
@@ -408,9 +422,7 @@
ACCEPTS: float
"""
- w = self._bbox.width
- x = self.convert_xunits(x)
- self._bbox.intervalx = (x, x + w)
+ self._x = x
def set_y(self, y):
"""
@@ -418,9 +430,7 @@
ACCEPTS: float
"""
- h = self._bbox.height
- y = self.convert_yunits(y)
- self._bbox.intervaly = (y, y + h)
+ self._y = y
def set_width(self, w):
"""
@@ -428,8 +438,7 @@
ACCEPTS: float
"""
- w = self.convert_xunits(w)
- self._bbox.x1 = self._bbox.x0 + w
+ self._width = w
def set_height(self, h):
"""
@@ -437,8 +446,7 @@
ACCEPTS: float
"""
- h = self.convert_yunits(h)
- self._bbox.y1 = self._bbox.y0 + h
+ self._height = h
def set_bounds(self, *args):
"""
@@ -450,10 +458,13 @@
l,b,w,h = args[0]
else:
l,b,w,h = args
- l, w = self.convert_xunits((l, w))
- b, h = self.convert_yunits((b, h))
- self._bbox.bounds = l,b,w,h
+ self._x = l
+ self._y = b
+ self._width = w
+ self._height = h
+ def get_bbox(self):
+ return transforms.Bbox.from_bounds(self._x, self._y, self._width, self._height)
class RegularPolygon(Patch):
"""
@@ -494,7 +505,6 @@
def _get_xy(self):
return self._xy
def _set_xy(self, xy):
- self._xy = xy
self._update_transform()
xy = property(_get_xy, _set_xy)
@@ -588,9 +598,23 @@
"""
Patch.__init__(self, **kwargs)
- self._path = Path.wedge(theta1, theta2)
+ self.center = center
+ self.r = r
+ self.theta1 = theta1
+ self.theta2 = theta2
+ self._patch_transform = transforms.IdentityTransform()
+ self._path = Path.wedge(self.theta1, self.theta2)
+
+ def draw(self, renderer):
+ x = self.convert_xunits(self.center[0])
+ y = self.convert_yunits(self.center[1])
+ rx = self.convert_xunits(self.r)
+ ry = self.convert_yunits(self.r)
self._patch_transform = transforms.Affine2D() \
- .scale(r).translate(*center)
+ .scale(rx, ry).translate(x, y)
+ self._combined_transform = self._patch_transform + \
+ artist.Artist.get_transform(self)
+ Patch.draw(self, renderer)
__init__.__doc__ = cbook.dedent(__init__.__doc__) % artist.kwdocd
def get_path(self):
@@ -806,8 +830,6 @@
%(Patch)s
"""
- self.center = xy
- self.radius = radius
RegularPolygon.__init__(self, xy,
resolution,
radius,
@@ -821,7 +843,7 @@
A scale-free ellipse
"""
def __str__(self):
- return "Ellipse(%d,%d;%dx%d)"%(self.center[0],self.center[1],self.width,self.height)
+ return "Ellipse(%s,%s;%sx%s)"%(self.center[0],self.center[1],self.width,self.height)
def __init__(self, xy, width, height, angle=0.0, **kwargs):
"""
@@ -835,18 +857,28 @@
"""
Patch.__init__(self, **kwargs)
- self._center = xy
- self._width, self._height = width, height
- self._angle = angle
- self._recompute_transform()
+ self.center = xy
+ self.width, self.height = width, height
+ self.angle = angle
self._path = Path.unit_circle()
+ self._patch_transform = transforms.IdentityTransform()
def _recompute_transform(self):
+ center = (self.convert_xunits(self.center[0]),
+ self.convert_yunits(self.center[1]))
+ width = self.convert_xunits(self.width)
+ height = self.convert_yunits(self.height)
self._patch_transform = transforms.Affine2D() \
- .scale(self._width * 0.5, self._height * 0.5) \
- .rotate_deg(self._angle) \
- .translate(*self._center)
+ .scale(width * 0.5, height * 0.5) \
+ .rotate_deg(self.angle) \
+ .translate(*center)
+ self._combined_transform = self._patch_transform + \
+ artist.Artist.get_transform(self)
+ def draw(self, renderer):
+ self._recompute_transform()
+ Patch.draw(self, renderer)
+
def get_path(self):
"""
Return the vertices of the rectangle
@@ -861,27 +893,7 @@
x, y = self.get_transform().inverted().transform_point((ev.x, ev.y))
return (x*x + y*y) <= 1.0, {}
- def _get_center(self):
- return self._center
- def _set_center(self, center):
- self._center = center
- self._recompute_transform()
- center = property(_get_center, _set_center)
- def _get_xy(self):
- return self._xy
- def _set_xy(self, xy):
- self._xy = xy
- self._recompute_transform()
- xy = property(_get_xy, _set_xy)
-
- def _get_angle(self):
- return self._angle
- def _set_angle(self, angle):
- self._angle = angle
- self._recompute_transform()
- angle = property(_get_angle, _set_angle)
-
class Circle(Ellipse):
"""
A circle patch
@@ -912,9 +924,14 @@
"""
An elliptical arc. Because it performs various optimizations, it
can not be filled.
+
+ The arc must be used in an Axes instance it cannot be added
+ directly to a Figure) because it is optimized to only render the
+ segments that are inside the axes bounding box with high
+ resolution.
"""
def __str__(self):
- return "Arc(%d,%d;%dx%d)"%(self.center[0],self.center[1],self.width,self.height)
+ return "Arc(%s,%s;%sx%s)"%(self.center[0],self.center[1],self.width,self.height)
def __init__(self, xy, width, height, angle=0.0, theta1=0.0, theta2=360.0, **kwargs):
"""
@@ -938,8 +955,8 @@
Ellipse.__init__(self, xy, width, height, angle, **kwargs)
- self._theta1 = theta1
- self._theta2 = theta2
+ self.theta1 = theta1
+ self.theta2 = theta2
def draw(self, renderer):
"""
@@ -984,13 +1001,20 @@
pairs of vertices are drawn using the bezier arc
approximation technique implemented in Path.arc().
"""
+ if not hasattr(self, 'axes'):
+ raise RuntimeError('Arcs can only be used in Axes instances')
+
+ self._recompute_transform()
+
# Get the width and height in pixels
+ width = self.convert_xunits(self.width)
+ height = self.convert_yunits(self.height)
width, height = self.get_transform().transform_point(
- (self._width, self._height))
- inv_error = (1.0 / 1.89818e-6)
+ (width, height))
+ inv_error = (1.0 / 1.89818e-6) * 0.5
if width < inv_error and height < inv_error:
- self._path = Path.arc(self._theta1, self._theta2)
+ self._path = Path.arc(self.theta1, self.theta2)
return Patch.draw(self, renderer)
def iter_circle_intersect_on_line(x0, y0, x1, y1):
@@ -1037,7 +1061,6 @@
if x >= x0e and x <= x1e and y >= y0e and y <= y1e:
yield x, y
-
# Transforms the axes box_path so that it is relative to the unit
# circle in the same way that it is relative to the desired
# ellipse.
@@ -1050,8 +1073,8 @@
TWOPI = PI * 2.0
RAD2DEG = 180.0 / PI
DEG2RAD = PI / 180.0
- theta1 = self._theta1
- theta2 = self._theta2
+ theta1 = self.theta1
+ theta2 = self.theta2
thetas = {}
# For each of the point pairs, there is a line segment
for p0, p1 in zip(box_path.vertices[:-1], box_path.vertices[1:]):
Modified: branches/transforms/unit/ellipse_large.py
===================================================================
--- branches/transforms/unit/ellipse_large.py 2007-12-21 18:53:29 UTC (rev 4786)
+++ branches/transforms/unit/ellipse_large.py 2007-12-21 19:40:59 UTC (rev 4787)
@@ -6,7 +6,7 @@
import math
from pylab import *
-from matplotlib.patches import Arc
+from matplotlib.patches import Ellipse, Arc
# given a point x, y
x = 2692.440
@@ -47,39 +47,75 @@
ellipseLine = ax.plot( xs, ys, **kwargs )
+
+
##################################################
# make the axes
-ax = subplot( 211, aspect='equal' )
-ax.set_aspect( 'equal', 'datalim' )
+ax1 = subplot( 311, aspect='equal' )
+ax1.set_aspect( 'equal', 'datalim' )
# make the lower-bound ellipse
diam = (r - delta) * 2.0
-lower_ellipse = Arc( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkgreen" )
-ax.add_patch( lower_ellipse )
+lower_ellipse = Ellipse( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkgreen" )
+ax1.add_patch( lower_ellipse )
# make the target ellipse
diam = r * 2.0
-target_ellipse = Arc( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkred" )
-ax.add_patch( target_ellipse )
+target_ellipse = Ellipse( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkred" )
+ax1.add_patch( target_ellipse )
# make the upper-bound ellipse
diam = (r + delta) * 2.0
-upper_ellipse = Arc( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkblue" )
-ax.add_patch( upper_ellipse )
+upper_ellipse = Ellipse( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkblue" )
+ax1.add_patch( upper_ellipse )
# make the target
diam = delta * 2.0
+target = Ellipse( (x, y), diam, diam, 0.0, fill=False, edgecolor="#DD1208" )
+ax1.add_patch( target )
+
+# give it a big marker
+ax1.plot( [x], [y], marker='x', linestyle='None', mfc='red', mec='red', markersize=10 )
+
+##################################################
+# make the axes
+ax = subplot( 312, aspect='equal' , sharex=ax1, sharey=ax1)
+ax.set_aspect( 'equal', 'datalim' )
+
+# make the lower-bound arc
+diam = (r - delta) * 2.0
+lower_arc = Arc( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkgreen" )
+ax.add_patch( lower_arc )
+
+# make the target arc
+diam = r * 2.0
+target_arc = Arc( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkred" )
+ax.add_patch( target_arc )
+
+# make the upper-bound arc
+diam = (r + delta) * 2.0
+upper_arc = Arc( (0.0, 0.0), diam, diam, 0.0, fill=False, edgecolor="darkblue" )
+ax.add_patch( upper_arc )
+
+# make the target
+diam = delta * 2.0
target = Arc( (x, y), diam, diam, 0.0, fill=False, edgecolor="#DD1208" )
ax.add_patch( target )
# give it a big marker
ax.plot( [x], [y], marker='x', linestyle='None', mfc='red', mec='red', markersize=10 )
+
+
+
+
##################################################
# now lets do the same thing again using a custom ellipse function
+
+
# make the axes
-ax = subplot( 212, aspect='equal', sharex=ax, sharey=ax )
+ax = subplot( 313, aspect='equal', sharex=ax1, sharey=ax1 )
ax.set_aspect( 'equal', 'datalim' )
# make the lower-bound ellipse
@@ -97,11 +133,17 @@
# give it a big marker
ax.plot( [x], [y], marker='x', linestyle='None', mfc='red', mec='red', markersize=10 )
+
+# give it a big marker
+ax.plot( [x], [y], marker='x', linestyle='None', mfc='red', mec='red', markersize=10 )
+
##################################################
# lets zoom in to see the area of interest
-ax.set_xlim(2650, 2735)
-ax.set_ylim(6705, 6735)
+ax1.set_xlim(2650, 2735)
+ax1.set_ylim(6705, 6735)
+
+savefig("ellipse")
show()
-# savefig("ellipse")
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|