◆ Solution 01 · Map intelligence

Land Intelligence — zoning & CRE analysis in the browser

A MapLibre GL JS application framework with full ArcGIS Enterprise, Server and Portal integration. Discover data from public GIS catalogs, load it beside cloud-native formats and commercial property records, then analyze it — with the geoprocessing running client-side in DuckDB WASM, so nothing leaves the device.

🗺️ 40+ map controls 🧊 16 layer types 🧮 DuckDB WASM — no server 📦 npm + Python CLI
Land Intelligence · Map View · 107 layers loaded · Miami region
Land Intelligence map view over Brickell, Miami showing extruded 3D building massing, the Building Inspector panel with footprint attributes, opportunity layer controls and a layer catalog listing 107 layers.
One workspaceData sources, GeoEnrichment, ATTOM listings, tax search, OSM explorer and building inspection — with a Generate Report action at the bottom of the rail.

Pick mode queries multiple ArcGIS FeatureServer layers at once and highlights the matched footprint.

Capabilities

Discover. Connect. Analyze. Report.

Users reach data three ways — browse a catalog, connect directly to a service, or open the single aggregated Data Source Manager. What happens after that is where the work gets done.

🔍

Catalog discovery

Browse the USA government GIS directory by jurisdiction, state and service type; search ESRI Living Atlas and ArcGIS Hub open data; query STAC catalogs; load portal WebMaps, WebScenes and CatalogLayers.

🔗

Direct service connections

ArcGIS Feature, Dynamic Map, Tiled Map, Image and Vector Tile Services; OSM-backed FeatureServers; and GeoJSON rendered automatically from its SimpleStyleSpec properties.

🧮

In-browser geoprocessing

Buffer, spatial join, dissolve, clip, summarize-within, convex hull, area and length — all through DuckDB WASM, with a wizard UI for end users and a programmatic geoprocessor for developers.

🏢

Parcel & property intelligence

Regrid nationwide parcel boundaries with click-to-identify; ATTOM detail, AVM and sale history for commercial, industrial and agricultural property; county tax and appraisal record search.

📊

GeoEnrichment & CRE analysis

15,000+ demographic, economic, housing and business variables by click, address, geography or drawn polygon — plus site scoring, demand indices, risk flags and branded PDF/XLSX reports.

🛰️

Imagery, terrain & 3D

USDA NAIP and USGS imagery, DEM hillshade and terrain, COG raster analytics via Pyodide, COPC LiDAR, oriented and street-level imagery, and 3D Tiles styled by zoning class or floor count.

◆ AI Analyst Agent

Ask the map a question

AI Analyst is a tool-calling agent wired directly to the analysis layers and the indexed zoning ordinance. Ask for underbuilt parcels near transit, open code violations, lien hotspots, stalled permits, rezoning and assemblage candidates or composite opportunity scores — it queries the real data, answers in plain language, and renders the matching features on the map.

  • Queries live DuckDB views over the per-city analysis layers — no hallucinated geometry.
  • Searches the full-text zoning ordinance corpus and cites the source URL for every rule.
  • Natural language to read-only SQL, with the result set returned as rows and map features.
  • Deterministic keyword fallback, so the chat still answers with real data if the model is unavailable.
Tool-calling agentDuckDB views FTS5 ordinance indexGeoJSON → map

A live capture — question asked, layers queried, features drawn on the map.

◆ Code lookup

Ask what the code says

The same chat answers ordinance questions. Ask “What does the code say about parking in Miami?” and the agent searches the indexed zoning code and returns the matching passages — each labelled with its article or appendix, the jurisdiction and a link back to the source.

  • Answers show excerpts of the ordinance text, not a paraphrase of it.
  • Every passage carries its section title and source link, so the rule can be checked where it is published.
  • Lives in the same panel as the map queries — no separate code-search tool to open.
Land Intelligence · AI Analyst · Miami zoning code
AI Analyst chat answering “What does the code say about parking in Miami?” with cited passages from Appendix P, Wynwood Norte NRD-2, and Article 2, General Provisions, each with a source link, beside a colour-coded zoning map of Miami.
“What does the code say about parking in Miami?”Matching passages from Appendix P (Wynwood Norte NRD-2) and Article 2 (General Provisions), each linked to its source.
Interface

Three views on the same data

Map View for spatial work, Data Grid for tabular analysis, AI Analyst for questions — with the layer catalog and opportunity layers shared across all three.

Opportunity layers side panel listing underbuilt parcels, assemblage candidates, violations and permit layers with toggles.
Opportunity layersUnderbuilt parcels, rezoning and assemblage candidates, code violations, lien hotspots, stalled permits and transit-proximity parcels.
Expanded layers widget showing the full catalog of loaded map layers with visibility and opacity controls.
Layer catalogEvery loaded source in one panel — visibility, opacity and ordering across 100+ layers.
Data grid view with a populated, sortable attribute table of parcel records.
Data gridPagination, column sort and field search over DuckDB-backed tables; row click flies to the feature; CSV export included.
Map with several opportunity layers active, parcels colour-coded by score.
Scored parcelsComposite opportunity scoring rendered as data-driven symbology, filterable in place.
Land Intelligence map view interface with the data sources sidebar and map tools.
Map ViewData sources, analysis, property and listings, tax search, OSM explorer and map tools in one rail.
Map with zoning, parcel and building layers toggled on together.
Stacked contextParcels, buildings and zoning rendered together, each independently styled and queryable.

Sorting, filtering and fly-to from the attribute table.

Toggling analysis layers and inspecting scored parcels.

Reference

What ships in the box

A selection of the control surface — each item is an importable class with a headless client behind it.

AreaControls & clients
AuthenticationOAuth2/PKCE, API key, generateToken and app-credential flows against ArcGIS Online, Server, Portal and Enterprise
ESRI layersFeature, Dynamic Map, Tiled Map, Image and Vector Tile Services; OSM FeatureServer; NAIP and USGS imagery; DEM terrain and hillshade
PortalWebMap, WebScene, CatalogLayer, ArcGIS Hub browser, Living Atlas browser, USA government GIS directory browser
Parcel & propertyRegrid parcel boundaries, ATTOM property detail and area listings, Broward and Miami-Dade tax and appraisal search
CRE analysisAnalysis panel, layer catalog by tier, ACS data fetcher, report builder, scoring dashboard
GeoEnrichmentSide-panel control, full-screen modal with six visualization tabs, headless client, DuckDB cache bridge
DuckDB WASMFile and URL loader, attribute table, smart filter, geoprocessor, geoprocessing wizard, QGIS-style spatial context menu
Cloud-nativeCOG and S3 COG, Pyodide raster analytics, COPC LiDAR, PMTiles, STAC browser, GeoParquet and FlatGeoBuf
3DGoogle Photorealistic 3D Tiles and OGC 3D Tiles 1.1 styled by category, numeric range or expression
Editing & adminFeature Service create/update/delete, GeoJSON ↔ ESRI JSON conversion, no-code Style Admin panel with export/import
Map UILayer list, minimap, geocoder, coordinates, nearby, elevation profile, graticule, distance and bearing, imagery swipe, spatial bookmarks, building inspector
40+
Map controls
16
Layer types
8+
GIS file formats
4
ArcGIS auth methods
15,000+
Enrichment variables
0
Servers required

* Counts reflect the documented control surface of the shipping library. ArcGIS GeoEnrichment consumes ArcGIS credits at ESRI's published rates; ATTOM, Regrid and county tax sources require their own credentials.

Developer SDK Source code

Import one control or the whole framework

Land Intelligence ships as a tree-shakeable TypeScript library. Add a single parcel control to a map you already have, or describe an entire application in YAML and let the Python CLI build it into a portable static page with the COOP/COEP headers DuckDB WASM needs.

Source code included. Licensing covers the repository, not just the bundle — self-host it, fork it, and extend it against your own roadmap.
  • npm library — maplibre-arcgis plus maplibre-gl, with full TypeScript types.
  • Python CLI — init, validate, build, serve and convert webmap.
  • Headless clients behind every UI control, so you can use the data without the panel.
  • Style Admin export — ship a layer-styles.json from your server and load it at startup.
terminal
# TypeScript / browser library
npm install maplibre-arcgis maplibre-gl

# YAML-driven Python CLI
cd cli && pip install -e .

# Scaffold, validate, build and serve a map application
maplibre-arcgis init
maplibre-arcgis validate map.yaml
maplibre-arcgis build    map.yaml
maplibre-arcgis serve    map.yaml

# Convert an existing ArcGIS WebMap into YAML
maplibre-arcgis convert webmap ITEM_ID
◆ Source-code SDK for every solution

See Land Intelligence on your jurisdiction

Send us a county and a question — underbuilt parcels, a rezoning thesis, a site-selection shortlist — and we will demo it against that data.