Index: Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLinesMetaReader.cs
===================================================================
diff -u -rdd5ae117c10d97b388757d9d2a865c0860a64448 -r239ea628125c5ec4004a843abce2d269af93c431
--- Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLinesMetaReader.cs (.../ReferenceLinesMetaReader.cs) (revision dd5ae117c10d97b388757d9d2a865c0860a64448)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLinesMetaReader.cs (.../ReferenceLinesMetaReader.cs) (revision 239ea628125c5ec4004a843abce2d269af93c431)
@@ -57,7 +57,6 @@
/// - The shape file does not contain the mandatory attributes.
/// - Has an empty attribute.
/// - The shape file has non-line geometries in it.
- /// - Contains multiple poly lines.
///
public static List ReadReferenceLinesMetas(string shapeFilePath)
{
@@ -177,16 +176,13 @@
///
/// The to create a from.
/// The newly created .
- /// Thrown when the shape file contains multiple poly lines.
private static ReferenceLineMeta CreateReferenceLineMeta(MapLineData lineData)
{
- var features = lineData.Features.ToArray();
+ var feature = lineData.Features.First();
- var feature = features[0];
-
string assessmentSectionId = GetAssessmentSectionId(feature);
- int? signalingValue = GetSignalingValueAttributeKey(feature);
- int? lowerLimitValue = GetLowerLimitValueAttribute(feature);
+ int? signalingValue = ParseNormValue(feature.MetaData[signalingValueAttributeKey]);
+ int? lowerLimitValue = ParseNormValue(feature.MetaData[lowerLimitValueAttributeKey]);
IEnumerable geometryPoints = GetSectionGeometry(feature);
var referenceLineMeta = new ReferenceLineMeta
@@ -211,13 +207,12 @@
///
/// The to get the geometry from.
/// A collection that represents the 's geometry.
- /// Thrown when the shape file contains multiple poly lines.
private static IEnumerable GetSectionGeometry(MapFeature lineFeature)
{
var mapGeometries = lineFeature.MapGeometries.ToArray();
if (mapGeometries.Length > 1)
{
- throw new CriticalFileReadException(RingtoetsCommonIOResources.ReferenceLineReader_File_contains_unsupported_multi_polyline);
+ return Enumerable.Empty();
}
return mapGeometries[0].PointCollections.First().Select(p => new Point2D(p.X, p.Y));
@@ -228,14 +223,20 @@
return Convert.ToString(lineFeature.MetaData[assessmentsectionIdAttributeKey]);
}
- private static int? GetSignalingValueAttributeKey(MapFeature lineFeature)
+ private static int? ParseNormValue(object readObject)
{
- return lineFeature.MetaData[signalingValueAttributeKey] as int?;
+ try
+ {
+ return Convert.ToInt32(readObject);
+ }
+ catch (Exception exception)
+ {
+ if (exception is InvalidCastException || exception is FormatException || exception is OverflowException)
+ {
+ return null;
+ }
+ throw;
+ }
}
-
- private static int? GetLowerLimitValueAttribute(MapFeature lineFeature)
- {
- return lineFeature.MetaData[lowerLimitValueAttributeKey] as int?;
- }
}
}
\ No newline at end of file