Softanza
StartFrançais
Softanza
The library documents itself · Geo & cartography

stzGeoPoints

30 own methods · 1 forms written with extensions, listed under their method

the source: base/geo/stzGeoPoints.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; 23 were composed from each method's signature and run for this page, on a fresh object, for example cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}' oW = StzGeoFeaturesFromJson(cJ) o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW). 7 methods have none yet. Examples run on 2026-10-04 07:31 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
Points
(no comment in the source: the name reads as a sentence) points
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.Points() )
#--> [ 1, 1, 2, 2, 3, 3 ]
composed from the signature, run for this page
no extension
Count
(no comment in the source: the name reads as a sentence) count
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? o1.Count()
#--> 3
composed from the signature, run for this page
no extension
Window
(no comment in the source: the name reads as a sentence) windowno extension
WindowRings
the window as the engine takes it: every part's OUTER ring. Built once at birth and handed out rather than rebuilt, because GE7b's fields ask for it per call and rebuilding would be the same list twice.
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.WindowRings() )
#--> [ [ 0, 0, 4, 0, 4, 4, 0, 4, 0, 0 ] ]
composed from the signature, run for this page
no extension
AreaKm2
(no comment in the source: the name reads as a sentence) area km2
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? o1.AreaKm2()
#--> 196869.60
composed from the signature, run for this page
no extension
WindowBox
THE WINDOW'S BOUNDING BOX, which is not the window. Every simulation in this plane places candidates in the box and rejects those outside the window, so the box is part of the engine's contract and a caller building a process needs it too.
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.WindowBox() )
#--> [ 0, 0, 4, 4 ]
composed from the signature, run for this page
no extension
BoxAreaKm2
...and how much ground the BOX covers, which a CLUSTER process needs and the window's own area cannot answer. Parents are drawn in the box rather than in the window on purpose: a cluster whose centre falls just outside still throws children in, and dropping those parents would leave the window's edge visibly emptier than its middle -- the same edge effect Ripley's K corrects for, met on the generating side.
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? o1.BoxAreaKm2()
#--> 196869.60
composed from the signature, run for this page
no extension
PerimeterKm
the window's outline, km -- what Donnelly's edge correction needs
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? o1.PerimeterKm()
#--> 1778.04
composed from the signature, run for this page
no extension
Outside
how many of the points fall outside the window they were said to be observed in. Reported, never dropped: a well across the border is a fact about the data, and a density computed as if it were inside is wrong by one well.
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? o1.Outside()
#--> 0
composed from the signature, run for this page
no extension
DensityPerKm2
(no comment in the source: the name reads as a sentence) density per km2
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? o1.DensityPerKm2()
#--> 0.00
composed from the signature, run for this page
no extension
NearestNeighbourKm
the measures
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.NearestNeighbourKm() )
#--> [ 157.23, 157.18, 157.18 ]
composed from the signature, run for this page
no extension
ClarkEvans
EDGE-CORRECTED, BY DONNELLY. Uncorrected, the index leans toward "dispersed" on every real window -- a point near the border has no neighbours beyond it -- and five hundred uniform points in a window the shape of a country read as dispersed at z = 2.0 the first time this ran. The correction uses the window's perimeter, which is why a pattern carries its window. ClarkEvansUncorrected() is the naive one, for comparison and for readers who know the older literature.
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.ClarkEvans() )
#--> [ [ "r", 0.91 ], [ "z", -0.26 ], [ "observed", 157.19 ], [ "expected", 172.58 ], [ "verdict", "random" ] ]
composed from the signature, run for this page
QCSXTZZZIBWU
ClarkEvansUncorrected
Same as ClarkEvansXT: EDGE-CORRECTED, BY DONNELLY. Uncorrected, the index leans toward "dispersed" on every real window -- a point near the border has no neighbours beyond it -- and five hundred uniform points in a window the shape of a country read as dispersed at z = 2.0 the first time this ran. The correction uses the window's perimeter, which is why a pattern carries its window. ClarkEvansUncorrected() is the naive one, for comparison and for readers who know the older literature. (extended form: takes an options list)
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.ClarkEvansUncorrected() )
#--> [ [ "r", 1.23 ], [ "z", 0.74 ], [ "observed", 157.19 ], [ "expected", 128.09 ], [ "verdict", "random" ] ]
composed from the signature, run for this page
no extension
RipleyK
Ripley's K at each radius, UNCORRECTED FOR THE EDGE. Points near the window's border have fewer neighbours within r than they would in an infinite plane, so K falls short at large r. This is not corrected by formula; it is answered by Envelope(), which simulates the null under the same edge.
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.RipleyK([ 100, 200, 300 ]) )
#--> [ 0, 131246.40, 131246.40 ]
composed from the signature, run for this page
no extension
L
L(r) = sqrt(K / pi) - r: flat at zero under randomness, above it clustered, below it dispersed -- the form a reader can see
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.L([ 100, 200, 300 ]) )
#--> [ -100, 4.39, -95.61 ]
composed from the signature, run for this page
no extension
G
(no comment in the source: the name reads as a sentence) g
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.G([ 100, 200, 300 ]) )
#--> [ 0, 1, 1 ]
composed from the signature, run for this page
no extension
F
(no comment in the source: the name reads as a sentence) fno extension
Envelope
[ [ lo, hi, mean ], ... ] per radius, over pnSims uniform patterns of this pattern's own count in its own window. Thirty-nine is the classic count: an observed K outside the band of 39 is significant at 5% on each side.no extension
EnvelopeL
the same band in L form, so it plots against L()no extension
MeanCentre
where the middle is, and how it spreads
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.MeanCentre() )
#--> [ 2.00, 2.00 ]
composed from the signature, run for this page
no extension
SpatialMedian
(no comment in the source: the name reads as a sentence) spatial median
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.SpatialMedian() )
#--> [ 2.00, 2.00 ]
composed from the signature, run for this page
no extension
Ellipse
[ :lon, :lat, :sd, :major, :minor, :bearing ] -- the centre, the standard distance in km, the semi-axes at one standard deviation, and the bearing of the major axis clockwise from north
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.Ellipse() )
#--> [ [ "lon", 2.00 ], [ "lat", 2.00 ], [ "sd", 128.36 ], [ "major", 181.53 ], [ "minor", 0.07 ], [ "bearing", 44.98 ] ]
composed from the signature, run for this page
no extension
EllipseRing
the ellipse as a lon/lat ring a projection can draw
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.EllipseRing(2) )
#--> [ 3.15, 3.15, 1.42, 1.42, 1.42, 1.42 ]
composed from the signature, run for this page
no extension
Sample
making patterns, seeded -------------------------------------------- uniform ON THE SPHERE inside the window, by rejection in its box
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.Sample(2, 5) )
#--> [ 1.13, 2.91, 0.31, 0.13 ]
composed from the signature, run for this page
no extension
SampleClustered
a Matern cluster process: parents uniform, children uniform in a disk round each, kept only inside the window
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.SampleClustered(2, 5, 2, 2) )
#--> [ 2.53, 3.97, 2.54, 3.98, 2.53, 3.97, 2.54, 3.98, 2.52, 3.98, 3.19, 1.86, 3.20, 1.88, 3.21, 1.85, 3.20, 1.85, 3.20, 1.88 ]
composed from the signature, run for this page
no extension
SampleDispersed
a hard-core process: no two points closer than pnMinKm. Fewer than asked when the window cannot hold that many discs -- read the count.
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? @@( o1.SampleDispersed(2, 5, 2) )
#--> [ 0.70, 0.13, 1.19, 0.00 ]
composed from the signature, run for this page
no extension
With
the same pattern object, on a new set of points in the same windowno extension
Findings
what the gate owes a patternno extension
IsSound
(no comment in the source: the name reads as a sentence) is sound
composed example
cJ = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"A"},"geometry":{"type":"Polygon","coordinates":[[[0,0],[4,0],[4,4],[0,4],[0,0]]]}}]}'
oW = StzGeoFeaturesFromJson(cJ)
o1 = StzGeoPoints([ 1, 1, 2, 2, 3, 3 ], oW)
? o1.IsSound()
#--> 1
composed from the signature, run for this page
no extension