Пример #1
0
def main():
    filename = None
    if len(sys.argv) != 2:
        error("Usage: bin/python metfilelib/scripts/" "metfile_to_csv_for_sobek <metfile>")

    filename = os.path.abspath(sys.argv[1])
    if not os.path.exists(filename):
        error("{} does not exist.".format(filename))

    file_object = FileReader(filename)
    metfile = parse_metfile(file_object)

    if file_object.errors:
        error("\n".join(unicode(e) for e in file_object.errors))

    for series in metfile.series:
        for profile in series.profiles:
            line = profile.line
            for measurement in profile.sorted_measurements:
                print(
                    "{profile},{dist},{z}".format(
                        profile=profile.description,
                        dist=line.distance_to_midpoint(measurement.point),
                        z=max(measurement.z1, measurement.z2),
                    )
                )
Пример #2
0
    def parse(self, check_only=False):
        self.error_config = (
            errors.ErrorConfiguration(self.project, None, self.mtype()))

        parsed_metfile = parse_metfile(self.file_object)

        if parsed_metfile is None:
            # File is not a MET file. Returned empty successful result.
            return specifics.SuccessfulParserResult(())

        measurements = []

        if self.file_object.errors:
            # There were errors, record them
            for error in self.file_object.errors:
                self.record_error(
                    error.line, error.error_code, error.error_message)

        self.check_content(parsed_metfile)

        # Save the measured profiles.
        for series in parsed_metfile.series:
            for profile in series.profiles:
                scheduled_measurement = (
                    self.get_scheduled_measurement(profile))
                if scheduled_measurement is None:
                    continue

                m, created = models.Measurement.objects.get_or_create(
                    scheduled=scheduled_measurement)
                m.date = profile.date_measurement

                m.data = [{
                        'x': float(measurement.x),
                        'y': float(measurement.y),
                        'type': measurement.profile_point_type,
                        'top': measurement.z1,
                        'bottom': measurement.z2
                        }
                          for measurement in profile.sorted_measurements
                          ]

                if len(m.data) > 0:
                    # Use x, y of first point
                    m.the_geom = Point(
                        m.data[0]['x'], m.data[0]['y'], srid=models.SRID)
                    m.save()

                scheduled_measurement.complete = True
                scheduled_measurement.save()

                measurements.append(m)

        return self._parser_result(measurements)
Пример #3
0
def retrieve(metfile, profile_id):
    """Return the given profile_id from the metfile found at path
    'metfile', and information on the series it was in, in the format
    of a 3 element tuple:

    (series_id, series_name, profile_object)
    """

    met = parser.parse_metfile(file_reader.FileReader(
            metfile, skip_empty_lines=True))

    for series in met.series:
        for profile in series.profiles:
            if profile.id == profile_id:
                return series.id, series.name, profile
Пример #4
0
def main():
    parser = argparse.ArgumentParser(
 description="Read a MET file, and print errors or a copy of the MET file.")
    parser.add_argument("filename")

    filename = parser.parse_args().filename

    if not os.path.exists(filename) or not os.path.isfile(filename):
        print "File does not exist: {0}.".format(filename)
    elif not filename.endswith(".met"):
        print "File is not a .met file: {0}.".format(filename)
    else:
        file_reader = FileReader(filename, skip_empty_lines=True)
        metfile = parse_metfile(file_reader)
        if not file_reader.success:
            print "Errors."
        elif metfile is None:
            print "Apparently the MET parser decided this was not a MET file."
        else:
            exporter = MetfileExporter()
            print exporter.export_metfile(metfile)