On 2/14/19 4:49 PM, César Augusto
Ramírez Franco wrote:
Greetings,
I have a municipality polygon layer with a poverty index
(percent) and a population count, I'm multiplying them to
visualize the vulnerability for each municipality, due to
the distribution of that new variable I want to compute the
logarithm, which is not possible in sqlite, so I tried
reading the column with numpy and issuing a np.log10(). I'm
happy with the result, but how can I get this new numpy
array to a new column in the vector map in a simple way?
This is what I already have:
#!/usr/bin/env
python
import grass.script as gs
import numpy as np
import matplotlib.pyplot as plt
nbi_pob = np.array(gs.vector_db_select("muniant", columns
= "nbi_pob")["values"].values()).astype(float).squeeze()
plt.hist(nbi_pob)
plt.show()
log_nbi_pob = np.log10(nbi_pob)
plt.hist(log_nbi_pob)
plt.show()
I'm trying to introduce this kind of analysis to students
who are not familiar nor proficient with programming (this
is an GIS introductory course) so the numpy bit is already
complex enough to them, and I'd like to avoid using for
loops with cursors to achieve this.
I also can't think of any simple way to do this. However
PostgreSQL does have a log() function. So if you migrate your
backend DB to PostgreSQL you should be able to do (not tested):
gs.run_command('v.db.addcolumn', map_="muniant",
column="log_nbi_pob DOUBLE")
gs.run_command('v.to.db', map_="muniant", column="log_nbi_pob",
query="log(nbi_pob)")
But I must say that it seems strange that you are introducing
numpy, matplotlib and the GRASS python interface to students who
don't yet have the basic tools of programming, such as 'for'
loops. Isn't this is a case of "putting the wagon in front of the
horse"?? :-)
Is there a simple solution to this?
--
César Augusto Ramírez Franco
_______________________________________________
grass-user mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-user
--
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918
|
_______________________________________________
grass-user mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-user