▶Quick start — your first map in 10 minutes
- Open geotee.gtdigital.tech and sign in with the username and password your administrator gave you.
- Folder connection (like ArcCatalog): at the bottom of the Catalog pane, Folder connection › + folder lets you pick a whole folder of shapefiles from your computer (or drag it onto the Catalog pane); the files are kept on the server and listed as a tree. Click Add next to a
.shp/.gpkg/.tifto import it; imported files show in library, and right-click gives Re-import when the file is updated. You can also copy files there by SFTP (/var/www/geo-data/inbox/). - On the Map tab click Add Data, drop a zipped shapefile (or a GeoJSON / KML / CSV with coordinates) and press upload. The layer appears in the Catalog on the right.
- Double-click the layer in the Catalog. It draws on the map and appears in Contents on the left.
- With the layer selected, open Feature Layer › Appearance › Symbology and pick Graduated Colors or Unique Values.
- Press Ctrl+S to save the map with a name.
- Insert › New App from Map creates an app with a header, legend, layer list, filter and table already wired to your data.
- Design › Share → choose Anyone with the link → copy the link. Done.
1Signing in and finding your way around

The workspace

| Area | What it is for |
|---|---|
| Ribbon (Project · Map · Insert · Analysis · View · Share) | Every command lives here, grouped by task. Coloured contextual tabs appear only when they apply: Feature Layer (teal) when a layer is selected, App Builder (amber) when you are designing an app. |
| Contents pane | The layers in the current map, top to bottom in drawing order. Tick boxes turn layers on/off. The legend classes show under each layer. Right-click a layer for a menu. |
| Catalog pane | Your library: Apps, saved Maps, and uploaded Layers. Double-click to open or add. The tabs at the bottom switch this pane to Symbology, Labeling or Properties. |
| Status bar | Map scale (you can type a scale, e.g. 1:50000), cursor coordinates, coordinate system, selection count. |
1:100000 into the scale box and press Enter.Item page, domains, attachments, related records


code = label per line, or Fill from existing values) or a numeric range, and mark them required / unique.


.geotee.zip with the map, its layers, styles, metadata and attachments; Import Package recreates it on any GeoTee server. Add Data gained WMTS · OGC API · WFS · MVT (web services and vector tiles), PostGIS (table or read-only SQL) and Geotagged photos (EXIF GPS → points with the photos attached). Export now offers Excel (.xlsx) and AutoCAD DXF.2Adding data
Everything you add goes into the layer library first, so it can be reused in any map or app. Map › Add Data opens a dialog with four tabs.



FeatureServer layers.Spreadsheets with coordinates
A CSV or Excel file becomes a point layer if it has columns named like lat/lon, latitude/longitude, y/x or northing/easting. Values must be decimal degrees (e.g. 7.7102, not 7°42').
Coordinate systems — the one thing that goes wrong
.prj, so the software could not tell what coordinate system it uses. GeoTee asks you when this happens. Most Sri Lankan Survey Department and district data is in SLD99 (EPSG:5235); older files use Kandawala (EPSG:5234). GPS and most web data is WGS84.Once imported, every layer is stored in WGS84 and reprojection is automatic — you never need to think about it again. Right-click a layer in the Catalog and choose Properties to see the original system, the feature count and the fields.
name, lat, lon (for example your office at 7.7102, 81.6924) and upload it. (c) Add both to the map.3Working with the map
| Task | How |
|---|---|
| Change the basemap | Map tab → gallery. Light Gray is best under coloured data; Imagery is Sentinel-2 satellite. |
| Identify a feature | Click it in Explore mode — a pop-up shows its attributes. |
| Select features | Map › Select, click a feature (Shift-click to add more). Clear removes the selection. |
| See all attributes | Select the layer, then Feature Layer › Attribute Table (or double-click the layer in Contents). Filter rows, click a row to highlight it on the map, double-click to zoom to it, Export CSV to download. |
| Measure | Map › Measure, click points, double-click to finish. The length shows in the status bar. |
| Zoom to a layer | Right-click the layer in Contents → Zoom To Layer. |
| Save the map | Ctrl+S or Share › Save Map. Saved maps are listed in the Catalog under Maps. |
| Export a picture | Share › Export Map PNG — includes a title, legend, scale bar and attribution. |

4Symbology and labels
Select a layer in Contents, then open the Symbology pane (bottom tab of the right pane, or Feature Layer › Appearance › Symbology). Changes apply immediately to the map and to the legend in Contents.

| Primary symbology | Use it for |
|---|---|
| Single Symbol | One colour for everything. Set fill colour, outline, opacity, point size. |
| Unique Values | A colour per category (district name, land-use class, status…). Shuffle colors re-assigns the palette; each value's colour and label can be edited. |
| Graduated Colors | A numeric field shown in classes (choropleth). Methods: Natural Breaks (Jenks) for most data, Equal Interval when the range matters, Quantile for equal counts. |
| Graduated Symbols | Point size by a numeric field (e.g. population of towns). |
| Heat Map | Density of many points (incidents, households). |
Symbol Gallery — markers, patterns, line styles



| Point markers | Pick from the gallery, or keep a Basic shape (circle, square, triangle, diamond, star, pin). Rotate symbols by field turns arrows and vehicles by a bearing/heading column (degrees). |
| Polygon fills | Fill pattern: solid, diagonal hatch, cross-hatch, horizontal, vertical, dots, grid, or outline only (no fill) — hatches take the layer colour. |
| Line styles | Solid, dashed, dotted, dash-dot, long dash, railway (cased with ticks), arrows along line (flow direction), double line (road casing). |
| Humanitarian icons (UN OCHA) | The full OCHA Humanitarian Icons set — 267 public-domain (CC0) markers used in UN situation reports and 3W/4W maps — grouped as Hazards & disasters, Protection & conflict, Health & nutrition, Water-sanitation-hygiene, Food & relief items, Shelter-camps-buildings, Transport-logistics-infrastructure, People & displacement. They tint like the built-ins (a red Flood, a blue Water trucking). |
| My symbols | Editors can upload an SVG or PNG (≤ 512 KB) in the My symbols category — a logo, a project icon. PNG symbols keep their own colours. Uploaded symbols are shared by all users and work in published apps too. |
Labels

More renderers: proportional, bivariate, dot density, charts




Label expressions, classes and placement

{district|upper} / {cases|0} cases (click a field chip to insert it), choose the placement (curved along lines, centre, boundary), then add a label class — e.g. cases > 500 gets bigger dark-red text with a ★. Priority decides who wins when labels collide.
Group layers, map themes, dark theme


shapeName, then switch to Single Symbol with a 30 % opacity fill and label them with shapeName at size 11.5Analysis tools
The Analysis tab runs geoprocessing on the server. Every tool produces a new layer in the library; your input layers are never changed. Select the input layer in Contents first, then click a tool.


| Tool | What it answers | Example |
|---|---|---|
| Buffer | What is within X metres of these features? | 500 m around schools; 2 km around a river |
| Dissolve | Merge features that share a value (with counts and sums) | GN divisions → DS divisions, summing population |
| Feature To Point | One point inside every polygon | Label points, distance calculations |
| Bounding Geometry | The outline around all features | Project area from survey points |
| Clip | Keep only what falls inside another layer | Roads inside one district |
| Erase | Remove what falls inside another layer | Land minus protected areas |
| Intersect | Overlaps with attributes from both layers | Flood zone × GN division |
| Spatial Join | Count (or sum a field) of layer B inside each feature of layer A | Households per GN division; wells per district |
| Select By Attribute | A new layer of features matching a condition and/or location | Districts where POP > 500000; villages inside a buffer |
| Summary Statistics | Min / max / mean / sum of a field, total area and length | Total road length in km |
Raster and surface analysis (DEMs, imagery)


| Surface | Slope (° or %), Aspect, Hillshade (sun position, multidirectional), Contours (lines or filled bands), Viewshed (observer height, max distance), Ruggedness / Position / Roughness indexes, Fill NoData. |
| Raster | Raster Calculator (numpy expression on A and B), Reclassify (min-max=class rules), Band Index (NDVI, NDWI, NDBI, SAVI from Sentinel/Landsat/drone bands), Clip Raster, Raster To Polygon, Feature To Raster, Zonal Statistics (mean/min/max/sum/std/majority per polygon), Extract Values To Points, Raster Statistics. |
| Density & interpolation | Kernel / Point Density (per km², weight field), IDW (rainfall, groundwater, salinity surfaces), Euclidean Distance (distance to nearest road / clinic). |
| More vector tools | Identity, Update, Join Attributes By Location, Tabulate Intersection, Polygon Neighbours, Generate Near Table, Distance Matrix, Densify, Points Along Line, Split Line At Points, Offset Line, Delaunay, Random Points, Bounding Circle / Rectangle, True Centroid, Split By Attribute, Field Summary, Geocode Addresses, and the data-quality set: Check / Repair Geometry, Snap To Layer, Eliminate Slivers, Delete Duplicates, Remove Overlaps. |
Network analysis (roads)

near_time_min > 45 using Select By Attributes.Spatial statistics 2, vehicle routing and your own road network (batch 21)




vehicle and seq for the driver sheets.
Hydrology, cost surfaces, interpolation and more raster tools

| Surface extras | Curvature (profile / plan / tangential / total), Landforms (geomorphons: 10 classes). |
| Raster management | Set Null / Con, Cell Statistics (across rasters), Focal Statistics (moving window), Region Group, Resample, Mosaic, Composite Bands, Raster To Points, Tabulate Area. |
| Interpolation | Kriging (automatic spherical variogram), Thin-plate Spline, Trend surface, TIN (linear), Nearest neighbour — plus the earlier IDW and densities. |
| Geometry batch 2 | Points To Line, Split By Polygons, Extract Vertices, Split Line At Vertices, Unsplit Line, Extend Line, Smooth, Aggregate Polygons, Collapse Dual Lines, Rotate, Drape On DEM (add Z), Add Surface Information, Pivot Table. |
| Network 2 | Location-Allocation — choose the N best facility sites by population-weighted travel time on the road network. |
| Spatial statistics plugins | Local Moran's I (LISA), Average Nearest Neighbour, Mean Centre / Standard Distance / Directional Ellipse, Ripley's K, OLS Regression, Geographically Weighted Regression, Similarity Search, Composite Index, SKATER regionalisation, 80/20 (Pareto). |
pour_id at 40 % opacity over the hillshade.Plugins (add-ins)


Suitability modelling


History, batch run, models and webhooks

$input; Run applies the whole chain to any other layer.

Toolbox tab and Toolbox pane


Topology check


slope. Open the districts' table: slope_majority is the dominant slope class.join_count column.6Editing data
Select a vector layer, open Feature Layer › Edit and press Start Editing. Everything you do is kept as unsaved edits until you press Save Edits; Discard throws them away.

- Edit attributes — click a feature on the map; a form opens with every field. Change values and press Apply. In the attribute table you can also double-click a cell.
- Add features — Add Point then click the map; Add Line / Add Polygon then click each vertex and double-click to finish (or press Finish Sketch). New features start with empty attributes — click them to fill in.
- Reshape — click a feature; its vertices appear as handles. Drag a handle to move it.
- Delete — select features (Select tool or table rows) and press Delete Selected, or use Delete feature in the edit form.
- Add Field — adds a new empty column to every feature.
- Save Edits — writes the changes to the library. A snapshot of the previous state is kept automatically.

Editing 2: undo, move, reshape, split, merge, constraints, templates


7Building an app
An app is a web page made of widgets — map, legend, filter, chart, table and so on — that talk to each other. Build the map first (layers, symbology, labels), then Insert › New App from Map.

Arranging widgets
- Click a widget type in the palette to add it. Drag its title bar to move it; drag the corner handle to resize. The page is a 12-column grid.
- Click a widget and edit its settings in Properties. Delete removes the selected widget.
- Data widgets (Table, Filter, Chart, Statistic, Search, Time Slider) point at a data source — one of the layers in the app. Add more layers from the Catalog by double-clicking them.
- The Map widget's Update layers & symbology from Map view button copies whatever you have styled in the Map view into the app.
| Widget | Does |
|---|---|
| Header | Title, subtitle, logo, page navigation, optional Print button |
| Map | The map with its layers and basemap; pop-ups on click |
| Legend / Layer List | Explain the map; let viewers turn layers on and off |
| Filter | Drop-downs and range sliders on fields — the map, table, chart and statistic all follow |
| Chart | Bar or pie by a field, count or sum. Clicking a bar filters everything else |
| Table / Statistic / Search | Attribute grid · one big number · find a feature by name |
| Time Slider | Play through a date or number field; features appear as the slider advances |
| Swipe Compare | Two synchronised maps with a draggable divider — before/after, plan vs. survey |
| Bookmarks | Named views the visitor can jump to |
| Text / Image | Explanations, photos, logos |


shapeName), a Statistic (count), and a second page with a Swipe Compare of districts vs. your buffer layer. Preview it.Dashboards, stories and map tools



/catalog.php.8Sharing and publishing

| Setting | Meaning |
|---|---|
| Private | Only signed-in users of GeoTee can open it. |
| Anyone with the link | No sign-in needed, but the app is not listed anywhere. Good for sharing with a committee or a client. |
| Public | Open to everyone. |
| Viewer password | Visitors must type this password before the app opens — for link/public apps that carry sensitive layers. |
| Embed | Paste the <iframe> into any website or WordPress page. |

training, open the link in a private browser window and confirm the password prompt appears.9Users and administration

Groups, sharing, two-factor, SSO, API keys, usage and languages (batch 22)




Authorization: Bearer gt_… on any API call. Read keys only read; write keys carry your role. The key is shown once.

Single sign-on: if your organisation runs Keycloak, Authentik, Google Workspace, Microsoft Entra or Okta, the admin adds an oidc block to config.php and a Sign in with … button appears on the sign-in page; accounts are created on first sign-in with the default role (or a role claim).
- Give most people the viewer role. Make someone an editor only if they upload, analyse or build. Keep admin to one or two people.
- Everyone can change their own password under Project › Change Password. Change the default admin password on day one.
- The Catalog shows a dot (●) next to apps that are published, and each app counts its views.
- Deleting a layer from the library removes it from every map and app that used it — the Catalog warns you. Prefer renaming or leaving it in place.
10Data tools and advanced symbology
Selecting features
The Map › Selection group now has By Attributes (an expression such as POP > 100000 AND DISTRICT = 'Ampara'), By Location (features that intersect, or are within a distance of, another layer), Invert and Zoom To. In Select mode, Shift+drag draws a box. Selections feed every other tool: delete selected, zoom, export from the table.

= <> > < >= <= LIKE IN IS NULL AND OR NOT ( ).Advanced symbology

| Option | What it does |
|---|---|
| Normalise by | Divides the classified field by another (density per km², cases per 1,000 people). Fixes the "big areas look important" problem. |
| Reverse | Flips the colour ramp so high values are light instead of dark. |
| Marker shape | Circle, square, triangle, diamond, star or pin for point layers. |
| Cluster points | Groups nearby points into a numbered circle at small scales; click a cluster to zoom into it. |
| Line / outline style | Solid, dashed, dotted, dash-dot. |
| Visible scale range | Only draw the layer between two zoom levels (e.g. buildings only when zoomed in). |
| Definition query | Show only features matching an expression, without making a new layer. The attribute table follows it. |
Pop-ups

Layer order
Drag a layer in Contents to change the drawing order (top of the list draws on top), or right-click → Move Up / Move Down.
Data management tools (Analysis tab)

| Tool | Use it for |
|---|---|
| Field Calculator | New field from an expression — POP / area_km2, UPPER(name), CASE WHEN pop > 1000 THEN 'big' ELSE 'small' END. Changes the layer in place; a version is kept. |
| Calculate Geometry | Adds area (km², ha), length, perimeter and centre latitude/longitude as fields. |
| Join Table | Attach a CSV/Excel table (census figures, survey results) to a layer by a shared key such as a district code. |
| Delete / Rename Field, Merge Layers, Copy Layer | Housekeeping. |
| Export Layer | Download as Shapefile, GeoPackage, GeoJSON, KML, CSV, FlatGeobuf or GPX in WGS84, SLD99, Kandawala, UTM or Web Mercator — for QGIS, Google Earth, Excel or a Survey Department submission. |

New analysis tools
| Tool | What it answers |
|---|---|
| Near | Which feature of layer B is closest to each feature of layer A, and how far (nearest hospital to each village). |
| Voronoi | The area closest to each point — catchments / service areas from school or clinic locations. |
| Grid / Hex Bins | Counts (or sums) per square or hexagon cell — density maps from incident points. |
| Statistics By Category | A table of count, area, length and numeric sums/means per category (per district, per land-use class). Download as CSV. |
| Union, Symmetrical Difference | The remaining overlay operations. |
| Multiple Ring Buffer, Simplify, Multipart→Single, Polygon→Line, Line→Polygon | Geometry utilities. |

Finding places and coordinates
Map › Inquiry has a Find a place box (OpenStreetMap place names), Go To XY (type WGS84, SLD99, Kandawala, UTM or Web Mercator coordinates — degrees-minutes-seconds accepted) and Measure Area alongside Measure Length.
New app widgets

area_km2. (b) Set a definition query area_km2 > 2000. (c) Join a two-row CSV with columns shapeName, visited to the districts by shapeName. (d) Export the result as a Shapefile in SLD99.11Imagery, 3D, print layouts and field data collection
GeoTIFF, drone imagery and scanned maps
Add Data › GeoTIFF / imagery accepts a GeoTIFF, JPEG2000, or a zip with an image and its world file. The server cuts it into map tiles (choose the detail level: 16 for 1:50,000 sheets, 18–20 for drone orthomosaics) and it appears as an image layer you can switch on, fade with opacity, and use in apps. Images without georeferencing must be georeferenced in QGIS first.

3D view
In the Symbology pane, polygon layers have 3D extrude by field: the height of each feature comes from a number (population, cases, buildings' storeys). Map › 3D View tilts the map; right-drag rotates and tilts freely. In apps, set the Map widget's Initial tilt.

Layout View — the page for printing
Like ArcMap, GeoTee has two views of a map. Data View is the map you work in. Layout View is the printed page: a map frame plus surrounds — title, text, legend, north arrow, scale bar, scale text, date, picture, rectangle. Switch with the two small icons at the bottom-left of the map (or the view tabs above it). The layout is saved with the map.
- Open Layout View. A default page is created: title, subtitle, map frame, legend, north arrow, scale bar, scale text and attribution.
- Page Setup ▾ on the Layout tab: A4 / A3 / Letter, landscape or portrait.
- Drag any element to move it; drag the red corner handle to resize; double-click text to edit it. The Properties pane shows exact position and size in millimetres, font size, colour and alignment.
- Pan and zoom inside the map frame to set what prints — the scale bar and scale text update automatically. Match Data View copies the Data View extent; Refresh Layers picks up symbology changes.
- Insert more elements from the ribbon. Bring to Front / Send to Back orders overlapping elements; Delete removes the selected one.
- Export PDF or Export PNG (150 dpi). Save Map keeps the layout with the map.


Layout 2: tables, charts, grids, dynamic text, map series

[Map.title], [Date.long], [Page.number] of [Page.count], [Scale], [User]. Tick Map grid on the frame for a lat/long graticule with DMS labels.
[Atlas.district] puts the feature's attributes into titles, and a table can show only the current feature. Page through with ◀ ▶ and Export all pages writes one multi-page PDF.For a quick one-off page without arranging anything, Map › Print Layout still produces a standard page in one dialog.
Snapping
When sketching or reshaping, turn on Edit › Snapping: the cursor jumps to the nearest vertex of any visible layer (a red ring shows the snap). Boundaries drawn against a district line will share its exact vertices — no slivers.

Field data collection
A form is a public mobile web page that adds records (points, lines or areas) to one of your layers — or updates existing ones — the GeoTee equivalent of Survey123 / KoboToolbox for simple surveys. Field staff open the link (or scan the QR code) on any phone, answer the questions, use GPS or tap the map, and submit. Records appear in the layer immediately, so your maps and apps update live.
- Create or upload a vector layer (point, line or polygon) with the fields you want to collect (use Edit › Add Field to add questions).
- Insert › New Form: pick the layer, tick the fields to ask, give each a label and a type (text, long text, number, date, choice list), mark required ones, choose how location is captured.
- Share it: Anyone with the link plus an optional password. Print the QR code on the survey sheet.
- Watch the records arrive: open the layer's attribute table, or build an app with a table and a chart on it.


Offline forms, photos, update forms, lines and areas (batch 20)




_submitted_at timestamp. Submissions are limited to 60 per hour per connection to deter abuse.12Time series — weekly, monthly and yearly data on the map
Disease surveillance and programme data arrive as one workbook per epi week or per month, each with the same districts and the same columns. GeoTee reads the whole pile at once and turns it into a time series attached to your boundary layer — no copy-pasting weeks side by side, no duplicated polygons.
Import
- Add the boundary layer (districts, regions, health facilities) to the map and select it.
- Analysis › Time Series. Choose the key field — the layer column that holds the district code or name.
- Pick all the workbooks in one go (Ctrl+A in the file dialog). The period comes from the file name (
Cholera W44 2023.xls,OCV Jan 2024.xlsx,Cases 2022.csv), from the sheet names when a workbook holds one sheet per period, or from period columns / a period column inside a sheet. - Press Analyse files: you get the list of periods found, how many districts matched, the names that did not, and files that were skipped (a “W36 to 39” aggregate, a file with no period). Fix spellings with one line each —
Walaweyn = Wanleweyne— then Import.

Cumulative sheets are recognised automatically (numbers that keep rising week after week): the series keeps the total and Cases_new — new cases that week. A drop of more than half is read as the counter restarting at the new year. Rates, CFR and population are never differenced. Next week, upload only the new file with Add to the existing series ticked.
Time Bar
Analysis › Time Bar (or right-click the layer in the Catalog › Time bar…). A bar appears over the map: choose the measure (cumulative cases, new cases, deaths, attack rate…), drag the slider or press ▶. Class breaks are computed once across all periods, so the same colour means the same number in every week — essential when the map is played or printed as a series. Districts without a value are grey.

Show switches to change maps: change vs previous period, % change, change vs the same period last year (diverging colours, decreases in green) and per 100 000 population when a population field exists.

- Click a district — the pop-up ends with a sparkline of the whole series and the last four values.
- chart — bars over time for the selected districts (or the whole layer) and a CSV download of the numbers.
- export all — one PNG per period, with title, legend and scale bar, packed in a ZIP. The weekly map series for a sitrep in one click.
- The time bar state is saved with the map; Esc or ✕ closes it and restores your own symbology.

In a published app
The App Builder has a Time Series widget: point it at the data source that carries the series, choose the measure and the mode, and viewers get the same slider, playback and chart in the browser without signing in.

Movement (flow) maps
Displacement, referral or trade data comes as from → to → how many rows. Analysis › Flow Map reads such a table (UNHCR PRMN exports work as they are), matches origins and destinations to your district layer — Somali and anglicised spellings included — and builds two layers: flows (arcs with arrows, width = volume) and nodes (circles sized by arrivals, with departures and net in the pop-up). With a period column the Time Bar opens on the flows so you can play the pattern month by month, and “export all” gives one map per period.

13The Spatial Analysis Catalog — 65 more tools
GeoTee was checked line by line against the 270-method Spatial Analysis Catalog that ArcGIS Pro, ArcGIS Online and QGIS share. Every missing method that can run on a single server was added as a first-class tool: it has a ribbon button, a Toolbox entry, a Command Search hit and a Tool Reference page. Find them at the bottom of each Analysis menu, under the divider.
- Geometry — Singlepart To Multipart, Variable-Width Buffer, Geodesic Buffer, One-Sided Buffer, Spatial Adjustment (rubbersheet / affine from control links).
- Overlay & management — Areal Interpolation / Dasymetric (census counts → catchments), Linear Referencing (routes and events), Random Selection, Top / Bottom N, Sampling Design.
- Spatial statistics — Quadrat Analysis, Mean / Median Centre, Moran’s I · Geary’s C · General G, Incremental Autocorrelation, Optimized Hot Spot, Kulldorff Spatial Scan (the SaTScan cluster test), Logistic / Poisson Regression, Spatial Lag / Error Regression, Geographically Weighted Summary, PCA, Hierarchical Clustering, Machine-Learning Prediction (random forest, boosting, SVM), TOPSIS ranking, Space-Time Clustering, Events To Time Series, Points To Tracks, 2SFCA accessibility, Interpolation Cross-Validation.
- Network — Centrality, Connectivity and Trace on your own line layers; OSRM Map Matching for GPS tracks.
- Hydrology — Breach Depressions, D-infinity flow, Flow Length, Stream Order / Links, Snap Pour Points, Longest Flow Path, Topographic Wetness Index, HAND flood inundation, Stream Burning, SCS-CN Runoff.
- Surface & raster — Horizon Angle, Time In Daylight, Cut / Fill, Line Of Sight (pick on the map), Visibility Frequency, Euclidean Allocation, Cost Corridor, Morphology filters, Line Density, Landscape Metrics.
- Remote sensing — Radiometric Scaling, Enhancement, Pan-Sharpening, Image PCA, Tasseled Cap, Unsupervised (k-means) and Supervised (random forest) Classification, Change Detection, Mann-Kendall Trend, Accuracy Assessment, RX Anomaly, Frequency-Ratio Susceptibility; the Index tool gained NBR, NDMI, EVI, MSAVI and BSI.
Not built, because they need specialised engines: SAR terrain correction and InSAR, voxel layers and traffic assignment. Added since: point clouds, MGWR, transit journeys, Sentinel-1 calibration and learned extraction (modules 51–56). The Plugin guide shows how to add such a method yourself.
14Imagery — the Remote Sensing Catalog
The 544-method Remote Sensing catalog (ArcGIS Image Analyst, QGIS / OTB / SNAP, ENVI, GEE) was checked against GeoTee the same way as the spatial-analysis one. Every method that runs on a normal server without GPUs or point clouds is now under Analysis › Imagery — 40 new tools plus deeper versions of Supervised / Unsupervised Classification, Change Detection, Pan-Sharpening and Accuracy Assessment. Multi-band GeoTIFFs (Sentinel-2, Landsat, Planet, drone) are displayed as natural colour and keep all their bands for analysis.
Band roles — set once
Sensors put bands in different orders, so the imagery dialogs ask for band roles (blue, green, red, red-edge, NIR, SWIR1, SWIR2) with presets for Sentinel-2, Landsat 8/9, Planet and RGB drones, and a reflectance scale factor (0.0001 for Sentinel-2 L2A). GeoTee remembers them in your browser.
- Spectral — Spectral Index (30+ indices: NDVI, GNDVI, NDRE, EVI, SAVI, ARVI, VARI, chlorophyll, NDWI, MNDWI, AWEI, NDTI, FAI, NDMI, MSI, NBR, NBR2, BAI, NDBI, UI, BSI, NDSI, iron oxide, clay, ferrous), Band Combination presets, Split Bands, Image Filter (edges, unsharp, texture), Pan-Sharpening (IHS, Gram-Schmidt, PCA, Brovey), Minimum Noise Fraction, ICA, Decorrelation Stretch, Spectral Unmixing, Spectral Profile.
- Preprocessing — Georeference from control points, automatic Co-registration, Dark-Object Subtraction, Histogram Matching, Relative Radiometric Normalisation, Topographic Correction (C, Minnaert, cosine), Destripe.
- Classification — Image Segmentation (SLIC, Felzenszwalb, Quickshift, watershed → objects with statistics), Supervised Classification with 12 classifiers (random forest, boosting, SVM, kNN, tree, logistic, MLP, maximum likelihood, Mahalanobis, minimum distance, spectral angle, parallelepiped) and a probability raster, Unsupervised (k-means, ISODATA, fuzzy c-means), Classification Clean-up (sieve, fill holes, boundary clean, recode), Reference Sampling, Accuracy Assessment with F1 / IoU and area-adjusted (Olofsson) estimates.
- Change & time — Change Detection (differencing, ratio, log-ratio, CVA, MAD), Post-Classification Comparison with transition matrix, CUSUM, Anomaly vs record, Trend, Harmonic Regression, Phenology Metrics, Temporal Gap Filling, Temporal Profile, Drought VCI / VHI.
- Masks & thermal — Cloud / Shadow / QA Mask (Sentinel-2 SCL, Landsat QA_PIXEL, spectral tests), Land Surface Temperature, Urban Heat Island.
- SAR — Speckle filters (Lee, enhanced Lee, Frost, Gamma MAP), linear ↔ dB, multilooking, SAR Flood Mapping, SAR Amplitude Change.
- Applications — Burn Severity (dNBR classes), Flood Extent, Shoreline Extraction, Forest Loss.
Not built (needs SNAP-class engines): SAR terrain correction / InSAR / polarimetry, hyperspectral target detection beyond RX / SAM, atmospheric correction with radiative-transfer models. Learned extraction on CPU, LiDAR and Sentinel-1 calibration were added later (modules 53, 55, 56). All the rest are plugin candidates.
15After the audit — emerging hot spots, forecasts and better sampling
GeoTee’s tools were compared row by row with ArcGIS Pro, ArcGIS Online and QGIS (see the audit). The first batch of gaps is now built:
- Emerging Hot Spot Analysis — Gi* for every period of a time series, then the trend of each district’s z-scores: new, consecutive, intensifying, persistent, diminishing, sporadic, oscillating and historical hot / cold spots, styled automatically.
- Time-Series Forecast — Holt / Holt-Winters per district with validation on the last periods; the forecast periods are added to the series so the Time Bar plays into the future. Cross-Correlation finds which series leads which and by how many periods.
- Monte Carlo Simulation — uncertainty of any formula of fields (±% or ±sd) → mean, sd, 5–95 % interval and the probability of exceeding a threshold. Spatial Durbin model added to Spatial Regression.
- Spatially balanced / cluster sampling, Weighted Voronoi territories, Detect Feature Changes between two versions of a layer, Field Engineering (standardise, transform, reclassify, encode) and Convert Coordinate Notation (DD, DMS, DDM, UTM, MGRS — both ways).
16Cartography & geometry (batch 28)
- Rule-based symbology — Symbology › Primary symbology › Rule-based: a list of definition queries, each with its colour (and size for points / width for lines), first match wins, plus a default. Legend shows the count per rule.
- Contiguous Cartogram (Dougenik), Thin Road Network, Delineate Built-Up Areas, Shape Buffers (wedge, tapered, rectangle, oval, diamond), Pole of Inaccessibility · Medial Axis — under Geometry.
- Sky-View Factor and Surface Area Ratio — under Surface.
- Scanned maps — Add Data › GeoTIFF / imagery now accepts a plain PNG / JPG with its corner coordinates (W, S, E, N); refine with Imagery › Georeference (control points).
17Platform (batch 29) — roles, status, split view, conditional formatting, COGO
- Custom roles — Project › Roles (admin): a role starts from viewer / editor / admin and switches privileges off (upload, analyse, edit, publish, delete, export, plugins, forms). Assign it in Users; the ribbon hides what the role cannot do and the server refuses it too.
- Authoritative / deprecated — in an item’s Sharing dialog set its status; the Catalog shows ✔ or ⚠. Only admins can mark items authoritative.
- Split View — View › Split View: a second map canvas linked to the first; untick layers on the right to compare.
- Conditional formatting — attribute table › Conditional Formatting: colour rows or one cell by definition queries; saved with the map.
- COGO Traverse — Geometry ▾: bearings and distances (N45°30'E 120.5 …) from a start point → polyline or closed parcel with misclosure and Bowditch adjustment.
18Extensibility & offline (batch 30)
- Python Console (plugin) — type Python against the selected layer or raster and get a layer, a table or a message back. Sandboxed (runs as an unprivileged user, cannot read the server configuration), numpy / GDAL / the plugin API pre-loaded. Prototype a tool, then package it as a plugin.
- External Providers (plugin) — run any SAGA GIS (700+ tools) or GRASS GIS (500+ modules) tool on a layer or raster: choose a preset or type the tool, give its parameters with
INPUT/OUTPUTplaceholders, get the result as a layer. - Circuit-Theory Connectivity — Circuitscape-style current density from a resistance raster and node points (corridors, pinch points).
- Geoparsing — place names in a text field → points via a gazetteer layer (fuzzy, Somali-aware).
- GTFS Transit Feed — stops with headways, route lines, and a transit-access score for any layer.
- Offline map areas — the ⤓ Offline button on any map (editor or published app) saves the current view’s tiles for a zoom range plus the app’s data to the device; open the same page without a network and it loads from the cache.
apt install saga grass-core on the server — done on geotee.gtdigital.tech.19Assistant, MCP & semantic text tools (batch 31)
- GeoTee Assistant — Analysis › Assistant, the ★ button, or Alt+A. Ask about the data on the map (“which district has the highest attack rate?”) or say what to do (“buffer the clinics by 5 km and count villages outside”). It reads the layers before answering, plans tool runs, shows each analysis step as a card — Run, Skip or Open dialog — and reports the result. Styling, selection and zoom happen at once. Command Search offers “Ask the Assistant” for any phrase. Token use is shown under the input.
- MCP server —
api/mcp.phplets Claude Desktop, Claude Code or any agent drive GeoTee with an API key (Profile › API keys): list / describe / query layers, statistics, tool reference, run any analysis tool, list apps. Same permissions as the REST API. - Find Similar (text) · Text Clusters — Spatial Statistics ▾: score features by text similarity to a query or a reference feature (
sim_score,sim_rank), or group them into themes (text_cluster,cluster_terms). Voyage AI embeddings when configured, else a local spelling-tolerant model. - Sign-in history — Project › Users › Sign-in history: every sign-in and failed attempt with IP, approximate place, device; CSV export.
"ai" => ["claude_key" => "sk-ant-…", "model" => "claude-opus-5", "effort" => "medium", "voyage_key" => "…"]. Without a Claude key the Assistant pane explains what is missing; without a Voyage key the text tools use the local model.20Cloud data & connectors (batch 32)
All under Map › Add Data ▾. Every connector takes the current map view as its area by default.
- Satellite imagery (STAC) — search Sentinel-2, Sentinel-1, Landsat and the Copernicus DEM by area, dates and cloud cover; pick a band preset per scene (true colour, B G R NIR, 6-band, SCL mask, VV+VH) and import only your area, read directly from the cloud. Then Imagery › Spectral Index, Classification, Change Detection work on it.
- Remote raster (COG by URL) — a window of any cloud-optimized GeoTIFF on the web.
- OpenStreetMap features — presets (health, schools, water points, roads, buildings, places, boundaries, rivers, lakes, worship, markets, power, refugee sites) or a custom tag filter → point / line / polygon layers. © OpenStreetMap contributors.
- HDX open data — search by words + country (ISO3) and import shapefiles, GeoJSON, GeoPackage, CSV, XLSX, KML, GeoTIFF from the Humanitarian Data Exchange.
- DHIS2 — org units of a level → layer; indicators × periods → time series on that layer (Time Series pane, Epi Curve, Forecast).
- KoboToolbox / ODK Central — form submissions → point layer from the geopoint; refresh in place manually or every N minutes.
- Data connectors — the list of layers that remember their source: refresh now, see the last run, forget a connection.
*/5 * * * * www-data cd /var/www/html/geo && php tools/connectors_cron.php. Credentials are only stored (encrypted) when you tick “Save connection”.21Collaboration & review (batch 33)
- Comments — Share › Comments or the right-pane tab: threads on the saved map, on a layer, or on one selected feature; 📍 Pin then click the map to attach a place;
@usernamenotifies a colleague (bell in the title bar); Reply, Resolve, Reopen. Pins show on the map. - Review links — Sharing dialog of an app › New link: stakeholders open
/review.php?t=…, give a name and comment with pins — no account, works for private and password-protected apps; you are notified of every reviewer comment. - Record verification — Manage › Record Verification adds review fields; the feature pop-up gets ✓ Verify / ✗ Reject; bulk-verify a selection; style by status.
- Task grid & Task board — split an area into mapping tasks, assign, set status (ready → locked → mapped → validated), track the progress bar.
- Presence & Activity — “● n here” in the title bar, who is on the same layer in the Contents header, and an activity feed in the Comments pane.
22Epi & sitrep automation (batch 34)
New Analysis › Epi ▾ menu.
- Epi Week Calendar — date → week and week → dates under ISO / WHO (Mon–Sun) or MMWR / CDC (Sun–Sat); the year’s calendar; add
epi_year,epi_week,week_start,week_endto a layer from its date field. The Time Series dialog has the same convention switch. - Attack Rate · CFR · Doubling Time — per-feature
attack_rate,cfr_pctand, from the time series, latest / previous / change % / growth rate /ts_doubling_days/ cumulative, plus a layer summary. - Threshold Alerts — rules on the newest period (≥ value, rise ≥ %, minimum), checked every 15 minutes; hits notify (bell), call a webhook, e-mail.
- Situation Report (PDF) — one click: key figures, current map, epi curve, top-N table, key messages.
- Epicurve widget — App Builder bar chart of the series per period, filter-aware.
23Tools tab · AccessMod — physical accessibility to health services (batch 36)
The Tools ribbon tab carries the WHO AccessMod 5 workflow, reimplemented on GeoTee’s raster stack (anisotropic least-cost paths, capacity catchments). Run the seven steps left to right:
- Merge Land Cover — DEM (grid + slopes) + land-cover classes + roads (by class) + barriers → merged surface + proposed travel scenario.
- Travel Scenario — speed (km/h) and mode per class: WALKING (Tobler slope correction), BICYCLING (capped at 2× downhill), MOTORIZED (none); 0 = barrier. Presets and CSV paste.
- Accessibility — travel time toward / from facilities, isochrones, population within each band.
- Geographic Coverage — facilities in priority order claim population until capacity or max time: catchments, facility stats, unserved raster, served %.
- Referral — nearest higher-level facility: minutes, km, routes.
- Zonal Statistics — % of each district within 30 / 60 / 120 min.
- Scaling Up — best N new sites by unserved population.
Get the inputs from the same tab: DEM / imagery (STAC) — Copernicus DEM 30 m; OSM roads & facilities; HDX population (WorldPop, boundaries). Long runs go through the job queue — press “Run in background” and keep working.
am_merge … am_scaleup.24Cartography & UX polish (batch 35)
- My Toolbar — View › My Toolbar or ⚙ in the title bar: tick the commands you use most; they stay one click away on every tab.
- Analyze Map — View › Analyze Map (✓ in the QAT): a 0–100 performance score with fixes (build tiles, simplify, fewer classes, labels).
- Smart Mapping — Appearance › Smart Mapping or ✨ in Symbology: ranked renderer suggestions from the data, one-click apply.
- Layered PDF — Share › Layered PDF: georeferenced PDF with each vector layer toggleable (Acrobat / Avenza / QGIS).
- Per-frame layers — in a layout, select a map frame or inset and untick layers for that frame only.
- Extract Scanned Lines / Polygons — Imagery ▾: trace a georeferenced scan by dark ink or a picked colour.
- Arabic (RTL) — Project › Language › العربية: the whole ribbon and panes mirror right-to-left.
- Accessibility — icon buttons carry ARIA labels, dialogs are announced, a “Skip to map” link, visible focus rings, reduced-motion respected.
25Tools tab · Microplan — immunisation microplanning (batch 37)
The Tools tab is now one tab: the Toolbox group, AccessMod, the input connectors, Microplan and then every toolset dropdown. Microplan turns the AccessMod outputs into a health-facility microplan (the GEM / Nepal workflow) that stays inside GeoTee.
- Org Units — import each level from a boundary or facility layer (country → province → district → municipality → ward → health facility). Children attach to the parent polygon that contains their centroid. Assign users to a unit in Project › Users; they see only plans in their subtree.
- Microplans — create one per health facility per fiscal year and open the workspace: 1 Catchments (Geographic Coverage output or wards) · 2 Targets (population per catchment × factors: live births, surviving infants, under-1, 12–23 months, under-5, pregnant women, WRA) · 3 Hard-to-reach (settlements beyond N minutes on the travel-time surface → new layer) · 4 Session sites (fixed / outreach / mobile, sessions per month) · 5 Forms (progress, vaccine ledger, cold chain, session register, high-risk areas — offline at
/f/…, QR code) · 6 Indicators & DHIS2 (reported doses vs targets, push as a dataValueSet after a dry run) · 7 Pack (PDF: cover, map, tables, form links, history). - Workflow — draft → submitted → municipality → district → approved, or returned with a reason. Editors draft and submit, a reviewer role reviews, admins reopen (new version). Approval freezes a snapshot of the data and layers; every step is logged and notified.
- Dashboard, Indicators registry and Settings (national factors, fiscal-year label — Gregorian or Bikram Sambat — and the workflow itself as JSON).

26Trust — data quality, safe publishing, result provenance (batch 38)
Four things that make a result defensible, all in Tools › Trust.
- Result Details — every tool answer now shows how this result was produced: each input layer with the exact revision, feature count and CRS that the run used, the parameters, the outputs, run time and the GeoTee / GDAL / PHP versions. Download it as an evidence file, or copy a methods note straight into a report. Nothing is invented: if a method does not calculate uncertainty, none is shown.
- Data Quality — six checks (invalid or empty geometry, duplicate identifier, missing required value, value out of range, value not in the code list, coordinates outside the area). Findings go into a queue with severity, assignee and state: open → assigned → fixed → accepted exception. Run the checks again and you are told what is new and what is resolved; accepted exceptions stay accepted. Corrections are made with the usual tools — the pane never changes your data.
- Publishing Inspector — before you share, it shows the real audience, every layer with its revision, source and licence, fields whose names look personal, the coordinate precision that would be exposed, attachments that become reachable and any open quality issues. Blocking items are separated from things merely worth a look, and the report downloads for the record.
- Operations & Recovery (admin) — worker heartbeat, queue age, failures, disk use, connector freshness, backup sets and the last restore rehearsal (
tools/restore_drill.shon the server restores the newest set into a throw-away database and measures how long it takes and how much data is lost).

27Change control — review, propose, roll back, stage imports (batch 39)
Four things that make a change to your data answerable, in Tools › Change control.
- Change Review — every snapshot of a layer, and a comparison of any two of them feature by feature. Each feature is matched by its stable id, so re-ordering is not mistaken for editing: you see what was added, what was removed, which attribute changed from what to what, and which columns appeared or disappeared. Geometry that only changed type (
Point → MultiPoint, which is how an in-place tool rewrites a layer) is reported as re-encoded, not as a move. Download the comparison as CSV. - Proposed changes — edits can be proposed instead of written. The layer does not change until someone who may edit it approves; approval applies the whole set as one revision, and returning it needs a reason. A proposal made against an older revision is flagged so it is compared first.
- Roll back — restores an earlier version as a new revision. The state you rolled back from is snapshotted first, so the rollback itself can be undone.
- Import Staging — an incoming batch is reconciled against the target before anything is written: new, changed, unchanged, records the batch no longer carries, columns added or missing, duplicate keys, and records that cannot be used (no key, impossible coordinates) with the reason. Promote in update mode (add and update, leave the rest alone) or replace mode (also delete what is missing). Importing the same batch twice is safe.

deploy/DEPENDENCIES.md and tools/check_deps.sh checks a server against them. A long tool run no longer freezes your other requests, webhooks no longer hold a request open, and the job worker recovers a crashed run at once instead of leaving it "running".28Honest numbers, a usable phone, and what leaves the server (batch 40)
- What a number was measured in — a layer that fits inside one UTM zone is measured in that zone; a wider one (or one crossing the date line, or reaching the poles) is measured in an equal-area projection centred on it. The result says which, and how much distances stretch away from that centre. You can force a projection with
analysis_crswhen your organisation has an official one. - Interpolation says what it did — the raster always covers every input point, and if the solver had to work from a sample of them it tells you how many of how many. Where it is affordable, each point is predicted from the others and the measured error is reported. No invented confidence figures.
- An acceptance suite with known answers —
tools/accept_numeric.shchecks GeoTee against facts that do not come from GeoTee: a 1 km buffer is π km², one degree of latitude is 110.574 km, the mean of a constant raster is that constant, a 10 % plane has a 10 % slope, MMWR week 1 is the week containing 4 January, an hour's walk at 5 km/h covers 78.5 km². - What leaves the server — the Assistant states it on first use: your question, the layer list with field names, and tool results. Your administrator can switch attribute values off, cap the rows and redact personal-looking fields; whatever was withheld is reported back to you. Sign-in history no longer sends addresses anywhere unless you press the button that says it will.
- Keyboard and screen readers — the catalog, contents, toolbox and history are proper trees: arrows move, Enter opens, Left/Right collapse and expand, Home/End jump, typing a few letters jumps to a name, and the focused item is announced. Dialog fields and the sign-in form have real labels; errors are spoken.
- On a phone — the panes become drawers over a full-width map with a bottom bar: Layers, Catalog, Tools, Table, Map. Authoring is still a desktop job, but viewing, the attribute table, field forms and the microplan workflows now fit a 390 px screen.
- Catalog cleanup — Project › Catalog cleanup lists what looks like clutter with the reason, and lets an administrator label it a sample, archive it, or move it to the trash. Nothing happens automatically, and a layer an app still uses is never trashed.

29Workflow designer — analysis you can run again (batch 41)
Tools › Workflow Designer turns a piece of analysis into a graph you can keep: each box is one GeoTee tool, an arrow carries a layer from one step into a parameter of the next, and you decide which inputs the model should ask for when someone runs it.
- Add steps — search the 280 runnable tools and drop them on the canvas. Drag boxes to arrange them.
- Wire them — drag the green dot on a step onto another step, and its output becomes that step's input layer. The properties pane on the right shows every parameter of the selected step, with layer parameters offering the model's inputs and the other steps' outputs.
- Declare the inputs — Inputs the model asks for…: a key, a label and a kind (vector, raster, number, text, yes/no). Steps refer to them as
$in:key. - Check — before anything runs, GeoTee reports a raster tool fed a vector layer, a step reading an output that does not exist, an undeclared input, or a loop, naming the step that causes it.
- Save and run — running asks only for the declared inputs, then executes the steps in the graph's own order through the normal tools: the same permissions, the same job queue, the same provenance. Each line of the log says what the step produced; if one fails, the model stops there and the earlier results stay.
- Versions — every save keeps the previous graph, and restoring an older one writes it as a new version.

30Scenarios — compare a baseline with alternatives (batch 42)
Tools › Scenarios answers "what changes if…": today's clinics against two new ones, a 5 km against an 8 km travel assumption, last year's coverage against this year's. Every scenario is a frozen copy of a result, so the comparison you show on Monday still holds after someone edits the data on Tuesday.
- Make a set — name it, say what is compared, and define the indicators once (for example "people covered = sum of
covered", "area within reach"). For per-district tables pick a key field and a value field. - Capture — run your tool, then Capture a layer as a scenario. The run that made the layer is recorded automatically; add what the tool cannot know (population source, travel speed) and mark each as input data or method. State the reporting period.
- Compare — GeoTee first checks the pair: same geography, same geometry, the fields exist, rasters on the same grid (or an explicit alignment step you switch on), same reporting period. Then it says what changed and whether the difference comes from the data, from the method, or cannot be attributed because both changed.
- Read the table — change = alternative − baseline; % change = change ÷ baseline. Where the baseline is 0 the % is left blank, because it is undefined. Units come from the set's definitions, so they always match.
- Map it — Side-by-side maps move together and use one legend; Difference layer adds a layer whose metadata names both scenarios.
- Sensitivity — Sensitivity run repeats the last tool with one parameter changed over a list of values, so you can see how much the answer depends on it.


31Imagery catalog — find, preview, import (batch 43)
Tools › Imagery Catalog keeps every satellite image you find in one catalog, with what you need to judge it: when it was taken, by which satellite, how cloudy it was, its resolution, its bands, who produced it and under what licence.
- Search — move the map to your area, choose a provider (Earth Search, Microsoft Planetary Computer, or another STAC address), a collection such as
sentinel-2-l2a, the dates and a cloud limit. The footprints appear on the map; hover a row to highlight its image. - Preview — shows the image at full detail without downloading it: GeoTee reads only the small pieces the screen needs. A preview is for looking, not measuring — analysis tools refuse it.
- Import… — zoom to your study area (up to about 3,000 km²), pick the bands (presets for true colour, NDVI, colour + NIR, SWIR) and import. The values are kept exactly as the provider stores them; Details shows the scale and offset to convert them.
- Imagery Source — for any imported raster: which image, which exact files, which version, which window and which steps produced it. It still answers after the catalog is refreshed, even if the provider has since changed or withdrawn the image.
- Tile Release — packages a raster into one read-only file for apps that must not change.


32Guided workflows — flood impact assessment (batch 44)
Tools › Guided Workflows walks a whole task step by step. Each workflow tells you before you start what data you need, what it assumes, and exactly what you will be able to share. The step list shows ✓ done, ⚠ done with a caveat, ○ still needed — and nothing can be published until the required steps are done.
- Area and time — zoom to the affected area (or pick a boundary), give the event dates and a normal (dry) period.
- Event image — press Find the clearest Sentinel-2 image, or choose any image in the Imagery catalog (radar sees through cloud). Then Detect water; the rule it used is written down.
- Baseline image — the same for the dry period, so rivers and lagoons that are always there are not counted as flood.
- Flood extent — water now that was not water then, as polygons. You can also use an extent mapped by Copernicus EMS or UNOSAT.
- Review — look at the polygons over the image, tick those that are not flood, drop specks, exclude areas on purpose, write a note and confirm.
- Exposure — population, facilities and roads inside the extent. These are exposure figures, not counts of affected people.
- Publish — read the draft summary, then publish. The published copy is dated and never changes; a correction is a new run.


33Guided: surveillance investigation and field survey (batch 45)
Surveillance investigation takes a dated case list from import to a release your colleagues can use. It asks which fields hold the onset date and the area code, then works through: codes that match no area (with suggestions you accept one by one), late and missing reports, the epi-week calendar, indicators, unusual weeks, and the release. Counts, rates and completeness are always shown apart. The case-level map stays private; the area totals — with small numbers hidden — are shared only after a second person approves them. It is an analytical workflow, not a clinical diagnosis.


Field survey prepares a team and checks what comes back: the approved form version, the area each phone downloads, task cells for each enumerator, one phone tested end to end before anyone goes out, progress, submissions the server refused (each must be marked corrected or dismissed), flagged records, and finally only the verified records written into the dataset as a new revision.

34Assistant safeguards (batch 46)
The Assistant proposes; you decide. Every analysis it suggests is shown before it runs. If you switch on automatic runs, three kinds of step are still shown first: steps that change a layer you already have, expensive raster / network / accessibility runs, and anything proposed after the data itself tried to give the AI instructions.
Layer names, field names, attribute values and tool results are treated as data. If any of them reads like an instruction to the AI — “ignore previous instructions”, “delete all layers” — GeoTee tells you, and the Assistant is told never to act on it.

Steps the AI proposed stay marked: an AI-proposed tag and an Evidence button on the result (inputs, versions, parameters, and who proposed and ran it), and an AI badge in the geoprocessing history. Ask it for a repeatable workflow and it drafts one that opens, unsaved, in the Workflow designer.

35Export — know what the format keeps (batch 47)
Export now builds the file, opens it again and tells you what the format kept and what it lost — before you download. A Shapefile cuts field names to 10 characters and text to 254, and holds one kind of geometry; GPX holds points and lines only; CSV with X/Y keeps points only. You see each of these as a line in the report, with the number of records affected.
- Strict — tick it and GeoTee will not give you a file that lost records, geometry or text; it offers the records that did not make it instead.
- CSV with WKT — every kind of geometry as text, holes and multipart features included.
- GeoPackage — tick several layers to put them in one file, with a table describing each.
- Rasters — exported from the stored values and checked after export; PNG and JPEG are marked as pictures because their values are stretched.


36More formats in (batch 48)
Add Data now reads AutoCAD DXF drawings, GeoParquet, zipped File Geodatabases, GML, zipped MapInfo, TopoJSON, and CSV files with the geometry in a WKT column.
A drawing has no coordinate system, so GeoTee asks for one — and first shows you what is in it: the drawing units (with a warning if they are not metres), each CAD layer, which you can untick, and anything it could not translate. Labels come through as text, in any script.

37Field mapping and append / upsert (batch 49)
Tools › Field Mapping turns someone else's columns into your schema — names, order, types, defaults, required fields — and shows every problem on a preview before anything is written: values that are not numbers or dates, IDs like 0012 that would become 12, empty required values. Save it once; use it again on next month's file and get exactly the same schema.
Tools › Append / Upsert brings a batch into a layer through staging: you see new, changed, unchanged and duplicate records first. Choose upsert, update only, replace, or append only (no key — the same batch can never be added twice). Sending the same file again changes nothing and writes no new version.


38Processing environment and tool registry (batch 50)
Tools › Processing Environment sets one grid for all raster work: CRS, cell size, a snap raster, the map view as extent, a polygon mask, NoData, resampling and a random seed. While it is on, the status bar shows Env: name, and every raster tool first puts its inputs onto that grid. The result's manifest says what was done to each input. Save an environment once and the whole team can use the same one.
Even with no environment, tools that combine rasters cell by cell check that every input is on the same grid as the first. If one is not — a different CRS, a different cell size, or cell edges 45 m apart — it is aligned and you are told. Tick Strict to refuse instead. Classes (land cover, SCL, classification outputs) are never blended: they always use nearest neighbour.
Tools › Tool Registry lists every tool and plugin and the engines behind them (hydrology, routing, Python libraries, GeoParquet, the Assistant), each with a green or red light and the fix. A tool whose engine is down tells you before it runs.


39Batch convert and boundary reconciliation (batch 51)
Tools › Batch Convert takes many files at once — import them as layers or convert them to another format. Each file gets its own line: an estimate when you add it, then its status, its result and its warnings. A broken file is refused with the reason; the others carry on. A file without a coordinate system waits for one, and Retry runs just that file again without making a second copy. The original files stay on the server until you press Accept.
Tools › Boundary Reconcile finds overlaps and gaps between administrative units and turns each one into an issue linked to the two units involved. Take it, preview a repair (only those two units change, and the checks are shown), let a colleague approve it, then Apply: GeoTee writes a new version and checks the whole layer again. If anything else changed, it puts the old version back. The Boundary versions tab shows how old units map to new ones (split, merged, renamed…) and carries population or case counts across.
Behind the scenes a conformance run tests every tool against data with known answers. The Tool Registry shows which tools passed a known-answer check, which only a basic run, and which failed, together with the version tested.


40Inward and geodesic buffers, coverage simplify, reshape (batch 52)
Buffer now takes a negative distance: polygons shrink inward (setbacks, core areas). A polygon thinner than twice the distance disappears — the result tells you how many, and can keep them without geometry. Corners and line ends can be round, sharp or flat.
Geodesic Buffer is now true on the ellipsoid for lines and polygons too, not only points, and every result says how close its edge is to the distance you asked for.
Coverage Simplify simplifies neighbouring units together, so they still meet exactly — Simplify on its own leaves slivers and overlaps between districts.
Reshape turns year columns into rows and back again, without adding anything up.



41Conversion: scientific data, tile packages, datums, Z/M, KMZ (batch 53)
Tools › Scientific Data opens netCDF, HDF, GRIB and Zarr files. You see each variable, its time steps (with the file's calendar), levels and units, then add one variable at one time and level to the map. Scale, offset and missing values are applied for you.
Tools › Datum Transform moves coordinates between datums with an operation you can see — its accuracy, where it applies, and whether a grid file is needed. Use it for old Kandawala data, or to turn GPS heights into heights above sea level.
Tools › Tile Package makes MBTiles or PMTiles of your own layers for offline tablets, and converts between the two. Z / M Values handles heights and route measures. Export › KMZ now carries your colours, symbols and photos inside the file, so it opens in Google Earth with no internet.



42Virtual mosaics, routing with time windows, workflows that decide (batch 54)
Tools › Virtual Mosaic joins raster tiles into one layer without copying them. Vehicle Routing now takes time windows, service times, shifts, pickups paired with deliveries and several depots — a visit that cannot be made is listed with the reason instead of being squeezed in.
In the Workflow Designer a step can run only if a condition holds (for example "if the previous step found more than 100 features"), can repeat for every layer in a list, and a later step can take whichever branch ran. Models can now use AccessMod and the connectors (OpenStreetMap, HDX, COG) directly; other endpoints are refused.



43Field sync — nothing collected is lost (batch 55)
On a public form, every record stays on the phone until the server has confirmed it and each photo. The Sync center at the top of the form shows each record's state: Waiting (offline or the server is unreachable), Sending…, Saved — photos sending, Rejected (with the reason and Retry / Discard) or Conflict. Each photo has its own progress bar. If the connection drops halfway, only the photos not yet confirmed are sent again; a record or photo is never saved twice.
A conflict means someone else changed the record after you opened it. The form shows both versions side by side, with the differences highlighted. Choose Keep mine to overwrite or Discard mine. If the form owner changed the form while your record was waiting and it no longer fits, it is marked Form changed: fill it in again or Export it for the owner. Export saves every unsent record, photos included, as a file. The half-filled record is kept as a draft if the tab is closed. What is kept on this phone? explains what is stored and shows how full the storage is.
In GeoTee, Tools › Field Sync lists what is still waiting in this browser. Signing out names any unsent records first.



44Workspaces, phones and the keyboard (batch 56)
The workspace button in the title bar chooses Field collector, Reviewer or Analyst. A workspace puts one job's tasks first and hides the ribbon tabs that job does not need. Nothing is removed: Actions (Alt+A) searches every tool.
On a phone the bottom bar's Actions opens a list you can search. Only one panel is open at a time. A green dot means online; amber means offline. A number means field records are still waiting in this browser; tap it to see them.
Keyboard: Esc closes what is open and returns you to where you were. Tab stays inside a dialog. F6 moves between the ribbon, contents, map, catalog and table. An error stays in a red bar until you dismiss it, and screen readers announce it. Selection as Table lists the selected map features as a table.



45Who may run what — the operation registry (batch 57)
Every tool is listed with what it needs and what it may change. Open Tools › Tool Registry: the Access column shows the role and privilege, and whether the tool writes a new layer, changes its input, changes it only when “in place” is ticked, or only reads. The server checks every run against this list, whether it comes from the browser, an API key, the job queue, the Assistant or a workflow. An operation that is not on the list is refused.
If someone shared a layer with you as view only, tools that change it are refused before they run. Run them on a copy, or ask the owner for edit access. Tools that write a new layer work as usual. When an administrator disables an account, changes a role, or someone revokes a key or a share, it takes effect on the very next request. A job that was waiting in the queue is checked again when it starts.
46The dataset catalog and lineage (batch 58)
Tools › Dataset Catalog lists every dataset you may see, with owner, source, licence, sensitivity, coordinate system, last update, how often it should be refreshed, and quality status. Use Edit record to fill these in. Approved remembers exactly which revision was approved. A dataset marked restricted or confidential cannot be published on a link or in public.
Lineage shows how a result was made: each tool step with its parameters, back to the source data, naming the exact revision of every input. If an input has changed since, the step says changed since: used rev 1, now rev 2, and the dataset is badged inputs changed. A source past its refresh date is badged refresh due. These badges only warn: nothing is recomputed or changed until you re-run the step. Search never finds datasets you are not allowed to see.


47Geometry by expression, TopoJSON and MapInfo (batch 59)
Tools › Geometry by Expression makes a new shape for each feature from a formula. For example ST_Difference(ST_Buffer(geom, 100), ST_Buffer(geom, 50)) makes a ring 50–100 m around each well, and ST_Buffer(geom, "radius_m") makes a buffer sized by a field. Pick an example to start from, choose the output type and press Preview to see the first results without creating anything. The run stops and tells you why if the results are of the wrong type, invalid (tick Repair to fix them) or would merge features together.
The Export dialog now offers TopoJSON. Borders shared by neighbouring areas are stored once, so web maps that simplify the file keep neighbours touching. MapInfo MIF/MID and TAB export and import keep Tamil and Sinhala text; empty text values come back as empty strings, because MapInfo has no "no value" for text.

48Kriging with uncertainty (batch 60)
Tools › Kriging + Uncertainty makes two layers: the predicted surface and its standard error. Read them together: the prediction is trustworthy where the standard error is small, near the measured points, and only a guess in the gaps. The chart shows the variogram, which describes how quickly values stop resembling each other with distance. Dots are measured pairs (bigger dot, more pairs) and the line is the fitted model.
The table checks the result. Every point is predicted from the others: an RMSSE near 1 and a 95 % coverage near 0.95 mean the standard error tells the truth. If the ranges in different directions differ a lot (ratio above 1.5), the surface changes faster one way than the other, and the error is understated in that direction.

49Solar radiation (batch 61)
Tools › Solar Radiation estimates how much sunshine energy reaches each place on a DEM under a clear sky, in kWh/m² for a day, a month or a year. Hills cast shadows, and slopes facing the sun get more, so the map shows which fields, roofs or hillsides are sunniest. A year takes a few minutes and runs in the background.
It is a clear-sky estimate: clouds are not included, so real energy is lower, often by a fifth or more in the monsoon months. Use it to compare places and orientations, not to promise what a solar panel will produce.
50Flow accumulation with multiple directions (batch 62)
Tools › Flow Accum. (MFD) shows where rainwater would gather. Unlike the classic method, which sends all of a cell's water to one neighbour, these methods share it among every lower neighbour. On a smooth hillside water spreads out, and the map shows it as a soft fan rather than artificial straight lines. FD8 and MD-infinity are good general choices.
This is a screening map of the land surface. It does not tell you how much water flows or when: rainfall, soil, rivers and floods need hydrological and hydraulic models that are calibrated against measurements.
51Bus and train journeys, and turns (batch 63)
Tools › Transit Journey plans a trip on a bus or train timetable (a GTFS feed you imported). Choose the timetable, click the start and destination on the map, set the date and time, and press Plan. The answer lists each option with the walk to the stop, the bus to take and when, where to change, and when you arrive. It follows the feed's calendar, so a public holiday or a weekend can have no service. Walking distances are estimates (straight line × 1.3), so check long walks on the map.
When you route on your own road layer, open Turns to add a delay for right or left turns (in Sri Lanka a right turn crosses the traffic), or draw "no turn" lines. Draw each line from the road you come from, through the junction, onto the road you may not enter.
52Multiscale GWR (batch 64)
Tools › Multiscale GWR asks, for each explanatory variable, over what distance its relationship with the outcome holds. Suppose you are explaining malaria cases by rainfall and distance to a clinic. MGWR may find that rainfall works the same way everywhere (a global bandwidth) while the effect of distance changes from one DS division to the next (a local bandwidth). Plain GWR would force both to the same scale.
Check three things in the result. First, the AICc comparison: is MGWR really better than one ordinary regression? Second, the significance columns, which already allow for running a test at every feature. Third, the condition number: above 30, two variables are too alike there to tell apart.
53LiDAR point clouds (batch 65)
Tools › Point Clouds takes LAS or LAZ files from a LiDAR survey or a drone. The summary shows how many points there are, how dense they are and what classes they carry. Make DEM gives the bare ground (good for slopes, drainage and flood work); Make DSM gives the surface with roofs and trees (good for solar and visibility work). If the file is not classified yet, Classify ground first. Preview on map shows a sample of the points coloured by class.
54Meshes from flood and coastal models (batch 66)
Tools › Meshes opens results from models that work on triangle and square meshes: a .2dm with its .dat files (zip them together), or a UGRID .nc. Give the coordinate system, then choose a dataset (water depth, velocity…) and a time step. You can make a map layer of the mesh, a raster, or a table of how the value changes over time at chosen points. The check line tells you if the mesh has broken faces.
55Radar and satellite products from the source (batch 67)
Tools › Sensors › Sentinel-1 Calibrate takes a Sentinel-1 GRD product, the zipped .SAFE folder from the Copernicus Data Space, and turns it into radar backscatter you can compare between dates. The upload goes in parts, so a 1–2 GB product is fine. Choose σ⁰ (the usual choice), noise removal, how many looks to average and dB. The result is placed on the map but is not terrain-corrected: in hills, use an analysis-ready (RTC) product instead.
Reflectance Scaling converts Landsat Collection 2 Level-2 and Sentinel-2 bands from the stored whole numbers to real reflectance (0–1) or temperature. For Sentinel-2, say whether the product is from 25 January 2022 or later (processing baseline 04.00): those need the −1000 offset.

56Teach the map to find things (batch 68)
Tools › GeoAI › Learned Extraction learns to find one kind of object (buildings, fish ponds, greenhouses…) from examples you draw. Draw a polygon around every such object in one part of the image. Optionally draw that part as a training-area polygon. Then run the tool. It trains a small neural network on the server for a few minutes, scores it on parts of the area it never trained on, and compares it with a simpler random-forest method. Read the message: if the network is not clearly better, or it warns of over-fitting, add more varied examples.
Apply Model runs a saved model on another image with the same bands and a similar pixel size. Check a few results against reality before trusting the new image.

57Publish a fixed version — releases (batch 70)
When you publish a map or app, viewers now see a release: the data and layout as they were at that moment. You can keep editing inside GeoTee and nobody outside sees half-finished work. When you are ready, open Share › Release and versions, press Prepare a new release, and check the list. It shows what changed since the last release and which fields will be published; fields that look personal are ticked to be left out. Then press Release to viewers. If something is wrong, make an earlier release active again. Forms always stay live, and you can switch a dashboard to live data if it must update by itself.
Scheduled downloads from Kobo, ODK, DHIS2 or OpenStreetMap now pass through Staging. A normal update is applied by itself. An unusual one is held for you to review, and you get a notice — for example when many records disappear or a column goes missing.
58Drone surveys and how accurate they are (batch 71)
Process your drone photos on a computer with WebODM or OpenDroneMap. In WebODM choose Download Assets › All Assets, then open Tools › Photogrammetry › Drone Surveys and upload that zip. GeoTee makes the orthophoto, the surface and terrain models and the point cloud into layers. A big survey takes a few minutes; the list updates itself.
To know how accurate the result is, you need checkpoints: points measured with GNSS or a total station that were not used as ground control. Read the same points off the orthophoto. Upload both lists as CSV in their survey coordinates, for example SLD99, EPSG 5235. Press Check accuracy. You get the error at every point and the 95 % accuracy, horizontal and vertical, the way survey standards (ASPRS / NSSDA) report it. Use at least 30 checkpoints spread over the whole area.

59Rules the data must follow — domains and subtypes (batch 72)
In Item page › Fields you can give a field a list of allowed values (coded) or a minimum and maximum (range), and mark fields as required or unique. These rules are now checked by the server for every edit and every form submission, whoever sends it. A save that breaks a rule is refused with a list of what is wrong, and nothing is half-saved.
Subtypes split a layer into kinds, for example hospitals and clinics in one facilities layer. Pick the field that holds the kind. For each kind, give default values that new features get automatically (e.g. beds = 50). You can also give narrower allowed values (e.g. clinics: beds: 0..20).

60Forms that repeat and calculate (batch 73)
In the Form Designer, a question can now be a repeat group: a list the surveyor fills as many times as needed, such as the members of a household, each with name, age and sex. Write one sub-question per line (age | Age | number) and set the least and most entries allowed. A question can also be calculated from other answers, such as adults + children or round(avg(members.age), 1). The surveyor sees the result update while typing, and the server works it out again when the record is saved.

61Watch your data change over time (batch 74)
Any layer with a date field — survey date, onset date, inspection date — can now be played through time. Select it and press Time Bar, or right-click the layer and choose Time slider. Choose the date field and a step (day, week, month or year). Then show that period only or everything up to it, and drag the slider or press ▶. Records without a date are counted separately, and closing the slider shows the whole layer again.

62Charts next to the map (batch 75)
Tools › Charts, or right-click a layer › Chart…, opens a chart beside the map. A bar chart counts or sums by category, a histogram shows how a number is spread, a scatter compares two numbers and gives their correlation, and a box plot compares groups. Click a bar to select those features on the map. Tick selected only to chart just what you have selected.

63Raster utilities (batch 76)
Tools › Raster utilities holds seven tools:
- Colour Relief colours a DEM with a colour ramp. In exact mode it colours class codes such as land cover.
- Constant Raster and Random Raster make test, simulation or base rasters over any area. Random rasters come from 9 distributions, and a seed makes them repeatable.
- Remove Collar makes the black edges of scanned or rotated maps transparent.
- Raster Footprints draws where each raster lies.
- Palette ↔ RGB converts between colour-table and full-colour images.
64Audit a facility list (batch 77)
In the Data Quality Center, choose the field that holds each facility's unit code (district, DS division, health area), the layer with those units, and the units' code field. Press Facility audit. It finds facilities placed outside their own unit, telling you which unit they really fall in. It also finds unknown or missing codes, and the same facility entered twice — names like "Base Hospital Kallady" and "Kallady Base Hospital" within 100 m of each other. Every finding goes into the issue queue to be assigned, fixed or accepted.
65Put a list of places on the map (batch 78)
Tools › Geocoding › Geocode Table gives locations to a table of addresses or place names. Matching against your own list of named places, such as GN divisions with their DS division, is most reliable. It copes with small spelling differences and keeps two villages with the same name apart. OpenStreetMap can also be used, slowly, for place names. Every row says whether it matched, how well, and to what. Rows that did not match are kept so you can fix them. Reverse Geocode does the opposite: it names points from the area they fall in or the nearest place.
66Filter by size — Fourier and wavelets (batch 79)
Tools › Frequency › Fourier Filter separates a raster into patterns of different sizes on the ground:
- Low-pass keeps the regional picture.
- High-pass removes regional trends to show local detail.
- Band-pass keeps one range of sizes.
- Remove stripes cleans scan-line striping.
Wavelet Filter removes noise while keeping sharp edges.
67Spectral libraries — match an image to known materials (batch 80)
Tools › Spectral › Spectral Libraries keeps reference spectra: what each material reflects at each wavelength.
- Import a CSV: wavelength in the first column, one column per material.
- Sample spectra from your own image at a point layer of known places (field-checked crops, water, soil).
- Resample a lab library to Sentinel-2 or Landsat bands before matching broad-band images.
- Continuum removal makes absorption features stand out as dips below 1.
Classify by Library labels each pixel with the closest spectrum. The Spectral Angle Mapper compares the shape only, so a shaded field and a sunlit field of the same crop get the same label.
68Nepali and Somali interface (batch 81)
Account › Language now offers नेपाली (Nepali) and Soomaali (Somali) next to Tamil, Sinhala and Arabic. The ribbon, panes and common messages switch at once, and the choice is saved with your account. Tool dialogs stay in English so they match the Tool Reference.
69WCS — raster values from other servers, and to them (batch 82)
Add Data › Web services › WCS reads a Web Coverage Service: enter its address, pick a coverage, choose the current map view or the whole coverage. Unlike a WMS picture, the layer keeps the real values (elevation, rainfall, reflectance), so you can analyse it.
GeoTee also serves your rasters as WCS 2.0.1 at /api/wcs.php. In QGIS: Layer › Add WCS Layer, with an API key from Account › API Keys sent as the header Authorization: Bearer ….
70GeoTee Desktop — run heavy tools on your own PC (batch 83)
Some jobs are too big for a shared server. GeoTee Desktop is a Windows program that runs them on your own computer, with the same code as the server, so the results are the same.
- Install it (
GeoTee-Desktop-Setup.exe). It needs no administrator rights and no graphics card. - Make a write API key in Account › API Keys. Paste the GeoTee address and the key into GeoTee Desktop, then press Save and connect.
- In a supported tool (Fourier filter, wavelet filter, Classify by spectral library) choose Run on: My PC. The result appears on the map as usual.
Tools › PC › GeoTee Desktop shows your PCs and whether they are online.
≡Reference and glossary
Keyboard
| Ctrl+S | Save the map or app | Esc | Close a dialog, cancel a sketch or measurement |
| Delete | Remove the selected widget (App Builder) | Shift+click | Add to the selection |
Supported formats
Shapefile (zipped) · GeoJSON · KML / KMZ · GeoPackage · GPX · CSV / XLSX with coordinates · FlatGeobuf · XYZ tile services · WMS · ArcGIS REST FeatureServer layers.
Glossary
| Layer | One dataset — a set of points, lines or polygons with a table of attributes. |
| Feature | One row of a layer: a single district, road or well, with its shape and attributes. |
| Attribute / field | A column in the layer's table (name, population, status…). |
| Coordinate system (CRS) | How coordinates map to the Earth. WGS84 = latitude/longitude used by GPS and the web. SLD99 / Kandawala = Sri Lanka's national grids in metres. |
| Basemap | The background map (streets, light gray, satellite). |
| Choropleth | Areas coloured by a value in classes — what Graduated Colors makes. |
| Widget | One building block of an app (map, legend, chart…). |
| Data source | A layer as seen by the widgets of an app; filters and selections on it are shared by all widgets. |
✓Completion checklist
A trainee has completed the course when they can do all of the following without help:
- Sign in, describe the four areas of the workspace and switch basemaps
- Upload a zipped shapefile and a CSV, and explain what to do when the CRS prompt appears
- Open the attribute table, filter it, select a row and export CSV
- Apply Unique Values and Graduated Colors symbology and add labels
- Run Buffer and Spatial Join and interpret the result layer
- Add a feature, edit its attributes, save, and restore a version
- Build an app with map, legend, filter, chart and table on two pages
- Publish with a link and a password and open it from another device
- Select by attributes, join a CSV, calculate geometry, export a Shapefile in SLD99
- Upload a GeoTIFF, produce an A4 print layout, create a collection form and submit from a phone