Soil Face Research (SFR)

Soil Face Research examines the soil profile of the subsurface through excavation. This type of investigation is primarily used to assess the suitability of the soil for agricultural use or nature management.

import matplotlib.pyplot as plt
import brodata
sfr = brodata.sfr.SoilFaceResearch.from_bro_id("SFR000000000243")
sfr
SoilFaceResearch(broId='SFR000000000243', x=119150.0, y=440300.0)

Show the soil layers as a pandas DataFrame

sfr.soilLayer
upperBoundary upperBoundaryDetermination lowerBoundary lowerBoundaryDetermination lowerBoundaryShape layerDiscontinuous anthropogenic soilLife rooted slant ... mottlingDensity evenlyMottled aggregateShape angularity aggregateLengthClass poreAbundanceClass horizontallyAligned disintegrating roughness peatType
0 0.00 onbekend 0.15 onbekend onbekend onbekend nee [onbekend] onbekend onbekend ... weinigTot2 nee blok afgerond kort5tot10mm geen nee nee NaN NaN
1 0.15 onbekend 0.35 onbekend onbekend onbekend nee [onbekend] onbekend onbekend ... weinigTot2 nee prisma scherp matigLang20tot50mm geen nee nee ruw NaN
2 0.35 onbekend 0.50 onbekend onbekend onbekend nee [onbekend] onbekend onbekend ... NaN NaN NaN NaN NaN NaN NaN NaN NaN verweerdKleirijk
3 0.50 onbekend 0.70 onbekend onbekend onbekend nee [onbekend] onbekend onbekend ... NaN NaN NaN NaN NaN NaN NaN NaN NaN broekveenEutroof
4 0.70 onbekend 1.10 onbekend onbekend onbekend nee [onbekend] onbekend onbekend ... NaN NaN NaN NaN NaN NaN NaN NaN NaN broekveenEutroof

5 rows × 42 columns

Plot the soil layers similarly to Broloket’s style.

f, ax = plt.subplots(figsize=(8,8))

df = sfr.soilLayer
lithology_properties = {"Ahg": {"color":(104/255, 104/255, 104/255)},
                        "Cg": {"color": (255/255, 235/255, 190/255)},
                        "Cw": {"color": (255/255, 235/255, 190/255)},
                        "Cu": {"color": (255/255, 235/255, 190/255)},
                        "Cr": {"color": (255/255, 235/255, 190/255)}}
brodata.plot.bro_lithology_advanced(df, soil_name_column="horizonCode", x=0, ax=ax, width=0.5, lithology_properties=lithology_properties)
lithology_properties = {"matigZwareKlei": {"color": (170/255, 255/255, 110/255)},
                        "zeerZwareKlei": {"color": (170/255, 255/255, 110/255)},
                        "kleiigVeen": [{"width": 44/60, "color": (200/255, 145/255, 245/255)},
                                       {"width": 16/60, "color": (170/255, 255/255, 110/255)}],
                        "veen": {"color": (200/255, 145/255, 245/255)}}
brodata.plot.bro_lithology_advanced(df, soil_name_column="pedologicalSoilName", x=1, ax=ax, width=0.5, lithology_properties=lithology_properties)
brodata.plot.bro_lithology_advanced(df, soil_name_column="soilNameNEN5104", x=2, ax=ax, width=0.5)

ax.set_xlim(-0.5, 3 - 0.5)
ax.set_xticks(range(3))
ax.set_xticklabels(["Horizonten", "Bodemkundige grondsoort", "Grondsoort NEN5104"])
ax.set_ylim(-df['lowerBoundary'].max()-0.1, 0.0)
ax.set_axisbelow(True)
ax.grid(True)
ax.set_ylabel('z (m ten opzicht van maaiveld)');
../_images/5352712e442c3163bccc68b9ad64b220734b1c852e9b7cf5f56deacb169fab53.png

If present, display the investigatedInterval.

if hasattr(sfr, "investigatedInterval"):
    sfr.investigatedInterval

Show the rest of the contents of the Soil Face Research.

sfr_data = sfr.to_dict()
sfr_data.pop("soilLayer")
if "investigatedInterval" in sfr_data:
    sfr_data.pop("investigatedInterval")
sfr_data
{'SoilClassification': {'codeGroup': 'veengrond',
  'classificationCode': '  1s   b                ',
  'specialFeatureTop': 'geen',
  'soilClass': 'waardveengrond',
  'peatClass': 'bosveen',
  'reworkingClass': 'geen',
  'groundwaterTableClass': 'IIa',
  'specialFeatureSite': 'geen',
  'specialFeatureBottom': [{'specialFeature': 'geen'}]},
 'artificialDrainage': 'drainageOnbekend',
 'artificiallyHumidified': 'onbekend',
 'broId': 'SFR000000000243',
 'compactionPresent': 'onbekend',
 'coordinateTransformation': 'RDNAPTRANS2008',
 'corrected': 'nee',
 'currentProces': 'onbekend',
 'deliveredLocation': <POINT (119150 440300)>,
 'deliveryAccountableParty': '27378529',
 'deliveryContext': 'archiefoverdracht',
 'deregistered': 'nee',
 'describedWidth': None,
 'descriptionProcedure': 'AlterraK85-PB1',
 'descriptionQuality': 'standaard',
 'descriptionReportDate': Timestamp('1987-06-01 00:00:00'),
 'discipline': 'bodemkunde',
 'endDepthSoilFace': '1.10',
 'fieldworkDate': Timestamp('1987-06-01 00:00:00'),
 'fractionDistributionDetermined': 'nee',
 'horizonRepetition': 'nee',
 'horizontalPositioningDate': Timestamp('1987-06-01 00:00:00'),
 'horizontalPositioningMethod': 'kaartKleinschalig',
 'hydrologicalSetting': 'onbekend',
 'id': 'BRO_0013',
 'landscapeElement': None,
 'litterLayerInvestigated': 'nee',
 'localPhenomenon': ['onbekend'],
 'localVerticalReferencePoint': 'maaiveld',
 'lowerBoundarySandFraction': '50',
 'meanHighestGroundwaterLevel': 0.1,
 'meanHighestGroundwaterLevelReached': 'ja',
 'meanLowestGroundwaterLevel': 0.7,
 'objectRegistrationTime': '2020-03-23T09:47:52+01:00',
 'offset': -1.04,
 'outcropType': 'profielkuil',
 'pitRefilled': 'onbekend',
 'positionOnGroundBody': 'onbekend',
 'qualityRegime': 'IMBRO/A',
 'registrationCompletionTime': '2020-03-23T09:47:52+01:00',
 'registrationStatus': 'voltooid',
 'reregistered': 'nee',
 'researchReportDate': Timestamp('1987-06-01 00:00:00'),
 'rootableDepth': 0.3,
 'rootableDepthReached': 'ja',
 'sequenceDisturbed': 'nee',
 'soilFaceOrientation': None,
 'soilUse': 'grasland',
 'standardizedLocation': <POINT (4.866 51.95)>,
 'stopCriterion': 'onbekend',
 'surfaceLevelShifted': 'geen',
 'surveyPurpose': 'bodemkaartNederlandEenheidType',
 'tracesOfChurningPresent': 'onbekend',
 'underReview': 'nee',
 'upperBoundaryShape': 'onbekend',
 'verticalDatum': 'NAP',
 'verticalPositioningMethod': 'AHN1',
 'yearMonth': '2000-01'}