[GRASS-user] deleting lines by length, from a vector map
mlennert at club.worldonline.be
Sun Dec 1 03:17:43 PST 2019
On 1/12/19 08:39, Micha Silver wrote:
> On 30/11/2019 16:11, Zoltan Szecsei wrote:
>> 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',
> The term $LENGTH looks wrong to me.
> In python I usually would do something like:
> In : import grass.script as gscript
> In : where_expr = "%s > %d" % ("'length'", 5000)
> In : where_expr
> Out: "'length' > 5000"
> In : gscript.run_command('v.extract', input="roads",
> output="roads_long", where=where_expr)
In order for this to work, you need a column 'length' in your attribute
table. Do you have such a column. Otherwise, you can create it with v.to.db.
More information about the grass-user