{
  "manifestVersion": 1,
  "dataset": {
    "id": "vida-buildings-ro",
    "name": "VIDA Open Buildings: Romania",
    "description": "The footprint of every building in Romania, from a global layer that merges three sources: Google's Open Buildings V3 (detected from satellite imagery), Microsoft's GlobalMLBuildingFootprints (also imagery-detected) and OpenStreetMap (drawn by contributors). VIDA deduplicates and merges the three into one 2.7-billion-footprint global layer published on Source Cooperative; this dataset is that layer's Romanian slice, verified directly: 12,655,928 footprints, of which 12,491,968 (98.71%) are Microsoft-sourced, 163,960 (1.30%) are OpenStreetMap-sourced, and 0 are Google-sourced — Romania was not covered by Google's Open Buildings detection run. Every row carries its exact source (bf_source), because the three upstream sources carry different licences: OpenStreetMap is ODbL with a share-alike obligation, Microsoft is CDLA Permissive 2.0, and Google is CC BY 4.0. VIDA republishes the merged layer under a single licence, ODbL v1.0 — the strictest of the three — and this dataset does the same. The source has no stable per-building id; geometry is published as WKT polygons in WGS 84.",
    "descriptions": {
      "ro": "Conturul la sol al fiecărei clădiri din România, dintr-un strat global care combină trei surse: Google Open Buildings V3 (detectat automat din imagini de satelit), amprentele de clădiri ale Microsoft (GlobalMLBuildingFootprints, tot din imagini) și OpenStreetMap (desenat de contribuitori). Setul este întreținut de VIDA, care deduplică și combină cele trei surse într-un singur strat global de 2,7 miliarde de amprente, publicat pe Source Cooperative; acest set de date reprezintă doar felia pentru România a acelui strat, verificată direct: 12.655.928 de amprente, din care 12.491.968 (98,71%) provin de la Microsoft, 163.960 (1,30%) de la OpenStreetMap și 0 de la Google — teritoriul românesc nu a fost acoperit de rularea de detecție Google Open Buildings. Fiecare rând poartă sursa exactă (bf_source), pentru că sursele au licențe diferite: OpenStreetMap este ODbL cu obligație de \"share-alike\", Microsoft este CDLA Permissive 2.0, iar Google este CC BY 4.0. VIDA republică îmbinarea sub o singură licență, ODbL v1.0 — cea mai restrictivă dintre cele trei — și acest set de date face la fel. Nu există un identificator stabil de clădire în sursă; geometria (poligonul conturului) este oferită ca text WKT în sistemul de coordonate WGS 84.",
      "en": "The footprint of every building in Romania, from a global layer that merges three sources: Google's Open Buildings V3 (detected from satellite imagery), Microsoft's GlobalMLBuildingFootprints (also imagery-detected) and OpenStreetMap (drawn by contributors). VIDA deduplicates and merges the three into one 2.7-billion-footprint global layer published on Source Cooperative; this dataset is that layer's Romanian slice, verified directly: 12,655,928 footprints, of which 12,491,968 (98.71%) are Microsoft-sourced, 163,960 (1.30%) are OpenStreetMap-sourced, and 0 are Google-sourced — Romania was not covered by Google's Open Buildings detection run. Every row carries its exact source (bf_source), because the three upstream sources carry different licences: OpenStreetMap is ODbL with a share-alike obligation, Microsoft is CDLA Permissive 2.0, and Google is CC BY 4.0. VIDA republishes the merged layer under a single licence, ODbL v1.0 — the strictest of the three — and this dataset does the same. The source has no stable per-building id; geometry is published as WKT polygons in WGS 84."
    },
    "names": {
      "ro": "Amprente ale clădirilor din România — VIDA",
      "en": "VIDA Open Buildings: Romania"
    },
    "sourceUrl": "https://source.coop/vida/google-microsoft-osm-open-buildings",
    "license": {
      "id": "ODbL-1.0",
      "name": "Open Data Commons Open Database License v1.0",
      "url": "https://source.coop/vida/google-microsoft-osm-open-buildings",
      "attribution": "Building footprints © VIDA (google-microsoft-osm-open-buildings dataset), merging Google Open Buildings V3 (CC BY 4.0), Microsoft GlobalMLBuildingFootprints (CDLA Permissive 2.0) and © OpenStreetMap contributors (ODbL) — Open Data Commons Open Database License (ODbL) v1.0.",
      "notes": "VIDA's own \"Dataset Licenses\" statement, read directly on the dataset's Source Cooperative page (https://source.coop/vida/google-microsoft-osm-open-buildings) and in the bucket's own README.md, says plainly: \"The data is shared under the Open Data Commons Open Database License (ODbL) v1.0 license.\" That is the licence this connector republishes under, in full. IMPORTANT CONTEXT for a reuser. (1) This is a MERGE of three differently-licensed sources, each still identifiable per row via bf_source: OpenStreetMap (https://www.openstreetmap.org/copyright) is ODbL-1.0, which requires attribution and \"share-alike\" — a database produced from it must itself be offered under ODbL or a compatible licence; Microsoft's GlobalMLBuildingFootprints (https://github.com/microsoft/GlobalMLBuildingFootprints) is CDLA Permissive 2.0, which permits redistribution and modification with attribution and no share-alike obligation; Google's Open Buildings V3 (https://sites.research.google/open-buildings/) is CC BY 4.0, attribution required, no share-alike. VIDA's choice to publish the WHOLE merged product under ODbL v1.0 — the strictest of the three — is the safe, conservative position for a combined database that includes ODbL-licensed OSM data, and this dataset follows VIDA's own published position rather than trying to relicense a subset. (2) Romania's current extract carries no Google-sourced rows (bf_source is never \"google\" here), so in practice every row in this table today is Microsoft- (CDLA Permissive 2.0) or OSM-sourced (ODbL). A reuser who specifically needs a licence more permissive than ODbL can filter to bf_source <> 'osm' and rely on CDLA Permissive 2.0 for what remains — CDLA Permissive itself does not carry a share-alike clause — but the WHOLE published table, mixed, is offered under ODbL v1.0 as VIDA licenses it. (3) A \"building\" here means a detected or mapped footprint polygon, not an inspected structure: confidence is only ever populated for Google-sourced rows (none in Romania today), and Microsoft- and OSM-sourced footprints carry no model confidence at all. (4) What is republished is the layer's own GeoParquet columns for Romania, reshaped: the footprint geometry as WKT, the source, the area, the confidence where one exists, and a bounding box; VIDA's boundary_id and s2_id partition keys are dropped because they are constant across the whole Romanian extract and carry no information here."
    },
    "cadence": "monthly",
    "tags": [
      "buildings",
      "geospatial",
      "openstreetmap",
      "footprints",
      "infrastructure",
      "gis"
    ],
    "sources": [
      {
        "key": "buildings",
        "kind": "parquet",
        "description": "VIDA's Google-Microsoft-OSM Open Buildings layer, Romania only: one GeoParquet file, 12,655,928 building footprints as of 2026-09-02, WGS 84 polygons with per-footprint provenance (bf_source), confidence (Google only) and area.",
        "access": "public",
        "location": "https://data.source.coop/vida/google-microsoft-osm-open-buildings/geoparquet/by_country/country_iso=ROU/ROU.parquet",
        "extensions": [
          "spatial",
          "httpfs"
        ],
        "secrets": [],
        "attach": [],
        "requiresEnv": [],
        "relation": "read_parquet('https://data.source.coop/vida/google-microsoft-osm-open-buildings/geoparquet/by_country/country_iso=ROU/ROU.parquet')"
      }
    ]
  },
  "ingest": {
    "id": "01M1NQT7YTFY5YJ067PWBKZP89",
    "startedAt": "2026-09-04T08:15:57.402Z",
    "snapshotDate": "2026-09-04",
    "catalogSnapshotId": 3,
    "params": {},
    "outOfBand": true
  },
  "baseUrl": "https://data-directory.fsn1.your-objectstorage.com/public/vida-buildings-ro",
  "catalog": {
    "url": "https://data-directory.fsn1.your-objectstorage.com/catalog/vida-buildings-ro/v/01M1NQT7YTFY5YJ067PWBKZP89/catalog.ducklake",
    "latestUrl": "https://data-directory.fsn1.your-objectstorage.com/catalog/vida-buildings-ro/catalog.ducklake",
    "sha256": "a4362ebad0d8d7007bd71afc7b4011d64a3d19171eb6e5206059472223315afd",
    "duckdbVersion": "v1.5.5",
    "attachExample": "ATTACH 'ducklake:https://data-directory.fsn1.your-objectstorage.com/catalog/vida-buildings-ro/catalog.ducklake' AS lake (READ_ONLY);"
  },
  "queryHints": {
    "examples": [
      {
        "title": "Buildings inside a bounding box (e.g. central Bucharest)",
        "sql": "SELECT building_id, bf_source, area_in_meters, geometry_wkt\nFROM buildings\nWHERE bbox_min_longitude >= 26.05 AND bbox_max_longitude <= 26.15\n  AND bbox_min_latitude  >= 44.40 AND bbox_max_latitude  <= 44.47;",
        "description": "bbox_min_longitude/bbox_max_longitude/bbox_min_latitude/bbox_max_latitude are plain DOUBLE columns, so a bounding-box query needs no spatial extension at all — only once the geometry itself is wanted does ST_GeomFromText(geometry_wkt) come in."
      },
      {
        "title": "Prefix-prune by geohash, then measure with the spatial extension",
        "sql": "INSTALL spatial; LOAD spatial;\nSELECT count(*) AS n, sum(ST_Area(ST_GeomFromText(geometry_wkt))) AS total_deg2\nFROM buildings\nWHERE geohash >= 'sxk9' AND geohash < 'sxk9' || chr(255);",
        "description": "The table's sortBy is geohash, so a prefix predicate on it prunes row groups before any geometry is even parsed; ST_Area is only computed for the rows that survive."
      },
      {
        "title": "Provenance breakdown and average footprint size",
        "sql": "SELECT bf_source, count(*) AS n, avg(area_in_meters) AS avg_area_m2\nFROM buildings\nGROUP BY bf_source\nORDER BY n DESC;"
      }
    ]
  },
  "tables": [
    {
      "name": "buildings",
      "description": "One row per building footprint in Romania from VIDA's Google-Microsoft-OSM Open Buildings layer: the footprint polygon as WKT (WGS 84), which of Google, Microsoft or OpenStreetMap produced it, its area, and — for Google-sourced footprints only — the detection model's confidence score. A full wholesale snapshot of the source's current Romanian extract: every ingest replaces the whole table, because the source has no change log to append or upsert against, only a complete republished file.",
      "descriptions": {
        "ro": "Câte un rând pentru fiecare amprentă de clădire din România din stratul VIDA Google-Microsoft-OSM Open Buildings: conturul poligonal (ca text WKT, WGS 84), sursa (bf_source), suprafața și, pentru amprentele provenite de la Google, scorul de încredere al modelului. Tabelul este o \"fotografie\" completă a fișierului sursă la data ingerării — la fiecare rulare, tot tabelul este golit și reîncărcat (write.mode = \"replace\"), pentru că sursa nu oferă un jurnal de modificări, doar un extras complet.",
        "en": "One row per building footprint in Romania from VIDA's Google-Microsoft-OSM Open Buildings layer: the footprint polygon as WKT (WGS 84), which of Google, Microsoft or OpenStreetMap produced it, its area, and — for Google-sourced footprints only — the detection model's confidence score. A full wholesale snapshot of the source's current Romanian extract: every ingest replaces the whole table, because the source has no change log to append or upsert against, only a complete republished file."
      },
      "rowCount": 0,
      "totalBytes": 0,
      "sortBy": [
        "geohash",
        "building_id"
      ],
      "searchColumns": [],
      "primaryKey": [
        "building_id"
      ],
      "writeMode": "replace",
      "storage": "view",
      "source": "buildings",
      "view": {
        "sql": "SELECT\n  row_number() OVER (\n    ORDER BY geohash, bbox.xmin, bbox.ymin, bbox.ymax, bbox.xmax\n  )                                AS building_id,\n  bf_source                        AS bf_source,\n  confidence                       AS confidence,\n  area_in_meters                   AS area_in_meters,\n  geohash                          AS geohash,\n  bbox.xmin                        AS bbox_min_longitude,\n  bbox.ymin                        AS bbox_min_latitude,\n  bbox.xmax                        AS bbox_max_longitude,\n  bbox.ymax                        AS bbox_max_latitude,\n  ST_AsText(CAST(geometry AS GEOMETRY)) AS geometry_wkt,\n  TIMESTAMPTZ '2026-09-04T08:15:57.402Z'                       AS ingested_at\nFROM read_parquet('https://data.source.coop/vida/google-microsoft-osm-open-buildings/geoparquet/by_country/country_iso=ROU/ROU.parquet')",
        "createSql": "CREATE OR REPLACE VIEW \"buildings\" AS SELECT\n  row_number() OVER (\n    ORDER BY geohash, bbox.xmin, bbox.ymin, bbox.ymax, bbox.xmax\n  )                                AS building_id,\n  bf_source                        AS bf_source,\n  confidence                       AS confidence,\n  area_in_meters                   AS area_in_meters,\n  geohash                          AS geohash,\n  bbox.xmin                        AS bbox_min_longitude,\n  bbox.ymin                        AS bbox_min_latitude,\n  bbox.xmax                        AS bbox_max_longitude,\n  bbox.ymax                        AS bbox_max_latitude,\n  ST_AsText(CAST(geometry AS GEOMETRY)) AS geometry_wkt,\n  TIMESTAMPTZ '2026-09-04T08:15:57.402Z'                       AS ingested_at\nFROM read_parquet('https://data.source.coop/vida/google-microsoft-osm-open-buildings/geoparquet/by_country/country_iso=ROU/ROU.parquet')"
      },
      "columns": [
        {
          "name": "building_id",
          "type": "BIGINT",
          "nullable": false,
          "description": "Synthetic id assigned by this connector in the table's own sort order (geohash, then a deterministic bounding-box tiebreak). The source has no building id at all, not even within one file, so this id is unique within one ingest but is NOT guaranteed to name the same building again if VIDA republishes the extract with different contents.",
          "descriptions": {
            "ro": "Identificator sintetic, atribuit de acest conector în ordinea de sortare a tabelului (geohash, apoi un desfacere de egalitate determinist pe conturul minim de delimitare). Sursa VIDA nu oferă niciun identificator de clădire, nici măcar în cadrul unui singur fișier — de aceea acest identificator nu este garantat să denumească aceeași clădire dacă VIDA republică extrasul cu alte date.",
            "en": "Synthetic id assigned by this connector in the table's own sort order (geohash, then a deterministic bounding-box tiebreak). The source has no building id at all, not even within one file, so this id is unique within one ingest but is NOT guaranteed to name the same building again if VIDA republishes the extract with different contents."
          }
        },
        {
          "name": "bf_source",
          "type": "VARCHAR",
          "nullable": false,
          "description": "Which upstream source produced this exact footprint: \"google\" (Google Open Buildings V3, CC BY 4.0 — 0 rows in the current Romanian extract), \"microsoft\" (GlobalMLBuildingFootprints, CDLA Permissive 2.0), or \"osm\" (OpenStreetMap, ODbL, share-alike). This is the column a reuser who needs a licence more permissive than ODbL filters on to keep only the rows whose own upstream licence allows it.",
          "descriptions": {
            "ro": "Sursa care a produs exact această amprentă: \"google\" (Google Open Buildings V3, CC BY 4.0 — 0 rânduri în extrasul pentru România), \"microsoft\" (GlobalMLBuildingFootprints, CDLA Permissive 2.0) sau \"osm\" (OpenStreetMap, ODbL, cu obligație de \"share-alike\"). Coloana este ruta prin care un reutilizator care are nevoie de o licență mai permisivă decât ODbL poate filtra un subset care respectă doar termenii sursei respective.",
            "en": "Which upstream source produced this exact footprint: \"google\" (Google Open Buildings V3, CC BY 4.0 — 0 rows in the current Romanian extract), \"microsoft\" (GlobalMLBuildingFootprints, CDLA Permissive 2.0), or \"osm\" (OpenStreetMap, ODbL, share-alike). This is the column a reuser who needs a licence more permissive than ODbL filters on to keep only the rows whose own upstream licence allows it."
          }
        },
        {
          "name": "confidence",
          "type": "DOUBLE",
          "nullable": true,
          "description": "The detection model's confidence score (0-1), populated only when bf_source is \"google\" — Microsoft and OpenStreetMap do not supply one and it stays NULL. NULL on every row of the current Romanian extract, because it holds no Google-sourced footprints; the column is kept for the day VIDA's Google coverage reaches Romania.",
          "descriptions": {
            "ro": "Scorul de încredere al modelului de detecție (0-1), populat doar pentru amprentele cu bf_source = \"google\" — sursele Microsoft și OpenStreetMap nu îl oferă și rămâne null. Este null pe fiecare rând din extrasul actual pentru România, pentru că nu există amprente Google aici, dar coloana este păstrată pentru cazul în care acoperirea Google se extinde vreodată în România.",
            "en": "The detection model's confidence score (0-1), populated only when bf_source is \"google\" — Microsoft and OpenStreetMap do not supply one and it stays NULL. NULL on every row of the current Romanian extract, because it holds no Google-sourced footprints; the column is kept for the day VIDA's Google coverage reaches Romania."
          }
        },
        {
          "name": "area_in_meters",
          "type": "DOUBLE",
          "nullable": false,
          "description": "The footprint polygon's area, as computed by VIDA.",
          "descriptions": {
            "ro": "Suprafața poligonului amprentei, așa cum este calculată de VIDA.",
            "en": "The footprint polygon's area, as computed by VIDA."
          },
          "unit": "m²"
        },
        {
          "name": "geohash",
          "type": "VARCHAR",
          "nullable": false,
          "description": "An 8-character base32 geohash of the footprint's centroid (~19 m precision). The table's physical sort key — see sortByRationale — so a prefix filter such as geohash LIKE 'sxk9%' prunes whole parquet row groups instead of scanning the table.",
          "descriptions": {
            "ro": "Geohash de 8 caractere (bază 32) al centroidului amprentei, precizie de aproximativ 19 metri. Cheia de sortare fizică a tabelului — vezi sortByRationale pentru motiv — astfel încât un filtru pe prefix (de exemplu geohash LIKE 'sxk9%') elimină grupuri întregi de rânduri (row groups) din parquet fără să le citească.",
            "en": "An 8-character base32 geohash of the footprint's centroid (~19 m precision). The table's physical sort key — see sortByRationale — so a prefix filter such as geohash LIKE 'sxk9%' prunes whole parquet row groups instead of scanning the table."
          }
        },
        {
          "name": "bbox_min_longitude",
          "type": "DOUBLE",
          "nullable": false,
          "description": "West edge of the footprint's bounding box, WGS 84 degrees.",
          "descriptions": {
            "ro": "Marginea de vest a conturului de delimitare (bounding box) al amprentei, grade WGS 84.",
            "en": "West edge of the footprint's bounding box, WGS 84 degrees."
          },
          "unit": "°"
        },
        {
          "name": "bbox_min_latitude",
          "type": "DOUBLE",
          "nullable": false,
          "description": "South edge of the footprint's bounding box, WGS 84 degrees.",
          "descriptions": {
            "ro": "Marginea de sud a conturului de delimitare al amprentei, grade WGS 84.",
            "en": "South edge of the footprint's bounding box, WGS 84 degrees."
          },
          "unit": "°"
        },
        {
          "name": "bbox_max_longitude",
          "type": "DOUBLE",
          "nullable": false,
          "description": "East edge of the footprint's bounding box, WGS 84 degrees.",
          "descriptions": {
            "ro": "Marginea de est a conturului de delimitare al amprentei, grade WGS 84.",
            "en": "East edge of the footprint's bounding box, WGS 84 degrees."
          },
          "unit": "°"
        },
        {
          "name": "bbox_max_latitude",
          "type": "DOUBLE",
          "nullable": false,
          "description": "North edge of the footprint's bounding box, WGS 84 degrees.",
          "descriptions": {
            "ro": "Marginea de nord a conturului de delimitare al amprentei, grade WGS 84.",
            "en": "North edge of the footprint's bounding box, WGS 84 degrees."
          },
          "unit": "°"
        },
        {
          "name": "geometry_wkt",
          "type": "TEXT",
          "nullable": false,
          "description": "The building footprint polygon as WKT (Well-Known Text) in WGS 84 (EPSG:4326) — e.g. \"POLYGON ((26.1 44.43, 26.1 44.431, …))\". WKT rather than a coordinate array because DuckDB's spatial extension reads it directly: `INSTALL spatial; LOAD spatial;` then `ST_GeomFromText(geometry_wkt)` gives a real geometry to intersect, buffer and measure. Longitude first, as WKT requires.",
          "descriptions": {
            "ro": "Conturul poligonal al clădirii, ca text WKT (Well-Known Text) în WGS 84 (EPSG:4326) — de exemplu \"POLYGON ((26.1 44.43, 26.1 44.431, …))\". WKT, nu un tablou de coordonate, pentru că extensia spatial a DuckDB îl citește direct: `INSTALL spatial; LOAD spatial;` apoi `ST_GeomFromText(geometry_wkt)` oferă o geometrie reală, care poate fi intersectată, măsurată sau desenată. Longitudinea este scrisă prima, așa cum cere formatul WKT.",
            "en": "The building footprint polygon as WKT (Well-Known Text) in WGS 84 (EPSG:4326) — e.g. \"POLYGON ((26.1 44.43, 26.1 44.431, …))\". WKT rather than a coordinate array because DuckDB's spatial extension reads it directly: `INSTALL spatial; LOAD spatial;` then `ST_GeomFromText(geometry_wkt)` gives a real geometry to intersect, buffer and measure. Longitude first, as WKT requires."
          }
        },
        {
          "name": "ingested_at",
          "type": "TIMESTAMP",
          "nullable": false,
          "description": "When this row was produced by the ingest run (UTC).",
          "descriptions": {
            "ro": "Momentul (UTC) la care acest rând a fost produs de rularea de ingestie.",
            "en": "When this row was produced by the ingest run (UTC)."
          }
        }
      ],
      "files": []
    }
  ],
  "generatedAt": "2026-09-04T08:16:02.162Z"
}
