# CartograFit — Full documentation (English)
---
# Introduction
> Documentation for the CartograFit platform by FitAI
Source: https://docs.fitai.fr/en/
:::tip Chat with our documentation
This documentation is compatible with AI assistants (ChatGPT, Claude, Gemini). Copy the URL [`https://docs.fitai.fr/en/llms.txt`](pathname:///en/llms.txt) into your favorite chatbot to ask questions about our data and services. [Learn more →](/en/ai-assistant)
:::
# CartograFit
Welcome to the documentation for **CartograFit**, the geographic parking data platform by [FitAI](https://fitai.fr).
## Who we are
[**FIT.ai**](https://fitai.fr) is a French startup specializing in **geographic intelligence**, based in Saint-Paul, Réunion Island.
Our mission: **make the invisible visible**. Public authorities and the State hold no centralized, exhaustive data on their parking. FIT.ai fills this blind spot by building **the first parking cadastre in France**: precise, actionable, sovereign geographic data.
We are a **data aggregator**: we bring order to the chaos of countless sources and signals. Our core product, **Argos**, aggregates, refines, scores, sorts and structures them into **versioned datasets** — distributed through **CartograFit**. [Discover our approach →](/en/vision)
### What we map
| Category | Examples |
|-----------|----------|
| **Parking** | On-street spaces, off-street, accessible, loading, paid/free |
| **Road signs** | Parking signs, prohibitions, restrictions |
| **Road markings** | Parking lines, hatched zones, pedestrian crossings |
| **Street furniture** | Bollards, posts, benches, trees, lampposts |
We are the only provider able to deliver the **full spectrum** of this data for the French public space, with an unmatched **98%** coverage compared to competing solutions.
### Sovereignty and open formats
**Your territory. Your data. Your decisions.** Our data is delivered in **industry-standard GIS formats**, with no vendor lock-in:
| Type | Formats |
|------|---------|
| **Files** | GeoPackage, GeoJSON |
| **Imagery** | HD satellite XYZ tiles (0.15-0.30 m/pixel) |
**Why does this matter?** You can cross-reference our datasets with your own data directly in your everyday tools (QGIS, ArcGIS, MapInfo, etc.) — without changing your workflows. Our data integrates into your existing GIS via files, API or dedicated support.
:::info Missing a format or service?
Need a specific format (Shapefile, CSV, KML, GML, etc.) or another type of service (WMS, Elasticsearch, REST API, etc.)? [Contact us](https://fitai.fr) to discuss it.
:::
## What is CartograFit?
**CartograFit** is our platform for centralizing access to our geographic datasets. It lets you access our parking data in several ways:
- **By files**: download GeoPackage (with styles) or GeoJSON exports
- **GIS integration**: automatic push, API/PostGIS sync, or dedicated support
- **Preview**: quickly visualize your data on a read-only interactive map
## What you'll find here
This documentation describes the **structure and usage** of our datasets:
| Section | Content |
|---------|---------|
| [Our approach](/en/vision) | How we produce our data |
| [Plans and subscriptions](/en/offres) | Subscription model and available options |
| [Practical guides](/en/guides/download-data) | Downloading, formats and styles |
| [Data types](/en/types) | Detailed structure of each data type |
| [Fit Audit](/en/audit) | Land Cover, indicators & bespoke data pipelines (service engagement) |
## Available data
Our datasets cover **eight complementary data types**, distributed as **14 layers**. Four types (parking, street furniture, road markings, road signs) are available in two variants depending on the imagery source: **terrain** (high precision) and **HD satellite** (extended coverage). Parking lots are available only via satellite. Roads are common to all sources. Road segments and H3 cells come in terrain (`-street`) and satellite (`-satellite`) variants with the same data formats.
As an option, **high-definition satellite imagery** (0.15 to 0.30 m/pixel) is available as XYZ tiles with token-based authentication. This recent, high-resolution basemap lets you overlay our data and yours in your GIS.
| Type | Description |
|------|-------------|
| [H3 cells](/en/types/h3-cell) | Statistics aggregated by hexagonal zone ([Uber's H3 system](https://h3geo.org/)) |
| [Road network](/en/types/road) | Roads enriched with parking density |
| [Road segments](/en/types/road-segment) | Road segments with detailed density |
| [Parking areas](/en/types/parking-area) | Parking locations with capacity estimates |
| [Street furniture](/en/types/urban-furniture) | Urban development elements (benches, lampposts, trees, etc.) |
| [Road signs](/en/types/traffic-sign) | Parking-related road signs (prohibitions, paid zones, accessible, etc.) |
| [Road markings](/en/types/road-marking) | Road markings (lines, hatched zones, pedestrian crossings, symbols) |
## Our plans
### Dataset subscription
All our subscriptions include:
| Feature | Included |
|---------------|:------:|
| 14 data layers (street-level + HD satellite) | ✓ |
| GeoPackage download (with built-in styles) | ✓ |
| GeoJSON download | ✓ |
| Map preview (read-only) | ✓ |
| Update notifications | ✓ |
| QGIS style files (.qml) | ✓ |
### Available options
| Option | What you get |
|--------|---------------------|
| **HD satellite imagery** | High-resolution basemap (XYZ tiles, 0.15-0.30 m/pixel) to overlay in your GIS |
| **Fit Audit** | Land Cover & derived analyses + bespoke expertise (2 tiers) |
### Subscription tiers
Our subscriptions are sized according to the number of users in your organization:
| Tier | Users | Ideal for |
|------|:------------:|------------|
| **Starter** | 1-5 | Small teams, pilot projects |
| **Business** | 6-15 | Technical departments, engineering consultancies |
| **Enterprise** | 16+ | Large organizations, dedicated SLA |
[Explore the plans in detail →](/en/offres/abonnements)
## Geographic coverage
CartograFit can be deployed on any territory.
| Territory | Status |
|------------|--------|
| **Réunion** | Pilot territory |
| **Mainland France** | Closed beta in progress |
Have a project on your territory?
Contact us to discuss it
## Delivery formats
### Files (all subscriptions)
- **GeoPackage**: recommended format, built-in styles, optimal performance
- **GeoJSON**: standard format for geospatial data
Other formats are available on request (Shapefile, CSV, KML, GML, etc.).
### GIS integration
We support you in integrating our data into your information system:
- **Automatic push** to your infrastructure (SFTP, API, cloud storage)
- **Direct API / PostGIS sync** to your database
- **Dedicated support** for integration into your existing GIS
### Map preview (included)
- Visual preview of your data on an interactive map
- Read-only: a quick check before analysis in your GIS
## Contact
- **Website**: [fitai.fr](https://fitai.fr)
Contact us by email
---
*This documentation corresponds to version **1.1.3** of the CartograFit datasets.*
---
# Our approach
> How FIT.ai aggregates, refines and structures high-quality geographic data
Source: https://docs.fitai.fr/en/vision
# Our approach
FIT.ai is a **data aggregator**. We bring order to the chaos of multiple sources and signals to produce a **digital cadastre of public space**: structured, scored, ready-to-use data where information today is scattered, heterogeneous or simply missing.
At the heart of this approach: **Argos**, our data factory, and **CartograFit**, our distribution platform.
## Argos, our data factory
**Argos** is the core of our product. It is the engine that **aggregates** multiple sources and signals, then **refines**, **scores**, **sorts** and **structures** them to produce **versioned**, ready-to-use geographic datasets.
```
Multiple sources & signals CartograFit
─────────────────────────── ┌─────────────┐ ─────────────────────
Field & satellite imagery │ │ Versioned datasets
Open data ────▶│ Argos │────▶ 12 qualified layers
Fit Mobile signals │ (the factory)│ Trust Score (0–1)
Fit Rover field capture │ │ Basemaps & analyses
... └─────────────┘
```
Argos turns heterogeneous raw material into a homogeneous, reliable product. Every element delivered carries a **Trust Score** (0 to 1) and stays **separated by source** (field and satellite) to guarantee traceability.
## A production and refinement chain
The data follows a clear chain, from raw input to delivered dataset:
1. **Aggregate** — bring together multiple sources and signals across your territory.
2. **Refine** — clean, deduplicate, geographically realign.
3. **Score** — assign a Trust Score to each element.
4. **Sort** — split by layer, by type and by source.
5. **Structure** — produce consistent layers with a stable schema.
6. **Version** — freeze a dated, deliverable and reproducible version.
7. **Deliver** — make available through **CartograFit**, in open formats.
Argos is the factory; **CartograFit** is the storefront where you retrieve the versioned datasets.
## Continuous innovation
Argos evolves constantly. Every improvement to our algorithms translates directly into **better quality and better coverage** of your datasets:
- New areas covered
- Improved accuracy
- New enriched attributes
- New data layers
This is the value of the subscription: **your data keeps improving on its own**, with no action required from you. Our R&D is built to **scale on the number of sources and signals** we integrate — the more inputs we plug in, the richer the dataset becomes.
## The Fit Mobile feedback loop
**Fit Mobile**, our GPS parking-assistance app, gives us **eyes on the road**. Every trip, every piece of user feedback sends back a fresh signal that enriches the CartograFit dataset and feeds Argos.
This is a **feedback loop**: the more usage grows, the more precise the data becomes — and the more precise the data, the more useful the service. The field validates the data, continuously.
## Fit Rover: field capture
**Fit Rover** is our first-party field capture service. An instrumented vehicle covers your territory to bring back fresh, high-quality data that feeds Argos.
### Why Fit Rover?
- **Maximum coverage**: an exhaustive pass over your territory
- **Fresh data**: recent information for precise data
- **Continuous enrichment**: every campaign improves the quality of your datasets
Learn more about Fit Rover
## Temporal analysis
Our data is not just a snapshot at a single point in time. Thanks to our **continuous history** infrastructure, we can track the **evolution of your territory** over several years:
- **Before/after comparison**: measure the impact of your development programs
- **Land take tracking**: observe Land Cover changes over time
- **Evolution indicators**: quantify the transformations of your public space
This temporal tracking capability is especially valued in the context of urban renewal programs (ANRU, ACV) or regulatory compliance (ZAN).
## FIT.ai, a customer of its own platform
We use our own CartograFit datasets to build **Fit Mobile**. This approach guarantees that our data is tested in real-world conditions and that its quality meets the most demanding standards — and it closes the feedback loop that keeps enriching Argos.
---
# Ask the AI
> Use an AI assistant to explore our documentation
Source: https://docs.fitai.fr/en/ai-assistant
# Ask the AI
Our documentation supports the **llms.txt** standard, which lets AI assistants (ChatGPT, Claude, Gemini, etc.) parse it and answer your questions.
## What is llms.txt?
The [llms.txt](https://llmstxt.org/) format is a standard that lets websites serve their content in a format optimized for large language models (LLMs). Instead of parsing complex HTML, the AI can directly access a structured Markdown file.
Our documentation automatically generates:
- **`/llms.txt`** — A lightweight index of every section, with its title, link, and description
- **Individual Markdown files** — One `.md` file per page, referenced from the index
- **`/llms-full.txt`** — The full documentation in a single file
## How to use this feature
### 1. Copy the link to our documentation
**Section index (recommended):**
```
https://docs.fitai.fr/en/llms.txt
```
The index contains links to each page as an individual Markdown file. This way, your AI assistant can load only the pages relevant to your question, without ingesting the entire documentation.
**Full documentation (single file):**
```
https://docs.fitai.fr/en/llms-full.txt
```
This file bundles the entire documentation into a single document. Useful if your assistant supports large files and you want an exhaustive view.
### 2. Paste it into your favorite AI assistant
Ask the assistant to read and analyze this URL, then ask your questions.
**Example prompt:**
> CartograFit is a geographic parking data platform (parking areas, street furniture, road network, H3 cells).
>
> Here is the documentation index in llms.txt format:
> https://docs.fitai.fr/en/llms.txt
>
> Review this index and the pages that seem relevant, then answer my question: How can CartograFit data help me meet the requirements of the LOM law regarding the inventory of parking spaces and pedestrian crossings?
## Open a chatbot
Click a button to open an AI assistant directly with a pre-filled prompt:
:::tip Tip
For best results, first ask the AI to read the documentation, then ask your questions in a second message.
:::
## Example questions
Here are a few questions you can ask the AI:
- *What are the different data types available in CartograFit?*
- *How do I connect to the WFS server with QGIS?*
- *What is the structure of a parking area?*
- *How do I download a GeoPackage file from the platform?*
- *What are the differences between the Starter, Business, and Enterprise plans?*
## Direct links
| File | Description |
|---------|-------------|
| [`/llms.txt`](pathname:///en/llms.txt) | Index with links to each page (individual Markdown files) |
| [`/llms-full.txt`](pathname:///en/llms-full.txt) | Full documentation in a single file |
## Putting your data to work with AI
Our documentation contains the **complete structure of our data types**: H3 cells, parking areas, road network, street furniture. Every field, every property is described in detail.
This means an AI assistant can help you:
- **Understand the data structure** — "What fields does a parking area contain?"
- **Prepare your queries** — "How do I filter roads with high parking density?"
- **Combine datasets** — "How do I link H3 cells to parking areas?"
- **Imagine analyses** — "What spatial analyses can I run with your data in QGIS?"
- **Generate code** — "Write a Python script to compute the total capacity per municipality"
:::info Advanced use case
Ask the AI to suggest analyses you might not have thought of. For example:
> "Looking at the structure of your data, what interesting analyses could I run for an urban mobility study?"
:::
## Why is this useful?
- **Complex questions**: the AI can combine several pages to answer
- **Fast search**: find information without browsing manually
- **Personalization**: get answers tailored to your context
- **Code generation**: get scripts tailored to our data format
- **Inspiration**: discover analyses you hadn't considered
---
# Plans and subscriptions
> CartograFit subscription model - datasets and options
Source: https://docs.fitai.fr/en/offres
# Plans and subscriptions
**CartograFit** offers a simple subscription model: a **dataset subscription** with **options** tailored to your analysis needs.
## Our model
```
┌─────────────────────────────────────────────────────────────────┐
│ DATASET SUBSCRIPTION (core) │
│ Data files + Map preview │
│ Integration into your GIS (files, API, support) │
├─────────────────────────────┬───────────────────────────────────┤
│ + HD Satellite Imagery │ + Fit Audit │
│ (High-res XYZ tiles) │ ┌─────────────────────────────┐ │
│ │ │ Level 1: Land Cover │ │
│ │ │ & analyses │ │
│ │ │ Level 2: Measurement │ │
│ │ │ expertise │ │
│ │ └─────────────────────────────┘ │
└─────────────────────────────┴───────────────────────────────────┘
```
## Dataset subscription
Every subscription includes:
| Feature | Included |
|---------------|:------:|
| 14 data layers (on-street + HD satellite) | ✓ |
| GeoPackage files (with built-in styles) | ✓ |
| GeoJSON files | ✓ |
| Map preview (read-only) | ✓ |
| Update notifications | ✓ |
| QGIS style files (.qml) | ✓ |
| Email support | ✓ |
The **map preview** lets you quickly visualize your data on an interactive, read-only map, directly from the CartograFit platform. It is a preview tool: for your analyses, use your own GIS tools with our files.
[Download your data →](/en/guides/download-data)
### Integration into your GIS
Our data fits into your existing environment:
- **Ready-to-use files**: GeoPackage with pre-configured styles, GeoJSON — import directly into QGIS, ArcGIS, MapInfo
- **Automatic push**: we push updates to your infrastructure (SFTP, API, cloud storage)
- **API / PostGIS sync**: direct synchronization to your PostGIS database or your internal API
- **Dedicated support**: our team helps you integrate the data into your existing information system
Contact us about integration
## HD Satellite Imagery option
:::info Prerequisite
This option requires an active Dataset subscription. It cannot be purchased on its own.
:::
The HD Satellite Imagery option gives you access to a **high-resolution basemap** (0.15 to 0.30 m/pixel) of your territory, served as **XYZ tiles** with token-based authentication.
### Features
- Recent, high-resolution satellite basemap
- XYZ tile server with an authentication token
- Compatible with QGIS, ArcGIS, MapLibre, Leaflet, OpenLayers
- Overlay our data and yours on top of the imagery
### Why it matters
- **Pre-survey**: identify areas of interest on the image before heading out into the field
- **Combined visualization**: our vector data + your business data + satellite imagery, all in a single GIS project
- **Recent image**: satellite acquisitions can be scheduled, so you have an up-to-date basemap
Learn more
## Fit Audit
**Fit Audit** is a **geographic intelligence** module structured in 2 levels, enabled at your organization's level.
| Level | What you get |
|--------|---------------------|
| **Level 1 — Land Cover & derived analyses** | Land Cover per HD satellite tile + ready-to-use items (Urban Heat Islands, ZAN, APER law) |
| **Level 2 — Bespoke expertise** | Custom data engineering service engagement, delivered through CartograFit |
Level 1 gives you access to standardized territorial analyses. Level 2 takes over for specific needs that fall outside the catalog.
[Discover Fit Audit →](/en/audit)
## Time-series analysis
Our data is enriched continuously. This ability to accumulate data lets you track the **evolution of your territory** over time: compare the state of your parking, your vegetation, or your urban development between two observation periods.
## Tiers by number of users
Our subscriptions are sized by the number of users:
| Tier | Users | Features |
|------|:------------:|------------------|
| **Starter** | 1-5 | Standard access, email support |
| **Business** | 6-15 | Priority support |
| **Enterprise** | 16+ | Dedicated SLA, account manager |
[See the full plan details →](/en/offres/abonnements)
## Contact
To subscribe or request a demo:
Request access
- **Website**: [fitai.fr](https://fitai.fr)
---
# Subscription details
> Complete breakdown of CartograFit subscriptions and options
Source: https://docs.fitai.fr/en/offres/abonnements
# CartograFit subscriptions
CartograFit offers a flexible subscription model: a **dataset core** with **options** tailored to your needs.
## Dataset subscription
**Included in every subscription**
The dataset subscription gives you access to the data files and the map preview, so you can put our data to work in your own GIS tools.
### What's included
- **14 data layers** separated by source (street-level and HD satellite) for full traceability
- Coverage: public, private, accessible, free/paid
- Delivery in **GeoPackage** (recommended) and **GeoJSON**
- Other formats available on request (Shapefile, CSV, KML, GML, etc.)
- **GeoPackage with embedded styles**: open directly in QGIS with pre-configured symbology
- **Map preview**: a read-only visual overview of your data
- **Update notifications**: get alerted whenever a new version is available
- Compatible with every GIS package (QGIS, ArcGIS, MapInfo, etc.)
### How to use your data
Once your files are available, download them and import them into your GIS software:
[Guide: Download your data →](/en/guides/download-data)
### Integration into your GIS
Our data fits into your existing environment in several ways:
- **Ready-to-use files**: GeoPackage with pre-configured styles, GeoJSON — import directly into QGIS, ArcGIS, MapInfo
- **Automatic push**: we push updates to your infrastructure (SFTP, API, cloud storage)
- **API / PostGIS sync**: direct synchronization to your PostGIS database or your internal API
- **Dedicated support**: our team helps you integrate the data into your existing information system
Contact us about integration
---
## HD Satellite Imagery option
**A high-resolution basemap of your territory**
:::info Prerequisite
This option requires an active Dataset subscription. It cannot be purchased on its own.
:::
The HD Satellite Imagery option gives you access to high-resolution satellite imagery (0.15 to 0.30 m/pixel) of your territory, served as **XYZ tiles** with token-based authentication.
### What's included
- A recent, high-resolution satellite basemap
- An XYZ tile server with an authentication token
- Compatible with QGIS, ArcGIS, MapLibre, Leaflet, OpenLayers and any XYZ client
### Why it matters
- **Pre-survey**: spot areas of interest on the imagery before heading out to the field
- **Combined visualization**: our vector data + your business data + the satellite imagery, all in a single GIS project
- **Recent imagery**: an up-to-date basemap of your territory
Learn more
---
## Fit Audit
**A geographic intelligence module across 2 levels**
Fit Audit is an option enabled at the level of your organization. It structures your analyses across two levels:
### Level 1 — Land Cover & derived analyses
Land Cover analysis per high-resolution satellite tile, with ready-to-use items derived from the Land Cover:
- **Land Cover**: distribution of ground coverage by category
- **Urban Heat Islands (UHI)**: identification of urban overheating zones
- **Net Zero Land Take (ZAN)**: soil sealing diagnosis
- **APER law**: paved surfaces potentially eligible for solar canopies
- Delivery in GeoPackage with embedded QGIS styles
### Level 2 — Bespoke expertise
A full data engineering service engagement, tailored to your specific needs:
- Sourcing of complementary data where needed
- Custom processing and post-processing
- Temporal tracking of how your territory evolves
- Delivery straight into CartograFit
[Explore Fit Audit in detail →](/en/audit)
---
## Subscription tiers
Our subscriptions are sized according to the **number of users** in your organization who will access CartograFit:
| Tier | Users | Highlights |
|------|:------------:|------------------|
| **Starter** | 1-5 | Standard access, email support |
| **Business** | 6-15 | Priority support |
| **Enterprise** | 16+ | Dedicated SLA, account manager, customization |
:::info About the tiers
The tier applies to your organization and sets the maximum number of users who can access the CartograFit platform.
:::
---
## Summary table
| Feature | Dataset | + HD Imagery | + Fit Audit |
|---------------|:-------:|:-------------:|:-----------:|
| 14 layers (street-level + satellite) | ✓ | ✓ | ✓ |
| GeoPackage files with styles | ✓ | ✓ | ✓ |
| GeoJSON files | ✓ | ✓ | ✓ |
| Map preview | ✓ | ✓ | ✓ |
| Update notifications | ✓ | ✓ | ✓ |
| Integration into your GIS | ✓ | ✓ | ✓ |
| HD satellite imagery (XYZ tiles) | | ✓ | |
| Basemap 0.15-0.30 m/pixel | | ✓ | |
| Level 1: Land Cover & derived analyses | | | ✓ |
| Level 2: Bespoke expertise | | | ✓ |
---
## Getting access
To subscribe or to find out more:
Request access
- **Website**: [fitai.fr](https://fitai.fr)
:::tip Demo
Want to see CartograFit in action? Get in touch to arrange a personalized demo.
:::
---
# Map preview
> A read-only visual preview of your CartograFit data
Source: https://docs.fitai.fr/en/offres/previsualisation
# Map preview
The map preview is a **visual preview** of your data, included with every dataset subscription.
## What is it for?
When you access a dataset on CartograFit, you can instantly **view your data on an interactive map** with no setup required. It is a quick verification tool, not an analysis tool.
### Typical use cases
- **Quick check**: visually confirm that your data covers the expected territory
- **Preview before import**: review the data before importing it into your GIS
- **Screen sharing**: show the data to a colleague without opening any GIS software
- **Discovery**: explore the available data layers
## What's included
- Interactive map with navigation (zoom, pan)
- Display of the different data layers
- Read-only: no editing, no export from the map
## What's NOT included
The preview is an overview, not an analysis tool:
- No data export from the map
- No advanced filters
- No custom views
- No measurements or calculations
For your analyses, use your own GIS tools (QGIS, ArcGIS, etc.) with our files. [Download your data →](/en/guides/download-data)
## Access
The preview is available from each dataset's page on the CartograFit platform. No configuration required.
---
# Fit Audit
> CartograFit regulatory compliance and territorial analysis module
Source: https://docs.fitai.fr/en/audit
# Fit Audit
**Fit Audit** turns your CartograFit data into a **decision-support tool**: ready-to-use Land Cover analyses and bespoke expertise tailored to your territory.
## A 2-tier architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ FIT AUDIT │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Tier 1 — Land Cover & derived analyses │ │
│ │ Land Cover per HD satellite tile │ │
│ │ + ready-to-use items: UHI, ZAN, APER law │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Tier 2 — Bespoke expertise │ │
│ │ Custom data-engineering service engagement │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## Tier 1 — Land Cover & derived analyses
**Land Cover** is our analysis layer for **land cover** per high-resolution satellite tile. Each tile is classified into several categories (asphalt, building, vegetation, bare soil, water, etc.) and serves as the basis for several **ready-to-use items**:
| Analysis | Theme | Status |
|---------|-------|--------|
| [**Land Cover**](/en/audit/land-cover) | Land cover distribution | Available |
| [**Urban Heat Islands (UHI)**](/en/audit/icu) | Urban overheating zones | Available |
| **Net Zero Land Take (ZAN)** | Soil sealing diagnostic | Available |
| **APER law (Solar Canopies)** | Asphalt surfaces potentially eligible | Available |
You receive the data as a **GeoPackage with embedded QGIS styles** along with **aggregated statistics** across your entire territory, computed from each satellite tile.
Learn more about Land Cover
## Tier 2 — Bespoke expertise
A **complete data-engineering service engagement** tailored to your specific needs. We handle the entire chain: auditing your requirement, sourcing complementary data where needed, custom processing, post-processing, and delivery through the CartograFit platform.
- Cross-referencing and custom analyses on the data we already hold
- Integration of complementary data you provide to us
- Bulk processing tailored to your use case
- Temporal monitoring of how your territory evolves
- Delivery straight into CartograFit, like a standard dataset
[Learn more about bespoke expertise →](/en/audit/expertise-donnees)
Discuss your project
## Who is it for?
| Profile | Recommended tier |
|--------|-------------------|
| **Public authorities** | Tier 1 for territorial monitoring (ZAN, UHI), Tier 2 for specific needs |
| **Engineering consultancies** | Tier 1 for standard indicators, Tier 2 for bespoke impact studies |
| **Technical services** | Tier 1 for recurring reporting |
| **Renovation programs** | Tier 1 for before/after monitoring, Tier 2 for custom analyses |
:::caution Warning
Fit Audit is a **decision-support tool**, not a regulatory document. Results must be validated by an on-site check before any planning decision.
:::
---
# Land Cover Analysis
> Land Cover distribution across your territory
Source: https://docs.fitai.fr/en/audit/land-cover
# Land Cover Analysis
The **Land Cover** analysis maps the distribution of land cover types across your entire territory.
:::info Level 1 — Land Cover & derived analyses
This analysis is part of **Level 1** of Fit Audit. [Contact us](mailto:contact@fitai.fr) to learn more.
:::
## How it works
The Land Cover analysis provides an overview of land distribution across your territory, computed tile by tile from HD satellite imagery. Each tile (~192 m per side) is classified by the proportion of:
- **Impervious surfaces**: asphalt, concrete, tarmac
- **Vegetation**: green spaces, trees, lawns
- **Built-up areas**: structures, buildings
- **Water**: ponds, rivers, water bodies
- **Bare soil**: undeveloped, non-vegetated land
## Use cases
### Land take monitoring (ZAN)
The **Net Zero Land Take** law requires public authorities to track how land take evolves across their territory. The Land Cover analysis provides an objective snapshot, tile by tile.
### Renaturation programmes
Identify priority areas for revegetation by mapping highly sealed sectors. Track the impact of your planting and renaturation programmes over time.
### Urban planning
Feed objective land cover data into your planning documents (PLU, SCoT). Compare sectors against one another for a comprehensive view of your territory.
### Reporting
Produce monitoring reports for your urban renewal programmes (ANRU, ACV) with before/after land cover indicators.
## Methodology
The analysis relies on dividing the territory into **square satellite tiles** of roughly 192 m per side, with no overlap. Each tile is classified from HD satellite imagery, which guarantees comparable and statistically representative units of analysis.
Each tile provides:
- The **percentage distribution** of each land type
- An overall **imperviousness index**
- The **trend** relative to previous data (where available)
## Visualizing the results
- **Choropleth map**: a heatmap colored by dominant cover type
- **Distribution charts**: breakdown of land types by neighborhood or zone
- **Temporal comparison**: changes between two observation periods
## Limitations and caveats
:::caution Disclaimer
The Land Cover analysis is a **decision-support tool**, not a cadastral survey. The results are estimates based on available imagery and must be interpreted within their territorial context.
:::
## Get this analysis
The Land Cover analysis is part of the Fit Audit — Territorial Analysis module.
Contact us to activate this analysis
---
# Urban Heat Island Analysis
> Identify urban overheating zones across your territory
Source: https://docs.fitai.fr/en/audit/icu
# Urban Heat Island Analysis (UHI)
The **Urban Heat Islands** analysis identifies overheating zones across your territory by cross-referencing Land Cover data with imperviousness indicators.
:::info Level 1 — Land Cover & derived analyses
This analysis is part of **Level 1** of Fit Audit. [Contact us](mailto:contact@fitai.fr) to learn more.
:::
## How it works
Urban heat islands are areas where the temperature is significantly higher than the surrounding spaces, mainly due to a high concentration of impervious surfaces (asphalt, concrete) and a lack of vegetation.
The CartograFit UHI analysis provides, for every satellite tile (~192 m across) of your territory:
- The **asphalt/vegetation ratio**
- An overall **imperviousness index**
- A **UHI score** to help prioritize interventions
- A map of priority **hot spots**
## Use cases
### Greening programs
Identify the zones where greening would have the greatest impact on thermal comfort. Prioritize your planting investments by targeting the most critical sectors.
### RCO compliance (Overseas France)
The **Overseas Construction Regulation** (RCO) sets albedo and thermal comfort standards for new buildings. The UHI analysis lets you check the compliance of existing zones.
### Climate planning
Feed your **Territorial Climate-Air-Energy Plan** (PCAET) with objective data on overheating zones. Track how your UHI score evolves over time.
### Urban renewal
As part of NPNRU or ACV programs, assess the thermal impact of renovation operations: before/after monitoring of the imperviousness index and the vegetation ratio.
## Methodology
The analysis draws on **Land Cover** data computed tile by tile from HD satellite imagery, cross-referenced with:
- The proportion of **dark surfaces** (high thermal absorption)
- The proportion of **vegetation** (cooling effect)
- The **built-up density** (heat storage and release)
The **UHI score** synthesizes these indicators into a value from 0 (low risk) to 1 (high overheating risk).
## Visualizing the results
- **UHI heatmap**: a heat map by satellite tile (from green to red)
- **Priority zones**: identification of the sectors to address first
- **Neighborhood indicators**: average score per administrative zone
## Limits and caveats
:::caution Disclaimer
The UHI score is an **estimated indicator** based on Land Cover, not a temperature measurement. It identifies zones at risk of overheating, but does not replace a full microclimate study.
:::
## Getting this analysis
The UHI analysis is part of the Fit Audit — Territorial Analysis module.
Contact us to activate this analysis
---
# Bespoke expertise
> Bespoke geographic data engineering service
Source: https://docs.fitai.fr/en/audit/expertise-donnees
# Bespoke expertise
**Bespoke expertise** is an end-to-end geographic data engineering service, tailored to your specific needs.
:::info Level 2 — Bespoke expertise
This is a custom service engagement. [Contact us](mailto:contact@fitai.fr) to discuss your project.
:::
## Principle
Do you have a specific need that standard datasets or territorial analyses don't cover? Our team takes care of the entire chain:
1. **Auditing your need**: understanding your objectives and constraints
2. **Data sourcing**: identifying the available data — our datasets, your own data, and any relevant source
3. **Ingestion and processing**: large-scale processing through our infrastructure
4. **Refining and qualification**: quality control, scoring, cartographic formatting
5. **Delivery**: results in your usual formats (GeoPackage, GeoJSON, WFS, etc.)
## What we can process
### Analyses from your data
Do you have business data (PLU, cadastre, counts, field records)? We integrate it and cross-reference it with our datasets to produce enriched analyses.
### HD satellite imagery analyses
Our infrastructure makes it possible to run bespoke analyses on HD satellite imagery:
- **Roof inventory**: classification by type (material, color, condition)
- **Solar coverage**: identifying photovoltaic installations
- **Construction site monitoring**: how an area changes between two dates
- **Bespoke analyses**: any need that can be identified through imagery
### Temporal monitoring
Leverage our temporal analysis capability to track how your territory evolves over **5 to 10 years**. Ideal for reporting on urban renewal programs or monitoring land take.
### Third-party data integration
We can integrate and process data coming from external sources:
- Institutional data (IGN, INSEE, cadastre)
- Operator data (counts, IoT sensors)
- Your organization's business databases
## Process
```
Your need → Consultation → Specification → Processing → Delivery
│ │ │
Available data Technical Ingestion,
audit spec processing,
qualification
```
### Typical workflow
| Step | Indicative duration | Deliverable |
|-------|-----------------|----------|
| Initial consultation | 1-2 weeks | Scoping note |
| Technical specification | 1 week | Technical spec |
| Processing and production | 2-6 weeks | Produced data |
| Delivery and support | 1 week | Files + documentation |
## Who is it for?
- **Public authorities** with specific regulatory needs (DOM-TOM, local regulations)
- **Engineering consultancies** carrying out impact studies or territorial diagnostics
- **Operators** looking to enrich their own data with geographic intelligence
- **Urban renewal programs** requiring bespoke before/after monitoring
## Get a quote
Every project is unique. Contact us to discuss your need and receive a tailored proposal.
Discuss your project
---
# Download your data
> Guide to downloading CartograFit data files
Source: https://docs.fitai.fr/en/guides/download-data
# Download your data
This guide explains how to download CartograFit data files from the platform.
## Available formats
| Format | Extension | Recommended for |
|--------|-----------|-----------------|
| **GeoPackage** | `.gpkg` | QGIS (built-in styles, best performance) |
| **GeoJSON** | `.geojson` | Web mapping, development |
:::tip Recommended format
**GeoPackage** is the recommended format for QGIS. It ships with pre-configured styles and delivers the best performance.
:::
:::info Other formats on request
Need a specific format (Shapefile, CSV, KML, GML, etc.)? Get in touch for a bespoke delivery.
:::
## Step 1: Access your subscriptions
1. Sign in to [CartograFit](https://cartografit.fitai.fr)
2. In the menu, click **My Subscriptions**
3. You will see the list of your available datasets
## Step 2: Choose a dataset
For each dataset, you can see:
- **Dataset name**: the geographic area covered
- **Current version**: version number and publication date
- **Active options**: HD Satellite Imagery, Fit Audit (if subscribed)
Click the dataset you want to open its details page.
## Step 3: Download the files
On the dataset page, you will find the **Downloads** section:
1. Click the **Download** button or the icon matching the format you want
2. Select the format (GeoPackage or GeoJSON)
3. The download starts automatically
:::info Per-layer or full download
Depending on your subscription, you can download:
- The full dataset (all layers)
- A specific layer (parking_areas, roads, etc.)
:::
## Check for updates
### Notifications
When a new version is available:
1. A notification appears on the platform
2. A badge is shown on the dataset page
3. You can see the new version number
### Version status
The **Version status** card tells you:
| Information | Description |
|-------------|-------------|
| **Your version** | The latest version you have downloaded |
| **Available version** | The latest version published on the server |
| **Update available** | An alert when a new version is available |
:::tip Stay up to date
We recommend downloading each new version to benefit from fixes and improvements.
:::
## Download history
Your download history is kept. You can review:
- The date of each download
- The version downloaded
- The format chosen
## Using your files
Once downloaded, import your files into your GIS software (QGIS, ArcGIS, MapInfo, etc.):
- **GeoPackage**: open it directly in QGIS — the styles are pre-configured and apply automatically
- **GeoJSON**: import it into any GIS tool or web application
## Property format
The downloaded files (GeoJSON and GeoPackage) share the exact same property schema. A few rules to know when reading the columns:
### Flattened grouped properties
Logical groups (parking statistics, OSM attributes, metadata, etc.) are exposed as flat columns with a `group_field` prefix. For example, for an H3 cell:
| Logical group | Column in the file |
|----------------|------------------------|
| Parking statistics | `parking_stats_total_spots`, `parking_stats_density_per_km2`, … |
| Road statistics | `road_stats_total_roads`, `road_stats_total_length_meters`, … |
| Accessibility | `accessibility_has_public_parking`, … |
| Metadata | `metadata_indexed_at`, `metadata_dataset_id`, … |
This convention applies to **all** exported data types.
### Arrays serialized as JSON strings
List-type properties (e.g. `neighbors` for H3 cells) are serialized as **JSON strings** in the file, not as native arrays. To use them in QGIS or a script, parse the string:
```json
"neighbors": "[\"893b0c6a9a3ffff\",\"893b0c6a9abffff\"]"
```
:::info Why this format?
The **GeoPackage** format (based on SQLite) does not support structured columns (objects, lists). To ensure both formats stay interchangeable and that QGIS classifications work (they require scalar columns), all nested properties are flattened and arrays serialized as JSON.
:::
## Map styles
### Styles built into the GeoPackage
The **GeoPackage** format includes the pre-configured CartograFit styles for each layer. When you open a `.gpkg` file in QGIS, the symbology applies automatically (colors, icons, labels).
### QGIS style files (.qml)
If you use the GeoJSON format or want to customize the symbology, you can download the individual QGIS style files (`.qml`) from each data type's page. To apply them in QGIS:
1. Right-click the layer → **Properties** → **Symbology**
2. **Style** → **Load Style** → select the `.qml` file
## Available layers
Each download contains **14 layers** split into three categories.
**Field and HD satellite layers:**
| Layer | Type | Description |
|--------|------|-------------|
| `parking_areas_street` | Point/Polygon | Parking areas (field imagery) |
| `parking_areas_satellite` | Point/Polygon | Parking areas (HD satellite imagery) |
| `parking_lots_satellite` | Polygon | Parking lots (HD satellite imagery only) |
| `urban_furniture_street` | Point | Street furniture (field imagery) |
| `urban_furniture_satellite` | Point | Street furniture (HD satellite imagery) |
| `road_markings_street` | Point/LineString | Road markings (field imagery) |
| `road_markings_satellite` | Point/LineString | Road markings (HD satellite imagery) |
| `traffic_signs_street` | Point | Road signs (field imagery) |
| `traffic_signs_satellite` | Point | Road signs (HD satellite imagery) |
**Structural layers:**
| Layer | Type | Description |
|--------|------|-------------|
| `roads` | LineString | Roads enriched with density |
| `road_segments_street` | LineString | Road segments with density (field imagery) |
| `road_segments_satellite` | LineString | Road segments with density (HD satellite imagery) |
| `h3_cells_street` | Polygon | H3 cells with aggregated statistics (field imagery) |
| `h3_cells_satellite` | Polygon | H3 cells with aggregated statistics (HD satellite imagery) |
:::info Field vs HD Satellite
The **field** layers (`_street`) offer high GPS precision (~1-2m) and complete attributes. The **satellite** layers (`_satellite`) offer broader geographic coverage with slightly lower precision (~3-5m) and partial attributes. The two variants complement each other to cover your territory as fully as possible.
:::
[See the data types documentation →](/en/types)
## Support
If you run into a problem with a download:
Contact us
---
# Install the QGIS MCP
> Connect an AI assistant to QGIS to drive your CartograFit datasets in natural language
Source: https://docs.fitai.fr/en/guides/qgis-mcp
# Install the QGIS MCP
The **QGIS MCP** connects an AI assistant (Claude, ChatGPT via compatible clients, Cursor, etc.) directly to **QGIS Desktop**. You describe what you want in natural language — *"load this GeoPackage and apply the styles"*, *"select the paid on-street parking on Street X"*, *"export an A3 layout"* — and the assistant does it in QGIS.
:::info Configurations verified on June 9, 2026 (2026-06-09)
The commands and configuration files below were verified on this date. AI clients evolve quickly: if anything differs, refer to the MCP server repository (links at the bottom of the page).
:::
## Why MCP, and why it matters
QGIS is powerful but dense: hundreds of menus, processing algorithms, and styling options. The MCP turns that complexity into a **conversation**.
- **Speed**: loading a dataset, applying a `.qml` style, running a process, or building a map takes a single sentence — no digging through menus, no hand-writing PyQGIS.
- **Onboarding**: a new user becomes productive immediately — the assistant knows QGIS for you.
- **Repetitive tasks**: tedious operations (joins, filters, batch exports) are delegated.
- **Paired with our documentation**: combine the MCP with our [AI assistant](/en/ai-assistant) and our `llms.txt` files — the assistant then knows **the schema of your CartograFit data** and knows exactly which fields to work with.
In short: the MCP turns QGIS from a tool you drive with a mouse into a tool you drive with your assistant's voice. It is a major time saver for data exploration and preparation.
## Prerequisites
- **QGIS 3.28 or newer** (compatible up to the 4.x releases).
- **[uv](https://docs.astral.sh/uv/getting-started/installation/)** — the Python package manager that provides the `uvx` command.
- An **MCP-compatible AI client** (Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Codex CLI, Gemini CLI…).
## Step 1 — Install the QGIS plugin
The plugin creates a small server inside QGIS (TCP socket, port **9876** by default) that the AI client connects to.
1. Open QGIS.
2. Menu **Plugins → Manage and Install Plugins**.
3. Search for **QGIS MCP**, install the plugin, then restart QGIS.
4. Open the **QGIS MCP** panel and click **Start Server**.
:::tip Alternative install (source repository)
You can also clone the repository and run the install script, which sets up the plugin and configures your client automatically:
```bash
git clone https://github.com/nkarasiak/qgis-mcp.git
cd qgis-mcp
python install.py
```
Handy options: `--clients claude-desktop,cursor`, `--profile `, `--uninstall`.
:::
## Step 2 — Connect your AI assistant
The MCP server is launched through `uvx` (provided by `uv`). Pick the procedure that matches your client.
### Claude Code
```bash
claude mcp add -s user qgis -- uvx --from git+https://github.com/nkarasiak/qgis-mcp qgis-mcp-server
```
### Claude Desktop · Cursor · VS Code · Windsurf
Add this block to your client's MCP configuration file:
```json
{
"mcpServers": {
"qgis": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/nkarasiak/qgis-mcp",
"qgis-mcp-server"
]
}
}
}
```
> Claude Desktop file location: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows).
### Codex CLI
```bash
codex mcp add qgis -- uvx --from git+https://github.com/nkarasiak/qgis-mcp qgis-mcp-server
```
### Gemini CLI
In `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"qgis": {
"command": "uvx",
"args": ["--from", "git+https://github.com/nkarasiak/qgis-mcp", "qgis-mcp-server"]
}
}
}
```
### Environment variables (optional)
| Variable | Default | Role |
|----------|---------|------|
| `QGIS_MCP_PORT` | `9876` | QGIS socket port |
| `QGIS_MCP_HOST` | `localhost` | Socket host |
| `QGIS_MCP_TOOL_MODE` | `granular` | `granular` (detailed toolset) or `compound` (condensed toolset) |
## Step 3 — Verify the connection
1. QGIS open, plugin **Start Server** active.
2. Start (or restart) your AI client — it should list the QGIS tools.
3. Ask, for example: *"Ping QGIS"* or *"Give me the QGIS installation info"*.
## CartograFit example workflow
Once connected, a typical use case:
1. **Download** a GeoPackage dataset from the platform (see [Download your data](/en/guides/download-data)).
2. *"Load this `.gpkg` file and apply the embedded styles."*
3. *"Select the paid parking areas along Street X."*
4. *"Cross the parking layer with my own data and export a print-ready A3 layout."*
The assistant chains loading, styling, filtering, and exporting — while you stay in control of the result.
:::caution Security
The QGIS MCP can run arbitrary PyQGIS code locally to drive QGIS. Only connect trusted AI clients, and keep the server stopped when you are not using it.
:::
## Sources
- QGIS MCP server — [nkarasiak/qgis-mcp](https://github.com/nkarasiak/qgis-mcp) (reference configuration used here)
- Original project — [jjsantos01/qgis_mcp](https://github.com/jjsantos01/qgis_mcp)
- Standard — [Model Context Protocol](https://modelcontextprotocol.io/)
Need help connecting QGIS?
---
# Overview
> Overview of CartograFit geographic data types
Source: https://docs.fitai.fr/en/types
# Data types
CartograFit datasets are organized into complementary **data types** (referred to internally as *DatasetDTO*), enabling different levels of analysis of parking and urban planning.
## Data architecture
```
┌──────────────────────────────────────────────────────────────────┐
│ Cellules H3 │
│ (Agrégation par zone hexagonale) │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Cellule 1 │ │ Cellule 2 │ │ Cellule N │ │
│ │ - Stats │ │ - Stats │ │ - Stats │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Réseau routier │ │
│ │ ┌─────────────────┐ ┌───────────────────────────────┐ │ │
│ │ │ Routes │◄──│ Segments de route │ │ │
│ │ │ (OSM enrichi) │ │ (détail par tronçon) │ │ │
│ │ └────────┬────────┘ └───────────────────────────────┘ │ │
│ └───────────│──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Cartographie terrain │ │
│ │ ┌────────────────┐ ┌────────────────┐ ┌──────────────┐ │ │
│ │ │ Parking │ │ Panneaux │ │ Marquages │ │ │
│ │ │ Areas │ │ routiers │ │ au sol │ │ │
│ │ └────────────────┘ └────────────────┘ └──────────────┘ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Mobilier urbain │ │
│ └──────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
```
## Data sources
CartograFit combines **two complementary imagery sources** to deliver the most complete and reliable parking cadastre on the market. Each source brings distinct value, and it is their combination that makes our datasets so rich.
### Street-level imagery
Our street-level imagery captures the urban landscape **at street level**, the way a pedestrian or a driver perceives it.
| Characteristic | Detail |
|----------------|--------|
| **GPS accuracy** | ~1-2 meters |
| **Attributes** | Complete: parking type, road markings, signage, side of the road, match to the road network |
| **Key strength** | Richness of information — every space is characterized with a high level of detail |
| **Limitation** | Coverage depends on the availability of street-level imagery across the territory |
### HD satellite imagery
Our HD satellite imagery provides an **aerial view of the territory** from latest-generation optical satellites (resolution 0.15 to 0.30 m/pixel depending on the area).
| Characteristic | Detail |
|----------------|--------|
| **GPS accuracy** | ~3-5 meters |
| **Attributes** | Partial: some details are not observable from a nadir view (fine markings, signage, side of the road) |
| **Key strength** | Exhaustive coverage and freshness — satellite acquisitions are schedulable and cover an entire territory, including areas hard to reach with street-level imagery |
| **Unique complement** | Identifies elements invisible from the street: set-back parking, real ground footprints, off-street parking areas |
### Why two separate layers?
Our datasets deliver street-level and satellite data in **separate layers**, and this is a deliberate choice:
- **Transparency** — you know exactly where every piece of data comes from and what accuracy to expect from it
- **Freedom of use** — depending on your need, you work with the most suitable layer: street-level accuracy for a regulatory inventory, satellite coverage for a fast territorial diagnostic
- **Overlay** — in QGIS or any other GIS, the two layers naturally overlay for a combined view of the territory
- **Freshness** — since satellite acquisitions are schedulable, satellite layers are often more recent than the available street-level imagery
Four data types are available in two variants (`-street` and `-satellite`): parking areas, street furniture, road markings and road signs. Parking lots are available only in the satellite variant. Roads are common to all sources. Road segments and H3 cells come in street-level (`-street`) and satellite (`-satellite`) variants with the same data formats.
### HD satellite imagery
In addition to the vector layers, CartograFit offers the **HD satellite imagery** of your territory as an option, delivered as **XYZ tiles** accessible through a dedicated server with token-based authentication.
| Characteristic | Detail |
|----------------|--------|
| **Access** | XYZ tile server (HTTP) with an authentication token |
| **Resolution** | 0.15 to 0.30 m/pixel depending on the area and sources |
| **Compatible with** | QGIS, ArcGIS, MapLibre, Leaflet, OpenLayers, any XYZ client |
| **Use** | Recent high-resolution basemap of your territory |
**Why it matters:**
- You get a **recent basemap** of your territory at an exceptional resolution
- You can **overlay our data AND yours** on top of this imagery in QGIS or any other GIS
- You **visualize the terrain directly** to validate or complete the vector data
- It is a **pre-survey** tool: identify areas of interest on the image before going out in the field
### Which layer should you use?
| Need | Recommended layer | Why |
|--------|-------------------|----------|
| Regulatory inventory (LOM law, accessible) | Street-level | GPS accuracy ~1-2m, complete attributes |
| Fast territorial diagnostic | Satellite | Exhaustive coverage of the territory |
| Areas not covered by street-level imagery | Satellite | Satellite covers hard-to-reach areas |
| Validation before a field audit | HD imagery + satellite layers | Visual pre-survey before going out |
| Complete combined view | Both overlaid | Combine street-level accuracy and satellite coverage |
:::tip Field validation
The satellite layers are a **pre-survey** tool: they identify objects of interest across your territory. For regulatory use, we recommend validating satellite elements in the field. The street-level layers, thanks to their superior accuracy, require less validation.
:::
## The data types
### [H3 cells](/en/types/h3-cell)
Data aggregated by hexagonal zone using Uber's H3 system.
| Geometry | Primary use |
|-----------|-----------------|
| `Polygon` | Heatmaps, comparative analysis, KPIs |
### [Roads](/en/types/road)
Roads from OpenStreetMap, enriched with parking metadata.
| Geometry | Primary use |
|-----------|-----------------|
| `LineString` | Linear analysis, planning |
### [Road segments](/en/types/road-segment)
Individual road segments with detailed parking density.
| Geometry | Primary use |
|-----------|-----------------|
| `LineString` | Fine-grained analysis, graduated visualization |
### [Parking areas](/en/types/parking-area)
Parking spaces mapped individually.
| Geometry | Primary use |
|-----------|-----------------|
| `Point` | Precise mapping, navigation |
### [Parking lots](/en/types/parking-lot)
Parking lots identified through HD satellite imagery (satellite only).
| Geometry | Primary use |
|-----------|-----------------|
| `Polygon` | Off-street inventory, soil sealing |
### [Road signs](/en/types/traffic-sign)
Road signs cataloged, in particular those related to parking.
| Geometry | Primary use |
|-----------|-----------------|
| `Point` | Regulations, constraints |
### [Road markings](/en/types/road-marking)
Road markings cataloged (lines, symbols, text).
| Geometry | Primary use |
|-----------|-----------------|
| `Point` | Field analysis, validation |
### [Street furniture](/en/types/urban-furniture)
Street furniture identified by our algorithms.
| Geometry | Primary use |
|-----------|-----------------|
| `Point` | Inventory, accessibility |
## Common format
All our datasets share common characteristics:
| Property | Value |
|-----------|--------|
| **Projection** | WGS84 (EPSG:4326) |
| **Formats** | GeoPackage (recommended), GeoJSON |
| **Spatial indexing** | H3 resolution 9 |
| **Language** | French |
## Common fields
Every record includes identification and metadata fields:
| Field | Type | Description |
|-------|------|-------------|
| `id` | `string` | Unique identifier |
| `layer_type` | `string` | Document type (e.g. `parking_area`, `road`) |
| `h3_index` | `string` | Parent H3 cell |
| `h3_resolution` | `integer` | H3 resolution (always 9) |
| `source_type` | `string` | Source imagery type (`street_level`: street-level imagery, `satellite_hd`: HD satellite imagery) |
| `captured_at` | `datetime` | Date of the source imagery |
## Quality score
Every record includes a **confidence score** (`fit_score`) between 0 and 1 reflecting the reliability of the data:
| Score | Interpretation | Recommendation |
|-------|----------------|----------------|
| ≥ 0.8 | High confidence | Direct use |
| 0.5 - 0.8 | Medium confidence | Verification recommended |
| < 0.5 | Low confidence | Verification required |
## Available layers
The data types correspond to the **14 layers** available in the GeoPackage and GeoJSON files. Source-dependent layers come in `-street` (street-level imagery) and `-satellite` (HD satellite imagery) variants:
| Layer | `layer_type` | TypeScript type |
|--------|--------------|-----------------|
| `parking_areas_street` | `parking_area` | `ParkingAreaDatasetDTO` |
| `parking_areas_satellite` | `parking_area` | `ParkingAreaDatasetDTO` |
| `parking_lots_satellite` | `parking_lot` | `ParkingLotDatasetDTO` |
| `roads` | `road` | `RoadDatasetDTO` |
| `road_segments_street` | `road_segment` | `RoadSegmentDatasetDTO` |
| `road_segments_satellite` | `road_segment` | `RoadSegmentDatasetDTO` |
| `h3_cells_street` | `h3_cell` | `H3CellDatasetDTO` |
| `h3_cells_satellite` | `h3_cell` | `H3CellDatasetDTO` |
| `urban_furniture_street` | `urban_furniture` | `UrbanFurnitureDatasetDTO` |
| `urban_furniture_satellite` | `urban_furniture` | `UrbanFurnitureDatasetDTO` |
| `road_markings_street` | `road_marking` | `RoadMarkingDatasetDTO` |
| `road_markings_satellite` | `road_marking` | `RoadMarkingDatasetDTO` |
| `traffic_signs_street` | `traffic_sign` | `TrafficSignDatasetDTO` |
| `traffic_signs_satellite` | `traffic_sign` | `TrafficSignDatasetDTO` |
[Download guide →](/en/guides/download-data)
---
# H3 Cells
> Parking statistics aggregated by H3 hexagonal area
Source: https://docs.fitai.fr/en/types/h3-cell
# H3 Cells
The **H3 Cell** type (`H3CellDatasetDTO`) provides **aggregated parking statistics** for each hexagonal area. It is the ideal format for visualizing parking density at the scale of a neighborhood or an entire city.
## The H3 system
Our datasets use the **H3** geospatial indexing system, developed by [Uber](https://www.uber.com/blog/h3/). This system divides the Earth's surface into uniformly sized hexagons, enabling efficient spatial aggregation and consistent neighborhood analyses.
### Why hexagons?
Unlike squares (traditional grids), hexagons offer:
- **Uniform distance**: every neighbor is equidistant from the center
- **No directional distortion**: consistent analysis in every direction
- **Better circle approximation**: ideal for areas of influence
### Resolution used
All CartograFit datasets use **resolution 9** of the H3 system.
| Resolution | Diameter | Area | Use |
|------------|----------|------|-----|
| 8 | ~461 m | ~0.74 km² | Macro analysis |
| **9** | **~174 m** | **~0.11 km²** | **CartograFit** |
| 10 | ~66 m | ~0.015 km² | Micro analysis |
:::info Need a different resolution?
Our datasets are produced at resolution 9, but we can generate aggregations at other resolutions to suit your needs.
Contact us
:::
## Properties
### Identification
| Property | Type | Description | Example |
|----------|------|-------------|---------|
| `id` | `string` | Unique identifier (= h3_index) | `893b0c6a9a7ffff` |
| `layer_type` | `string` | Document type | `h3_cell` |
| `h3_index` | `string` | H3 index (identical to id) | `893b0c6a9a7ffff` |
| `h3_resolution` | `integer` | H3 resolution (always 9) | `9` |
### Geometry
| Property | Type | Description |
|----------|------|-------------|
| `center` | `GeoPoint` | Cell center `{ lat, lon }` |
| `geometry` | `Polygon` | Hexagonal outline (GeoJSON) |
| `area_km2` | `number` | Area in km² |
:::info Flattened format
Properties grouped logically (parking statistics, road statistics, etc.) are exposed as flat `group_field` columns in the exported files (GeoJSON and GeoPackage). See [Property format](/en/guides/download-data#property-format).
:::
### Parking statistics
| Property | Type | Description |
|----------|------|-------------|
| `parking_stats_total_spots` | `integer` | Total number of spots |
| `parking_stats_total_areas` | `integer` | Number of parking areas |
| `parking_stats_density_per_km2` | `number` | Spot density per km² |
| `parking_stats_average_confidence` | `number` | Average confidence score (0-1) |
| `parking_stats_coverage_percentage` | `number` | Percentage covered by imagery (0-100) |
### Breakdown by type
| Property | Type | Description |
|----------|------|-------------|
| `parking_by_type_parallel` | `integer` | Parallel parking spots |
| `parking_by_type_perpendicular` | `integer` | Perpendicular parking spots |
| `parking_by_type_diagonal` | `integer` | Angled (diagonal) parking spots |
| `parking_by_type_other` | `integer` | Other configurations |
### Road statistics
| Property | Type | Description |
|----------|------|-------------|
| `road_stats_total_roads` | `integer` | Number of roads |
| `road_stats_total_length_meters` | `number` | Total road length |
| `road_stats_road_density_km_per_km2` | `number` | Road density (km/km²) |
| `road_stats_major_roads` | `integer` | Primary/secondary roads |
| `road_stats_local_roads` | `integer` | Local/service roads |
### Accessibility
| Property | Type | Description |
|----------|------|-------------|
| `accessibility_has_public_parking` | `boolean` | Public parking present |
| `accessibility_has_paid_parking` | `boolean` | Paid parking present |
| `accessibility_has_disabled_parking` | `boolean` | Accessible parking spots present |
### Quality
| Property | Type | Description |
|----------|------|-------------|
| `avg_fit_score` | `number` | Average confidence score (0-1) |
### Road coverage
The `visited_road_stats_*` fields measure ground-level imagery coverage across the cell's road network:
| Property | Type | Description |
|----------|------|-------------|
| `visited_road_stats_total_visited_meters` | `number` | Meters of road covered by ground-level imagery |
| `visited_road_stats_total_non_visited_meters` | `number` | Meters without coverage |
| `visited_road_stats_coverage_percent` | `number` | Coverage percentage (0-100) |
:::info Additive statistics
These statistics are additive: summing the meters across all cells gives the overall coverage of the area.
:::
### Neighborhood
| Property | Type | Description |
|----------|------|-------------|
| `neighbors` | `string` | Serialized JSON array of adjacent H3 indices (e.g. `"[\"893b0c6a9a3ffff\",\"893b0c6a9abffff\"]"`) |
## Use cases
### Density heatmap
Use `parking_stats_density_per_km2` to create a color-based visualization:
| Density (spots/km²) | Interpretation |
|---------------------|----------------|
| 0-50 | Sparsely equipped area |
| 50-150 | Moderately equipped |
| 150-300 | Well equipped |
| 300+ | Very well equipped area |
### Comparative analysis
Compare H3 cells to identify:
- Over-equipped vs. under-equipped areas
- The geographic distribution of parking types
- Sectors with accessible or paid parking
### Dashboards and KPIs
Aggregate cells to compute indicators at the scale of a territory:
- Total number of spots
- Average density
- Accessible-parking coverage
## Recommended QGIS style
H3 cells are displayed in green with transparency by default:
1. Download the QGIS style file: [h3_cells.qml](pathname:///styles/h3_cells.qml)
2. In QGIS: right-click the layer → Properties → Symbology
3. Style → Load Style → select the `.qml` file
[Download and styles guide →](/en/guides/download-data)
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "893b0c6a9a7ffff",
"layer_type": "h3_cell",
"h3_index": "893b0c6a9a7ffff",
"h3_resolution": 9,
"area_km2": 0.11,
"parking_stats_total_spots": 42,
"parking_stats_total_areas": 8,
"parking_stats_density_per_km2": 382,
"parking_stats_average_confidence": 0.82,
"parking_stats_coverage_percentage": 75,
"parking_by_type_parallel": 28,
"parking_by_type_perpendicular": 10,
"parking_by_type_diagonal": 4,
"parking_by_type_other": 0,
"road_stats_total_roads": 5,
"road_stats_total_length_meters": 450.5,
"road_stats_road_density_km_per_km2": 4.1,
"road_stats_major_roads": 1,
"road_stats_local_roads": 4,
"accessibility_has_public_parking": true,
"accessibility_has_paid_parking": false,
"accessibility_has_disabled_parking": true,
"visited_road_stats_total_visited_meters": 380.2,
"visited_road_stats_total_non_visited_meters": 70.3,
"visited_road_stats_coverage_percent": 84.4,
"avg_fit_score": 0.82,
"neighbors": "[\"893b0c6a9a3ffff\",\"893b0c6a9abffff\"]"
},
"geometry": {
"type": "Polygon",
"coordinates": [[[55.47, -21.12], [55.475, -21.115], ...]]
}
}
```
## H3 resources
To learn more about the H3 system:
- [h3geo.org](https://h3geo.org/) - Official site with complete documentation
- [H3 on GitHub](https://github.com/uber/h3) - Source code and multi-language bindings
- [Introduction to H3](https://www.uber.com/blog/h3/) - Overview article by Uber
- [H3 for Python](https://uber.github.io/h3-py/) - Official Python library
- [H3 Geo Viewer](https://wolf-h3-viewer.glitch.me/) - Interactive visualization
## Variants by source
H3 cells come in **two variants** depending on the imagery source:
### Ground-level cells (`h3_cells_street`)
Aggregation of the elements identified from ground-level imagery. Includes the road coverage statistics (`visited_road_stats`) measuring what proportion of the road network was covered by ground-level imagery.
### Satellite cells (`h3_cells_satellite`)
Aggregation of the elements identified from HD satellite imagery. The road statistics (`road_stats`) are identical (same OSM network), but the parking statistics come exclusively from satellite imagery.
| Property | Ground-level | Satellite |
|----------|--------------|-----------|
| `parking_stats_*` | Ground-level imagery | Satellite imagery |
| `road_stats_*` | OSM network (identical) | OSM network (identical) |
| `visited_road_stats_*` | Ground-level imagery coverage | Not applicable (0) |
| `avg_fit_score` | Average ground-level score | Average satellite score |
Both variants share the same data format and the same H3 resolution 9 grid.
---
# Roads
> Roads enriched with parking metadata
Source: https://docs.fitai.fr/en/types/road
# Roads
The **Road** type (`RoadDatasetDTO`) exposes the roads found within the coverage of our H3 cells, enriched with metadata about the parking catalogued along each road.
## Description
Each road comes from **OpenStreetMap** and is associated with aggregated parking density information. The data lets you analyze parking on a linear basis, by street or by road type.
### Structure
```
Road (e.g. "Rue des Lilas")
│
├── OpenStreetMap attributes (osm_ prefix)
│ ├── osm_name: Street name
│ ├── osm_highway_type: Road type
│ ├── osm_maxspeed: Speed limit
│ └── osm_is_roundabout, osm_junction
│
├── geometry: LineString (full path)
│
└── Aggregated statistics
├── total_spots: Number of spots
├── total_length_meters: Length
├── visited_segments_count / total_segments_count
└── avg_fit_score: Confidence score
```
## Properties
### Identification
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `id` | `string` | Unique identifier (= osm_id) | `way/123456789` |
| `layer_type` | `string` | Document type | `roads` |
| `osm_id` | `string` | OpenStreetMap identifier | `way/123456789` |
| `h3_index` | `string` | Parent H3 cell | `893b0c6a9a7ffff` |
| `h3_resolution` | `integer` | H3 resolution (always 9) | `9` |
### OpenStreetMap attributes
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `osm_name` | `string` | Street name | `Rue des Lilas` |
| `osm_highway_type` | `string` | OSM road type | `residential` |
| `osm_maxspeed` | `string` | Speed limit | `50` |
| `osm_is_roundabout` | `boolean` | Is a roundabout | `false` |
| `osm_junction` | `string` | Junction type | `roundabout` |
#### Road types (`osm_highway_type`)
| Value | Description |
|--------|-------------|
| `primary` | Primary road |
| `secondary` | Secondary road |
| `tertiary` | Tertiary road |
| `residential` | Residential street |
| `service` | Service road |
| `unclassified` | Unclassified road |
| `living_street` | Living street |
### Parking statistics
| Property | Type | Description |
|-----------|------|-------------|
| `total_spots` | `integer` | Total number of spots on the road |
| `total_length_meters` | `number` | Road length in meters |
| `visited_segments_count` | `integer` | Number of analyzed segments |
| `total_segments_count` | `integer` | Total number of segments |
| `avg_fit_score` | `number` | Average confidence score (0-1) |
### Geometry
| Property | Type | Description |
|-----------|------|-------------|
| `geometry` | `LineString` | Full road path (GeoJSON) |
## Use cases
### Analysis by street
Identify the streets best equipped with parking:
- Filter by `osm_highway_type` to target a specific road type
- Sort by `total_spots` to find the streets with the most spots
- Compute a spots-per-meter ratio to compare provision
### Urban planning
Use the data to:
- Identify streets under-equipped with parking
- Compare provision across neighborhoods
- Plan new developments
### Map visualization
Display roads with a color code based on:
- Parking density (`total_spots / total_length_meters`)
- Road type
- Confidence score
## Recommended QGIS style
Roads are displayed in purple by default:
1. Download the QGIS style file: [roads.qml](pathname:///styles/roads.qml)
2. In QGIS: right-click the layer → Properties → Symbology
3. Style → Load Style → select the `.qml` file
[Download and styles guide →](/en/guides/download-data)
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "way/123456789",
"layer_type": "roads",
"osm_id": "way/123456789",
"h3_index": "893b0c6a9a7ffff",
"h3_resolution": 9,
"osm_name": "Rue des Lilas",
"osm_highway_type": "residential",
"osm_maxspeed": "30",
"osm_is_roundabout": false,
"total_spots": 24,
"total_length_meters": 187.5,
"visited_segments_count": 4,
"total_segments_count": 4,
"avg_fit_score": 0.78
},
"geometry": {
"type": "LineString",
"coordinates": [[55.47, -21.12], [55.48, -21.13]]
}
}
```
## Relation to other types
| Type | Relation |
|------|----------|
| [Road segments](/en/types/road-segment) | A road contains several segments |
| [H3 cells](/en/types/h3-cell) | Each road belongs to an H3 cell |
| [Parking areas](/en/types/parking-area) | Areas are attached to roads |
## Coverage
Roads come from the OpenStreetMap database and are filtered to include only the roads where on-street parking is possible. Motorways, railways and footpaths are excluded.
:::tip OpenStreetMap data
The OSM attributes (name, type, speed) come directly from OpenStreetMap. To report an error in these attributes, contribute on [openstreetmap.org](https://www.openstreetmap.org/).
:::
---
# Road segments
> Individual road segments with detailed parking density
Source: https://docs.fitai.fr/en/types/road-segment
# Road segments
The **Road segment** type (`RoadSegmentDatasetDTO`) represents an individual segment of an OSM road, with detailed parking statistics for that precise segment.
## Description
Unlike [Roads](/en/types/road), which aggregate data across an entire way, segments enable **fine-grained analysis** of parking. Each OSM road is split into segments of homogeneous length, making it possible to visualize density variations along a single street.
### Relationship with Roads
```
OSM road "Rue des Lilas" (osm_id: way/123456789)
│
├── Segment 0 (id: way/123456789_0)
│ └── 5 spots catalogued
│
├── Segment 1 (id: way/123456789_1)
│ └── 12 spots catalogued
│
├── Segment 2 (id: way/123456789_2)
│ └── 0 spots (no-parking area)
│
└── Segment 3 (id: way/123456789_3)
└── 8 spots catalogued
```
## Properties
### Identification
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `id` | `string` | Unique identifier (`{osm_id}_{segment_index}`) | `way/123456789_2` |
| `layer_type` | `string` | Document type | `road_segment` |
| `osm_id` | `string` | OSM identifier of the parent road | `way/123456789` |
| `segment_index` | `integer` | Index of the segment along the road | `2` |
| `h3_index` | `string` | H3 cell the segment is attached to | `893b0c6a9a7ffff` |
### Geometry
| Property | Type | Description |
|-----------|------|-------------|
| `geometry` | `LineString` | Segment geometry (GeoJSON) |
### Statistics
| Property | Type | Description |
|-----------|------|-------------|
| `segment_length_meters` | `number` | Segment length in meters |
| `total_spots` | `integer` | Number of spots catalogued on the segment |
| `avg_fit_score` | `number` | Average confidence score (0-1) |
### Traceability
| Property | Type | Description |
|-----------|------|-------------|
| `captured_at` | `datetime` | Date of the most recent imagery for this segment |
## Use cases
### Graduated visualization
Use `total_spots` to build a map with a color gradient:
| Spot count | Suggested color | Interpretation |
|-----------|------------------|----------------|
| 0 | Grey | No parking |
| 1-5 | Light blue | Low density |
| 5-10 | Blue | Medium density |
| 10-50 | Dark blue | High density |
| 50+ | Very dark blue | Very high density |
### Identifying critical areas
Analyze segments to spot:
- Segments with no parking (no-parking areas, double-parking)
- Concentrations of spots (linear parking)
- Density variations along a street
### Analysis by H3 cell
Cross-reference segments with H3 cells to:
- Compute parking density per zone
- Compare provision between neighborhoods
- Identify under-served areas
## Recommended QGIS style
To visualize segments with a gradient based on `total_spots`:
1. Download the QGIS style file: [road_segments.qml](pathname:///styles/road_segments.qml)
2. In QGIS: right-click on the layer → Properties → Symbology
3. Style → Load Style → select the `.qml` file
[Download and styles guide →](/en/guides/download-data)
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "way/123456789_2",
"layer_type": "road_segment",
"osm_id": "way/123456789",
"segment_index": 2,
"h3_index": "893b0c6a9a7ffff",
"segment_length_meters": 45.7,
"total_spots": 8,
"avg_fit_score": 0.82
},
"geometry": {
"type": "LineString",
"coordinates": [[55.47, -21.12], [55.475, -21.125]]
}
}
```
## Relationship with other types
| Type | Relationship |
|------|----------|
| [Roads](/en/types/road) | A segment belongs to a road (via `osm_id`) |
| [H3 cells](/en/types/h3-cell) | A segment belongs to an H3 cell (via `h3_index`) |
| [Parking areas](/en/types/parking-area) | Parking areas are located along segments |
## Variants by source
Road segments come in **two variants** depending on the imagery source:
### Street-level segments (`road_segments_street`)
Computed from street-level imagery. Each 20 m segment carries a detailed left/right analysis.
| Characteristic | Detail |
|----------------|--------|
| **Accuracy** | ~1-2 meters |
| **Attributes** | Left/right distinction, parking type per side |
| **Search radius** | 10 meters around the segment |
### Satellite segments (`road_segments_satellite`)
Computed from HD satellite imagery. Aggregation is global per segment (no left/right distinction, since the nadir view does not allow for it).
| Characteristic | Detail |
|----------------|--------|
| **Accuracy** | ~3-5 meters |
| **Attributes** | Total spots per segment only |
| **Search radius** | 15 meters around the segment |
| **Road filtering** | Motorways, pedestrian ways and cycle paths excluded |
Both variants share the same data format (`RoadSegmentDatasetDTO`), the same geometry (20-meter segments), and the same confidence scoring (`avg_fit_score`).
---
# Parking areas
> Parking locations with capacity estimation
Source: https://docs.fitai.fr/en/types/parking-area
# Parking areas
The **Parking area** type (`ParkingAreaDatasetDTO`) represents a mapped parking location, with its GPS position and an estimate of the number of available spaces.
## Description
Each parking area is a **geographic projection** of a location where parking has been identified. The data includes:
- The estimated **GPS position** of the area
- The **parking type** (parallel, perpendicular, angled)
- An **estimate of the number of spaces**
- Additional **attributes** (paid, accessible, markings)
### What an area represents
A parking area corresponds to a continuous set of spaces of the same type, generally located on one side of a street. For example:
- 5 parallel spaces in front of a shop
- 8 perpendicular spaces on a residential street
- 3 accessible spaces near a public facility
## Availability by source
Parking areas are available in two distinct layers:
| Property | Field imagery | HD satellite imagery | Notes |
|-----------|-----------------|----------------------|-------|
| `center` | GPS ~1-2m | GPS ~3-5m | Lower accuracy from satellite |
| `parking_type` | Complete | Partial | Coarser estimate from satellite |
| `spot_count_estimate` | Complete | Partial | Coarser estimate from satellite |
| `has_markings` | Populated | Not available | Not visible from satellite |
| `is_paid_parking` | Populated | Not available | Not visible from satellite |
| `is_disabled_parking` | Populated | Not available | Not visible from satellite |
| `has_no_parking_sign` | Populated | Not available | Not visible from satellite |
| `road_side` | Populated | Not available | No direction in nadir view |
| `source_osm_id` | Populated | Not available | |
| `matched_osm_id` | Populated | Not available | |
| `fit_score` | 0-1 | 0-1 | Same scale |
## Properties
### Identification
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `id` | `string` | Unique identifier | `pa_a3f2b1c4d5e6f7a8` |
| `layer_type` | `string` | Document type | `parking_area` |
| `h3_index` | `string` | Parent H3 cell | `893b0c6a9a7ffff` |
| `h3_resolution` | `integer` | H3 resolution (always 9) | `9` |
### OSM references
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `source_osm_id` | `string` | OSM ID of the source road (where the camera was) | `way/123456789` |
| `matched_osm_id` | `string` | OSM ID of the road where the parking is located | `way/987654321` |
### Location
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `center` | `GeoPoint` | GPS position of the area | `{ lat: -21.12, lon: 55.48 }` |
| `road_side` | `string` | Side of the road | `left`, `right`, `center`, `unknown` |
| `is_on_roadside` | `boolean` | On-street (vs parking lot) | `true` |
### Parking type
| Property | Type | Description |
|-----------|------|-------------|
| `parking_type` | `string` | Configuration type |
| `spot_count_estimate` | `integer` | Estimated number of spaces |
| `is_parking_lot` | `boolean` | Parking lot (vs on-street parking) |
| `parking_lot_type` | `string` | Parking lot type if applicable |
#### `parking_type` values
| Value | Description |
|--------|-------------|
| `En ligne` | Parallel parking (parallel bay) |
| `En bataille` | Perpendicular parking |
| `En épi` | Angled parking |
#### `parking_lot_type` values
| Value | Description |
|--------|-------------|
| `public` | Public parking lot |
| `commercial` | Retail parking lot |
| `residential` | Residential parking lot |
| `other` | Other type |
### Attributes
| Property | Type | Description |
|-----------|------|-------------|
| `has_markings` | `boolean` | Visible road markings |
| `is_paid_parking` | `boolean` | Paid parking |
| `is_disabled_parking` | `boolean` | Accessible space |
| `has_no_parking_sign` | `boolean` | No-parking sign present |
### Traceability
| Property | Type | Description |
|-----------|------|-------------|
| `source_type` | `string` | Source imagery type (`street_level`: ground-level imagery, `satellite_hd`: satellite imagery) |
| `captured_at` | `datetime` | Date of the source imagery |
| `observation_count` | `integer` | Total number of concurring observations that contributed to this data |
| `first_detected_at` | `datetime` | Date first identified |
| `last_detected_at` | `datetime` | Date last identified |
### Quality
| Property | Type | Description |
|-----------|------|-------------|
| `fit_score` | `number` | Confidence score (0-1) |
## Space estimation
The `spot_count_estimate` field provides an **estimate** of the number of spaces in the area. This estimate is based on:
- The visible length of the area
- The parking type (parallel ≈ 5m/space, perpendicular ≈ 2.5m/space)
- The observed constraints (entrances, pedestrian crossings, etc.)
:::info About the estimates
The `spot_count_estimate` values are estimates. For a precise count, an on-the-ground check is still recommended. The `fit_score` indicates the reliability of the estimate.
:::
## Confidence score
Each area includes a confidence score between 0 and 1:
| Score | Interpretation | Recommendation |
|-------|----------------|----------------|
| ≥ 0.8 | High confidence | Direct use |
| 0.5 - 0.8 | Medium confidence | Verification recommended |
| < 0.5 | Low confidence | Verification required |
## Use cases
### Parking mapping
Display the areas on a map to:
- Visualize the distribution of parking
- Identify accessible or paid areas
- Analyze the supply by neighborhood
### Navigation applications
Integrate the data to:
- Guide users to parking areas
- Filter by type (free, accessible, etc.)
- Estimate availability by area
### Urban studies
Analyze the data to:
- Inventory the parking supply of a territory
- Compare supply across districts
- Plan new developments
## Recommended QGIS style
Parking areas are visualized in blue (circles) by default:
1. Download the style file: [parking_areas.qml](pathname:///styles/parking_areas.qml)
2. In QGIS: Right-click on the layer → Properties → Symbology
3. Style → Load Style → Select the `.qml` file
[Download and styles guide →](/en/guides/download-data)
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "pa_a3f2b1c4d5e6f7a8",
"layer_type": "parking_area",
"h3_index": "893b0c6a9a7ffff",
"h3_resolution": 9,
"source_osm_id": "way/123456789",
"matched_osm_id": "way/987654321",
"parking_type": "En ligne",
"spot_count_estimate": 5,
"road_side": "right",
"is_on_roadside": true,
"is_parking_lot": false,
"has_markings": true,
"is_paid_parking": false,
"is_disabled_parking": false,
"has_no_parking_sign": false,
"source_type": "street_level",
"captured_at": "2025-01-10T09:45:00Z",
"observation_count": 3,
"first_detected_at": "2024-06-15T14:00:00Z",
"last_detected_at": "2025-01-10T09:45:00Z",
"fit_score": 0.87
},
"geometry": {
"type": "Point",
"coordinates": [55.48, -21.12]
}
}
```
## Relationship with other types
| Type | Relationship |
|------|----------|
| [H3 cells](/en/types/h3-cell) | Each area belongs to an H3 cell |
| [Road segments](/en/types/road-segment) | Areas are located along the segments |
| [Signs](/en/types/traffic-sign) | Signs define the regulation |
| [Markings](/en/types/road-marking) | Markings confirm the data |
---
# Parking lots
> Surface parking lots mapped from HD satellite imagery
Source: https://docs.fitai.fr/en/types/parking-lot
# Parking lots
The **Parking lot** type (`ParkingLotDatasetDTO`) represents a surface parking lot identified from HD satellite imagery. Unlike [parking areas](/en/types/parking-area) (individual points along streets), parking lots are **polygons** that enclose the full ground footprint of a parking lot.
## Description
Each parking lot is a **geographic surface** corresponding to a surface parking lot identified from an aerial view. The data includes:
- The **polygonal outline** of the ground footprint
- The **lot type** (public, commercial, residential, industrial)
- An **estimate of the number of spots**
- The **surface type** (asphalt, gravel, grass)
:::info Satellite layer only
This data type is available only in the HD satellite variant. Surface parking lots cannot be identified from on-the-ground imagery (street-level view).
:::
## Properties
### Identification
| Property | Type | Description | Example |
|----------|------|-------------|---------|
| `id` | `string` | Unique identifier | `pl_b7e9d2f1a8c34e56` |
| `layer_type` | `string` | Document type | `parking_lot` |
| `h3_index` | `string` | Parent H3 cell | `893b0c6a9a7ffff` |
### Location
| Property | Type | Description | Example |
|----------|------|-------------|---------|
| `polygon` | `GeoShape` | Polygonal outline of the parking lot (WGS84) | GeoJSON Polygon |
| `centroid` | `GeoPoint` | Center of the polygon | `{ lat: -21.12, lon: 55.48 }` |
### Characteristics
| Property | Type | Description |
|----------|------|-------------|
| `lot_type` | `string` | Lot type |
| `estimated_spots` | `integer` | Estimate of the number of spots |
| `occupancy_percent` | `number` | Estimated occupancy rate (0-100) |
| `surface_type` | `string` | Surface type |
#### `lot_type` values
| Value | Description |
|-------|-------------|
| `public` | Public parking lot |
| `commercial` | Retail or shopping-center parking lot |
| `residential` | Residential parking lot |
| `industrial` | Industrial or business-park parking lot |
| `mixed` | Mixed use |
#### `surface_type` values
| Value | Description |
|-------|-------------|
| `paved` | Asphalt or concrete |
| `gravel` | Gravel |
| `grass` | Grass |
| `mixed` | Mixed surface |
### Traceability
| Property | Type | Description |
|----------|------|-------------|
| `captured_at` | `datetime` | Date of the satellite imagery |
### Quality
| Property | Type | Description |
|----------|------|-------------|
| `fit_score` | `number` | Confidence score (0-1) |
## Use cases
### Off-street parking inventory
Identify and inventory every surface parking lot across your territory:
- Total area dedicated to parking
- Breakdown by type (public, commercial, residential)
- Estimated capacity by sector
### Soil-sealing analysis
Cross-reference parking data with the Land Cover analysis to:
- Quantify the area sealed by parking
- Identify parking lots on unpaved ground
- Feed your ZAN (Net Zero Land Take) plans
### Field pre-survey
Locate surface parking lots before planning a field operation.
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "pl_b7e9d2f1a8c34e56",
"layer_type": "parking_lot",
"h3_index": "893b0c6a9a7ffff",
"lot_type": "commercial",
"estimated_spots": 45,
"occupancy_percent": 72,
"surface_type": "paved",
"fit_score": 0.82,
"captured_at": "2025-02-15T10:30:00Z"
},
"geometry": {
"type": "Polygon",
"coordinates": [[[55.28, -20.93], [55.281, -20.93], [55.281, -20.931], [55.28, -20.931], [55.28, -20.93]]]
}
}
```
## Relationship with other types
| Type | Relationship |
|------|--------------|
| [Parking areas](/en/types/parking-area) | ParkingAreas (points) represent linear on-street parking along roads, while ParkingLots (polygons) represent parking surfaces |
| [H3 cells](/en/types/h3-cell) | Each parking lot belongs to an H3 cell |
| [Street furniture](/en/types/urban-furniture) | Street furniture can be located in or around parking lots |
---
# Street furniture
> Street furniture identified by our algorithms from field and satellite imagery
Source: https://docs.fitai.fr/en/types/urban-furniture
# Street furniture
The **Street furniture** type (`UrbanFurnitureDatasetDTO`) represents the urban amenity elements cataloged by our algorithms: benches, street lamps, trees, bus stops, waste baskets, and many more.
## Description
Street furniture data is produced by **our algorithms** from field imagery and HD satellite imagery. Each element includes:
- The estimated **GPS position**
- The element's **category** and **subcategory**
- A **confidence score** reflecting the reliability of the identification
## Availability by source
Street furniture is available in two distinct layers:
| Property | Field imagery | HD satellite imagery | Notes |
|-----------|-----------------|----------------------|-------|
| `location` | GPS ~1-2m | GPS ~3-5m | Lower accuracy from satellite |
| `category` | Complete | Partial | Limited categories from satellite |
| `subcategory` | Complete | Partial | |
| `fit_score` | 0-1 | 0-1 | Same scale |
## Main properties
### Identification
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `id` | `string` | Opaque unique identifier | `uf_e6f7a8b9c0d1e2f3` |
| `layer_type` | `string` | Document type | `urban_furniture` |
| `h3_index` | `string` | Parent H3 cell | `893b0c6a9a7ffff` |
### Location
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `location` | `GeoPoint` | Estimated GPS position | `{ lat: -21.12, lon: 55.48 }` |
### Classification
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `category` | `string` | Main category | `seating`, `lighting`, `vegetation` |
| `subcategory` | `string` | Specific type | `bench`, `street_lamp`, `tree` |
### Confidence score
| Property | Type | Description |
|-----------|------|-------------|
| `fit_score` | `number` | Normalized confidence score (0-1) |
:::info Confidence score
Only elements with a score >= 0.5 are included in the dataset. The score reflects the reliability of the identification by our algorithms.
:::
### Traceability
| Property | Type | Description |
|-----------|------|-------------|
| `source_type` | `string` | Source imagery type (`street_level`: ground-level imagery, `satellite_hd`: satellite imagery) |
| `captured_at` | `datetime` | Date of the source imagery |
## Categories
Street furniture is organized into 12 main categories:
| Category | Description | Subcategory examples |
|-----------|-------------|----------------------------|
| `seating` | Seating | `bench` |
| `waste` | Waste | `waste_basket`, `recycling` |
| `lighting` | Lighting | `street_lamp` |
| `vegetation` | Vegetation | `tree`, `tree_row` |
| `barrier` | Barriers | `bollard`, `gate`, `planter` |
| `transport` | Transport | `bus_stop`, `charging_station` |
| `accessibility` | Accessibility | `crossing`, `lowered` (accessible kerb ramp) |
| `signage` | Signage | `traffic_signals`, `stop`, `give_way` |
| `utility` | Utilities | `fire_hydrant`, `manhole` |
| `service` | Services | `drinking_water`, `toilets` |
| `security` | Security | `surveillance` (camera), `defibrillator` |
| `advertising` | Advertising | `billboard`, `column` (Morris column) |
## Confidence score
The confidence score (`fit_score`) is computed by our algorithms and normalized between 0 and 1.
### Interpretation
| Score | Interpretation |
|-------|----------------|
| >= 0.75 | High reliability, direct use |
| 0.50 - 0.74 | Medium reliability, verification recommended |
:::note Filtering by score
Only elements with a score >= 0.50 are indexed. Low-reliability elements are excluded to guarantee data quality.
:::
## Recommended QGIS style
Street furniture is displayed in amber (circles) by default:
1. Download the style file: [urban_furniture.qml](pathname:///styles/urban_furniture.qml)
2. In QGIS: right-click the layer -> Properties -> Symbology
3. Style -> Load Style -> select the `.qml` file
[Download and styling guide →](/en/guides/download-data)
## Use cases
### Street furniture inventory
Catalog amenities by category:
- Number of public benches
- Lighting coverage
- Urban vegetation
### Accessibility analysis
Identify accessibility amenities:
- Pedestrian crossings and accessible kerb ramps
- Tactile paving strips
- Accessible parking spaces
### Urban planning
Use the data to:
- Identify under-equipped areas
- Plan the placement of new amenities
- Map public services
### Maintenance
Locate amenities to:
- Plan maintenance rounds
- Track the condition of furniture
- Optimize interventions
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "uf_e6f7a8b9c0d1e2f3",
"layer_type": "urban_furniture",
"h3_index": "893b0c6a9a7ffff",
"category": "seating",
"subcategory": "bench",
"fit_score": 0.72,
"source_type": "street_level",
"captured_at": "2024-06-15T14:30:00Z"
},
"geometry": {
"type": "Point",
"coordinates": [55.48, -21.12]
}
}
```
## Relation to other types
Street furniture is linked to the other data types through:
- **H3 cell**: each element belongs to an H3 cell (via `h3_index`)
- **Location**: enables proximity analyses with parking areas
This relationship makes it possible to cross-reference data for combined analyses (e.g. benches near parking areas).
---
# Road signs
> Road signs related to parking
Source: https://docs.fitai.fr/en/types/traffic-sign
# Road signs
The **Road sign** type (`TrafficSignDatasetDTO`) represents the road signs cataloged, with a particular focus on parking-related signs.
## Description
Road signs provide crucial information about parking regulations: bans, restrictions, paid zones, and more.
### Parking-related signs
- No parking
- No stopping or parking
- Paid parking
- Blue zone (parking disc)
- Accessible parking
- Loading zone
- Parking hours
## Properties
### Identification
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `id` | `string` | Unique identifier | `ts_d5e6f7a8b9c0d1e2` |
| `layer_type` | `string` | Document type | `traffic_sign` |
| `h3_index` | `string` | Parent H3 cell | `893b0c6a9a7ffff` |
### Location
| Property | Type | Description |
|-----------|------|-------------|
| `location` | `GeoPoint` | Estimated GPS position of the sign `{ lat, lon }` |
### Classification
| Property | Type | Description | Example |
|-----------|------|-------------|---------|
| `sign_type` | `string` | Sign type (automatic transcription) | `no_parking`, `paid_parking` |
| `text` | `string` | Text read on the sign (if legible) | `8am-7pm except Sun.` |
| `parking_related` | `boolean` | Parking-related sign | `true` |
### Traceability
| Property | Type | Description |
|-----------|------|-------------|
| `source_type` | `string` | Source imagery type (`street_level`: ground-level imagery, `satellite_hd`: satellite imagery) |
| `captured_at` | `datetime` | Date of the source imagery |
### Quality
| Property | Type | Description |
|-----------|------|-------------|
| `fit_score` | `number` | Confidence score (0-1) |
## Sign types
### Parking signs
| Type | Description | Highway Code |
|------|-------------|--------------|
| `no_parking` | No parking | B6a1 |
| `no_stopping` | No stopping or parking | B6d |
| `paid_parking` | Paid parking | B6b3 |
| `blue_zone` | Blue zone (parking disc required) | B6b4 |
| `disabled_parking` | Accessible parking | B6d + M6h |
| `delivery_zone` | Loading zone | B6b1 |
| `time_limited` | Time-limited parking | B6b2 |
### Other common signs
| Type | Description |
|------|-------------|
| `speed_limit` | Speed limit |
| `stop` | Stop |
| `give_way` | Give way |
| `one_way` | One way |
| `dead_end` | Dead end |
## The `parking_related` field
The `parking_related` field lets you quickly filter parking-related signs:
```sql
-- WFS Filter
parking_related = true
```
This flag is `true` for every sign that affects parking:
- Parking bans
- Regulated zones
- Parking lot signage
## Use cases
### Regulatory mapping
Use road signs to:
- Identify no-parking zones
- Locate paid zones
- Spot regulatory accessible spaces
### Data validation
Cross-reference signs with parking areas to:
- Confirm parking bans
- Identify inconsistencies (spaces in a banned zone)
- Enrich zone metadata
### Regulatory studies
Analyze signs to:
- Map regulated zones
- Assess signage coverage
- Plan new equipment
## Recommended QGIS style
Signs are displayed in red (triangles) by default:
1. Download the style file: [traffic_signs.qml](pathname:///styles/traffic_signs.qml)
2. In QGIS: right-click the layer → Properties → Symbology
3. Style → Load Style → select the `.qml` file
[Download and styling guide →](/en/guides/download-data)
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "ts_d5e6f7a8b9c0d1e2",
"layer_type": "traffic_sign",
"h3_index": "893b0c6a9a7ffff",
"sign_type": "no_parking",
"text": "8h-19h sauf dim.",
"parking_related": true,
"source_type": "street_level",
"captured_at": "2025-01-10T09:45:00Z",
"fit_score": 0.91
},
"geometry": {
"type": "Point",
"coordinates": [55.48, -21.12]
}
}
```
## Relation to other types
| Type | Relation |
|------|----------|
| [Parking areas](/en/types/parking-area) | Signs define the regulations for parking areas |
| [Road segments](/en/types/road-segment) | Signs are located along road segments |
| [H3 cells](/en/types/h3-cell) | Aggregation by hexagonal zone |
## Limitations
:::info Coverage
Sign coverage depends on the zones mapped and the quality of the available sources.
:::
:::caution Interpretation
The text extracted from signs (`text`) is an automatic transcription. For a precise legal interpretation, always refer to the signage on site.
:::
---
# Road markings
> Mapped road markings
Source: https://docs.fitai.fr/en/types/road-marking
# Road markings
The **Road marking** type (`RoadMarkingDatasetDTO`) represents the road markings on record: lines, symbols, and text painted on the carriageway.
## Description
Road markings provide valuable information about parking regulations and traffic constraints.
### Types of markings on record
- Solid and broken lines
- Parking lines (bay delineation)
- Zebra markings and hatching
- Directional arrows
- Symbols (accessible, bicycle, bus)
- Painted text (STOP, TAXI, etc.)
## Properties
### Identification
| Property | Type | Description | Example |
|----------|------|-------------|---------|
| `id` | `string` | Unique identifier | `rm_c4d5e6f7a8b9c0d1` |
| `layer_type` | `string` | Document type | `road_marking` |
| `h3_index` | `string` | Parent H3 cell | `893b0c6a9a7ffff` |
### Location
| Property | Type | Description |
|----------|------|-------------|
| `location` | `GeoPoint` | GPS position of the marking `{ lat, lon }` |
### Classification
| Property | Type | Description | Example |
|----------|------|-------------|---------|
| `marking_type` | `string` | Marking type (see enumeration) | `parking_space`, `zebra_crossing` |
| `color` | `string` | Marking color | `white`, `yellow`, `blue`, `green`, `other` |
### Traceability
| Property | Type | Description |
|----------|------|-------------|
| `source_type` | `string` | Source imagery type (`street_level`: ground-level imagery, `satellite_hd`: satellite imagery) |
| `captured_at` | `datetime` | Date of the source imagery |
### Quality
| Property | Type | Description |
|----------|------|-------------|
| `fit_score` | `number` | Confidence score (0-1) |
## Marking types (`marking_type`)
| Type | Description | Use |
|------|-------------|-----|
| `continuous_white` | Solid white line | Lane delineation |
| `dashed_white` | Broken white line | Lane delineation |
| `continuous_yellow` | Solid yellow line | No-parking |
| `dashed_yellow` | Broken yellow line | Temporary restriction |
| `zebra_crossing` | Pedestrian crossing | Safety |
| `stop_line` | Stop line | Regulation |
| `give_way_line` | Give-way line | Regulation |
| `parking_space` | Bay marking | Bay delineation |
| `blue_zone` | Blue zone | Regulated parking |
| `disabled_space` | Accessible bay | Accessibility |
| `ev_charging` | Charging point | Electric vehicles |
| `delivery_zone` | Loading zone | Regulation |
| `cycle_lane` | Cycle lane | Active mobility |
| `other` | Other type | Miscellaneous |
## Colors (`color`)
| Color | Common meaning |
|-------|----------------|
| `white` | Standard marking |
| `yellow` | Prohibition, obstructive parking |
| `blue` | Blue zone (parking disc) |
| `green` | Active mobility, bicycles |
| `other` | Other color |
## Use cases
### Field validation
Markings let you:
- Confirm the presence of parking bays
- Identify no-parking areas
- Identify accessible bays marked on the ground
### Compliance analysis
Cross-reference markings with parking areas to:
- Check consistency between markings and data
- Identify bays without markings
- Assess the condition of markings (wear)
### Asset inventory
Catalog markings to:
- Plan marking renewal
- Quantify accessible bays
- Audit horizontal signage
## Recommended QGIS style
Markings are displayed in yellow (squares) by default:
1. Download the QGIS style file: [road_markings.qml](pathname:///styles/road_markings.qml)
2. In QGIS: right-click the layer → Properties → Symbology
3. Style → Load Style → select the `.qml` file
[Download and styling guide →](/en/guides/download-data)
## GeoJSON example
```json
{
"type": "Feature",
"properties": {
"id": "rm_c4d5e6f7a8b9c0d1",
"layer_type": "road_marking",
"h3_index": "893b0c6a9a7ffff",
"marking_type": "parking_space",
"color": "white",
"source_type": "street_level",
"captured_at": "2025-01-10T09:45:00Z",
"fit_score": 0.78
},
"geometry": {
"type": "Point",
"coordinates": [55.48, -21.12]
}
}
```
## Relationship with other types
| Type | Relationship |
|------|--------------|
| [Parking areas](/en/types/parking-area) | Markings validate the mapped areas |
| [Road segments](/en/types/road-segment) | Markings are located along the segments |
| [H3 cells](/en/types/h3-cell) | Aggregation by hexagonal zone |
## Limitations
:::info Coverage
Markings are only available in areas covered by recent street-level imagery. Quality depends on the visibility and condition of the marking at the time of capture.
:::