Skip to content

craters

Impact craters generated from a density and age model, or placed by hand, and cut into the terrain.

Key Type Default Range Unit Description
morphometry one of lunar, mars "lunar" Published fits of fresh crater depth, rim height and complex crater shape the craters are shaped with.
generate boolean true Generates craters from the density; off places only the manual craters.
seed integer 1 Seed the craters are generated with; changing it gives a different crater field of the same statistics.
density crater densities {"type": "power_law", ...} Size-frequency distribution of the generated craters: how many of each diameter per unit area.
ages crater ages {"type": "uniform", ...} How generated craters are given ages, which the degradation model wears them down by.
min_diameter number 4.0 (0, inf) m Smallest crater generated, in metres; lower values add many more small craters.
max_diameter number 250.0 (0, inf) m Largest crater generated, in metres; above the smallest.
max_craters integer 0 Most generated craters kept, the largest first; 0 keeps all. Manual craters are always kept, and a cap means tiles no longer match the whole grid.
profile crater profiles {"type": "martin_parkes_dunstan", ...} Shape of a fresh crater's cross-section, scaled to each crater's diameter.
degradation crater degradation {"type": "freshness", ...} How craters wear down from their fresh shape with age.
spacing: Keeps craters of similar size apart by removing conflicting ones, which lowers the density below the model's.
Key Type Default Range Unit Description
diameter_ratio number 1.5 [1, inf) Largest ratio of two craters' diameters, at least 1, for them to count as similar in size and be kept apart.
separation number 0.0 [0, inf) Least distance between the centres of similar-size craters, in larger diameters; 0 disables spacing.
manual[]: Craters placed by hand in the surface's coordinates, added to any generated ones.
Key Type Default Range Unit Description
x number 0.0 Centre along x in the surface's coordinates; the longitude in degrees on a sphere.
y number 0.0 Centre along y in the surface's coordinates; the latitude in degrees on a sphere.
diameter number 0.0 (0, inf) m Rim-to-rim diameter, in metres.
age_gyr number 0.0 [0, inf) Gyr Age in Gyr; older craters are more degraded under a degradation model and are applied earlier in oldest-first order.
id integer 0 Stable ID that seeds the crater's outline; 0 derives one from its position and diameter.
apply: How craters are cut into the terrain: their order, datum, blending, fading and irregular outlines.
Key Type Default Range Unit Description
order one of oldest_first, largest_first "oldest_first" Order in which overlapping craters are applied; later craters overprint earlier ones.
datum one of none, plane, mean_height, centre_height "none" Reference surface each crater's interior is cut relative to, fitted to the ground beneath it; none adds craters onto the terrain everywhere.
datum_fit_radii number 1.0 (0, inf) Radius of the footprint the datum is fitted over, in crater radii.
interior_replacement number 1.0 [0, 1] Share of the interior replaced by datum plus profile, from 0 to 1: 1 erases older relief inside the crater, 0 keeps it.
fade: How craters too small to resolve at the sample spacing fade out.
Key Type Default Range Unit Description
start_samples number 2.0 [0, inf) Samples across a feature's diameter up to which it is left out entirely.
end_samples number 4.0 (0, inf) Samples across a feature's diameter from which it is applied in full; it fades in between the two counts.
shape one of linear, smoothstep, smootherstep, gaussian "smoothstep" Curve of the fade between the start and end sample counts.
blend: Where and how a crater's replaced interior blends into the surrounding terrain.
Key Type Default Range Unit Description
start_radii number 0.8 [0, inf) Distance from the centre, in crater radii, up to which the interior is fully replaced.
end_radii number 1.2 (0, inf) Distance from the centre, in crater radii, from which the surrounding terrain is draped unchanged.
shape one of linear, smoothstep, smootherstep, gaussian "smootherstep" Curve of the transition from the replaced interior to the exterior.
irregularity: Irregular, non-circular crater outlines: which craters have them and how their shapes are drawn.
Key Type Default Range Unit Description
enabled boolean false Gives eligible craters irregular, non-circular outlines; off keeps every crater round.
seed integer 0 Seed the outlines are drawn with, along with each crater's ID; changing it reshapes every irregular crater.
min_diameter number 0.0 [0, inf) m Smallest diameter, in metres, of craters made irregular.
max_diameter number, optional null [0, inf) m Largest diameter, in metres, of craters made irregular; unset has no upper limit.
min_age_gyr number 0.0 [0, inf) Gyr Youngest age, in Gyr, of craters made irregular.
max_age_gyr number, optional null [0, inf) Gyr Oldest age, in Gyr, of craters made irregular; unset has no upper limit.
manual boolean false Makes manual craters irregular too; otherwise only generated craters are.
rough_share number 1.0 [0, 1] Share of eligible craters, from 0 to 1, given rough, wavy rims.
model one of power_law, du_2024 "power_law" How rough rims are drawn.
scatter boolean true With du_2024, scatters each crater's spectrum by the fits' measured misfits and noise.
max_deviation number 0.3 (0, 0.5] With du_2024, the largest deviation of a rim from a circle, in radii; outlines beyond it are scaled down to it.
min_harmonic integer 2 [1, 64] With power_law, the lowest harmonic of the rim's waviness, from 1 to 64.
max_harmonic integer 12 [1, 64] With power_law, the highest harmonic of the rim's waviness, at most 64; higher harmonics add finer wiggles.
elongated_share number 0.054 [0, 1] Share of eligible craters, from 0 to 1, made elliptical, keeping their area.
heading number, optional null rad Heading of elliptical craters' long axes, in radians counter-clockwise from +x; unset gives random headings.
heading_spread number 0.0 [0, inf) rad Largest random turn of a long axis either way from the heading, in radians.
marks_share number 0.0 [0, 1] Share of eligible craters, from 0 to 1, given radial marks: ridges and grooves down the wall, strongest where it is steepest.
marks_knots integer 45 [3, 1024] Random shifts around the crater the marks pass through, from 3 to 1024; more knots give narrower marks.
marks_inner_radii number 0.3 (0, 1) Distance from the centre, in crater radii, where the marks reach full strength.
marks_outer_radii number 0.9 (0, 1) Distance from the centre, in crater radii, where the marks start to fade; at most 1 minus marks_fade_radii.
marks_fade_radii number 0.1 (0, 0.5] Width, in crater radii, over which the marks fade in and out.
roughness: With power_law, the RMS deviation of a rough rim from a circle, in crater radii, drawn per crater.
Key Type Default Range Unit Description
kind one of constant, uniform, normal, log_normal "constant" Kind of distribution the value is drawn from.
a number 0.0 The constant value, the uniform's lower bound, the normal's mean or the log-normal's median.
b number 0.0 The uniform's upper bound, or the standard deviation (of the natural logarithm for a log-normal); unused for a constant.
min number, optional null Lower bound drawn values are clamped to; unset leaves them unbounded below.
max number, optional null Upper bound drawn values are clamped to; unset leaves them unbounded above, which normal and log-normal kinds do not allow.
spectral_slope: With power_law, the exponent s of the rim harmonics' amplitudes, falling as k^-s, drawn per crater; higher values leave less fine waviness.
Key Type Default Range Unit Description
kind one of constant, uniform, normal, log_normal "constant" Kind of distribution the value is drawn from.
a number 0.0 The constant value, the uniform's lower bound, the normal's mean or the log-normal's median.
b number 0.0 The uniform's upper bound, or the standard deviation (of the natural logarithm for a log-normal); unused for a constant.
min number, optional null Lower bound drawn values are clamped to; unset leaves them unbounded below.
max number, optional null Upper bound drawn values are clamped to; unset leaves them unbounded above, which normal and log-normal kinds do not allow.
ellipticity: Long over short rim-to-rim diameter of elliptical craters, drawn per crater; at least 1.
Key Type Default Range Unit Description
kind one of constant, uniform, normal, log_normal "constant" Kind of distribution the value is drawn from.
a number 0.0 The constant value, the uniform's lower bound, the normal's mean or the log-normal's median.
b number 0.0 The uniform's upper bound, or the standard deviation (of the natural logarithm for a log-normal); unused for a constant.
min number, optional null Lower bound drawn values are clamped to; unset leaves them unbounded below.
max number, optional null Upper bound drawn values are clamped to; unset leaves them unbounded above, which normal and log-normal kinds do not allow.
marks_amplitude: Largest radial shift of the wall by the marks, in crater radii, drawn per crater; below marks_fade_radii / 3.75.
Key Type Default Range Unit Description
kind one of constant, uniform, normal, log_normal "constant" Kind of distribution the value is drawn from.
a number 0.0 The constant value, the uniform's lower bound, the normal's mean or the log-normal's median.
b number 0.0 The uniform's upper bound, or the standard deviation (of the natural logarithm for a log-normal); unused for a constant.
min number, optional null Lower bound drawn values are clamped to; unset leaves them unbounded below.
max number, optional null Upper bound drawn values are clamped to; unset leaves them unbounded above, which normal and log-normal kinds do not allow.
rim_smoothing: Rounded rims: each crater's profile smoothed across distance near its rim; off unless sigma_radii is set.
Key Type Default Range Unit Description
sigma_radii number 0.0 [0, inf) Deviation of the Gaussian the profile is smoothed with across distance, in crater radii; larger values round rims more, and 0 leaves them sharp.
inner_radii number 0.8 [0, 1) Inner edge of the smoothed band around the rim, in crater radii; below 1.
outer_radii number 1.2 (1, inf) Outer edge of the smoothed band around the rim, in crater radii; above 1.
shape one of linear, smoothstep, smootherstep, gaussian "smootherstep" How the smoothing fades from full at the rim to none at the band's edges.
strength number 1.0 [0, 1] Share of the smoothed height used at the rim, from 0 to 1; lower values keep more of the sharp crest.
noise: Fractal noise over each crater's footprint and around its rim, keyed to the crater; off unless an amplitude is set.
Key Type Default Range Unit Description
amplitude number 0.0 [0, inf) Amplitude of the noise over the whole footprint, as a share of the crater diameter; it fades out beyond the rim to the profile's reach, and 0 adds none.
wavelength_radii number 0.5 (0, inf) Wavelength of the footprint noise's first octave, in crater radii.
octaves integer 4 [1, 12] Octaves of both noises, from 1 to 12.
gain number 0.5 (0, inf) Weight ratio between successive octaves; positive.
rim_amplitude number 0.0 [0, inf) Amplitude of the extra noise in the band around the rim, as a share of the crater diameter; 0 adds none.
rim_wavelength_radii number 0.1 (0, inf) Wavelength of the rim noise's first octave, in crater radii.
rim_inner_radii number 0.8 [0, 1) Inner edge of the rim noise band, in crater radii; below 1.
rim_outer_radii number 1.2 (1, inf) Outer edge of the rim noise band, in crater radii; above 1.
seed integer 0 Varies the noise of every crater.
texture: Gullies down fresh walls, textured ejecta and older relief buried under the ejecta; off unless an amplitude or mantling is set.
Key Type Default Range Unit Description
wall_streaks number 0.0 [0, inf) Amplitude of the radial gullies down a fresh crater's inner wall, as a share of its diameter; 0 adds none.
wall_streak_width_radii number 0.15 (0, inf) Width of the gullies across the wall, in crater radii.
ejecta number 0.0 [0, inf) Amplitude of the hummocky, radially lineated ejecta around a fresh crater, as a share of the ejecta's thickness (McGetchin et al. 1973); 0 adds none.
ejecta_lineation_radii number 0.15 (0, inf) Width of the ejecta's lineations across, in crater radii at the rim.
mantling number 0.0 [0, 1] Share of older relief buried under the ejecta at the rim, falling with their thickness, from 0 to 1; needs a datum.
ejecta_reach_radii number 3.0 (1, inf) How far ejecta texture and burial reach, in crater radii; above 1.
min_freshness number 0.5 [0, 1) Freshness (depth over fresh depth) at or below which gullies and ejecta texture are worn away, from 0 to below 1.
seed integer 0 Varies the texture of every crater.
slope: Craters on sloping ground with floors offset downslope and rims lowered upslope; needs the plane datum.
Key Type Default Range Unit Description
enabled boolean false Shapes craters asymmetrically along the slope of the ground beneath the layer; off keeps them the same on any slope.
seed integer 0 Varies how far each crater's floor is offset.
upslope_rim number 0.0 [0, 1] Share of the raised rim and ejecta kept straight upslope, from 0 to 1; the rest returns toward the sides.
full_slope number 0.08726646259971647 (0, inf) rad Slope at which the asymmetry is complete, in radians; it rises from none on level ground.
critical_gradient number, optional null (0, inf) Critical gradient Sc, rise over run, toward which downslope transport grows without bound: a crater on a regional gradient S wears 1 / (1 - (S / Sc)^2) times as fast (Roering et al. 1999). Unset wears craters alike on any slope; no lunar value is published.
max_wear_rate number 10.0 [1, inf) Fastest a slope makes craters wear, over level ground: a numerical cap as S nears Sc.
floor_offset: How far the deepest point lies downslope of the centre, in diameters, drawn per crater; below 0.23.
Key Type Default Range Unit Description
kind one of constant, uniform, normal, log_normal "constant" Kind of distribution the value is drawn from.
a number 0.0 The constant value, the uniform's lower bound, the normal's mean or the log-normal's median.
b number 0.0 The uniform's upper bound, or the standard deviation (of the natural logarithm for a log-normal); unused for a constant.
min number, optional null Lower bound drawn values are clamped to; unset leaves them unbounded below.
max number, optional null Upper bound drawn values are clamped to; unset leaves them unbounded above, which normal and log-normal kinds do not allow.
density_map: Map that sets the crater density point by point, scaling the density's size distribution to what it measures; unset keeps the density the same everywhere.
Key Type Default Range Unit Description
measure one of scale, count, areal_fraction "scale" What the map's values measure.
min_diameter number 0.0 m Smallest diameter the map measures, in metres; positive for a count or areal fraction.
max_diameter number, optional null m Largest diameter the map measures, in metres, exclusive; unset for no limit.
area_unit number 1.0 (0, inf) m^2 Square metres per area unit of a count: 1 for per m^2, 1e6 for per km^2.
total boolean true The map counts every feature of its kind, including the secondaries thrown from a crater layer's craters and the boulders a layer throws out around craters, which are taken out of it first; off when it counts only what the layer generates.
field: The map.
Key Type Default Range Unit Description
path string "" GeoTIFF read in the surface's coordinates, relative to the configuration's folder: metres on a plane, longitude and latitude in degrees on a sphere. Empty uses value.
value number 0.0 The field everywhere when no path is given.
band integer 0 Band of the GeoTIFF read, from 0.
method one of nearest, bilinear, cubic "bilinear" How the GeoTIFF is interpolated: nearest or bilinear, which stay within the cells read.
scale number 1.0 (0, inf) Multiplies every cell, such as 0.001 for a map stored in thousandths; positive.
fallback number, optional null Value outside the GeoTIFF and where its cells are no-data or NaN; unset leaves none, and the layer then keeps its own setting there.
periodic_longitude boolean false The GeoTIFF's x is longitude repeating every 360 degrees, so a map from 0 to 360 serves -180 to 180.
completeness: Where the manual craters are a complete catalog: the diameter in metres from which they stand in for generated craters, infinite or no value where there is no catalog. Unset keeps every generated crater.
Key Type Default Range Unit Description
path string "" GeoTIFF read in the surface's coordinates, relative to the configuration's folder: metres on a plane, longitude and latitude in degrees on a sphere. Empty uses value.
value number 0.0 The field everywhere when no path is given.
band integer 0 Band of the GeoTIFF read, from 0.
method one of nearest, bilinear, cubic "bilinear" How the GeoTIFF is interpolated: nearest or bilinear, which stay within the cells read.
scale number 1.0 (0, inf) Multiplies every cell, such as 0.001 for a map stored in thousandths; positive.
fallback number, optional null Value outside the GeoTIFF and where its cells are no-data or NaN; unset leaves none, and the layer then keeps its own setting there.
periodic_longitude boolean false The GeoTIFF's x is longitude repeating every 360 degrees, so a map from 0 to 360 serves -180 to 180.
Every key with its default
{
    "type": "craters",
    "morphometry": "lunar",
    "generate": true,
    "seed": 1,
    "density": {
        "type": "power_law",
        "coefficient": 0.1,
        "exponent": 2.0
    },
    "ages": {
        "type": "uniform",
        "lifetime_gyr": 1.0
    },
    "min_diameter": 4.0,
    "max_diameter": 250.0,
    "spacing": {
        "diameter_ratio": 1.5,
        "separation": 0.0
    },
    "max_craters": 0,
    "manual": [],
    "profile": {
        "type": "martin_parkes_dunstan"
    },
    "degradation": {
        "type": "freshness",
        "cutoff_depth_ratio": 0.04
    },
    "apply": {
        "order": "oldest_first",
        "fade": {
            "start_samples": 2.0,
            "end_samples": 4.0,
            "shape": "smoothstep"
        },
        "datum": "none",
        "datum_fit_radii": 1.0,
        "interior_replacement": 1.0,
        "blend": {
            "start_radii": 0.8,
            "end_radii": 1.2,
            "shape": "smootherstep"
        },
        "irregularity": {
            "enabled": false,
            "seed": 0,
            "min_diameter": 0.0,
            "max_diameter": null,
            "min_age_gyr": 0.0,
            "max_age_gyr": null,
            "manual": false,
            "rough_share": 1.0,
            "model": "power_law",
            "scatter": true,
            "max_deviation": 0.3,
            "roughness": {
                "kind": "uniform",
                "a": 0.01,
                "b": 0.03,
                "min": null,
                "max": null
            },
            "spectral_slope": {
                "kind": "constant",
                "a": 1.5,
                "b": 0.0,
                "min": null,
                "max": null
            },
            "min_harmonic": 2,
            "max_harmonic": 12,
            "elongated_share": 0.054,
            "ellipticity": {
                "kind": "uniform",
                "a": 1.1,
                "b": 1.5,
                "min": null,
                "max": null
            },
            "heading": null,
            "heading_spread": 0.0,
            "marks_share": 0.0,
            "marks_amplitude": {
                "kind": "uniform",
                "a": 0.0,
                "b": 0.005,
                "min": null,
                "max": null
            },
            "marks_knots": 45,
            "marks_inner_radii": 0.3,
            "marks_outer_radii": 0.9,
            "marks_fade_radii": 0.1
        },
        "rim_smoothing": {
            "sigma_radii": 0.0,
            "inner_radii": 0.8,
            "outer_radii": 1.2,
            "shape": "smootherstep",
            "strength": 1.0
        },
        "noise": {
            "amplitude": 0.0,
            "wavelength_radii": 0.5,
            "octaves": 4,
            "gain": 0.5,
            "rim_amplitude": 0.0,
            "rim_wavelength_radii": 0.1,
            "rim_inner_radii": 0.8,
            "rim_outer_radii": 1.2,
            "seed": 0
        },
        "texture": {
            "wall_streaks": 0.0,
            "wall_streak_width_radii": 0.15,
            "ejecta": 0.0,
            "ejecta_lineation_radii": 0.15,
            "mantling": 0.0,
            "ejecta_reach_radii": 3.0,
            "min_freshness": 0.5,
            "seed": 0
        },
        "slope": {
            "enabled": false,
            "seed": 0,
            "floor_offset": {
                "kind": "uniform",
                "a": 0.045,
                "b": 0.194,
                "min": null,
                "max": null
            },
            "upslope_rim": 0.0,
            "full_slope": 0.08726646259971647,
            "critical_gradient": null,
            "max_wear_rate": 10.0
        }
    },
    "density_map": null,
    "completeness": null
}

Used in: example_ages_fresh, example_ages_steady_state, example_ages_uniform, example_albedo_blast_zone, example_albedo_crater_rays, example_albedo_fresh_crater, example_albedo_moon_site, example_albedo_new_crater and 38 more