Spatial Table Join

Spatial Table Join

Provide two GeoJSON FeatureCollections and calculate which polygon contains each point or has it on a boundary. Choose the first matching zone or keep all overlaps, and decide whether boundary points count. The output retains original point properties, adds zone attributes with a zone_ prefix, and reports points with no zone and zones with no point. This tool supports 2D RFC 7946 WGS 84 longitude–latitude Point and Polygon features only. It does not calculate roads, distance or coordinate transformations.

Two GeoJSON inputs

Each input is a UTF-8 FeatureCollection up to 120 KB. Points on the left must be Point; zones on the right must be Polygon. An empty zone list is allowed.

Points stay in a left join. Zone attributes get a zone_ prefix, and any name collision stops the operation.

An example with two overlapping zones and four points is ready.

Comments & questions

Spatial Table Join

Provide two GeoJSON FeatureCollections and calculate which polygon contains each point or has it on a boundary. Choose the first matching zone or keep all overlaps, and decide whether boundary points count. The output retains original point properties, adds zone attributes with a zone_ prefix, and reports points with no zone and zones with no point. This tool supports 2D RFC 7946 WGS 84 longitude–latitude Point and Polygon features only. It does not calculate roads, distance or coordinate transformations.

Key features

  • Distinguish polygon interior, exterior boundary, hole boundary and hole interior
  • Keep all overlapping zone matches or only the first in input order
  • Join original point properties with lossless zone_-prefixed zone properties
  • Reject name collisions, malformed rings, antimeridian crossings and legacy CRS explicitly
  • Export joined GeoJSON/CSV and unmatched point/zone CSV
  • Show green matched and red unmatched points on a local SVG coordinate sketch

How to use

  1. Paste a Point FeatureCollection and a Polygon FeatureCollection, or open each local file.
  2. Choose whether boundaries count and whether to keep all overlapping zones or the first one.
  3. Run the spatial join and inspect matched pairs, unmatched points and unmatched zones.
  4. Download joined GeoJSON/CSV, unmatched CSV or the SVG sketch.

Use cases

  • Attach an area label to collected field points
  • Compare all overlaps with a first-zone priority policy
  • Audit omissions caused by polygon holes or boundary rules

Frequently asked questions

Which GeoJSON geometries are supported?

The point input accepts only 2D Point features, and the zone input only 2D Polygon features in FeatureCollections. MultiPoint, MultiPolygon, LineString, GeometryCollection and legacy CRS cause a clear error; none are silently skipped.

What if zones overlap?

All mode duplicates the point feature once per match. First mode uses the first matching zone in the zone input. Unmatched points remain as one result feature with spatial_join=null in either mode.

How are boundaries and holes treated?

A point on the outer ring or a hole ring is a boundary match only when inclusion is selected. A point inside a hole is never matched. The test uses planar longitude–latitude ring arithmetic.

Will an existing property be overwritten?

No. Point properties are retained, zone properties receive a zone_ prefix, and spatial_join metadata is added. If an original point property already has a resulting name, the join stops with a collision error.

Does it transform other coordinate systems?

No. Both inputs are interpreted as RFC 7946 WGS 84 longitude–latitude. A legacy crs member is rejected. Transform other CRS data explicitly first.

Are the coordinates sent to a server?

No. Files and results stay in current browser memory, and only user-triggered downloads write local files.

Privacy

Input GeoJSON is parsed and joined in the current browser. No map tiles or external analysis APIs receive the coordinates, and the tool does not store input files on a server.

Related Tools

CSV Table JoinGeoJSON Topology AuditorCoordinate 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 ComposerRaster Reprojection LabElevation Contour MakerTerrain 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 PlacerGPX Track AnalyzerTrack Privacy RedactorCSV 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 →