Meridian User Guide
Meridian is an offline-first GIS workspace for iPad. It is designed around local .gispad projects, GeoJSON layers, precise map interaction, field editing, analysis, styling, and clean export.
This guide mirrors the in-app User Guide. Keep both sources aligned when features change.
Start Here
Meridian keeps your work in local .gispad projects on this iPad.
- Tap New Project to create an empty workspace.
- Tap Open to open an existing
.gispad package.
- In the map screen, open Layers and choose Import GeoJSON to add data.
- Use Share to prepare a clean
.gispad package for another device.
- Use Select in the Project Gallery to bulk delete projects you no longer need.
Projects are local unless you explicitly share or export them. GeoJSON export writes clean GIS data and omits internal edit IDs. Analysis tools surface warnings about limits and accuracy; read them before relying on output.
Map Screen Overview
The map is the main workspace. Pan and zoom directly, then use floating controls only when you need them.
- Find opens feature search, bookmarks, and go-to-coordinate.
- Basemap changes the background map or switches to the no-basemap grid.
- Layers manages imported layers, visibility, order, locking, export, and layer details.
- Markup adds non-authoritative notes and sketch shapes.
- Table opens attributes for the active layer.
- Analysis opens spatial analysis tools.
- Share prepares the current project package.
The coordinate readout, scale, zoom controls, and location button stay near the bottom chrome. When a panel opens, Meridian closes conflicting panels so the map remains readable.
On Mac, workspace panes can also be managed from the Workspace Panes menu.
- Show/Hide Layers, Inspector, Geometry, and Table toggle the common panes.
- Geometry reopens the drawing tools for points, lines, polygons, rectangles, and measurement after the pane is closed.
- Floating panes open on the map edge they belong to: Layers and Geometry on the left, inspector-style panes on the right, and table-style panes from the bottom.
- Close hides the pane without losing its reversible UI state.
- Hide All Panes and Reset Workspace Layout restore a clean map-first workspace.
Projects
The Project Gallery is your local project library.
- New Project creates an empty
.gispad workspace.
- Open imports an existing
.gispad package.
- Search filters projects by name or metadata.
- Select lets you choose one or more projects, then Delete Selected removes them from this iPad.
- Share from the map screen prepares the active project for sharing.
Deleting a project is permanent for the local copy. Export or share important work first.
Settings
Settings are app-wide defaults stored on this iPad. They are not written into GeoJSON exports and they do not change existing project data.
- Appearance sets light, dark, system mode, and the Aero tint preset.
- Map controls the default basemap for new projects, import visibility, import zoom, coordinate order, precision, and measurement system.
- Editing controls snapping defaults, snap tolerance, snap tips, and vertex handle size.
- Selection controls Finder result limits and shows the default table scope.
- Analysis sets default distance and density units while keeping tool warnings visible.
- Storage can clear rebuildable caches without deleting imported project layers.
Project packages keep their own layers, saved basemap, camera, edit state, and data integrity rules.
Basemaps
Basemaps provide context behind your editable layers.
- Light is the default for new projects.
- Dark is useful in low-light work.
- Streets / Navigation emphasizes roads and place context.
- Satellite may require a provider key, depending on the configured source.
- Local PMTiles copies a basemap into the project package.
- No Basemap shows a latitude/longitude grid and keeps editing available offline.
If a basemap fails, your layers remain usable. Check attribution and provider notes before sharing screenshots or field maps.
Layers
Layers are the main units of GIS work in a project.
- Toggle visibility to show or hide a layer.
- Set the active layer before editing, styling, labeling, joining, or exporting.
- Lock a layer to protect it from edits.
- Use Layer Actions for opacity, reorder, style, join, export, zoom to layer, and delete.
- Open Layer Details for metadata, fields, validation, filters, joins, warnings, and export.
A hidden layer is not drawn. A locked layer remains visible but cannot be edited until unlocked.
Symbology And Labels
Symbology controls how a layer looks without changing the source geometry.
- Single Symbol applies one preset or custom outline/fill to every feature.
- Categories colors features by a text field.
- Graduated colors features by a numeric field.
- Custom colors let you tune fill and outline.
- Labels draw field values on the map when enabled.
Use Categories for types, status, names, or classes. Use Graduated for counts, scores, distances, or density values. Keep labels short and check them at the zoom level where the map will be used.
Attributes And Tables
The Table button opens rows for the active layer.
- Search within the active layer table.
- Sort by a field.
- Page through rows without loading the whole layer into SwiftUI.
- Drag the top grip to make the table shorter or taller. Double-tap the grip to return to the default height.
- Tap a row to select its feature.
- Use Edit Attributes, Zoom, or Inspect from the selected-feature strip when the row’s layer is editable.
Definition filters can change what you see in the map and table. Layer Details uses typed value editors for filter clauses, but export is conservative: active filters may show a warning because clean GeoJSON export can still include all committed features.
Drawing And Editing
Editing works on one visible, unlocked active layer at a time.
- Choose Point, Line, Polygon, Rectangle, or Multipolygon from the bottom dock.
- Tap the map to place vertices.
- Use Undo while drawing to remove the last point.
- Tap Add, then complete the New Feature form.
- Use Edit Attributes from the inspector or table to update properties without changing geometry.
- Tap Save in the inspector/edit surface to commit the edit session.
- Select a feature to inspect and edit it.
- Move a feature or move/add/delete vertices where available.
- Split a line at a tapped point, or merge compatible features into one.
- Use snapping to align with visible vertices and segments.
- Save commits edits; Revert discards the active edit session.
Multipolygon Add Part is not included in this version.
Field forms help keep attributes consistent when creating or editing features.
Forms can include required fields, default values, pick lists and domains, read-only fields, hints, and feature templates.
For new features, defaults and the chosen template appear in the form before saving. For existing features, Apply Defaults and template actions fill only empty editable fields; they do not overwrite non-empty values or read-only fields unless you explicitly edit an editable field yourself.
Validation runs before save/export when configured. Blocking issues must be fixed before clean export. Warnings should be reviewed, especially after imports or geometry edits.
Field Calculator
Use Calculate Field from Layer Details > Fields or the Attribute Table toolbar.
- Create a new typed field (Text, Integer, Decimal, Boolean, Date, Datetime, Object, or Array) or update an existing editable field with its matching type.
- Preview before running to see target counts, sample before/after values, skips, and warnings.
- Calculate area, perimeter, length, X/Y, centroid X/Y, constants, copied fields, simple arithmetic, or text concatenation.
- All features includes filtered-out committed features when a definition filter is active.
- Selected only requires an active selection for that layer.
- Locked, hidden, markup, read-only, internal, and generated overwrite targets are blocked conservatively.
- Geometry area/perimeter/length use WGS84 measurement routines; centroid X/Y is coordinate-space EPSG:4326 and approximate for non-point geometry.
- Results write normal feature properties, refresh fields/tables, can drive symbology, reopen with the project, and export as clean GeoJSON.
Undo the last calculation from the result state. Undo may block when later edits changed the same calculated values.
Device Location
Location is foreground-only and used only while the workspace is open.
- Tap the location button to request permission or recenter.
- Follow keeps the map near your current position until you move the map manually.
- The accuracy circle shows the horizontal accuracy of the current fix.
- Capture Point creates a point from the current device coordinate.
- Add GPS Vertex appends a raw device coordinate while drawing/editing.
Meridian does not record background tracks. It only stores location when you explicitly create geometry or matching capture metadata fields are available.
Find, Bookmarks, And Coordinates
Find keeps navigation close to the map.
- Search visible layers or the project for matching features.
- Save the current view as a bookmark.
- Rename, reorder, or delete bookmarks.
- Go to a typed coordinate.
- Paste coordinates in the supported order and review warnings before jumping.
Bookmarks store map camera positions, not copied features.
Command Planner
The Command panel (the wand button, or Command-K) turns a plain-language request into a reviewable plan that fills in one of Meridian’s existing tools. It is fully deterministic and runs entirely on the device — no request, layer, or attribute leaves the app, and there is no cloud AI.
- Type a request such as “select residential parcels”, “properties within 400 m walk of this school”, “calculate area for selected parcels”, or “export selected schools to CSV with WKT”.
- Meridian shows the matched tool, the layers it chose, the scope (all features or your current selection), units, the output name, and any warnings — and states plainly whether the operation changes project data.
- Confirming the plan opens the normal tool form with those values prefilled. Nothing runs until you review that form and tap Run, so destructive or expensive steps always get a second look.
- Ambiguous or unsupported requests get guidance and suggested phrasings instead of a wrong guess.
- “Selected” scope only applies when a selection already exists on the matched layer; otherwise the plan falls back to all features and says so. The planner never widens export scope on its own, so selection and filter state stay internal and are never written into exported data.
Markup And Notes
Markup is for communication and review notes, not authoritative GIS editing.
- Text notes mark a point on the map.
- Arrows and callouts connect two tapped points.
- Circles and rectangles create quick area notes by dragging to size.
- Freehand sketches smooth lines with Apple Pencil or touch, and the eraser removes strokes.
Markup saves in the project as a markup layer. It is excluded from spatial analysis by default so notes do not pollute analytical outputs.
Analysis tools read source layers and create selections or output layers.
Current tools include Select by Attribute; Select by Location; Buffer, Clip, Multipart Dissolve, and Snap; Spatial Join, Polygon Intersect, Polygon Erase, Polygon Union, Merge Layers, and Append to Layer; Nearest / Distance to Nearest and Network Reachability; and Point Density, Line Density, Kernel Density, Summarize Within, and Summary Statistics.
Important rules:
- All current analysis tools are production-scoped. They are intentionally narrow v1 tools, not broad desktop-GIS replacements, and they still surface warnings when limits or accuracy caveats apply.
- Clip supports point, multipoint, line, multiline, polygon, and multipolygon inputs clipped by polygon or multipolygon masks. Multipart Dissolve supports polygon and multipolygon dissolve-all and dissolve-by-field output with stable
dissolve_count.
- Select by Location uses exact GeoRust spatial predicates;
touches means boundary contact without interior overlap.
- Clip and Multipart Dissolve block invalid scoped geometry before output starts.
- Buffer, Nearest, and Summarize Within are production-scoped. Density tools are production-scoped with square vector-grid output, WGS84 geodesic metrics, 25k/100k cell gates, and unsupported extent blockers.
- Spatial Join is one-to-many by default, can keep unmatched target features when configured, and writes
join_ fields plus match metadata.
- Polygon Intersect, Polygon Erase, and Polygon Union accept polygon/multipolygon layers only. Unsupported geometry, invalid scoped geometry, and unresolved same-layer union overlap cases block before output commit.
- Selected-only scopes use the current selection set.
- Cancelled jobs should roll back without leaving partial output layers.
- Outputs are normal layers, so they can be styled, labeled, opened in the table, exported, and reopened.
Select by Attribute
Select by Attribute reads one authoritative input layer and matches committed feature properties against a field, operator, and typed value.
- Required inputs: input layer, field, operator, and value unless the operator is empty/not empty.
- Result can be Selection, Layer, or Both.
- Selection output creates a persisted selection set. Layer output copies matching exact features into a normal output layer.
- This is a production-scoped V1 tool. It does not run arbitrary SQL, regex, expressions, or cross-layer conditions.
Diagram: a field filter marks matching table rows, then the same feature IDs light up on the map.
Select by Location
Select by Location compares an input layer with an overlay layer and selects features whose geometry satisfies a spatial predicate.
- Required inputs: input layer, overlay layer, and predicate.
- Predicates are intersects, is within, contains, and touches.
- RTree bounds prune candidates first; GeoRust exact predicates decide the final result.
- This is a production-scoped V1 tool for supported GeoJSON geometry families. Bounding-box-only matches are not accepted as final spatial hits.
Diagram: candidate bounds narrow the search, then exact geometry predicates decide which features are selected.
Buffer
Buffer creates polygon output around input features at a chosen distance.
- Required inputs: input layer, distance, and distance unit.
- Optional dissolve merges generated buffer pieces where supported.
- Buffer uses GeoRust through a local azimuthal equidistant projection, keeping buffer distances geodesically accurate across the supported extent.
- Extents wider than 5° carry an accuracy warning, and unsafe antimeridian, polar, overly large extent, or excessive-distance requests block before output starts.
Diagram: a distance band expands outward from each source feature, then optional dissolve merges overlapping zones.
Clip
Clip keeps only the portions of input features that fall inside a polygon or multipolygon mask layer.
- Required inputs: input layer and polygonal mask layer.
- Points are retained when inside the mask. Lines are cut to inside segments. Polygons become overlap areas.
- RTree bounds find candidate masks; GeoRust point retention, line clipping, and polygon intersection create output rows.
- Clip is production-scoped for V1. Invalid scoped input or mask geometry blocks before scratch output starts.
Diagram: only the input geometry inside the mask is written to the output layer.
Multipart Dissolve
Multipart Dissolve combines polygonal features into larger multipart output features.
- Required input: polygon or multipolygon layer.
- Dissolve all merges the scoped input into one group.
- Dissolve by groups features by one attribute field.
- Output properties are intentionally small:
dissolve_count plus the dissolve field value when grouped.
- This is production-scoped for V1. Topology repair and sliver cleanup are deferred.
Diagram: features sharing a dissolve group merge into multipart output while the source layer stays unchanged.
Spatial Join
Spatial Join creates output features from a target layer and adds attributes from spatially matching join features.
- Required inputs: target layer, join layer, and predicate.
- V1 cardinality is one row per exact target/join match.
- Keep unmatched targets enables left-join behavior.
- Output keeps target geometry, target fields,
join_ prefixed join fields, join_match_count, and join_match_index.
- This is production-scoped with explicit output-expansion gates.
Diagram: each exact target/join match copies join attributes onto the target geometry in a new output row.
Polygon Intersect
Polygon Intersect writes overlapping polygon or multipolygon areas between input and overlay layers.
- Required inputs: polygon/multipolygon input and polygon/multipolygon overlay.
- Each non-empty overlap piece keeps input properties and
overlay_ prefixed overlay properties.
- RTree bounds find likely overlaps; GeoRust polygon intersection creates exact overlap pieces.
- Unsupported geometry families and invalid scoped geometry block before output commit.
Diagram: only the overlapping areas between input and overlay polygons are written to the result.
Polygon Erase
Polygon Erase removes the parts of input polygons covered by an erase layer.
- Required inputs: polygon/multipolygon input and polygon/multipolygon erase layer.
- Output keeps remaining input geometry and input properties only.
- Fully erased features are skipped and reported through result issues.
- This is production-scoped for V1. Line erase and topology repair are deferred.
Diagram: the erase mask removes covered polygon areas and writes only the remaining input geometry.
Polygon Union
Polygon Union combines two polygonal layers and writes pieces for input-only, overlay-only, and overlap areas.
- Required inputs: polygon/multipolygon input and polygon/multipolygon overlay.
- Output includes
union_* role/count/topology metadata, input properties, and overlay_ prefixed overlay properties.
- Same-layer overlapping polygon inputs block unless full partition semantics are proven.
- This is production-scoped for V1.
Diagram: union keeps input-only pieces, overlay-only pieces, and overlap pieces in one partitioned output layer.
Nearest / Distance to Nearest
Nearest finds the closest target feature for each input point or multipoint.
- Required inputs: point/multipoint input and point/multipoint target.
- Output keeps input geometry and properties, then adds
nearest_target_id and nearest_distance_meters.
- RTree nearest pruning narrows target candidates; deterministic distances in a local azimuthal equidistant frame decide the nearest target.
- Nearest supports point and multipoint layers only. Distances stay metric-accurate within the supported extent.
Diagram: each input point connects to its nearest target and stores the measured distance in output attributes.
Network Reachability
Network Reachability finds the part of a line network you can reach from one or more start points within a travel budget. With a target layer it also flags the features that fall within reach.
- Required inputs: a LineString/MultiLineString network layer (roads, paths, pipes), a start (tap the map, or start from a layer’s features), and a distance budget and unit. The budget includes each start’s walk to the network.
- Optional cost field spends the budget in that field’s units instead of metres, with a cost direction for impedance versus rate fields. An optional target layer turns features within reach into a highlighted selection on that layer.
- Snap tolerance (default 100 m) controls how far a start may sit from the network. The access buffer (default 25 m) controls how far a target may sit from the reachable network and still count as reached, measured from the target’s own boundary.
- Output is a normal layer with the reachable network drawn in a bold teal line,
reach_from_start_m (or reach_cost), a clipped flag, source_network_id, and short access lines for off-network starts.
- Meridian builds a graph from the line geometry, joining segments at shared vertices and true crossings, then runs a shortest-path search outward from the snapped start until the budget runs out. One-way direction is honoured per segment via a
oneway property.
- Segments only join where they share an exact vertex or a detected crossing; tiny gaps split the network into islands. A warning appears above 10,000 line features and runs block above 50,000.
Tip: a roads layer, a schools layer, and a parcels layer make a classic catchment workflow. Start From layer on the schools layer with parcels as the target to get the combined catchment of every school in one run, then refine the returned parcel selection with Select by Attribute (selected-only) — for example matching a land-use field equal to residential.
Diagram: travel spreads along the connected roads from the start until the budget runs out, and parcels within reach are highlighted.
Snap
Snap moves each source feature so its anchor lands on the nearest matching target. The feature keeps its exact shape; only its position changes.
- Required inputs: source layer, target layer, a snap anchor (the feature’s nearest point to the target, or its centroid), and a snap-to mode (nearest point, nearest vertex, nearest endpoint, or target centroid).
- Tolerance controls how far a source feature may sit from its target and still snap. Source and target selected-only scopes use the current selection sets.
- Output is a normal layer with the translated features. Features with no target within tolerance are reported and left unmoved in the output.
- Meridian finds the nearest target geometry for each source anchor, computes one rigid translation per feature, and applies it to every vertex so shapes are never distorted.
- This is production-scoped for V1. It translates whole features; it does not stretch geometry, snap individual vertices, or repair topology.
- Source and target layers are read-only. Cancelled or failed runs roll back and leave no partial output.
Diagram: each source feature slides as one rigid piece until its anchor lands on the nearest target within tolerance.
Merge Layers
Merge Layers copies the features of two or more input layers into a single new output layer.
- Required inputs: two or more input layers and an output layer name.
- Field schemas are unified across the inputs. Fields missing from a source feature are written as null.
- Output is one layer containing every input feature with the combined field set.
- Meridian reads committed features from each input layer in order, aligns their properties to the unified schema, and streams the rows through the same scratch-backed analysis path as other output tools.
- This is production-scoped for V1. It does not dissolve overlapping geometry, deduplicate features, or convert between geometry families.
- Input layers are read-only. Cancelled or failed runs leave no partial output layer. Output exports as clean GeoJSON without internal IDs.
Diagram: features from each input layer are copied into one output layer with a unified field schema.
Append to Layer
Append to Layer copies features from a source layer directly into an existing target layer instead of creating a new output layer.
- Required inputs: source layer and an editable target layer.
- Selected features only limits the append to the source layer’s current selection.
- The target layer gains the appended features and is marked dirty so the change is visible in layer state and export checks.
- Source features are aligned to the target layer’s schema, then committed through the normal transactional edit path so undo state, indexes, and validation stay consistent.
- This is production-scoped for V1. The target layer must be visible, unlocked, and authoritative, and geometry families must be compatible with the target layer.
- The source layer is read-only. Appended rows are ordinary committed features: they reopen with the project, can be edited or deleted, and export as clean GeoJSON.
Diagram: source features flow into the existing target layer, which is marked dirty after the commit.
Point Density, Line Density, and Kernel Density create normal polygon output layers, not rasters. Each output cell is a square vector feature with attributes such as cell_id, cell_size_m, cell_area_sq_m, source_feature_count, density_value, and density_unit. Outputs reopen as normal layers, can be queried in the table, export as clean GeoJSON, and use graduated styling on density_value.
- Point Density supports point and multipoint layers, selected-only scopes, optional numeric weights, cell size, radius, and density area unit.
- Line Density supports line and multiline layers, selected-only scopes, cell size, radius, WGS84 geodesic line length,
line_length_m, and density per geodesic cell area.
- Kernel Density supports point and multipoint layers, selected-only scopes, optional numeric weights, cell size, bandwidth, quartic kernel weighting, and deterministic edge correction. Adaptive bandwidth remains deferred in v1.
Density tools warn above 25k output cells and block above 100k output cells. Small antimeridian-crossing extents are unwrapped and supported; polar and very wide/global extents block before output starts. Raster density, hex grids, adaptive bandwidth, GPU/cloud processing, and broader CRS workflows are deferred.
Diagrams:
- Point Density: point counts accumulate into nearby square grid cells and become
density_value attributes.
- Line Density: line length inside each cell is divided by cell area to produce
density_value.
- Kernel Density: nearby points fade into each cell through a kernel curve controlled by bandwidth.
Summarize Within
Summarize Within creates one output feature for each selected container polygon or multipolygon. Use it to count and measure what falls inside areas such as parcels, districts, plots, or survey zones.
- Choose an authoritative polygon or multipolygon container layer.
- Choose one or more authoritative point, line, or polygon input layers.
- Use selected-only when you want the current selection to limit containers or inputs.
- Pick numeric fields to summarize. Small input layers default to all numeric fields; wide layers require an explicit field choice.
- Review the preflight count, generated-field count, warnings, and provisional limits before running.
Points count when they are inside or touch the container boundary. Lines contribute when the clipped line inside the container has length greater than zero. Polygons contribute when the clipped overlap area is greater than zero. Numeric summaries skip null, missing, nonnumeric, and nonfinite values and include count, sum, mean, minimum, and maximum.
Generated fields start with sw_. The output keeps the container geometry and properties, then adds the summary fields. Text and category summaries are intentionally deferred in V1 so outputs do not create extremely wide tables.
Length and area values use WGS84 geodesic measurements (Karney ellipsoidal area), and exact containment/intersection predicates are evaluated in GeoRust coordinate space.
Diagram: container polygons keep their shape while sw_ summary fields count and measure what falls inside.
Summary Statistics
Summary Statistics reads numeric fields from one layer and creates a standalone output table.
- Required inputs: input layer and one or more numeric fields.
- Optional group by creates separate statistics per group value.
- Output is a standalone table, not a map layer.
- Source attributes are read-only. Output tables can be opened from the Analysis result and exported as CSV where supported.
Diagram: numeric fields are summarized into rows in a standalone table rather than a map layer.
Tabular Joins
Tabular joins combine attributes by matching key fields.
- Import a CSV table or choose an existing layer/table.
- Pick the input dataset and join source.
- Choose matching key fields.
- Choose the join type, such as left, inner, or full.
- Run the join to create an output layer or table.
Joined output fields use deterministic prefixes such as join_ to avoid overwriting source fields. Joined text and numeric fields can be used for symbology when the output is a layer.
Import Data From Tables
Use Import Data when a CSV file contains coordinates or geometry text that should become a map layer.
- Open Import Data from the Layers panel or a Join source import action.
- Preview headers, field summaries, row count, detected geometry candidates, and warnings.
- Choose
Table only to import a standalone table for joins.
- Choose
Create map layer to import spatial rows.
- For X/Y import, X means longitude and Y means latitude in WGS84 / EPSG:4326.
- For WKT or WKP import, choose the geometry field. Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon are supported.
- Invalid geometry rows block import by default. Enable Skip invalid rows only when you have reviewed the warning and want a layer from the valid rows.
- During import, the pane shows reading, parsing, validating, writing, and complete progress stages. Use Cancel to stop a running import; cancelled imports should not leave partial tables or layers behind.
WKT and WKP source geometry fields are excluded from map-layer attributes by default to keep tables compact. Turn on the keep-field option if you need to preserve the original geometry text. WKP is decoded during import; stored geometry remains GeoJSON, and CSV export can regenerate WKP as an interchange field.
Import Data accepts CSV files only.
Import, Export, And Data Integrity
Meridian is currently centered on GeoJSON layers and .gispad project packages.
- Import GeoJSON into the active project from the Layers panel.
- Import GeoPackage (
.gpkg): pick which feature tables to import in the Add Data pane; each becomes a WGS84 layer.
- Import KML / KMZ (
.kml, .kmz) from the Add Data pane. Each top-level folder becomes a WGS84 layer and loose placemarks become a document layer; choose which layers to import and optionally rename them. With more than one layer, the “Group imported layers” toggle (on by default) groups them under the source file name. Import preserves geometry, attributes, dominant styles, labels, built-in marker-shape hints, and point altitude as kml_altitude; overlays and non-point Z are warned/deferred. Network links are listed and can be fetched explicitly once as local editable snapshots; they are never refreshed in the background.
- Import CSV tables for tabular joins or CSV spatial layers through Import Data.
- Import PMTiles as local basemap packages when supported by the file.
- Export Data opens a review pane for format, scope, output name, validation, warnings, and the share destination.
- Export layers to clean GeoJSON, GeoPackage, KML/KMZ, or CSV + WKT/WKP. Data export writes all committed layer features unless you choose selected-only for a single layer; active filters are warnings, not silent export filters.
- Share projects as
.gispad packages through the same review/share path.
- KML/KMZ is styled WGS84 interchange, not a full map layout. It can export one layer or all layers with group/layer folders, labels, standard KML styles, and point altitude from
kml_altitude; KMZ also bundles built-in marker icons. Unsupported presentation such as dashes, fill patterns, label halos, live links, and 3D editing state is reported as notes rather than faked.
- CSV + WKT/WKP can write
wkt, wkp, or both geometry columns plus either all properties or geometry only.
- PDF map layout export lives in the Layout tab. GeoJSON remains the highest-fidelity data export.
V1 editable data is treated as WGS84 / EPSG:4326. Unsupported CRS metadata produces warnings. Invalid geometry or blocking validation issues can stop clean export in every data format. Internal feature IDs, edit state, validation rows, and render helper state are not written into clean exports.
Charts
Charts summarize a layer field visually and stay linked to the map.
- Open a chart from Layer Details fields or from the Attribute Table toolbar.
- Categorical fields draw bars per value, with sort and bucket controls.
- Numeric fields draw histograms with adjustable buckets.
- Tap a bar or bucket to select the matching features on the map.
- Scope controls switch between all features and the current selection.
Charts read committed feature values, so very recent unsaved edits may not appear until they are committed. Chart definitions are transient: they are rebuilt when reopened and are not written into the project package or exports.
Open Data Library
The Open Data Library brings public datasets into your project as normal layers.
- Natural Earth provides global reference layers such as coastlines, countries, and populated places.
- OpenStreetMap data is fetched through Overpass queries for the current area, or as Geofabrik regional extracts.
- US Census provides official US boundary layers — states, counties, and places — from the Census Bureau cartographic boundary files (1:500,000 scale). Census data is in the public domain.
- Data Commons Population Variables fetches curated population statistics as a local join table for US Census GEOID layers.
- GeoNames provides curated populated-place points.
- OGC API Features and WFS (Web Feature Service) servers can be queried for feature collections.
Adding population variables
- Import or open a US Census-compatible boundary layer that has a
GEOID field.
- Open Layers → Import → Open Data Library, choose Population Variables, and save your Data Commons API key. Meridian stores the key in Keychain only.
- Choose the Census layer, confirm the
GEOID key field and optional name field, select the population variables, then tap Preview.
- Tap Fetch, then Import Table. Meridian imports a local table with
dcid, GEOID, optional name, population value/date/facet/source columns, and public provenance fields.
- Open the Join pane to enrich or map the boundary layer from the imported population table.
Connecting to an OGC API Features or WFS server
- Open Layers → Import → Open Data Library.
- Pick OGC API — Features or Web Feature Service (WFS) from the list.
- Enter the service URL (HTTPS is required) and tap Discover. For OGC you can also pick a curated endpoint instead of typing a URL.
- Choose a collection (OGC) or feature type (WFS) from the discovered list.
- Pan/zoom to the area you want, tap Preview to check the feature count, then Fetch, then Import Layer.
- The result is an ordinary editable layer. Its source is recorded in Layer Details, where Refresh from Source can pull an updated copy (as a new layer by default, or replacing the existing one after confirmation).
Try it — OGC API Features. Use the public pygeoapi demo server https://demo.pygeoapi.io/master: tap Discover, choose the lakes collection, Preview the current extent, then Fetch and Import.
Try it — WFS. Point a WFS endpoint such as a public GeoServer demo (https://<your-geoserver-host>/geoserver/wfs) at the app, tap Discover, choose a feature type, then Preview → Fetch → Import.
Good to know:
- Imports run a preflight first and show warnings, counts, and limits before anything is added.
- OSM relation and multipolygon assembly is not supported yet; affected features are skipped with a warning.
- WGS84/CRS84 collections import directly. A projected coordinate system Meridian recognises (e.g. NZTM, UTM, Web Mercator) is reprojected to WGS84 on import (approximate, sub-metre); an unrecognised coordinate system is blocked with a clear message.
- WFS is read-only and covers simple-feature geometry; complex GML (curves, surfaces, topology) is rejected with a clear message.
- Public endpoints only for now — do not paste API keys or tokens into the URL.
- US Census files use NAD83 geographic coordinates, which match WGS84 to better than a meter at boundary-file scale.
- Nationwide Census tract, block group, and ZIP-code datasets are too large to convert on device in this release and are marked “Not in this release”; state-level subsets are planned.
- Census identifiers such as GEOID are kept on imported features so statistics tables can be joined.
- Data Commons imports are tables, not layers. Missing observations stay blank, not zero.
- Downloaded data is cached; Storage settings can clear rebuildable caches without touching imported layers.
- Check each provider’s attribution and terms before publishing maps that use its data. Exports never include app-only source metadata.
Map Layout And PDF Export
The Layout tab turns the current project into a guided, printable map sheet. It is available on iPad, Mac, and Windows, not iPhone.
- Switch to Layout from the Map/Layout tabs.
- Use the Layout Assistant sections: Page, Map, Contents, and Review.
- Start from a preset: Report Sheet, Field Handoff, or Full-Bleed Map.
- Fit the page to the current map, all visible layers, one chosen layer, a bookmark, or a custom preview pan/zoom.
- Add simple map surrounds: graticule lines or edge ticks, legend controls, scale bar style, and north arrow style.
- Insert dynamic text chips such as project name, bookmark name, visible layer count, scale, date, extent label, and CRS note.
- Review warnings before output, including missing title or attribution, provider-logo blockers, dirty visible layers, CRS warnings, active filters, blank snapshots, legend overflow, and crowded graticule labels.
- Export writes a PDF through the share sheet. On Mac, Save PDF… writes the PDF straight to a folder you choose. On Windows, use Print / Save as PDF….
Bookmark Packet PDF is the only multi-page layout workflow: selected bookmarks generate one page each using the same template. Spatial atlas/map-series by feature layer is not part of this release.
Layouts are transient: they are a view of the project, not stored data, so closing the project does not save a layout. GeoJSON remains the highest-fidelity data export.
Privacy And Local Data
Meridian is offline-first and local by default.
- Projects live on this iPad unless you share or export them.
- Device location is foreground-only.
- There is no background location tracking.
- Location is stored only when you explicitly create geometry or matching capture metadata fields are filled.
- Clean GeoJSON export omits internal app IDs and edit/session data.
Always review exported layers when sharing authoritative data outside the project package.
Troubleshooting
- Imported layer is not visible: open Layers, turn it on, then use Zoom to Layer.
- Import button seems inactive: confirm you are in a project and choose a supported GeoJSON file.
- CSV spatial import fails: check that longitude/latitude, WKT, or WKP fields are selected and that coordinates are valid WGS84 values.
- Basemap unavailable: choose another preset or switch to No Basemap.
- Export blocked: open Layer Details or validation messages and fix blocking issues.
- Location unavailable: check iPad permission, accuracy state, and whether the fix is stale.
- Analysis cannot run: choose required input layers, check selected-only scopes, and read the preflight warnings.
- Feature disappears after save: check active filters, layer visibility, zoom level, and validation messages.
- Labels or symbology are not visible: verify the layer is visible, the field exists, and the style was applied.
When in doubt, close extra panels and return to the map, then reopen the single tool you need.