env.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Jun 26 12:38:48 2012
  4. @author: pietro
  5. """
  6. import fnmatch
  7. import grass.lib.gis as libgis
  8. import grass.lib.raster as libraster
  9. from grass.script import core as grasscore
  10. def looking(filter_string, obj):
  11. """
  12. >>> import grass.lib.vector as libvect
  13. >>> sorted(looking('*by_box*', libvect)) # doctest: +NORMALIZE_WHITESPACE
  14. ['Vect_select_areas_by_box', 'Vect_select_isles_by_box',
  15. 'Vect_select_lines_by_box', 'Vect_select_nodes_by_box']
  16. """
  17. word_list = [i for i in dir(obj)]
  18. word_list.sort()
  19. return fnmatch.filter(word_list, filter_string)
  20. def remove(**kargs):
  21. grasscore.run_command('g.remove', **kargs)
  22. def rename(oldname, newname, maptype):
  23. grasscore.run_command('g.rename',
  24. **{maptype: '{old},{new}'.format(old=oldname,
  25. new=newname), })
  26. def copy(existingmap, newmap, maptype):
  27. grasscore.run_command('g.copy',
  28. **{maptype: '{old},{new}'.format(old=existingmap,
  29. new=newmap), })
  30. def get_mapset_raster(mapname, mapset=''):
  31. return libgis.G_find_raster(mapname, '')
  32. def get_mapset_vector(mapname, mapset=''):
  33. return libgis.G_find_vector(mapname, '')
  34. def exist(mapname, mapset=''):
  35. mapset = get_mapset_raster(mapname, mapset)
  36. if mapset != '':
  37. return True
  38. else:
  39. mapset = get_mapset_vector(mapname, mapset)
  40. if mapset:
  41. return True
  42. return False
  43. def clean_map_name(name):
  44. name.strip()
  45. for char in ' @#^?°,;%&/':
  46. name = name.replace(char, '')
  47. return name
  48. def coor2pixel((east, north), region):
  49. """Convert coordinates into a pixel row and col ::
  50. >>> from pygrass.region import Region
  51. >>> reg = Region()
  52. >>> coor2pixel((reg.west, reg.north), reg)
  53. (0.0, 0.0)
  54. >>> coor2pixel((reg.east, reg.south), reg) == (reg.cols, reg.rows)
  55. True
  56. """
  57. return (libraster.Rast_northing_to_row(north, region.c_region),
  58. libraster.Rast_easting_to_col(east, region.c_region))
  59. def pixel2coor((col, row), region):
  60. """Convert row and col of a pixel into a coordinates ::
  61. >>> from pygrass.region import Region
  62. >>> reg = Region()
  63. >>> pixel2coor((0, 0), reg) == (reg.north, reg.west)
  64. True
  65. >>> pixel2coor((reg.cols, reg.rows), reg) == (reg.east, reg.south)
  66. True
  67. """
  68. return (libraster.Rast_row_to_northing(row, region.c_region),
  69. libraster.Rast_col_to_easting(col, region.c_region))