def check_fault_data(cls, fault_trace, upper_seismogenic_depth, lower_seismogenic_depth, dip, mesh_spacing): """ Verify the fault data and raise ``ValueError`` if anything is wrong. This method doesn't have to be called by hands before creating the surface object, because it is called from :meth:`from_fault_data`. """ if not len(fault_trace) >= 2: raise ValueError("the fault trace must have at least two points") if not fault_trace.on_surface(): raise ValueError("the fault trace must be defined on the surface") tlats = [point.latitude for point in fault_trace.points] tlons = [point.longitude for point in fault_trace.points] if geo_utils.line_intersects_itself(tlons, tlats): raise ValueError("fault trace intersects itself") if not 0.0 < dip <= 90.0: raise ValueError("dip must be between 0.0 and 90.0") if not lower_seismogenic_depth > upper_seismogenic_depth: raise ValueError("lower seismogenic depth must be greater than " "upper seismogenic depth") if not upper_seismogenic_depth >= 0.0: raise ValueError("upper seismo depth must be non-negative") if not mesh_spacing > 0.0: raise ValueError("mesh spacing must be positive")
def __init__(self, points): points = utils.clean_points(points) if not len(points) >= 3: raise ValueError('polygon must have at least 3 unique vertices') self.lons = numpy.array([float(point.longitude) for point in points]) self.lats = numpy.array([float(point.latitude) for point in points]) if utils.line_intersects_itself(self.lons, self.lats, closed_shape=True): raise ValueError('polygon perimeter intersects itself') self._bbox = None self._projection = None self._polygon2d = None