[prev in list] [next in list] [prev in thread] [next in thread] 

List:       grass-user
Subject:    Re: [GRASS-user] GRASS GIS : r.mblend: Data base element error.
From:       Luí­s_Moreira_de_Sousa_via_grass-user <grass-user () lists ! os
Date:       2023-11-03 9:45:32
Message-ID: aexwe5WQSHLHVMAtgeb3NaDCKKrKze8Lbt8j-fHnkdcsACxZR50queE4LeYR_QjMlEAZF7iMYJQqxP6bNjn7d9NDzdijN4mV-IVVTiBr_x8= () protonmail ! ch
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]

[Attachment #4 (text/plain)]

Hi Job,

looks like something is going wrong creating the attribute table for the \
interpolation points vector. This is made with v.db.connect at the time of the \
"Linking attribute table to layer 1" message. Which back-end are you using? The \
SQLite default? I would ask you to verify whether v.db.connect is working correctly \
on your system, you can create a new points vector and then test with v.db.select. \
Another experiment is trying a different back-end. For serious stuff I use Postgres.

If your data are cartographic (UTM) you should stick to the original CRS and not \
transform to a geographic system. It is also preferable if you use GRASS 8.

Regards.

--
Luís

Sent with [Proton Mail](https://proton.me/) secure email.

------- Original Message -------
On Thursday, November 2nd, 2023 at 5:12 AM, \
THOMAS JOB JOSE via grass-user \
<grass-user@lists.osgeo.org> wrote:

> I'm using r.mblend within GRASS GIS v7.8.8 on  Windows as well as on GRASS GIS \
> v8.2.1 on Linux , attempting to merge higher resolution raster files (30 m) with \
> lower resolution (500m). Everything is running until the print out step "Dropping \
> extra column from far edge" at which point I hit an error: "Database connection not \
> defined for layer 1". I tried it both on Windows and Linux. I encountered the same \
> error. I even changed the projections of the raster file from UTM to WGS, still it \
> showed the errors. 
> Below I have attached the Command Output :
> 
> (Thu Nov 2 12:46:45 2023)
> r.mblend high=N15E073@PERMANENT low=gebco_2023_UTM@PERMANENT
> output=blend
> [r.mblend] Resampling low resolution raster to higher resolution
> [r.mblend] Multiplying low resolution by zero
> [r.mblend] Multiplying high resolution by zero
> [r.mblend] Computing extent of low resolution
> Extracting areas...
> Writing areas...
> Building topology for vector map <tmp_189483@PERMANENT>...
> Registering primitives...
> Building areas...
> Attaching islands...
> Attaching centroids...
> r.to.vect complete.
> [r.mblend] Computing extent of high resolution
> Extracting areas...
> Writing areas...
> Building topology for vector map <tmp_189484@PERMANENT>...
> Registering primitives...
> Building areas...
> Attaching islands...
> Attaching centroids...
> r.to.vect complete.
> [r.mblend] Computing area to interpolate
> Copying vector features from <tmp_189483@PERMANENT>...
> Copying vector features from <tmp_189484@PERMANENT>...
> Snapping boundaries with 1e-08 ...
> Breaking lines...
> Removing duplicates...
> Cleaning boundaries at nodes...
> Merging lines...
> Attaching islands...
> Building areas...
> Attaching islands...
> Querying vector map <tmp_189483@PERMANENT>...
> Querying vector map <tmp_189484@PERMANENT>...
> Writing centroids...
> Copying results to final output map...
> Building topology for vector map <tmp_189485@PERMANENT>...
> Registering primitives...
> Building areas...
> Attaching islands...
> Attaching centroids...
> v.overlay complete.
> [r.mblend] Computing buffer around interpolation area
> Buffering areas...
> Cleaning buffers...
> Building parts of topology...
> Building topology for vector map <tmp_189486@PERMANENT>...
> Registering primitives...
> Snapping boundaries...
> Reading features...
> Snap vertices Pass 1: select points
> Snap vertices Pass 2: assign anchor vertices
> Snap vertices Pass 3: snap to assigned points
> Breaking polygons...
> Breaking polygons (pass 1: select break points)...
> Breaking polygons (pass 2: break at selected points)...
> Removing duplicates...
> Breaking boundaries...
> Removing duplicates...
> Cleaning boundaries at nodes
> Building topology for vector map <tmp_189486@PERMANENT>...
> Building areas...
> Removing dangles...
> Removing bridges...
> Attaching islands...
> Building topology for vector map <tmp_189486@PERMANENT>...
> Attaching islands...
> Calculating centroids for all areas...
> Generating list of boundaries to be deleted...
> Deleting boundaries...
> Calculating centroids for areas...
> Building topology for vector map <tmp_189486@PERMANENT>...
> Registering primitives...
> Building areas...
> Attaching islands...
> Attaching centroids...
> [r.mblend] Vectorising differences between input rasters
> Reading areas...
> Writing raster map...
> All subsequent raster operations will be limited to the MASK area. Removing or \
> renaming raster map named 'MASK' will restore raster operations to normal. \
> Extracting points... Building topology for vector map <tmp_189488@PERMANENT>...
> Registering primitives...
> r.to.vect complete.
> Raster MASK removed
> [r.mblend] Computing distance to high resolution raster
> Reading raster map <N15E073@PERMANENT>...
> Writing output raster maps...
> [r.mblend] Rescaling distance to [0,10000] interval
> Rescale tmp_189489[0,1453] to tmp_1894810[0,10000]
> [r.mblend] Extract points from interpolation area boundary
> Building topology for vector map <tmp_1894812@PERMANENT>...
> Registering primitives...
> v.to.points complete. 207 points written to output vector map.
> [r.mblend] Copying features to layer 1
> WARNING: Database connection and attribute tables for concerned layers are not \
> changed Processing features...
> Copying attribute table(s)...
> Building topology for vector map <tmp_1894811@PERMANENT>...
> Registering primitives...
> v.category complete. 207 features modified.
> [r.mblend] Linking attribute table to layer 1
> The table <tmp_1894811> is now part of vector map <tmp_1894811> and may be deleted \
> or overwritten by GRASS modules Select privileges were granted on the table
> [r.mblend] Querying distances raster
> Column <value> not found in the table <tmp_1894811>. Creating...
> Reading features from vector map...
> Update vector attributes...
> v.what.rast complete. 207 records updated.
> [r.mblend] Selecting far edge points (using cut-off percentage)
> Extracting features...
> Building topology for vector map <tmp_1894816@PERMANENT>...
> Registering primitives...
> Writing attributes...
> [r.mblend] Dropping extra column from far edge
> ERROR: Database connection not defined for layer 1
> Region:
> {'projection': 1, 'zone': 43, 'n': 1769980.79652272, 's': 1658549.10764584, 'w': \
> 284498.79684178, 'e': 393033.65992938, 'nsres': 30.27212412, 'ewres': 30.27471774, \
> 'rows': 3681, 'cols': 3585, 'cells': 13196385} Traceback (most recent call last):
> File "C:\Users\jobthomas97\AppData\Roaming\GRASS7\addons\s
> cripts\r.mblend.py", line 332, in <module>
> main()
> File "C:\Users\jobthomas97\AppData\Roaming\GRASS7\addons\s
> cripts\r.mblend.py", line 279, in main
> gscript.run_command(
> File "C:\Program Files\GRASS GIS
> 7.8\etc\python\grass\script\core.py", line 441, in
> run_command
> return handle_errors(returncode, returncode, args,
> kwargs)
> File "C:\Program Files\GRASS GIS
> 7.8\etc\python\grass\script\core.py", line 342, in
> handle_errors
> raise CalledModuleError(module=None, code=code,
> grass.exceptions.CalledModuleError: Module run None
> v.db.dropcolumn map=tmp_1894816 layer=1 columns=along ended
> with error
> Process ended with non-zero return code 1. See errors in the
> (error) output.
> WARNING: No data base element files found
> WARNING: No data base element files found
> WARNING: No data base element files found
> WARNING: No data base element files found
> WARNING: Table <tmp_1894811> linked to vector map <tmp_1894811> does not exist
> (Thu Nov 2 12:47:06 2023) Command finished (20 sec)
> 
> Regards,
> Job Thomas.


[Attachment #5 (text/html)]

<div style="font-family: Menlo, Consolas, Courier New, Monospace; font-size: \
14px;">Hi Job,<br></div><div style="font-family: Menlo, Consolas, Courier New, \
Monospace; font-size: 14px;"><br></div><div style="font-family: Menlo, Consolas, \
Courier New, Monospace; font-size: 14px;">looks like something is going wrong \
creating the attribute table for the interpolation points vector. This is made with \
v.db.connect at the time of the "<span>Linking attribute table to layer 1</span>" \
message. Which back-end are you using? The SQLite default? I would ask you to verify \
whether v.db.connect is working correctly on your system, you can create a new points \
vector and then test with v.db.select. Another experiment is trying a different \
back-end. For serious stuff I use Postgres.</div><div style="font-family: Menlo, \
Consolas, Courier New, Monospace; font-size: 14px;"><br></div><div \
style="font-family: Menlo, Consolas, Courier New, Monospace; font-size: 14px;">If \
your data are cartographic (UTM) you should stick to the original CRS and not \
transform to a geographic system. It is also preferable if you use GRASS 8.</div><div \
style="font-family: Menlo, Consolas, Courier New, Monospace; font-size: \
14px;"><br></div><div style="font-family: Menlo, Consolas, Courier New, Monospace; \
font-size: 14px;">Regards.&nbsp; <br></div> <div class="protonmail_signature_block" \
style="font-family: Menlo, Consolas, Courier New, Monospace; font-size: 14px;">  <div \
                class="protonmail_signature_block-user">
        <div><br></div><div>-- <br></div><div>Luís</div><div><br></div></div><div \
                class="protonmail_signature_block-proton">
        Sent with <a target="_blank" href="https://proton.me/" rel="noopener \
noreferrer">Proton Mail</a> secure email.  </div>
</div>
<div style="font-family: Menlo, Consolas, Courier New, Monospace; font-size: \
                14px;"><br></div><div class="protonmail_quote">
        ------- Original Message -------<br>
        On Thursday, November 2nd, 2023 at 5:12 AM, \
THOMAS JOB JOSE via grass-user \
&lt;grass-user@lists.osgeo.org&gt; wrote:<br><br>  <blockquote \
class="protonmail_quote" type="cite">  
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, \
Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, \
0, 0);"> <span class="ContentPasted0 ContentPasted2" style="font-family: \
-apple-system, BlinkMacSystemFont, &quot;Segoe UI Adjusted&quot;, &quot;Segoe \
UI&quot;, &quot;Liberation Sans&quot;, sans-serif; font-size: 15px; text-align: left; \
display: inline !important; color: rgb(12, 13, 14); background-color: rgb(249, 248, \
246);"> <div class="ContentPasted2">I'm using r.mblend within GRASS GIS <b>v7.8.8</b> \
on <b> Windows</b> as well as on GRASS GIS <b>v8.2.1</b> on <b>Linux</b> &nbsp;, \
attempting to merge higher resolution raster files (30 m) with lower resolution \
(500m). Everything is running until the print out step "Dropping extra column from \
far edge" at which point  I hit an error: "Database connection not defined for layer \
1". I tried it both on Windows and Linux. I encountered the same error. I even \
changed the projections of the raster file from UTM to WGS, still it showed the \
errors.</div> <div class="ContentPasted2">
<div><br>
</div>
<div>Below I have attached the <b>Command Output</b> :</div>
<div><br>
</div>
<div>(Thu Nov &nbsp;2 12:46:45 2023) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div> r.mblend \
high=N15E073@PERMANENT low=gebco_2023_UTM@PERMANENT<br> </div>
<div class="ContentPasted2">output=blend &nbsp; &nbsp; &nbsp; </div>
<div class="ContentPasted2">[r.mblend] Resampling low resolution raster to higher \
resolution</div> <div class="ContentPasted2">[r.mblend] Multiplying low resolution by \
zero</div> <div class="ContentPasted2">[r.mblend] Multiplying high resolution by \
zero</div> <div class="ContentPasted2">[r.mblend] Computing extent of low \
resolution</div> <div class="ContentPasted2">Extracting areas...</div>
<div class="ContentPasted2">Writing areas...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189483@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">Building areas...</div>
<div class="ContentPasted2">Attaching islands...</div>
<div class="ContentPasted2">Attaching centroids...</div>
<div class="ContentPasted2">r.to.vect complete.</div>
<div class="ContentPasted2">[r.mblend] Computing extent of high resolution</div>
<div class="ContentPasted2">Extracting areas...</div>
<div class="ContentPasted2">Writing areas...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189484@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">Building areas...</div>
<div class="ContentPasted2">Attaching islands...</div>
<div class="ContentPasted2">Attaching centroids...</div>
<div class="ContentPasted2">r.to.vect complete.</div>
<div class="ContentPasted2">[r.mblend] Computing area to interpolate</div>
<div class="ContentPasted2">Copying vector features from \
&lt;tmp_189483@PERMANENT&gt;...</div> <div class="ContentPasted2">Copying vector \
features from &lt;tmp_189484@PERMANENT&gt;...</div> <div \
class="ContentPasted2">Snapping boundaries with 1e-08 ...</div> <div \
class="ContentPasted2">Breaking lines...</div> <div class="ContentPasted2">Removing \
duplicates...</div> <div class="ContentPasted2">Cleaning boundaries at nodes...</div>
<div class="ContentPasted2">Merging lines...</div>
<div class="ContentPasted2">Attaching islands...</div>
<div class="ContentPasted2">Building areas...</div>
<div class="ContentPasted2">Attaching islands...</div>
<div class="ContentPasted2">Querying vector map &lt;tmp_189483@PERMANENT&gt;...</div>
<div class="ContentPasted2">Querying vector map &lt;tmp_189484@PERMANENT&gt;...</div>
<div class="ContentPasted2">Writing centroids...</div>
<div class="ContentPasted2">Copying results to final output map...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189485@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">Building areas...</div>
<div class="ContentPasted2">Attaching islands...</div>
<div class="ContentPasted2">Attaching centroids...</div>
<div class="ContentPasted2">v.overlay complete.</div>
<div class="ContentPasted2">[r.mblend] Computing buffer around interpolation \
area</div> <div class="ContentPasted2">Buffering areas...</div>
<div class="ContentPasted2">Cleaning buffers...</div>
<div class="ContentPasted2">Building parts of topology...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189486@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">Snapping boundaries...</div>
<div class="ContentPasted2">Reading features...</div>
<div class="ContentPasted2">Snap vertices Pass 1: select points</div>
<div class="ContentPasted2">Snap vertices Pass 2: assign anchor vertices</div>
<div class="ContentPasted2">Snap vertices Pass 3: snap to assigned points</div>
<div class="ContentPasted2">Breaking polygons...</div>
<div class="ContentPasted2">Breaking polygons (pass 1: select break points)...</div>
<div class="ContentPasted2">Breaking polygons (pass 2: break at selected \
points)...</div> <div class="ContentPasted2">Removing duplicates...</div>
<div class="ContentPasted2">Breaking boundaries...</div>
<div class="ContentPasted2">Removing duplicates...</div>
<div class="ContentPasted2">Cleaning boundaries at nodes</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189486@PERMANENT&gt;...</div> <div class="ContentPasted2">Building \
areas...</div> <div class="ContentPasted2">Removing dangles...</div>
<div class="ContentPasted2">Removing bridges...</div>
<div class="ContentPasted2">Attaching islands...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189486@PERMANENT&gt;...</div> <div class="ContentPasted2">Attaching \
islands...</div> <div class="ContentPasted2">Calculating centroids for all \
areas...</div> <div class="ContentPasted2">Generating list of boundaries to be \
deleted...</div> <div class="ContentPasted2">Deleting boundaries...</div>
<div class="ContentPasted2">Calculating centroids for areas...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189486@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">Building areas...</div>
<div class="ContentPasted2">Attaching islands...</div>
<div class="ContentPasted2">Attaching centroids...</div>
<div class="ContentPasted2">[r.mblend] Vectorising differences between input \
rasters</div> <div class="ContentPasted2">Reading areas...</div>
<div class="ContentPasted2">Writing raster map...</div>
<div class="ContentPasted2">All subsequent raster operations will be limited to the \
MASK area. Removing or renaming raster map named 'MASK' will restore raster \
operations to normal.</div> <div class="ContentPasted2">Extracting points...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_189488@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">r.to.vect complete.</div>
<div class="ContentPasted2">Raster MASK removed</div>
<div class="ContentPasted2">[r.mblend] Computing distance to high resolution \
raster</div> <div class="ContentPasted2">Reading raster map \
&lt;N15E073@PERMANENT&gt;...</div> <div class="ContentPasted2">Writing output raster \
maps...</div> <div class="ContentPasted2">[r.mblend] Rescaling distance to [0,10000] \
interval</div> <div class="ContentPasted2">Rescale tmp_189489[0,1453] to \
tmp_1894810[0,10000]</div> <div class="ContentPasted2">[r.mblend] Extract points from \
interpolation area boundary</div> <div class="ContentPasted2">Building topology for \
vector map &lt;tmp_1894812@PERMANENT&gt;...</div> <div \
class="ContentPasted2">Registering primitives...</div> <div \
class="ContentPasted2">v.to.points complete. 207 points written to output vector \
map.</div> <div class="ContentPasted2">[r.mblend] Copying features to layer 1</div>
<div class="ContentPasted2">WARNING: Database connection and attribute tables for \
concerned layers are not changed</div> <div class="ContentPasted2">Processing \
features...</div> <div class="ContentPasted2">Copying attribute table(s)...</div>
<div class="ContentPasted2">Building topology for vector map \
&lt;tmp_1894811@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">v.category complete. 207 features \
modified.</div> <div class="ContentPasted2">[r.mblend] Linking attribute table to \
layer 1</div> <div class="ContentPasted2">The table &lt;tmp_1894811&gt; is now part \
of vector map &lt;tmp_1894811&gt; and may be deleted or overwritten by GRASS \
modules</div> <div class="ContentPasted2">Select privileges were granted on the \
table</div> <div class="ContentPasted2">[r.mblend] Querying distances raster</div>
<div class="ContentPasted2">Column &lt;value&gt; not found in the table \
&lt;tmp_1894811&gt;. Creating...</div> <div class="ContentPasted2">Reading features \
from vector map...</div> <div class="ContentPasted2">Update vector \
attributes...</div> <div class="ContentPasted2">v.what.rast complete. 207 records \
updated.</div> <div class="ContentPasted2">[r.mblend] Selecting far edge points \
(using cut-off percentage)</div> <div class="ContentPasted2">Extracting \
features...</div> <div class="ContentPasted2">Building topology for vector map \
&lt;tmp_1894816@PERMANENT&gt;...</div> <div class="ContentPasted2">Registering \
primitives...</div> <div class="ContentPasted2">Writing attributes...</div>
<div class="ContentPasted2">[r.mblend] Dropping extra column from far edge</div>
<div class="ContentPasted2"><b>ERROR: Database connection not defined for layer \
1</b></div> <div class="ContentPasted2"><b>Region:</b></div>
<div class="ContentPasted2">{'projection': 1, 'zone': 43, 'n': 1769980.79652272, 's': \
1658549.10764584, 'w': 284498.79684178, 'e': 393033.65992938, 'nsres': 30.27212412, \
'ewres': 30.27471774, 'rows': 3681, 'cols': 3585, 'cells': 13196385}</div> <div \
class="ContentPasted2"><b>Traceback (most recent call last):</b></div> <div \
class="ContentPasted2">&nbsp; File \
"C:\Users\jobthomas97\AppData\Roaming\GRASS7\addons\s</div> <div \
class="ContentPasted2">cripts\r.mblend.py", line 332, in &lt;module&gt;</div> <div \
class="ContentPasted2">&nbsp; &nbsp; main()</div> <div class="ContentPasted2">&nbsp; \
File "C:\Users\jobthomas97\AppData\Roaming\GRASS7\addons\s</div> <div \
class="ContentPasted2">cripts\r.mblend.py", line 279, in main</div> <div \
class="ContentPasted2">&nbsp; &nbsp; gscript.run_command(</div> <div \
class="ContentPasted2">&nbsp; File "C:\Program Files\GRASS GIS</div> <div \
class="ContentPasted2">7.8\etc\python\grass\script\core.py", line 441, in</div> <div \
class="ContentPasted2">run_command</div> <div class="ContentPasted2">&nbsp; &nbsp; \
return handle_errors(returncode, returncode, args,</div> <div \
class="ContentPasted2">kwargs)</div> <div class="ContentPasted2">&nbsp; File \
"C:\Program Files\GRASS GIS</div> <div \
class="ContentPasted2">7.8\etc\python\grass\script\core.py", line 342, in</div> <div \
class="ContentPasted2">handle_errors</div> <div class="ContentPasted2">&nbsp; &nbsp; \
raise CalledModuleError(module=None, code=code,</div> <div \
class="ContentPasted2">grass.exceptions.CalledModuleError: Module run None</div> <div \
class="ContentPasted2">v.db.dropcolumn map=tmp_1894816 layer=1 columns=along \
ended</div> <div class="ContentPasted2">with error</div>
<div class="ContentPasted2">Process ended with non-zero return code 1. See errors in \
the</div> <div class="ContentPasted2">(error) output.</div>
<div class="ContentPasted2"><b>WARNING: No data base element files found</b></div>
<div class="ContentPasted2"><b>WARNING: No data base element files found</b></div>
<div class="ContentPasted2"><b>WARNING: No data base element files found</b></div>
<div class="ContentPasted2"><b>WARNING: No data base element files found</b></div>
<div class="ContentPasted2"><b>WARNING: Table &lt;tmp_1894811&gt; linked to vector \
map &lt;tmp_1894811&gt; does not exist</b></div> <div class="ContentPasted2">(Thu Nov \
&nbsp;2 12:47:06 2023) Command finished (20 sec) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div> <br>
</span></div>
<div class="elementToProof">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, \
Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"> <br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, \
Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"> <br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, \
Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"> <br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, \
Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"> <br>
</div>
<div id="Signature">
<div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, \
Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"> <b>Regards,</b></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, \
Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"> <b>Job \
Thomas.</b></div> </div>
</div>
</div>



        </blockquote><br>
    </div>



_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic