Docs/Design
Importing data
Design from the GIS files you already have: formats, roles, import profiles and the quality report.
openFTTH designs from the data a designer already has, not only from an OpenStreetMap extract. An import profile says which file and layer plays which part in the design, which columns carry what, and in which CRS a file is when the file does not say. The profile is saved with the project (import.yaml), so the same inputs always rebuild the same twin.
Formats and projections
Anything GDAL reads through pyogrio: GeoPackage, Shapefile, GeoJSON, KML, FlatGeobuf, GML, MapInfo, DXF, and CSV with x/y (or lon/lat, easting/northing) or a WKT column. Every layer is reprojected to WGS 84.
Roles
| Role | Geometry | Effect on the design |
|---|---|---|
area | polygon | the design area; required |
osm | .osm / .pbf | streets and buildings, used where no other layer gives them |
streets | lines | the street graph trenches follow |
buildings | polygons | outlines; homes are estimated from them when there is no address register |
addresses | points | the address register: one home per address with its units; it wins over estimates from buildings |
existing_ducts | lines | cheap routing edges; ducts within 20 m of a street are linked to it |
poles | points | existing poles kept as in-service elements |
manholes | points | existing manholes, as above |
no_dig_zones | polygons | no new trench inside; existing ducts through the zone stay usable |
Each role's columns are proposed from common names in English, Dutch, French and German. Value maps (values) translate codes, for example a street class HW → primary.
In the app
- File → Import data…
- Add files, then check the role and columns of each layer.
- Give a CRS where the file has none.
- Check data shows the quality report.
- Create project opens the project. Existing ducts, poles and manholes appear on the map under the layer Existing network.
The crew can do the same: the Surveyor calls list_layers, propose_import, import_data and check_inputs. From the command line, openftth-engine inspect FILES... --json proposes a profile and openftth-engine profile-check PROFILE --json reads it and prints the quality report.
The quality report
check_inputs runs before anything is designed and reports, each with a count: homes far from any street, duplicate address locations, addresses without units, residential buildings without an address, and a street network in pieces. Every finding carries a fix, shown under it in the import wizard, and very large areas are flagged with advice to split them. An error blocks the design; warnings are for the engineer to read.
Streets are kept 200 m beyond the area, so homes on its edge reach the street they face. When the streets inside that margin fall apart into pieces (an area split by a motorway, a railway or water), the margin doubles, up to 1,600 m, until no more than 5% of the network is cut off, and the import records how far it went.
A profile file
format: openftth.import
version: 1
name: lambert
bindings:
- {path: gebied.geojson, role: area}
- path: adressen.csv
role: addresses
crs: EPSG:31370
x: x
y: y
columns: {id: adres_id, units: wooneenheden, street: straatnaam, housenumber: huisnummer}
- {path: wegen.shp, role: streets, columns: {id: osm_id, class: wegtype}}
- {path: bestaand.gpkg, layer: kokers, role: existing_ducts, columns: {id: duct_id}}Relative paths resolve against the profile file, so a profile and its data can be moved or shared together. Full reference: docs/IMPORT.md.