<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    <div class="moz-cite-prefix">On 30-09-15 17:47, Anna Petrášová
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAE0EDEoSucig6AYsdar7O1MSpfFwUiJhttSia7aKPXmZf+qpWA@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Wed, Sep 30, 2015 at 11:20 AM,
            Paulo van Breugel <span dir="ltr"><<a
                moz-do-not-send="true"
                href="mailto:p.vanbreugel@gmail.com" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:p.vanbreugel@gmail.com">p.vanbreugel@gmail.com</a></a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF">
                <div>
                  <div class="h5"> <br>
                    <br>
                    <div>On 30-09-15 16:18, Anna Petrášová wrote:<br>
                    </div>
                    <blockquote type="cite">
                      <div dir="ltr"><br>
                        <div class="gmail_extra"><br>
                          <div class="gmail_quote">On Wed, Sep 30, 2015
                            at 9:27 AM, Paulo van Breugel <span
                              dir="ltr"><<a moz-do-not-send="true"
                                href="mailto:p.vanbreugel@gmail.com"
                                target="_blank">p.vanbreugel@gmail.com</a>></span>
                            wrote:<br>
                            <blockquote class="gmail_quote"
                              style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                              <div dir="ltr"><br>
                                <div class="gmail_extra"><br>
                                  <div class="gmail_quote"><span>On Wed,
                                      Sep 30, 2015 at 11:53 AM, Pietro <span
                                        dir="ltr"><<a
                                          moz-do-not-send="true"
                                          href="mailto:peter.zamb@gmail.com"
                                          target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:peter.zamb@gmail.com">peter.zamb@gmail.com</a></a>></span>
                                      wrote:<br>
                                      <blockquote class="gmail_quote"
                                        style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">On

                                        Wed, Sep 30, 2015 at 9:51 AM,
                                        Paulo van Breugel<br>
                                        <span><<a
                                            moz-do-not-send="true"
                                            href="mailto:p.vanbreugel@gmail.com"
                                            target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:p.vanbreugel@gmail.com">p.vanbreugel@gmail.com</a></a>>

                                          wrote:<br>
                                          ><br>
                                          ><br>
                                          > On Wed, Sep 30, 2015 at
                                          2:02 AM, Anna Petrášová <<a
                                            moz-do-not-send="true"
                                            href="mailto:kratochanna@gmail.com"
                                            target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:kratochanna@gmail.com">kratochanna@gmail.com</a></a>><br>
                                          > wrote:<br>
                                          >><br>
                                          >><br>
                                          >><br>
                                          >> On Tue, Sep 29, 2015
                                          at 6:09 PM, Paulo van Breugel<br>
                                          >> <<a
                                            moz-do-not-send="true"
                                            href="mailto:p.vanbreugel@gmail.com"
                                            target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:p.vanbreugel@gmail.com">p.vanbreugel@gmail.com</a></a>>

                                          wrote:<br>
                                          >>><br>
                                          >>> This must be a
                                          very basic question, but I
                                          can't find an easy/direct way<br>
                                          >>> to do this. In
                                          python, if I have an array
                                          with values with a length
                                          equal to<br>
                                          >>> the number of
                                          rows in an attribute table of
                                          a (point) vector layer, how
                                          can<br>
                                          >>> I write those
                                          values to a new column in that
                                          attribute table. I can of<br>
                                          >>> course first
                                          create the column, but than
                                          how to update that column with
                                          the<br>
                                          >>> values in the
                                          array?<br>
                                          >><br>
                                          >><br>
                                          >> it should be pretty
                                          easy to do with pygrass,
                                          unfortunately there is no<br>
                                          >> example on assigning
                                          attributes in the official
                                          documentation [1],  but it<br>
                                          >> should be pretty
                                          easy, something like that (not
                                          tested):<br>
                                          >><br>
                                          >> with
                                          VectorTopo('myvector',
                                          mode='w') as vectormap:<br>
                                          >>     for feature in
                                          vectormap:<br>
                                          >>       
                                           feature.attrs['mycolumn'] =
                                          value<br>
                                          >><br>
                                          >><br>
                                          > Thanks, but that seems to
                                          write the vector back without
                                          attribute table<br>
                                          <br>
                                        </span>You have to save the
                                        changes in the database out from
                                        your cycle, with:<br>
                                        <br>
                                        vectormap.table.conn.commit()<br>
                                      </blockquote>
                                      <div><br>
                                      </div>
                                    </span>
                                    <div>Thanks Pietro. I am, however,
                                      not sure I understand (I tried to
                                      use it, but thanks to my limited
                                      experience in Python / pygrass not
                                      much luck). Just to be more
                                      specific, I am trying to create a
                                      script that divides points in
                                      training and test groups, similar
                                      to v.kcv, but with points
                                      clustered in space. E.g.,<br>
                                      <br>
                                      <span
                                        style="font-family:monospace,monospace">#
                                        Create vector<br>
                                        grass.run_command("v.random",
                                        output="testB", npoints=10,
                                        overwrite=True)<br>
                                        grass.run_command("v.db.addtable",
                                        map="testB", columns="X DOUBLE
                                        PRECISION,Y DOUBLE PRECISION,GR
                                        INTEGER")<br>
                                        grass.run_command("v.to.db",
                                        map="test", option="coor",
                                        columns="X,Y")<br>
                                        <br>
                                        # Create groups<br>
                                        vectmap = 'test'<br>
                                        cvals =
                                        array(grass.vector_db_select(vectmap,
                                        layer = int(1), columns =
                                        'X,Y')['values'].values()).astype(np.float)<br>
                                        centroids,_ = kmeans(cvals,2)<br>
                                        idx,_ = vq(cvals,centroids)<br>
                                        <br>
                                      </span></div>
                                    <div><span
                                        style="font-family:monospace,monospace">#
                                        write results to tabel<br>
                                      </span></div>
                                    <div><span
                                        style="font-family:monospace,monospace">Now

                                        I would like to write idx to the
                                        column 'GR' in the attribute
                                        table of 'test'.<br>
                                      </span><br>
                                    </div>
                                    <div>p.s. I am first creating the XY
                                      columns now, but is there a
                                      function to get the coordinates
                                      (cvals) in pygrass directly?<br>
                                    </div>
                                    <div><br>
                                      <br>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </blockquote>
                            <div>I don't fully understand the example, </div>
                          </div>
                        </div>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                </div>
                Thanks for the quick response. I basically have a list
                with values (idx in the example above) which I like to
                add as a column to the attribute table of an existing
                vector (point layer). The length of idx is equal to the
                number of rows in the attribute table. The solution of
                Anna seems like an elegant solution (and easier and more
                flexible than other solutions I tried using e.g.,
                sqlite3). However, as I wrote, I end up with a vector
                without attribute table. You wrote that I "have to save
                the changes in the database out from your cycle, with:
                vectormap.table.conn.commit()". I am, however, not sure
                what you mean with 'out from your cycle' or how to
                implement that. <br>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>probably after the for cycle ends you would call this
              'vectormap.table.conn.commit()', if it doesn't works, try
              to put it in the cycle (I am not sure what is supposed to
              work).</div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    I did try both, with no luck so-far. I'll give it another try
    though, perhaps I did something else wrong.<br>
    <blockquote
cite="mid:CAE0EDEoSucig6AYsdar7O1MSpfFwUiJhttSia7aKPXmZf+qpWA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"><span class=""> <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div class="gmail_extra">
                        <div class="gmail_quote">
                          <div>but yes, you can get coordinates:</div>
                          <div><br>
                          </div>
                          <div><font face="monospace, monospace"><span
                                style="font-size:12.8px">with
                                VectorTopo('myvector', mode='w') as
                                vectormap:</span><br
                                style="font-size:12.8px">
                              <span style="font-size:12.8px">    for
                                feature in vectormap:</span><br
                                style="font-size:12.8px">
                              <span style="font-size:12.8px">       
                                print feature.x</span></font><br>
                          </div>
                          <div><span
                              style="font-family:monospace,monospace;font-size:12.8px"> 
                                    print feature.y</span><font
                              face="monospace, monospace"><span
                                style="font-size:12.8px"><br>
                              </span></font></div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                  <br>
                </span> Great, thanks. I did not find this in the
                manual. If it is not there, perhaps it would be
                something worth including? I would not mind providing a
                text, but I am not sure what would be the best way to do
                that.<br>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>Technically, it's in the manual:</div>
            <div><a moz-do-not-send="true"
href="https://grass.osgeo.org/grass70/manuals/libpython/pygrass_vector.html#geometry-classes">https://grass.osgeo.org/grass70/manuals/libpython/pygrass_vector.html#geometry-classes</a></div>
            <div><br>
            </div>
            <div>but we are lacking more examples of often used
              constructions. Some other examples are available in the
              recent workshop we did:</div>
            <div><br>
            </div>
            <div><a moz-do-not-send="true"
href="https://github.com/wenzeslaus/python-grass-addon/blob/master/02_pygrass_library.ipynb">https://github.com/wenzeslaus/python-grass-addon/blob/master/02_pygrass_library.ipynb</a><br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Thanks, I will have a look at it.<br>
    <blockquote
cite="mid:CAE0EDEoSucig6AYsdar7O1MSpfFwUiJhttSia7aKPXmZf+qpWA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div><br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"> <br>
                <blockquote type="cite">
                  <div dir="ltr">
                    <div class="gmail_extra">
                      <div class="gmail_quote">
                        <div> </div>
                        <blockquote class="gmail_quote"
                          style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                          <div dir="ltr">
                            <div class="gmail_extra">
                              <div class="gmail_quote">
                                <div> <br>
                                </div>
                                <blockquote class="gmail_quote"
                                  style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span><font
                                      color="#888888"><br>
                                      Pietro<br>
                                    </font></span></blockquote>
                              </div>
                              <br>
                            </div>
                          </div>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                  </div>
                </blockquote>
                <br>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>