def _get_grass_json(self):
        """
        Transform GRASS map to GeoJSON
        :return:
        """
        if self.grass_map['type'] not in ['point', 'line', 'boundary', 'centroid',
                                          'area', 'face', 'kernel', 'auto']:
            self.grass_map['type'] = 'auto'
        out = "%s_%s.json" % (self.grass_map['map'],
                              self.grass_map['layer'])

        out = os.path.join(get_tmp_folder(), out)
        if os.path.exists(out):
            os.remove(out)
        out1 = Module('v.out.ogr',
                      input=self.grass_map['map'],
                      layer=self.grass_map['layer'],
                      type=self.grass_map['type'],
                      output=out,
                      format='GeoJSON',
                      stderr_=PIPE,
                      overwrite=True)

        grass.message(out1.outputs["stderr"].value.strip())

        self.rm_last_lines(out, 3)
        # remove first 5 lines and last 3 to enseure format for serializetion
        for i in range(5):  # todo optimize
            self.remove_line(out, 0)

        return out
    def _get_grass_json(self):
        """
        Transform GRASS map to GeoJSON
        :return:
        """
        if self.grass_map['type'] not in ['point', 'line', 'boundary', 'centroid',
                                          'area', 'face', 'kernel', 'auto']:
            self.grass_map['type'] = 'auto'
        out = "%s_%s.json" % (self.grass_map['map'],
                              self.grass_map['layer'])

        out = os.path.join(get_tmp_folder(), out)
        if os.path.exists(out):
            os.remove(out)
        out1 = Module('v.out.ogr',
                      input=self.grass_map['map'],
                      layer=self.grass_map['layer'],
                      type=self.grass_map['type'],
                      output=out,
                      format='GeoJSON',
                      stderr_=PIPE,
                      overwrite=True)

        grass.message(out1.outputs["stderr"].value.strip())

        self.rm_last_lines(out, 3)
        # remove first 5 lines and last 3 to enseure format for serializetion
        for i in range(5):  # todo optimize
            self.remove_line(out, 0)

        return out
 def get_JSON(self):
     """
     Return geojson for class  variable grass_map
     :return:
     """
     if self.grass_map:
         self.json = self._get_grass_json()
     else:
         filename, file_extension = os.path.splitext(self.json_file)
         self.json = os.path.join(get_tmp_folder(), "%s.json" % filename)
     return self.json
 def get_JSON(self):
     """
     Return geojson for class  variable grass_map
     :return:
     """
     if self.grass_map:
         self.json = self._get_grass_json()
     else:
         filename, file_extension = os.path.splitext(self.json_file)
         self.json = os.path.join(get_tmp_folder(), "%s.json" %filename)
     return self.json
Пример #5
0
    def _get_grass_json(self):
        """
        Transform GRASS map to GeoJSON
        :return:
        """
        if self.grass_map["type"] not in [
                "point",
                "line",
                "boundary",
                "centroid",
                "area",
                "face",
                "kernel",
                "auto",
        ]:
            self.grass_map["type"] = "auto"
        out = "%s_%s.json" % (self.grass_map["map"], self.grass_map["layer"])

        out = os.path.join(get_tmp_folder(), out)
        if os.path.exists(out):
            os.remove(out)
        out1 = Module(
            "v.out.ogr",
            input=self.grass_map["map"],
            layer=self.grass_map["layer"],
            type=self.grass_map["type"],
            output=out,
            format="GeoJSON",
            stderr_=PIPE,
            overwrite=True,
        )

        grass.message(out1.outputs["stderr"].value.strip())

        self.rm_last_lines(out, 3)
        # remove first 5 lines and last 3 to enseure format for serializetion
        for i in range(5):  # todo optimize
            self.remove_line(out, 0)

        return out