pygrass package

Subpackages

Submodules

pygrass.errors module

pygrass.errors.mapinfo_must_be_set(method)[source]
pygrass.errors.must_be_in_current_mapset(method)[source]
pygrass.errors.must_be_open(method)[source]

pygrass.utils module

pygrass.utils.coor2pixel(coord, region)[source]

Convert coordinates into a pixel row and col

>>> from grass.pygrass.gis.region import Region
>>> reg = Region()
>>> coor2pixel((reg.west, reg.north), reg)
(0.0, 0.0)
>>> coor2pixel((reg.east, reg.south), reg) == (reg.rows, reg.cols)
True
pygrass.utils.copy(existingmap, newmap, maptype, **kwargs)[source]

Copy a map

>>> copy(test_vector_name, "mycensus", "vector")
>>> rename("mycensus", "mynewcensus", "vector")
>>> remove("mynewcensus", "vector")
pygrass.utils.create_test_stream_network_map(map_name='streams')[source]

Create test data

This functions creates a vector map layer with lines that represent a stream network with two different graphs. The first graph contains a loop, the second can be used as directed graph.

This should be used in doc and unit tests to create location/mapset independent vector map layer.

param map_name: The vector map name that should be used

1(0,2) 3(2,2)

/

1 / 2
/

2(1,1)

6(0,1) || 5(2,1)
5 || / 4
||/

4(1,0) | | 6 |7(1,-1)

7(0,-1) 8(2,-1)

/

8 / 9
/

9(1, -2) | | 10 |

10(1,-3)

pygrass.utils.create_test_vector_map(map_name='test_vector')[source]

This functions creates a vector map layer with points, lines, boundaries, centroids, areas, isles and attributes for testing purposes

This should be used in doc and unit tests to create location/mapset independent vector map layer. This map includes 3 points, 3 lines, 11 boundaries and 4 centroids. The attribute table contains cat, name and value columns.

param map_name: The vector map name that should be used

P1 P2 P3

6 * * * 5 4 _______ ___ ___ L1 L2 L3

Y 3 |A1___ *| *| *| | | |
-1
-1 0 1 2 3 4 5 6 7 8 9 10 12 14

X

pygrass.utils.decode(obj, encoding=None)[source]

Decode string coming from c functions, can be ctypes class String, bytes, or None

pygrass.utils.findfiles(dirpath, match=None)[source]

Return a list of the files

pygrass.utils.findmaps(type, pattern=None, mapset='', location='', gisdbase='')[source]

Return a list of tuple contining the names of the:

  • map

  • mapset,

  • location,

  • gisdbase

pygrass.utils.get_lib_path(modname, libname=None)[source]

Return the path of the libname contained in the module.

Deprecated since version 7.1: Use grass.script.utils.get_lib_path() instead.

pygrass.utils.get_mapset_raster(mapname, mapset='')[source]

Return the mapset of the raster map

>>> get_mapset_raster(test_raster_name) == getenv("MAPSET")
True
pygrass.utils.get_mapset_vector(mapname, mapset='')[source]

Return the mapset of the vector map

>>> get_mapset_vector(test_vector_name) == getenv("MAPSET")
True
pygrass.utils.get_raster_for_points(poi_vector, raster, column=None, region=None)[source]

Query a raster map for each point feature of a vector

Example

>>> from grass.pygrass.raster import RasterRow
>>> from grass.pygrass.gis.region import Region
>>> from grass.pygrass.vector import VectorTopo
>>> from grass.pygrass.vector.geometry import Point

Create a vector map

>>> cols = [("cat", "INTEGER PRIMARY KEY"), ("value", "double precision")]
>>> vect = VectorTopo("test_vect_2")
>>> vect.open("w", tab_name="test_vect_2", tab_cols=cols)
>>> vect.write(
...     Point(10, 6),
...     cat=1,
...     attrs=[
...         10,
...     ],
... )
>>> vect.write(
...     Point(12, 6),
...     cat=2,
...     attrs=[
...         12,
...     ],
... )
>>> vect.write(
...     Point(14, 6),
...     cat=3,
...     attrs=[
...         14,
...     ],
... )
>>> vect.table.conn.commit()
>>> vect.close()

Setup the raster sampling

>>> region = Region()
>>> region.from_rast(test_raster_name)
>>> region.set_raster_region()
>>> ele = RasterRow(test_raster_name)

Sample the raster layer at the given points, return a list of values

>>> l = get_raster_for_points(vect, ele, region=region)
>>> l[0]  
(1, 10.0, 6.0, 1)
>>> l[1]  
(2, 12.0, 6.0, 1)

Add a new column and sample again

>>> vect.open("r")
>>> vect.table.columns.add(test_raster_name, "double precision")
>>> vect.table.conn.commit()
>>> test_raster_name in vect.table.columns
True
>>> get_raster_for_points(vect, ele, column=test_raster_name, region=region)
True
>>> vect.table.filters.select("value", test_raster_name)
Filters('SELECT value, Utils_test_raster FROM test_vect_2;')
>>> cur = vect.table.execute()
>>> r = cur.fetchall()
>>> r[0]  
(10.0, 1.0)
>>> r[1]  
(12.0, 1.0)
>>> remove("test_vect_2", "vect")
Parameters
  • poi_vector – A VectorTopo object that contains points

  • raster – raster object

  • column (str) – column name to update in the attrinute table, if set to None a list of sampled values will be returned

  • region – The region to work with, if not set the current computational region will be used

Returns

True in case of success and a specified column for update, if column name for update was not set a list of (id, x, y, value) is returned

pygrass.utils.getenv(env)[source]

Return the current grass environment variables

>>> from grass.script.core import gisenv
>>> getenv("MAPSET") == gisenv()["MAPSET"]
True
pygrass.utils.is_clean_name(name) → bool[source]

Return if the name is valid

>>> is_clean_name("census")
True
>>> is_clean_name("0census")
True
>>> is_clean_name("census?")
True
>>> is_clean_name("cénsus")
False
pygrass.utils.looking(obj, filter_string)[source]
>>> import grass.lib.vector as libvect
>>> sorted(looking(libvect, "*by_box*"))  
['Vect_select_areas_by_box', 'Vect_select_isles_by_box',
 'Vect_select_lines_by_box', 'Vect_select_nodes_by_box']
pygrass.utils.pixel2coor(pixel, region)[source]

Convert row and col of a pixel into a coordinates

>>> from grass.pygrass.gis.region import Region
>>> reg = Region()
>>> pixel2coor((0, 0), reg) == (reg.north, reg.west)
True
>>> pixel2coor((reg.cols, reg.rows), reg) == (reg.south, reg.east)
True
pygrass.utils.r_export(rast, output='', fmt='png', **kargs)[source]
pygrass.utils.remove(oldname, maptype)[source]

Remove a map

pygrass.utils.rename(oldname, newname, maptype, **kwargs)[source]

Rename a map

pygrass.utils.set_path(modulename, dirname=None, path='.')[source]

Set sys.path looking in the the local directory GRASS directories.

Parameters
  • modulename – string with the name of the GRASS module

  • dirname – string with the directory name containing the python libraries, default None

  • path – string with the path to reach the dirname locally.

Deprecated since version 7.1: Use grass.script.utils.set_path() instead.

pygrass.utils.split_in_chunk(iterable, length=10)[source]

Split a list in chunk.

>>> for chunk in split_in_chunk(range(25)):
...     print(chunk)
...
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
(10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
(20, 21, 22, 23, 24)
>>> for chunk in split_in_chunk(range(25), 3):
...     print(chunk)
...
(0, 1, 2)
(3, 4, 5)
(6, 7, 8)
(9, 10, 11)
(12, 13, 14)
(15, 16, 17)
(18, 19, 20)
(21, 22, 23)
(24,)
pygrass.utils.table_exist(cursor, table_name)[source]

Return True if the table exist False otherwise

Module contents