<div dir="ltr">Hi,<div><br></div><div>I think the gsetup.init parameters changed, see:</div><div><a href="https://grass.osgeo.org/grass83/manuals/libpython/script.html#script.setup.init">https://grass.osgeo.org/grass83/manuals/libpython/script.html#script.setup.init</a><br></div><div><br></div><div>Best,</div><div>Anna</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 7, 2023 at 3:03 PM Phillip Allen <<a href="mailto:phillipjallen830@gmail.com">phillipjallen830@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi all,</div><div><br></div><div>I wrote a python script ~6 years ago to create sample catchment polygons for stream sediment samples and all worked well. I created 10,000s of catchements successfully!<br></div><div><br></div><div>Today I reconfigured the script for some new data and I am now getting this error:</div><div><br></div><div>(Mon Aug  7 12:57:09 2023)                                                      <br>D:\DEM_12_5\mcc_area\basin_code04_mcc.py                                        <br>Traceback (most recent call last):<br>  File "D:\DEM_12_5\mcc_area\basin_code04_mcc.py", line 43,<br>in <module><br>    gsetup.init(gisbase, gisdb, location, mapset)<br>  File "C:\OSGeo4W\apps\grass\grass83\etc\python\grass\scrip<br>t\setup.py", line 329, in init<br>    raise ValueError(<br>ValueError: Mapset D:\DEM_12_5\grassdata\dem12_5_a is not<br>valid: <D:/DEM_12_5/grassdata> is not a valid GRASS Location<br>because PERMANENT Mapset is missing<br>(Mon Aug  7 12:57:10 2023) Command ended with non-zero return code 1 (0 sec)    <br></div><div><br></div><div>I know the mapset PERMANENT exists and is valid since I just opened it in GRASS.</div><div><br></div><div>Why is this python code below not running properly now?</div><div>Has something in GRASS changed 'recently' ?</div><div><br></div><div>regards,</div><div><br></div><div>Phil</div><div>Consulting Geochemist</div><div>(someday I really need to become a better python coder!)</div><div><br></div><div>#####</div><div>#####  basin python code</div><div>#! C:\OSGeo4W64\bin\python.exe<br><br># IMPORT CSV & LOOP THROUGH COORDINATES FOR r.water.outlet<br>import os<br>import sys<br>import psycopg2<br><br><br>#set up GRASS environment variables<br>sys.path.append(os.path.join(os.environ['GISBASE'], 'etc', 'python'))<br>import grass.script as g<br>import grass.script.setup as gsetup<br>gisbase = os.environ['GISBASE']<br><br>gisdb = 'D:/DEM_12_5/grassdata'<br>location = 'dem12_5_a'<br>mapset = 'PERMANENT'<br>rast_draindir = 'mcc_d1_draindir150'<br><br><br>#     first join the new snap table's cat column to the original attribute table<br># v.out.ascii input=th_ss_aem_snap_r5@PERMANENT type=point output=D:/DEM_12_5/mcc_area/mcc_ss_aga_pt_temp.csv columns=sample_number format=point separator=comma precision=20<br>txtfile = 'D:/DEM_12_5/mcc_area/mcc_ss_aga_pt_temp.csv'<br>txtfileWKT = 'D:/DEM_12_5/mcc_area/mcc_ss_WKT.txt'<br>pgsrid = '32618'<br><br>pg_user = 'postgres'<br>pg_user_pwd = 'notmyrealpassword'<br>pg_schema = 'basin'<br>pg_tbl_name = 'mcc_samp_basin'<br>pg_host = 'localhost'<br>pg_dbname = 'ss_basin_test'<br><br>txt_pg_tbl_create = 'CREATE TABLE ' + pg_schema + "." + pg_tbl_name + ' (x double precision, y double precision, samp_id character varying(254), geom geometry(POLYGON, ' + pgsrid + ') );'<br>txt_pg_db =  "host='" + pg_host + "' dbname='" + pg_dbname + "' user='" + pg_user + "' password='" + pg_user_pwd + "'"<br><br>txt_gpg_db = "PG:dbname=" + pg_dbname + " host='" + pg_host + "' user='" + pg_user + "' password='" + pg_user_pwd + "'"<br><br><br>#print "Connecting to database\n   ->%s" % (txt_pg_db)<br>#print "Grass PG Connection String\n ->%s" % (txt_gpg_db)<br><br>gsetup.init(gisbase, gisdb, location, mapset)<br>g.run_command('g.region', flags='a', rast = rast_draindir)<br><br><br># Create PostGIS Polygon Table<br>conn = psycopg2.connect(txt_pg_db)<br>cur = conn.cursor()<br>cur.execute(txt_pg_tbl_create)<br>conn.commit()<br><br>#csv file reading and importation<br>import csv<br>rows = list(open(txtfile))<br>totalrows = len(rows) - 1<br><br>#loop through the csv(coordinates) file in r.water.outlet module<br>f = open(txtfile, 'r')<br>element = list(csv.reader(f))<br>i = 0<br>j = 0<br>while True:<br>    if i <= totalrows:<br>         g.run_command('r.water.outlet', overwrite = True , input = rast_draindir, output = 'b' , coordinates = element[i][j] + ',' + element[i][j + 1] )<br>              g.run_command('r.null' , map='b', setnull = 0 )<br>               g.run_command('r.to.vect' , overwrite = True , input='b', output = 'b_rc', type = 'area' )<br>            g.run_command('v.out.ascii', overwrite = True, input='b_rc', type='boundary', output=txtfileWKT, format='wkt')<br>                g.run_command('v.out.postgis', overwrite = True, input='b_rc', type='boundary', output=txt_gpg_db , output_layer = pg_schema + ".b_rc" )<br>            sql_txt = "INSERT INTO " + pg_schema + "." + pg_tbl_name + " SELECT " + element[i][j] + " AS x, " + element[i][j + 1] + " AS y, '" + element[i][j + 3] + "' AS samp_id, b_rc.geom AS geom FROM " + pg_schema + ".b_rc;"<br>         cur.execute(sql_txt)<br>          conn.commit()<br>         i = i + 1<br>     else:<br>         break<br><br>cur.close()<br>conn.close()<br><br><br></div></div>
_______________________________________________<br>
grass-user mailing list<br>
<a href="mailto:grass-user@lists.osgeo.org" target="_blank">grass-user@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/grass-user" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/grass-user</a><br>
</blockquote></div>