Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#3352 closed defect (fixed)

Behavior of v.sort.points

Reported by: spawley Owned by: grass-dev@…
Priority: normal Milestone: 7.4.0
Component: Addons Version: unspecified
Keywords: Cc:
CPU: Unspecified Platform: Linux

Description

Hello devs,

I appear to be having some problems with the add on v.sort.points. Two issues, potentially bugs:

(1) the module fails if the 'cat' column is not the first attribute in the table (i.e. if points have been generated from a database table), returning the error:

'Error in sqlite3_prepare(): duplicate column name: cat'

(2) even if 'cat' is the first column, sorting by an integer column does not appear to be sorting point datasets in numeric order. Example from the nc_spm location:

v.sort.points input=firestations@PERMANENT output=firestations_sorted column=ID

The order of the points based on opening the attribute table, and the relationship between the 'ID' column and 'cat' appears to be the same as the original dataset, where 'ID' was not in ascending order.

Either I'm doing something wrong or the add on requires some tweaks. Otherwise his would be a very useful tool.

Steve

Change History (3)

comment:1 Changed 4 years ago by mlennert

Resolution: fixed
Status: newclosed

In 71147:

v.sort.points: handle non-first key column (fix #3352: Behavior of v.sort.points)

comment:2 in reply to:  description ; Changed 4 years ago by mlennert

Replying to spawley:

Hello devs,

I appear to be having some problems with the add on v.sort.points. Two issues, potentially bugs:

(1) the module fails if the 'cat' column is not the first attribute in the table (i.e. if points have been generated from a database table), returning the error:

'Error in sqlite3_prepare(): duplicate column name: cat'

Try r71147. This should hopefully fix that issue.

(2) even if 'cat' is the first column, sorting by an integer column does not appear to be sorting point datasets in numeric order. Example from the nc_spm location:

v.sort.points input=firestations@PERMANENT output=firestations_sorted column=ID

The order of the points based on opening the attribute table, and the relationship between the 'ID' column and 'cat' appears to be the same as the original dataset, where 'ID' was not in ascending order.

This is not a bug: cat values are conserved, i.e. the same points have the same cat value in the input and the output. However, points are in a different order in the file after v.sort.points. Category values of objects do not define order.

Moritz

comment:3 in reply to:  2 Changed 4 years ago by mlennert

Replying to mlennert:

Replying to spawley:

(2) even if 'cat' is the first column, sorting by an integer column does not appear to be sorting point datasets in numeric order. Example from the nc_spm location:

v.sort.points input=firestations@PERMANENT output=firestations_sorted column=ID

The order of the points based on opening the attribute table, and the relationship between the 'ID' column and 'cat' appears to be the same as the original dataset, where 'ID' was not in ascending order.

This is not a bug: cat values are conserved, i.e. the same points have the same cat value in the input and the output. However, points are in a different order in the file after v.sort.points. Category values of objects do not define order.

Try

d.vect map=firestations icon=basic/circle size=0.5 size_column=ID
d.vect map=firestations_sorted icon=basic/circle size=0.5 size_column=ID

and compare the two maps to see the difference.

Moritz

Note: See TracTickets for help on using tickets.