GeoLint Geometry Inspector

How to use GeoLint

Inspect a file

  1. Select a UTF-8 .geojson/.json file, a .shp file, or a .zip containing exactly one .shp layer, up to 10 MiB, or try the sample. ZIP expanded content must also fit within 10 MiB and 1,024 entries.
  2. Define or import optional attribute rules below the file selector, then click Start inspection. Leave rules empty for geometry-only checks.
  3. Wait for reading, parsing, engine loading and geometry checking. Cancel stops the Worker.
  4. Review every summary count. Filter records or move between pages of up to 100 records.
  5. Download JSON or CSV issues. Downloads include every issue, regardless of filters.

Shapefile input

Geometry is read from .shp in record order. A ZIP can include a matching DBF and CPG for attribute checks. SHX and PRJ are not interpreted. DBF values do not replace source feature indexes or IDs. Indexes start at zero and correspond to SHP record order, including null shapes. Coordinates stay in their original units: PRJ is not interpreted and no reprojection occurs. ZIPs may contain nested folders, but only one layer. Encrypted, split, ZIP64 and unsupported compression archives are rejected.

Supported geometry

GeoJSON supports Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon and GeometryCollection, as bare geometries or inside Features. Shapefiles support 2D points, multipoints, polylines and polygons. Collection members are checked together as one record; a malformed member fails that record. Empty members cause the whole collection to be skipped. Collection nesting is limited to 64 levels. Z/M coordinates and MultiPatch shapes are skipped without conversion.

This is a GEOS validity check. A self-crossing line or repeated point can be valid; simplicity, network connectivity and duplicate detection are separate checks.

Read each status

Fatal errors or cancellation do not produce a complete report. Choose another file to restart.

Trace a report back to your data

Feature indexes start at zero. The internal key is feature:<index>. IDs may repeat; use the index to distinguish records. String and numeric IDs retain their types. Raw geometries and properties are excluded from reports.

Attribute rules

Add field rules or load the PID / geo_type / geo_area example after choosing data. Export rules as JSON and import them for another run. Start inspection applies current rules to the last selected file; a completed report retains its original configuration.

Required checks distinguish a missing field, null and an empty string. Missing optional fields skip later checks. Allow null bypasses other checks for null values. int requires a safe integer; double accepts finite numbers, including integers. Numeric strings are not converted. date requires a real YYYY-MM-DD date. Bounds, enums, Unicode string lengths and regular expressions apply without changing data.

Attributes have independent valid, invalid, skipped, failed or disabled states. All field problems are returned. Geometry can pass while attributes fail, or geometry can be skipped while attributes pass. A missing DBF or bare geometry is unavailable, not a successful attribute check.

CSV and JSON

Reports use version 2.0 only. Spatial references use SR / SE and attribute references AR / AE. JSON includes the rules used and both summaries; CSV has one row per problem. All problems are exported even when only one page or filter is visible.

JSON preserves original text. CSV uses UTF-8, CRLF and quoted cells. Text that could be interpreted as a spreadsheet formula is prefixed with an apostrophe. Numeric coordinates are unchanged. If your spreadsheet misreads Chinese text, import the CSV explicitly as UTF-8.

A zero-issue JSON has an empty issues array; CSV still includes its header.

Return to the inspector