Re: [GRASS-user] [GRASS-dev] [EXTERNAL] vector patching frustration

2024-03-16 Thread Vincent Bain via grass-user
Hello Michael,

sorry if I misunderstand your issue, but before patching these two maps
are you sure that each has a set of cat values strictly distinct from
the other? If a vector feature in map A shares the same cat value as
another feature in map B then after patching these features will be
assigned a single record in the attribute table because their cat will
be indentical.

V.


Le samedi 16 mars 2024 à 00:37 +, Michael Barton a écrit :
> I got this to work *finally*. But there are still complications. Here
> is an example work flow:
> 
> 1. Create a map of vector features
> 2. Create a basic attribute table (e.g., with v.db.addtable). 
> 3. Export that table into a csv file using db.out.ogr
> 4. Add some attribute fields to that csv file
> 5. Try to import that csv file using db.in.ogr
> 6. Error: it won't import the cat field
> 7. Edit the csv file to rename cat to mycat
> 8. Try to import the csv file again using db.in.ogr
> 9. If you have not changed the sort order of the csv file, the new
> cat numbers that db.in.ogr automatically assigns (no option about
> this) will match the original cat numbers.
> 10. If cat does not match mycat, no problem because when you connect
> the attribute table to the vector with v.db.connect, you can specify
> mycat as the key field.
> 11. Try to patch this vector with another vector that has the same
> structure of attribute table. *Fail* Because patching creates new cat
> numbers in some order that is not necessarily related to the old
> linkage. The attribute table of the 2nd map is properly added to the
> first attribute table, but the second map is not linked properly to
> the attribute records. 
> 
> In my case, patching updated my non-cat keyfield to the max cat value
> of the original table (154) + the max cat value of the patched table
> (155) = 309. Very odd. This did not match any record. Fortunately,
> because I only have only one vector feature in the 2nd patched map, I
> could edit the cat field in the table (because it was not the key
> field) to match the new cat of the 2nd vector feature, and rejoin the
> table to the vector using cat. If I would have had multiple features
> in the 2nd file, it would have been difficult to impossible. 
> 
> I'm not sure how to fix this. It may need to be a combination of
> allowing various vector modification modules to specify a cat value
> for a feature, assuming no duplication. It may need some change to
> db.in.ogr to allow for importing a field named cat. Maybe more
> changes to patch (and other features that have legacy underlying
> assumptions from the old pre-version6 vector format). 
> 
> Michael
> _
> C. Michael Barton
> Associate Director, School of Complex Adaptive
> Systems (https://scas.asu.edu)
> Professor, School of Human Evolution & Social
> Change (https://shesc.asu.edu)
> Director, Center for Social Dynamics &
> Complexity (https://complexity.asu.edu)
> Arizona State University
> Tempe, AZ 85287-2701
> USA
> 
> Executive Director, Open
> Modeling Foundation (https://openmodelingfoundation.github.io)
> Director, Network for Computational Modeling in Social & Ecological
> Sciences (https://comses.net)
> 
> personal website: http://www.public.asu.edu/~cmbarton 
> 
> 
> > On Mar 15, 2024, at 5:05 PM, Michael Barton
> >  wrote:
> > 
> > Never mind. I figured it out when I saw the post. Now for the next
> > step. 
> > 
> > Michael
> > _
> > C. Michael Barton
> > Associate Director, School of Complex Adaptive
> > Systems (https://scas.asu.edu)
> > Professor, School of Human Evolution & Social
> > Change (https://shesc.asu.edu)
> > Director, Center for Social Dynamics &
> > Complexity (https://complexity.asu.edu)
> > Arizona State University
> > Tempe, AZ 85287-2701
> > USA
> > 
> > Executive Director, Open
> > Modeling Foundation (https://openmodelingfoundation.github.io)
> > Director, Network for Computational Modeling in Social & Ecological
> > Sciences (https://comses.net)
> > 
> > personal website: http://www.public.asu.edu/~cmbarton 
> > 
> > 
> > > On Mar 15, 2024, at 3:29 PM, Michael Barton
> > >  wrote:
> > > 
> > > Something is just not working here. 
> > > 
> > > I can't try the new PR until I can get the original cats fixed.
> > > v.category does not seem to be working as expected. I have a map
> > > with a single area. I clipped it out of another map (where it had
> > > cat=18) using v.select. When I check the categories, it looks
> > > like this:
> > > 
> > > v.category input=SA5@SAA2024 type=centroid option=report 
> > > Layer/table: 1/SA5
> > > type       count        min        max
> > > point          0          0          0
> > > line           0          0          0
> > > boundary       0          0          0
> > > centroid       1         28         28
> > > area           0          0          0
> > > face           0          0          0
> > > kernel         0          0          0
> > > all            1         28      

Re: [GRASS-user] [GRASS-dev] [EXTERNAL] vector patching frustration

2024-03-15 Thread Vincent Bain via grass-user
Michael, Huidae

thats's what I was just about to post... you need to care cats
intervals don't overlap before patching.

With the attached set of 2 vector maps you can have a try, typing :

v.in.ogr input=/your/path/to/map1.gpkg output=map1
v.in.ogr input=/your/path/to/map2.gpkg output=map2
v.category input=map1 type=centroid option=report
v.category input=map2 type=centroid option=report
# Cats overlap, so :
v.category --overwrite input=map2 type=centroid output=map200
option=sum cat=100
v.patch --overwrite input=map1,map200 output=map12
v.patch -e --overwrite input=map1,map200 output=map12

Yours,
V.

Le vendredi 15 mars 2024 à 09:51 -0600, Huidae Cho a écrit :
> Michael,
> 
> Just confirmed your issue.
> 
> v.random tmp100 npoints=100 seed=100
> v.db.addtable tmp100 col="id varchar(20)"
> v.db.update tmp100 col=id qcol="'tmp100_' || cat"
> 
> v.random tmp10 npoints=10 seed=10
> v.db.addtable tmp10 col="id varchar(20)"
> v.db.update tmp10 col=id qcol="'tmp10_' || cat"
> 
> v.patch tmp100,tmp10 out=tmp110 -e
> 
> v.category tmp110 op=report
> Layer/table: 1/tmp110
> type       count        min        max
> point        110          2        112
> line           0          0          0
> boundary       0          0          0
> centroid       0          0          0
> area           0          0          0
> face           0          0          0
> kernel         0          0          0
> all          110          2        112
> 
> In my case, all features in tmp10 are linked in tmp110.
> 
> You can recategorize it.
> 
> v.category tmp110 out=tmp110_nocats op=del cat=-1
> v.category tmp110_nocats out=tmp110_recats op=add
> 
> npnts100=$(v.info tmp100 -t | sed '/points=/!d; s/points=//')
> npnts10=$(v.info tmp10 -t | sed '/points=/!d; s/points=//')
> 
> v.db.update tmp110_recats col=cat qcol=cat-1 where="cat<=$npnts100+1"
> v.db.update tmp110_recats col=cat qcol=cat-2 where="cat>$npnts100+1"
> 
> Yeah... I know what you may think... Please create an issue on
> GitHub.
> 
> Regards,
> Huidae
> 
> On Thu, Mar 14, 2024 at 4:42 PM Michael Barton via grass-dev
>  wrote:
> > Thanks Doug and Vincent. 
> > 
> > None of this works. I vaguely remember having this same kind of
> > road block several years back. 
> > 
> > Nothing in v.category lets you change an existing cat value to a
> > different value
> > v.in.ogr MUST add a column that MUST be named cat (all else causes
> > an error--this is a bug) that is a series of consecutive integers
> > from 1-n. So I cannot create a file with a cat field that matches
> > my vector areas. 
> > 
> > v.edit won't let you change an existing cat number AFAICT. No error
> > but nothing changes. 
> > 
> > Once I've imported a table using v.in.ogr, I cannot use
> > db.drop.column to delete the cat column--even if it is not being
> > used as a key field. This raises an error.
> > 
> > No way to rename a column from cat to something else (or something
> > else to cat) unless you've already connected it to a vector map
> > even if cat is not the key field. So I can't create an integer
> > column to link up my lost vector area with a record in my csv
> > file. 
> > 
> > This simple task is just not possible in GRASS AFAICT. Or if it is
> > possible, it can only be done by such non-obvious and convoluted
> > means that I've yet to find a method that works in spite of asking
> > a large number of very skilled GRASS users.
> > 
> > Michael
> > _
> > C. Michael Barton
> > Associate Director, School of Complex Adaptive
> > Systems (https://scas.asu.edu)
> > Professor, School of Human Evolution & Social
> > Change (https://shesc.asu.edu)
> > Director, Center for Social Dynamics &
> > Complexity (https://complexity.asu.edu)
> > Arizona State University
> > Tempe, AZ 85287-2701
> > USA
> > 
> > Executive Director, Open
> > Modeling Foundation (https://openmodelingfoundation.github.io)
> > Director, Network for Computational Modeling in Social & Ecological
> > Sciences (https://comses.net)
> > 
> > personal website: http://www.public.asu.edu/~cmbarton 
> > 
> > 
> > > On Mar 14, 2024, at 7:10 AM, Newcomb, Doug 
> > > wrote:
> > > 
> > > Have you tried a .csvt file for your .csv
> > > file? https://gdal.org/drivers/vector/csv.html
> > > 
> > > From: grass-dev  on behalf of
> > > Michael Barton via grass-dev 
> > > Sent: Wednesday, March 13, 2024 7:02 PM
> > > To: GRASS developers ; GRASS user list
> > > 
> > > Subject: [EXTERNAL] [GRASS-dev] vector patching frustration 
> > >  
> > >  This email has been received from outside of DOI - Use caution
> > > before clicking on links, opening attachments, or responding.  
> > > 
> > > 
> > > I am completely stymied in my attempt to do what should be a
> > > simple task. I have a map of vector areas, linked with an
> > > attribute table. I would like to patch in one more vector area,
> > > for which I have equivalent attribute information. I have tried
> > > this multiple ways and I cannot make this patch happen so that
> > 

Re: [GRASS-user] [GRASS-dev] vector patching frustration

2024-03-14 Thread Vincent Bain via grass-user
Hello Michael,
do you mean that you cannot assign a different cat number to the
specific area you added, i.e. it has a cat number assigned ? I guess
you tried the "sum" option of v.category.

But are you sure that the new area actually has a category attached to
? (else you could achieve it with v.edit and its "catadd" tool, knowing
the record number of the feature you want to cat).

Hope I understood your issue,

Vincent.

Le mercredi 13 mars 2024 à 23:02 +, Michael Barton via grass-dev a
écrit :
> I am completely stymied in my attempt to do what should be a simple
> task. I have a map of vector areas, linked with an attribute table. I
> would like to patch in one more vector area, for which I have
> equivalent attribute information. I have tried this multiple ways and
> I cannot make this patch happen so that the added area has attribute
> info. 
> 
> The closest I've come is to create and link a one line table to the
> new area that has exactly the same fields as the larger vector area
> map. The first map has 154 areas (i.e., cat=1-155). When I patch the
> maps and look at the resulting attribute table, I indeed see line and
> cat 155. But it is not linked with the patched area--which has been
> assigned a cat=183 for reasons I cannot fathom. The patch also
> renumbers my cat field to cat=2-155 from the original 1-154. 
> 
> This has been made more complicated by the fact that v.in.ogr imports
> all columns of a *.csv as text, regardless of what is in them and
> assigns cat numbers starting at 1. So I can't specify an integer key
> field of 155 to try the linking. Nor can I change the assigned cat of
> the single area I am trying to patch from 1 to 155 using v.category
> (or anything else I can find). 
> 
> I'm hoping that someone has a clever solution that I've not seen or
> I'll just have to do this fairly simple and straightforward vector
> operation in QGIS. 
> 
> Michael
> _
> C. Michael Barton
> Associate Director, School of Complex Adaptive
> Systems (https://scas.asu.edu)
> Professor, School of Human Evolution & Social
> Change (https://shesc.asu.edu)
> Director, Center for Social Dynamics &
> Complexity (https://complexity.asu.edu)
> Arizona State University
> Tempe, AZ 85287-2701
> USA
> 
> Executive Director, Open
> Modeling Foundation (https://openmodelingfoundation.github.io)
> Director, Network for Computational Modeling in Social & Ecological
> Sciences (https://comses.net)
> 
> personal website: http://www.public.asu.edu/~cmbarton 
> 
> 
> ___
> grass-dev mailing list
> grass-...@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/grass-dev

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