Inspectieresultaten inlezen en weergeven
Filteren
Voor het inlezen van inspectieresultaten is het wenselijk om de invoerdata te kunnen filteren. In sommige gevallen zal dit al in de data adapter gebeuren. Voor het filteren zijn drie opties te configureren:
- query: SQL-achtige query om het DataFrame te filteren, zie ook pandas.DataFrame.query;
- drop_columns: Lijst van de te verwijderen kolommen;
- keep_columns: Lijst van de te behouden kolommen.
Als de gebruiker meerdere opties configureert, zal deze in bovenstaande volgorde achtereenvolgens worden toegepast.
GlobalVariables:
rootdir: "data_sets"
Filter:
query: "measurement_location_id == 1"
DataAdapter:
default_options:
csv:
sep: ","
inspectie_resultaten:
type: csv
path: "resultaten.csv"
inspectie_resultaten_filter:
type: csv
path: "filter_resultaten.csv"
index: False
GlobalVariables:
rootdir: "data_sets"
Filter:
keep_columns:
- "measurement_location_id"
- "measurement_location_code"
...
GlobalVariables:
rootdir: "data_sets"
Filter:
drop_columns:
- "unwanted_columns"
...
from toolbox_continu_inzicht import Config, DataAdapter
from toolbox_continu_inzicht.inspections import Filter
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter filter = Filter(data_adapter=data_adapter)
filter.run(
input="inspectie_resultaten",
="inspectie_resultaten_filter",
output )
Classificeren van inspectieresultaten
Inspectieresultaten zijn te classificeren afhankelijk van eigenschappen in de tabel. Ook is het mogelijk om op basis van deze eigenschappen een bepaalde opmaak te tonen. Bijvoorbeeld een opmaak voor het element van de waterkering dat is geïnspecteerd (grasbekleding, steenbekleding, asfaltbekleding) of de toegekende prioriteit (score 1, 2, 3 etc) een kleur of lijndikte aan te geven. Hiervoor is een laag met resultaten nodig en een definitie van de klassegrenzen voor de te geclassificeren data, inclusief de definitie van de bijbehorende opmaak. De resultaten bevatten een geografische laag of een platte teksttabel met geometrie of x,y-coördinaten. De geografische informatie wordt altijd omgezet naar WGS84 om ondersteund te worden in de viewer. De classificatie wordt gedaan op basis van de kolom ‘classify_column’ opgegeven in de GlobalVariables. Deze kolom wordt vergeleken met de waardes in de legenda en vervolgens wordt de opmaak uit de legenda overgenomen. De waardes op basis waarvan de legenda wordt bepaald kan bestaan uit getallen of tekst. Bij tekst wordt de ‘lower_boundary’ kolom gebruikt. De viewer verwacht een heel aantal kolommen, als deze niet worden opgegeven neemt de toolbox standaardwaardes over (get_possible_styling()
). Deze standaardswaardes kunnen ook aangepast worden door de gebruiker.
GlobalVariables:
rootdir: "data_sets"
...
ClassifyInspections:
classify_column: "prioriteit"
DataAdapter:
default_options:
csv:
sep: ","
styling_example:
type: csv
path: "styling_example.csv"
inspectie_resultaten_filter:
type: csv
path: "inspectie_resultaten_filter.csv"
index: False
classify_resultaten:
type: shape
path: "classify_resultaten.geojson"
index: False
legenda:
type: csv
path: "legenda.csv"
GlobalVariables:
rootdir: "data_sets"
...
ClassifyInspections:
classify_column: "opmerkingen"
match_text_on: "contains"
# kan zijn: contains, equals, startswith, endswith
...
from toolbox_continu_inzicht import Config, DataAdapter
from toolbox_continu_inzicht.inspections import Filter
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter = ClassifyInspections(data_adapter=data_adapter)
classify_inspections_styling
classify_inspections_styling.run(input=["filter_resultaten", "styling_example"], output=["classify_resultaten", "legenda"]
)
Standaardopmaak
Daarnaast kan de functie ook gebruikt worden om een standaardopmaak toe te kennen aan een kaartlaag. Hierdoor wordt de viewer gebruiksvriendelijker. Het invoerbestand wordt aangevuld met het benodigde aantal kolommen voor de opmaak en bijbehorende waardes. Om de standaardopmaak aan een kaartlaag-tabel toe te kennen, kan de volgende configuratie gebruikt worden:
GlobalVariables:
rootdir: "data_sets"
DataAdapter:
default_options:
csv:
sep: ","
kaartlaag:
type: csv
path: "kaartlaag.csv"
kaartlaag_met_opmaak:
type: csv
path: "kaartlaag_met_opmaak.csv"
from toolbox_continu_inzicht import Config, DataAdapter
from toolbox_continu_inzicht.inspections import Filter
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter = ClassifyInspections(data_adapter=data_adapter)
classify_inspections_styling
classify_inspections_styling.run(input=["kaartlaag"], output=["kaartlaag_met_opmaak"]
)
Inspectieresultaten en de viewer
De kaartlagen van inspectieresultaten zijn in de viewer weer te geven. Naast de kaartlaag die in de Toolbox Continu Inzicht is geclassificeerd, kan ook een eigen WMS-kaartlaag worden gebruikt. Voor kaartlagen die relatief klein zijn, kan alle informatie in één databaseveld gestopt gedefinieerd. Bij grotere kaartlagen is het aan te raden om een nieuwe tabel te maken, waar vervolgens naar verwezen kan worden. Voor deze drie opties zal een voorbeeld worden weergegeven. De kolommen group_name
, layer_name
en layer_visible
kunnen gebruik worden om de groepen, namen van kaartlaag en de zichtbaarheid in de viewer te configureren. De layer_type
moet voor ‘geojson’, ‘wms’ en ‘table’ worden ingesteld.
Kleine kaartlaag in de viewer
Om de verschillende databronnen te combineren tot één tabel kan de functie InspectionsToDatabase
gebruikt worden. De input hiervoor zijn de inspectieresultaten, opmaak en kaartlagen. layers
is een tabel waarin de gegevens over de verschillende kaartlagen staat beschreven. Als deze niet wordt opgegeven, wordt een standaardtabel gebruikt. De inspectieresultaten
wordt toegevoegd aan de tabel layers
. Indien de tabel layers
meerdere rijen bevat, kan rij-index worden aangepast met index
. Het maximum aantal inspectieresultaten
kan aangepast worden met max_rows
. Standaard is dit 10.
GlobalVariables:
rootdir: "data_sets"
...
InspectionsToDatabase:
index: 0
max_rows: 10
DataAdapter:
default_options:
csv:
sep: ","
classify_resultaten:
type: shape
path: "hidden_classify_resultaten.geojson"
index: False
legenda:
type: csv
path: "hidden_legend.csv"
index: False
layers:
type: csv
path: "layers.csv"
to_ci_database:
type: postgresql_database
schema: continuinzicht_demo_realtime
database: "continuinzicht"
table: layers
if_exists: append
from toolbox_continu_inzicht import Config, DataAdapter
from toolbox_continu_inzicht.inspections import InspectionsToDatabase
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter = InspectionsToDatabase(data_adapter=data_adapter)
inspections_to_database
inspections_to_database.run(input=["classify_resultaten", "legenda", "layers"],
="to_ci_database",
output )
WMS lagen in de viewer
De definitie voor WMS-lagen is simpeler. Hiervoor is alleen een url (layer_wms_url
) nodig. In sommige gevallen is ook de layer_wms_layer
, layer_wms_style
en layer_wms_legend_url
nodig om voldoende informatie aan de viewer te geven. Dit is een voorbeeld waarbij de data-adapter gebruikt kan worden om de database te vullen.
GlobalVariables:
rootdir: "data_sets"
...
DataAdapter:
default_options:
csv:
sep: ","
layers:
type: csv
path: "layers.csv"
to_ci_database:
type: postgresql_database
schema: continuinzicht_demo_realtime
database: "continuinzicht"
table: layers
if_exists: append
from toolbox_continu_inzicht import Config, DataAdapter
= Config(config_path="config.yaml")
config
config.lees_config()= DataAdapter(config=config)
data_adapter = data_adapter.input('layers')
layer_table 'to_ci_database', layer_table) data_adapter.output(
Grote tabel in de viewer
Om grote kaartlagen in de viewer te tonen, is het advies om dit via een losse tabel in database te doen. Deze tabel kan dan gekoppeld worden aan de viewer op dezelfde manier als een WMS-laag via de tabel layers
.