[GRASS-user] aggregate a field across features and then display related charts and histograms

Hello,

I have looked over a lot of documentation but am still having trouble
with this task. I hope somebody on the list can point me in the right
direction!

I have a table of land parcels as polygon features in a postGIS
database. I have another table of regions in the same postGIS database.
There are between 20 and 50 parcels to a region. I can access the data
without a problem (thanks to some helpful people!)

I want to create several maps that aggregate/summarize the parcel data
and display them as pie-charts and histograms at the centroid of each
region. For example:

1. HISTOGRAM of the size of all parcels in the region. The data for this
is stored in a single field for each parcel. I just need to understand
how to identify the field, send it to the histogram, and display it at
the centroid of the region layer.

2. PIE-CHART where each slice represents the total area owned by a
particular class of owner. This is more complicated. EACH parcel has an
area column for each of 7 classes of owners. So, I believe I need to
keep separate tallies and send them all to a pie-chart function--but I
am not sure how...

Finally, is the best way to actually KEEP all this data to add new
columns to the region table with SQL?

thank you in advance,
-david

On 27/01/08 18:35, David Epstein wrote:

Hello,

I have looked over a lot of documentation but am still having trouble
with this task. I hope somebody on the list can point me in the right
direction!

I have a table of land parcels as polygon features in a postGIS
database. I have another table of regions in the same postGIS database.
There are between 20 and 50 parcels to a region. I can access the data
without a problem (thanks to some helpful people!)

I want to create several maps that aggregate/summarize the parcel data
and display them as pie-charts and histograms at the centroid of each
region. For example:

This is most easily solved within PostgreSQL, supposing that in your parcel table you have a column which gives the region each parcel belongs to. As Michael already mentioned the actually mapping can be done with d.vect.chart. However this means that you need a table structure such as RegionID, Variable1, Variable2, Variable3, where RegionID is the category value linking to your vector map polygons and Variable* are your size / owner classes.

1. HISTOGRAM of the size of all parcels in the region. The data for this
is stored in a single field for each parcel. I just need to understand
how to identify the field, send it to the histogram, and display it at
the centroid of the region layer.

2. PIE-CHART where each slice represents the total area owned by a
particular class of owner. This is more complicated. EACH parcel has an
area column for each of 7 classes of owners. So, I believe I need to
keep separate tallies and send them all to a pie-chart function--but I
am not sure how...

- add a two new columns to your ParcelTable: Size_Class and Owner_Class (directly in PostgreSQL or with v.db.addcol)
- populate these columns (directly in PostgreSQL or with v.db.addcol, using the where clause, e.g. 'column=Size_Class value=2 where="size>200 and size<500"
- create a view with something like this (untested)

SELECT
  RegionID,
,count(CASE Size_Class
          WHEN '1' THEN 1
         END) AS SizeClass1
,count(CASE Size_Class
          WHEN '2' THEN 1
         END) AS SizeClass2
, etc...

FROM
  ParcelTable, RegionTable
WHERE ParcelTable.RegionID=RegionTable.RegionID
GROUP BY
  RegionID

- Link your map to this view with v.db.connect -o
- Use d.vect.chart to create pie / bar charts.

Finally, is the best way to actually KEEP all this data to add new
columns to the region table with SQL?

You can also create a view.

Moritz