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
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