Sari la conținut
megapromotingHai să discutăm
Produse FlowMind

Inteligență geospațială Implementare specializată

The data about a place, seen together.

FlowMind organises maps, public sources and Copernicus products into one space for analysis. We move from a background image to layers that carry a source, a date, a sensor and stated limits of interpretation.

OBSERVAȚIEDATESTRAT PE HARTĂ
Cum funcționează FlowMind

FlowMind

From information to work done.

01

We choose the area

We define the territory, the period and the question: vegetation, water, land or urban context.

02

We process the data

We use the optical, radar, thermal and atmospheric products that suit the question.

03

We compare and interpret

We show the layers on the map and keep the context an informed decision needs.

Where it earns its place.

Vegetation and water

Sentinel-2 and indices such as NDVI and NDWI, for exploring change.

Radar observations

Sentinel-1 completes the optical picture, including when there is cloud cover.

Regional context

Sentinel-3 thermal and Sentinel-5P atmospheric data, at the resolutions specific to those products.

The data is not a continuous video feed. Interpretation depends on resolution, season, cloud and the moment of observation. InSAR displacement analysis needs a separate pipeline, still in development.

FlowMind in detail

What you can do with this project.

FlowMind is an aggregation layer for a territory: it gathers into one operational map everything that can be read about a city from public sources — Copernicus satellite imagery, OpenStreetMap geometry, public road cameras, incidents, weather — and shows beside every layer where it came from and when it was last read.

The rule it is built on is called ZERO FALSE DATA in the code: when a source does not answer, the platform writes OFFLINE and the reason, instead of filling the gap with a plausible value. There is an automatic guard, `noFakeLive`, that refuses to mark a layer LIVE without proof of a successful read. At today's check it reports zero violations.

We do not own satellites. We work through the Copernicus Data Space Ecosystem, with OAuth2 client_credentials credentials on identity.dataspace.copernicus.eu, and we request processed products through the Sentinel Hub API. What that means in practice: the resolution, the revisit frequency and the clouds belong to the mission, not to us, and they are stated in the text.

01

Six Copernicus layers, each with its own sensor

Sentinel-2 MSI at 10 m in three variants (true colour from B04/B03/B02, NDVI from B08/B04, NDWI from B03/B08), Sentinel-1 C-SAR VV/VH ratio at 10 m, Sentinel-3 SLSTR thermal band S8 at ~1 km, and Sentinel-5P TROPOMI NO₂ at ~3.5 × 5.5 km. The collections requested from Sentinel Hub are `sentinel-2-l2a`, `sentinel-1-grd`, `sentinel-3-slstr` and `sentinel-5p-l2`.

02

A cloud mask, not cloud removal

Sentinel-2 requests filter out scenes above 40% cloud cover, and in the evalscript the pixels the SCL band marks as cloud, cloud shadow, cirrus or snow (classes 3, 8, 9, 10, 11) are returned transparent. An empty pixel means "we did not observe here", not "there is nothing here".

03

Radar when optical cannot

Sentinel-1 passes through cloud and works at night, at 10 m, with a revisit of roughly 6–12 days. It is single-scene screening, not interferometry: the VV/VH ratio shows differences in surface and moisture, not millimetre displacements.

04

An infrastructure inventory, and cameras actually probed

538 road infrastructure points mapped from OpenStreetMap (245 traffic lights, 174 pedestrian lights, 61 speed cameras, 58 cameras) and a prober that genuinely tests every camera stream and writes down the reason when one drops.

05

A 3D scene with no paid keys

The 3D map drapes the government orthophoto from geodata.gov.md (WMS, served by Moldova's geodesy, cartography and cadastre agency) over a terrain model built from the terrarium tiles on AWS Open Data, rendered with MapLibre GL. Zero API keys, zero cost per view.

06

Orbital positions computed locally

Satellite trajectories are propagated from CelesTrak TLE elements with `satellite.js` in process, with the age of the orbital data marked fresh / stale / expired. It is a map of the sky, not an imagery product.

Data and operation

What goes into the system. What has to be checked.

What we ask of the provider, and what we do ourselves
From Copernicus we request a raster already processed for an area and an interval: we send an evalscript to `https://sh.dataspace.copernicus.eu/api/v1/process` and receive an image. The NDVI and NDWI indices and the VV/VH ratio are computed inside that evalscript, on the provider's server. What stays local: the cache, the validation guards, the source inventory and the interpretation.
The real processing quota
A standard Copernicus Data Space account has 30,000 processing units and 30,000 requests a month. There is no counter for that quota inside the application — this is the most important limit to know before an installation with heavy traffic. What does exist instead: a 30-minute tile cache with 200 entries, a 24-hour `Cache-Control` on the response, and a rate limiter of our own at 1,200 requests/minute on tiles, 120/minute on the JSON APIs and 30/minute on writes.
The limits we place on requests
A tile request accepts between 64 and 2048 px per side, a bounding box of at most 5° on each axis and an interval of at most 31 days; past 15 seconds the request to Copernicus is abandoned. The default window for the layers is the last 7 days, ending yesterday — not the current day, because the products are not ready instantly.
Revisit, and what it means
The product register in the code declares: Sentinel-2 ~5 days per constellation (a usable product at ~2 days when a cloud-free scene exists), Sentinel-1 ~6–12 days, Sentinel-3 thermal daily to several times a day, Sentinel-5P NO₂ daily. A cloudy winter can leave weeks without a usable optical scene; that is where the radar comes in.
What is not a satellite product
The map background is visual orientation only, and orbit tracking is not an imagery product — both are marked explicitly `basemapIsSatelliteProduct: false` and `orbitTrackingIsMapProduct: false` in the response of the products API.
Persistență
The operational data (incidents, reports, camera status) sits in JSON files on disk, not in a database. It is a deliberate choice for the present scale, with a daily backup through cron; for a client with retention requirements it changes before installation.

From exploration to deployment

How we prepare a project with FlowMind.

01

1. We settle the question and the area

What the territory is, what the team wants to follow (vegetation, water, land, air, infrastructure) and at what scale the decision gets taken. A resolution that suits a district does not describe a single plot.

02

2. We inventory the real sources of the place

We check which cameras, geoportals, transport feeds and public registers actually exist and answer. Every source enters the platform with its licence, its attribution and its state; the ones that do not answer stay visible as OFFLINE with the reason, they do not vanish from the list.

03

3. We connect Copernicus on the client's own account

An OAuth2 client is created in the Sentinel Hub Dashboard inside CDSE, and `CDSE_CLIENT_ID`, `CDSE_CLIENT_SECRET` and `CDSE_INSTANCE_ID` go into the application's environment. The quota of 30,000 PU/month stays the client's own, which means the client sees it and controls it.

04

4. We install and verify with the guards switched on

The installation goes onto a server belonging to the client (Next.js under systemd, nginx in front). The acceptance check is `/api/worldview/source-health`: if `noFakeLive` reports so much as one violation, the installation is not finished.

05

5. What gets closed before any public access

The current reference installation runs on HTTP without TLS and without authentication on read. For a publicly exposed deployment, TLS and authentication are separate pieces of work, planned explicitly — they are not assumed to be included.

Questions worth settling.

Which satellites do you use, exactly?

Sentinel-1, Sentinel-2, Sentinel-3 and Sentinel-5P, through the Copernicus Data Space Ecosystem. In the code the collections are named exactly `sentinel-1-grd`, `sentinel-2-l2a`, `sentinel-3-slstr` and `sentinel-5p-l2`. We have no satellites of our own and we do not buy high-resolution commercial imagery — if you need 30 cm, that is a different conversation and a different supplier.

Do I get a live image from the satellite?

No, and nobody can give you that with Sentinel. Sentinel-2 passes over the same place about every 5 days, Sentinel-1 every 6–12 days, and the product needs processing time. That is why the default window for the layers is the last 7 days, ending yesterday. What you get is the best scene available in the interval you asked for, with its date stated.

What happens when it is cloudy?

The optical view is lost. We filter out scenes above 40% cloud and mask the pixels the SCL band marks as cloud, shadow, cirrus or snow — they come back transparent, not invented. When optical cannot, Sentinel-1 remains: radar passes through cloud and works at night, at the price of being read differently — it sees roughness and moisture, not colour.

Do you measure the displacement of slopes or buildings?

No. That takes InSAR: pairs of scenes, precise orbits, a DEM and phase unwrapping. In the code this product is listed with the status `requires_pair_processing` — declared as not implemented, rather than hidden. What we do instead: screening. There is a landslide triage module that introduces itself as `flowmind-landslide-screening-v0`, heuristic, with the warning written into the API response that it is not confirmed detection.

How many road cameras can you bring in, in Moldova?

Few, and you are better off hearing it from us. An OSINT survey of our own from July 2026 found a ceiling of roughly 34 public road cameras live in the whole country — 12 of them ANDSA, plus 22 at the border. At today's check, out of 116 streams probed, 13 answered, all of them refreshed JPEG stills, zero video feeds. The rest are declared with the reason: expired subscription, rotated token, folder gone, port unreachable. If somebody promises you 150 cameras in Moldova, ask them for the list.

Does it control the traffic lights?

No, and in its present form it could not. The 245 traffic lights are mapped as points in the data, from OpenStreetMap — the platform sees them on the map, it does not command them. Active control would mean integration with the physical controllers and liability for safety, which is a separate project, with other partners.

Are there machine-learning models in production?

No. There is no trained model in the repository and no machine-learning code is called by the application; the `ml/gnn` and `ml/forecasting` directories are empty. The RL and GNN architecture in ARCHITECTURE.md is the target, marked as such in that very file.

What does the satellite traffic cost me?

A standard Copernicus account comes with 30,000 processing units and 30,000 requests a month, free of charge. Every tile requested draws on them. The platform cuts consumption through caching (30 minutes in memory, 24 hours in the response) and through limits on the size and the interval of a request, but it has no quota counter — if the installation carries heavy public traffic, metering and a paid plan are things to decide beforehand, not afterwards.

Illustrative example

Checking a suspected clearance of 40 hectares of forest

A usage scenario, with no client data and no commercial results attributed.

The starting situation

A local council receives a report that forest has been felled in an area that is hard to reach, and wants to know whether sending a team out is worth it.

How it works

The Sentinel-2 NDVI layer is requested over the bounding box of the area, for one window from before the report and one recent window — at most 31 days each, with a 40% cloud filter. Pixels marked cloud or shadow by the SCL band stay transparent. If both windows are cloudy, we switch to Sentinel-1 VV/VH, which passes through cloud. Overlaying the OSM geometry shows whether the area with the lowered value really is forest, and which parcel it falls on.

Rezultatul

A pair of dated images, at 10 m, with the outline of the area where the vegetation index dropped between the two windows, and the approximate surface of that area. A 10 m pixel means that a clearance below roughly 0.1 ha cannot be told apart from noise — you see a parcel, not a tree.

Ce este necesar:Un cont Copernicus Data Space cu client OAuth2 (gratuit) și o fereastră de timp în care există măcar o scenă cu nori sub prag. Rezultatul e un motiv de verificare în teren, nu o constatare legală.

Ways of working together

FlowMind, in the context of your organisation.

Observing the territory

Analysis of satellite imagery and indicators for planning, environment or agriculture, stating the resolution, the date and the limits of every source.

Private companies

We define a pilot around one real process: users, data, integrations, costs and acceptance criteria. Expansion follows once the result has been assessed.

Public institutions and state-owned companies

We establish the requirements for accessibility, hosting, data protection and interoperability. Any connection to services run by Moldova's e-Governance Agency (AGE) or its state information-technology service (STISC) requires eligibility, access and approvals to be validated.

These are adaptation scenarios, not statements about existing contracts or partnerships. The proposed capabilities are confirmed within the project's scope of work.

Discută un pilot

We look beyond the map, too.

See how we use Copernicus observations and how we explore the orbits of satellites.

Explorează datele și cosmosul

Part of an ecosystem.

What would you want to work better?

Tell us about your process. Together we decide what is worth building, what we can connect, and how we check the result.

Hai să discutăm