On 30/11/2019 16:11, Zoltan Szecsei
wrote:
Hi,
I'm trying to write my first Grass python script to load Shape
files and delete all lines shorter than 50m
I'm trying various permutations of the command below, but no
success (No error message and no lines deleted).
Any guidance would be welcome.
gscript.run_command('v.extract','r',input=gen,output=lin,
where="( $LENGTH > 50 )",overwrite=True)
gscript.run_command('v.out.ogr', 'sce2', input=lin, type='line',
output=dir_rclout + rcl + '.shp', format='ESRI_Shapefile',
output_type='line',overwrite=True)
The term $LENGTH looks wrong to me.
In python I usually would do something like:
In [1]: import grass.script as gscript
In [4]: where_expr = "%s > %d" % ("'length'", 5000)
In [5]: where_expr
Out[5]: "'length' > 5000"
In [6]: gscript.run_command('v.extract', input="roads",
output="roads_long", where=where_expr)
Data element 'vector/roads' was found in more mapsets
(also found in
<PERMANENT>)
Using <roads@Arava>...
Data element 'vector/roads' was found in more mapsets
(also found in
<PERMANENT>)
Using <roads@Arava>...
Extracting features...
100%
Building topology for vector map
<roads_long@Arava>...
Registering primitives...
Writing attributes...
Out[6]: 0
Note the quoting around the column header "length": One double
quote and one single quote. The inner single quote is for the SQL
_expression_.
Cheers, Micha
Thanks
and regards,
Zoltan
PS: Should these type of questions go to grass-dev ??
--
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918
https://orcid.org/0000-0002-1128-1325
|