Exemplo n.º 1
0
def test_hent_observationer_naer_geometri(firedb: FireDb):
    go = firedb.hent_geometri_objekt(
        punktid="67e3987a-dc6b-49ee-8857-417ef35777af")
    os = firedb.hent_observationer_naer_geometri(go.geometri, 10000)
    assert len(os) == 68
    point = Geometry("POINT (10.2112609352788 56.1567354902778)")
    os = firedb.hent_observationer_naer_geometri(point, 100)
    assert len(os) == 6
    polygon = Geometry(("POLYGON ((10.209 56.155, "
                        "10.209 56.158, "
                        "10.215 56.158, "
                        "10.215 56.155, "
                        "10.209 56.155))"))
    os = firedb.hent_observationer_naer_geometri(polygon, 100)
    assert len(os) == 10
Exemplo n.º 2
0
def test_naer_geometry(firedb: FireDb, tmp_path: Path):
    outfile = tmp_path / "near_geometry.xml"
    with open(outfile, "w") as output:
        writer = GamaWriter(firedb, output)

        g = Geometry("POINT (10.200000 56.100000)")
        observations = firedb.hent_observationer_naer_geometri(g, 10000)

        writer.take_observations(observations)

        parameters = configparser.ConfigParser()
        parameters.read("fire-gama.ini")
        writer.write(True, False, "test_near_geometry", parameters)
    os.remove(outfile)
Exemplo n.º 3
0
def test_naer_geometry_time_interval(firedb: FireDb, tmp_path: Path):
    outfile = tmp_path / "near_geometry_time_interval.xml"
    output = open(outfile, "w")
    writer = GamaWriter(firedb, output)

    g = Geometry("POINT (10.200000 56.100000)")
    observations = firedb.hent_observationer_naer_geometri(
        g, 10000, datetime.datetime(2015, 10, 8),
        datetime.datetime(2018, 10, 9))

    writer.take_observations(observations)

    parameters = configparser.ConfigParser()
    parameters.read("fire-gama.ini")
    writer.write(True, False, "test_near_geometry_time_interval", parameters)
    output.close
    os.remove(outfile)
Exemplo n.º 4
0
def test_in_polygon(firedb: FireDb, tmp_path: Path):
    outfile = tmp_path / "in_polygon.xml"
    with open(outfile, "w") as output:
        writer = GamaWriter(firedb, output)

        geometry = Geometry(("POLYGON ((10.209 56.155, "
                             "10.209 56.158, "
                             "10.215 56.158, "
                             "10.215 56.155, "
                             "10.209 56.155))"))
        observations = firedb.hent_observationer_naer_geometri(geometry, 5000)
        writer.take_observations(observations)

        writer.set_fixed_point_ids(["K-63-09946"])

        parameters = configparser.ConfigParser()
        parameters.read("fire-gama.ini")
        writer.write(True, False, "test_in_polygon", parameters)
    os.remove(outfile)
Exemplo n.º 5
0
def test_in_polygon(firedb: FireDb, tmp_path: Path):
    outfile = tmp_path / "in_polygon.xml"
    output = open(outfile, "w")
    writer = GamaWriter(firedb, output)

    geometry = Geometry(("POLYGON ((10.209 56.155, "
                         "10.209 56.158, "
                         "10.215 56.158, "
                         "10.215 56.155, "
                         "10.209 56.155))"))
    observations = firedb.hent_observationer_naer_geometri(geometry, 5000)
    writer.take_observations(observations)

    writer.set_fixed_point_ids(["67e3987a-dc6b-49ee-8857-417ef35777af"])

    parameters = configparser.ConfigParser()
    parameters.read("fire-gama.ini")
    writer.write(True, False, "test_in_polygon", parameters)
    output.close
    os.remove(outfile)
Exemplo n.º 6
0
    def processAlgorithm(self, parameters, context,
                         feedback: QgsProcessingFeedback):
        # Input / Output
        source = self.parameterAsSource(parameters, self.INPUT, context)
        (sink, dest_id) = self.create_output_sink(parameters, context,
                                                  source.sourceCrs())

        # Filter parameters
        observation_type_indices = self.parameterAsEnums(
            parameters, self.OBSERVATION_TYPE, context)
        observation_types = list(
            map(lambda i: self.OBSERVATION_TYPES[i][0],
                observation_type_indices))

        from_date = None
        from_date_string = self.parameterAsString(parameters, self.FROM_DATE,
                                                  context)
        if from_date_string:
            from_date = datetime.fromisoformat(from_date_string)

        to_date = None
        to_date_string = self.parameterAsString(parameters, self.TO_DATE,
                                                context)
        if to_date_string:
            to_date = datetime.fromisoformat(to_date_string)

        fire_connection_string = self.settings.value("fire_connection_string")
        fireDb = FireDb(fire_connection_string, debug=True)

        features = list(source.getFeatures())
        total_num_features = len(features)
        total_num_features_processed = 0
        # for current, feature in enumerate(features):
        for feature in features:
            if feedback.isCanceled():
                return {}
            wkt = feature.geometry().asWkt().upper()
            geometry = Geometry(wkt)
            observations = fireDb.hent_observationer_naer_geometri(
                geometri=geometry, afstand=0, tidfra=from_date, tidtil=to_date)

            pid_list = self.get_pids_from_observations(observations)
            geometriobjekter = self.get_geometriobjekter_from_pids(
                fireDb, pid_list)
            idents = self.get_idents_from_pids(fireDb, pid_list)

            feedback.setProgressText(
                "Fandt {antal} observationer".format(antal=len(observations)))
            feedback.setProgressText("Fandt {antal} geometriobjekter".format(
                antal=len(geometriobjekter)))
            feedback.setProgressText(
                "Fandt {antal} idents".format(antal=len(idents)))
            for current, observation in enumerate(observations):
                observation_type_id = observation.observationstypeid
                if observation_type_id in observation_types:
                    feature = self.create_feature_from_observation(
                        observation, geometriobjekter, idents, feedback)
                    if feature:
                        sink.addFeature(feature, QgsFeatureSink.FastInsert)
            total_num_features_processed = total_num_features_processed + 1
            feedback.setProgress(total_num_features_processed /
                                 total_num_features)
            if feedback.isCanceled():
                return {}

        apply_theme = self.parameterAsBool(parameters, self.APPLY_THEME,
                                           context)
        if apply_theme:
            style_file = os.path.join(os.path.dirname(__file__), "..",
                                      "styles", "observation.qml")
            alg_params = {"INPUT": dest_id, "STYLE": style_file}
            processing.run(
                "qgis:setstyleforvectorlayer",
                alg_params,
                context=context,
                feedback=feedback,
                is_child_algorithm=True,
            )

        return {self.OUTPUT: dest_id}