Elevation Contour Maker

Elevation Contour Maker

Find equal-elevation lines in a single numeric GeoTIFF DEM. Elevation samples are placed at pixel centers, interpolated across adjacent samples, joined into lines, and exported as GeoJSON and SVG.

1. Elevation DEM

Browser-local GeoTIFF, max 8 MiB, 120,000 cells and 1024 per side. One numeric elevation band only.

2. Contour elevation settings

Levels are base + integer × interval, strictly inside the min/max range. The unit is user-declared, not inferred. Up to 80 levels.

Only values between pixel centers are interpolated; the outer half-cell is not estimated. Vertical datum and survey accuracy are not determined; elevation units are user-declared.

GeoTIFF library license originals

Choose a GeoTIFF DEM or load the example.

Comments & questions

Elevation Contour Maker

Find equal-elevation lines in a single numeric GeoTIFF DEM. Elevation samples are placed at pixel centers, interpolated across adjacent samples, joined into lines, and exported as GeoJSON and SVG.

Key features

  • Read a real north-up EPSG:4326/3857 single-band DEM and NoData tag
  • Choose contour levels from a positive interval and a reference elevation; interpolate between 2×2 samples
  • Resolve four-edge saddles by a bilinear determinant rule and join/deduplicate coincident fragments
  • Skip cells touching NoData and never invent values in the unsampled outer half-cell
  • Convert EPSG:3857 inputs to RFC 7946 WGS84 longitude/latitude GeoJSON LineString/MultiLineString
  • Preview SVG and report lines, segments, vertices, valid samples and skipped cells per level

How to use

  1. Open a GeoTIFF DEM or load the 9×9 cone example; inspect CRS, grid and NoData.
  2. Enter contour interval, base elevation and the declared source value unit (metres, feet or unspecified).
  3. Generate contours and inspect range, pixel-center bounds and line counts by elevation.
  4. Review the preview, then download GeoJSON or SVG.
  5. Check that GeoJSON uses WGS84 longitude/latitude; SVG is a grid diagram, not a survey map.

Use cases

  • Make GIS-ready isolines from a small numeric DEM
  • Compare contour density and NoData gaps across intervals
  • Teach isoline extraction from a measured single-band elevation grid

Frequently asked questions

How does this differ from tracing an image into SVG?

Image-to-SVG thresholds RGBA colors or brightness. This tool reads numeric elevation samples and georeferencing from a GeoTIFF, then interpolates a specified height interval. It never assumes photo colors are heights.

Are contours located at pixel corners or centers?

PixelIsArea GeoTIFF samples are treated as representative values at pixel centers. Interpolation occurs inside rectangles between four neighboring centers, so the covered extent sits half a cell inside the GeoTIFF bounds. The outer half-cell is not extrapolated.

How are NoData and flat plateaus handled?

Any four-sample rectangle touching NoData is skipped, so lines cannot bridge that gap. A constant plane has no unique isoline and yields none. Levels equal to the minimum or maximum are omitted.

What happens in ambiguous four-edge saddle cells?

The sign of the bilinear determinant chooses which edge pairs connect. An exact-zero tie uses a fixed rule. Zero-length and duplicate fragments at coincident vertices are removed before joining.

Does GeoJSON from EPSG:3857 use metre coordinates?

No. RFC 7946 GeoJSON requires WGS84 longitude and latitude. Every output line is converted to EPSG:4326; source CRS and the declared elevation unit remain properties. SVG is a diagram in the source grid plane, not a distance map.

Which DEMs and sizes work?

One-image, north-up PixelIsArea GeoTIFF with one numeric band, explicitly EPSG:4326 or EPSG:3857. Limits: 8 MiB input, 120,000 cells and 1024 per side, 80 levels, 2 million cell-level operations and 100,000 segments. Rotation, multiband files, other CRS and vertical datum transformation are unsupported.

Privacy

The DEM stays in this browser tab. This tool does not send its bytes to a server API. GeoJSON and SVG downloads are generated locally.

References

Related Tools

Raster Reprojection LabImage to SVG VectorCoordinate Reference LabWasm Module InspectorHreflang Matrix CheckerAST Query PlaygroundContainer Build GraphDependency Graph ExplorerSemver Range LabCron Schedule AuditorPatch Review WorkbenchSource Map ExplorerLocalization Catalog AuditorStructured Data ReviewerHTTP Archive AnalyzerWebhook Signature LabProtobuf Schema WorkbenchGraphQL Schema LabAvro Schema EvolutionLocal SQL WorkbenchSchema Form BuilderMesh Repair WorkbenchPipe Network LabRobot Arm Kinematics LabThermal Network LabBeam Response LabGear Train DesignerTolerance Stackup LabSensor Calibration FitPCB Stackup PlannerDigital Filter DesignerNetwork Reachability MapSun Shadow MapGPS Error SimulatorDigital Logic SimulatorAnalog Circuit LabMechanism Linkage LabAnalysis Mesh GeneratorOpenAPI Contract InspectorDatabase Migration PlannerDimensional Equation CheckerTruss Force LabBoolean Minimization LabControl Response LabQueueing Simulation LabGeofence Event SimulatorSurvey Traverse LabRaster Classification LabChoropleth Design LabMap Print ComposerTerrain Viewshed LabWatershed DelineatorMap Tile PackagerText File Encoding WorkbenchFilesystem Portability AuditorSBOM License ExplorerFile Signature Auditornpm Lockfile Conflict ResolverSource Secret AuditorOffline Web Package BuilderCertificate Chain InspectorTorrent Metainfo InspectorChunked File PackagerEncrypted File VaultDuplicate File FinderArchive WorkbenchDesign Token ManagerSpacing Token DesignerResponsive Type SystemPackaging Dieline DesignerSVG Icon Sprite PackerFlex Layout PlaygroundCSS Grid PlaygroundRegex Equivalence LabMarkdown Repository AuditorLog Template MinerResponsive Layout AuditorEmail Template PreviewInternal Link GraphState Machine TesterPetri Net SimulatorGit History VisualizerCurl Request WorkbenchBinary Protocol DesignerHex File EditorBinary Patch WorkbenchFile Signature WorkbenchAPI Mock SandboxSchema Column MapperEvent Log SessionizerER Diagram DesignerTime Series Gap AuditorStratified Data SplitterData Lineage DesignerDecision Tree LabData Anonymization WorkbenchData Expectation RunnerJSON Schema ValidatorBasket Pattern AnalyzerRobots Policy TesterSEO HTML AuditorAccessibility Structure AuditorSyndication Feed WorkbenchIndexNow Payload BuilderCrawl Log AnalyzerCSP Policy WorkbenchSearch Performance AnalyzerCSV Formula Risk AuditorCORS Response SimulatorCache Header LabCookie Policy InspectorWeb Vitals Trace LabSitemap Health AuditorBatch File RenamerFile Manifest VerifierFolder Space MapFolder Difference ReviewerRoute Order OptimizerGeoJSON Map EditorPolygon Overlay LabCartographic Label PlacerSpatial Table JoinGeoJSON Topology AuditorGPX Track AnalyzerTrack Privacy RedactorCSV Table JoinCSV Pivot WorkbenchScientific Data ProfilerTabular Cleaning WorkbenchRecord ReconciliationData Dictionary BuilderCanonical Graph AuditorRedirect Plan TesterHTTP response and ping reference testBrowser and System InformationJSON ↔ YAML ConverterXML ↔ JSON ConverterHTML FormatterJavaScript MinifierMock Data Generator.gitignore GeneratorLicense GeneratorUser-Agent ParserPassword Strength CheckerCode to ImageXML FormatterHTTP Status Code LookupMIME Type LookupJS & SQL String EscapeCSS Box Shadow GeneratorCSS Gradient GeneratorIndent ConverterNumber Base ConverterUnicode Escape ConverterUnicode InspectorJSON Structure DiffMarkdown Table GeneratorBase64 EncoderJSON FormatterURL EncoderSQL FormatterCron Expression GeneratorRegex TesterUUID GeneratorHash GeneratorTimestamp ConverterJWT DecoderHTML Entity ConverterMarkdown PreviewCSS MinifierMeta Tag GeneratorJSON ↔ CSVCase ConverterImage to Base64
Explore all Dev Tools tools →Image/Media →Text/Convert →Life/Fun →