The library documents itself · Geo & cartography
stzGeoProjection
53 own methods · 17 forms written with extensions, listed under their method
the source: base/geo/stzGeoProjection.ring(opens in a new tab) · All classes · The area reference: Geo & cartography
Under each method, its extensions (Q CS XT Z ZZ IB W U): bold and ticked, it exists; struck, it does not. The extensions and what they mean
Examples: 0 come from the library's tests; 20 were composed from each method's signature and run for this page, on a fresh object, for example o1 = new stzGeoProjection(:CylindricalEqualArea). 33 methods have none yet. Examples run on 2026-10-03 12:54 inside the library at commit 0e72e2e2c.
Method
Explanation, as the source carries it
init
(no comment in the source: the name reads as a sentence) initno extension
Name
(no comment in the source: the name reads as a sentence) nameno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.Name() #--> CylindricalEqualAreacomposed from the signature, run for this page
KindNumber
(no comment in the source: the name reads as a sentence) kind numberno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.KindNumber() #--> 3composed from the signature, run for this page
Params
THE ELEVEN NUMBERS, the shape the engine readsno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.Params() ) #--> [ 3, 0, 0, 0, 0, 0, 150, 480, 250, 0, 0.70 ]composed from the signature, run for this page
DistortionAt
:h the scale along the MERIDIAN, 1 meaning true :k the scale along the PARALLEL :a, :b the semi-axes of Tissot's indicatrix -- the greatest and least scale in ANY direction. They are NOT h and k: those are the scales along two particular directions, which need not be the extremes, and confusing the pairs is the classic error in this subject. :areal the area scale. 1 everywhere on an equal-area projection. :angular the largest angle this place bends, degrees. 0 everywhere on a conformal one. :crossing the angle the meridian and parallel cross at on paper.no extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.DistortionAt(2, 5) ) #--> [ [ "h", 1.00 ], [ "k", 1.00 ], [ "a", 1.00 ], [ "b", 1.00 ], [ "areal", 1.00 ], [ "angular", 0.44 ], [ "crossing", 90 ] ]composed from the signature, run for this page
ArealScaleAt
HOW MUCH BIGGER OR SMALLER THIS PLACE IS DRAWN than it really is. On a Mercator at 70 degrees it is 8.5, which is the whole Greenland argument in one number.no extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.ArealScaleAt(2, 5) #--> 1.00composed from the signature, run for this page
AngularDistortionAt
(no comment in the source: the name reads as a sentence) angular distortion atno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.AngularDistortionAt(2, 5) #--> 0.44composed from the signature, run for this page
Distortion
The means are weighted by GROUND -- cos(latitude) per cell -- because an unweighted average over a latitude grid counts the polar rows, which are slivers, as heavily as the equatorial ones, which are not. That flatters exactly the projections that are worst at the poles, which are the ones a reader most needs warning about.QCSXTZZZIBWU
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.Distortion() ) #--> [ [ "arealmin", 1.00 ], [ "arealmax", 1.00 ], [ "arealmean", 1.00 ], [ "angularmax", 170.01 ], [ "angularmean", 30.93 ], [ "sampled", 2592 ] ]composed from the signature, run for this page
HoldsItsClaim
DOES THIS PROJECTION KEEP ITS OWN PROMISE, measured rather than declared? An equal-area projection whose areal scale is not 1 everywhere has a wrong formula, and so does a conformal one that bends an angle. It is the check that caught two real defects the day this gallery was written -- a Mollweide half with the wrong normalisation, and a symmetry claim made for a projection that is a triangle.no extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.HoldsItsClaim() #--> 1composed from the signature, run for this page
IndicatrixAt
It is built by PROJECTING A SMALL CIRCLE rather than by drawing the ellipse the numbers above describe. The two agree in the limit and the first is the honest one: it shows what the projection actually does to a circle of that size, including the bending an ellipse cannot represent -- which at a radius anybody can see is not nothing.QCSXTZZZIBWU
IsEqualArea
what kind of lie this projection tellsno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.IsEqualArea() #--> 1composed from the signature, run for this page
IsConformal
(no comment in the source: the name reads as a sentence) is conformalno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.IsConformal() #--> 0composed from the signature, run for this page
IsAzimuthal
(no comment in the source: the name reads as a sentence) is azimuthalno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.IsAzimuthal() #--> 0composed from the signature, run for this page
IsConic
(no comment in the source: the name reads as a sentence) is conicno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.IsConic() #--> 0composed from the signature, run for this page
Rotate
the parameters ------------------------------------------------------ yaw, pitch, roll in degrees: d3's [lambda, phi, gamma]. To centre a globe on a place at (lon, lat), rotate by [-lon, -lat, 0].QCSXTZZZIBWU
CenterOn
(no comment in the source: the name reads as a sentence) center onQCSXTZZZIBWU
Parallels
(no comment in the source: the name reads as a sentence) parallelsQCSXTZZZIBWU
Scale
(no comment in the source: the name reads as a sentence) scaleQCSXTZZZIBWU
Translate
(no comment in the source: the name reads as a sentence) translateQCSXTZZZIBWU
ClipAngle
(no comment in the source: the name reads as a sentence) clip angleQCSXTZZZIBWU
Precision
(no comment in the source: the name reads as a sentence) precisionQCSXTZZZIBWU
ScaleOf
(no comment in the source: the name reads as a sentence) scale ofno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.ScaleOf() #--> 150composed from the signature, run for this page
TranslateOf
(no comment in the source: the name reads as a sentence) translate ofno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.TranslateOf() ) #--> [ 480, 250 ]composed from the signature, run for this page
RotationOf
(no comment in the source: the name reads as a sentence) rotation ofno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.RotationOf() ) #--> [ 0, 0, 0 ]composed from the signature, run for this page
FitToSphere
fitting ------------------------------------------------------------- scale and place so the WHOLE sphere fills a w x h box with pad px of air: what a world map asks forQCSXTZZZIBWU
FitSphereIn
the same for a box [x0, y0, x1, y1] on a larger sheetQCSXTZZZIBWU
FitToPoints
scale and place so these points fill the box: what a map of one country asks forQCSXTZZZIBWU
FitFeaturesIn
scale and place so ALL the features fill the box. This is what "draw Tunisia" means, and it is NOT FitToSphere -- which fits the whole globe and leaves a country a speck in the middle of it. The first sheet of the three countries was drawn that way and came out as three clusters of labels over nothing at all.QCSXTZZZIBWU
FitPointsIn
It exists because the first bloc sheet reached for FitToPoints and then Translate, and Translate REPLACES the translation the fit just computed rather than offsetting it -- so the map left the paper. A fit that takes its box is the method that was missing.QCSXTZZZIBWU
FitToFeatures
(no comment in the source: the name reads as a sentence) fit to featuresQCSXTZZZIBWU
FitToFeature
scale and place so ONE feature fills the box: what "zoom to Tunisia" means, and what a caller does before drawing its governoratesQCSXTZZZIBWU
FitFeatureIn
(no comment in the source: the name reads as a sentence) fit feature inQCSXTZZZIBWU
Project
the two questions --------------------------------------------------- where a place goes: [x, y] in pixels, or [] when it is behind the globe or has no image on this projectionno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.Project(2, 5) ) #--> [ 485.24, 236.93 ]composed from the signature, run for this page
Invert
what place a pixel is: [lon, lat], or [] off the sphereno extension
Line
Each answers PIECES: a list of flat [x1, y1, x2, y2, ...] polylines, one per visible stretch. A line that goes behind a globe or crosses the seam of a flat map comes back in two, cut exactly at the edge.no extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.Line([ 2, 3 ]) ) #--> [ [ 485.24, 242.15 ] ]composed from the signature, run for this page
Ring
a ring as the LINES it is: pieces, cut where the map cuts themno extension
FilledRing
a ring as the POLYGONS it is (GE0c): the same pieces, rejoined along the map's own edge so each one closes and can be filled. A country across the antimeridian comes back as two polygons that meet the two seams; a continent around the pole comes back as one that runs along the bottom of the map.no extension
Graticule
(no comment in the source: the name reads as a sentence) graticuleno extension
Outline
(no comment in the source: the name reads as a sentence) outlineno extension
Arc
the great circle between two places, as piecesno extension
DrawSphereOn
The sphere's fill, the graticule and the outline: what every map stands on. Colours are the caller's; the shapes are the engine's.no extension
DrawGraticuleOn
(no comment in the source: the name reads as a sentence) draw graticule onno extension
DrawOutlineOn
(no comment in the source: the name reads as a sentence) draw outline onno extension
DrawLineOn
(no comment in the source: the name reads as a sentence) draw line onno extension
DrawRingOn
a ring, FILLED where it came back whole and stroked where the seam or the horizon cut it in two -- a cut piece is not a polygon and filling it would draw a shape the sphere does not have A HARO, FILLED -- every piece of it. Since GE0c a cut ring comes back closed along the map's edge, so there is no longer a case where a region can only be outlined.no extension
FilledPolygon
A POLYGON -- an outer ring and its HOLES (GE1) -- closed on the paper. paRings[1] is the outer edge; every ring after it is a hole, bridged into it so a lake inside a country is not filled in as land.no extension
HolesDropped
how many holes the last FilledPolygon could not give: a hole whose outer ring the map cut cannot carry a bridge, and it is countedno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.HolesDropped() #--> 0composed from the signature, run for this page
DrawRingOutlineOn
...and the same ring as an outline only, uncut and unfilledno extension
DrawFeatureOn
a whole feature, from a boundary file (GE1) ------------------------- every part of it, each with its holes -- the islands DN24b's reader dropped and the lakes it filled inno extension
DrawFeaturesOn
(no comment in the source: the name reads as a sentence) draw features onno extension
DrawTissotOn
fit the paper to everything a file holds TISSOT'S INDICATRIX: circles of one true size all over the sphere, projected. Where they stay round the projection keeps shapes; where they stay the same size it keeps areas; where they do neither it says so. The honest way to show what a projection does, and it needs no atlas at all.no extension
Center
the place at the middle of the paper: what the rotation put thereno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? @@( o1.Center() ) #--> [ 0, 0 ]composed from the signature, run for this page
Caption
the projection, named on the picture: a map that does not say how it was flattened is asserting what it cannot checkno extension
composed example
o1 = new stzGeoProjection(:CylindricalEqualArea) ? o1.Caption() #--> CylindricalEqualAreacomposed from the signature, run for this page

