#
#
# WYWOLANIE:
#
# python "C:\python25\calc_area.py"
#
#
#

import sys

import os

import getopt

import pipes

from optparse import OptionParser

import grass.script as grass


def main():

       

        grass.parse_command('g.remove', vect = 'boundary_county_cp')

        grass.parse_command('g.remove', vect = 'boundary_county_pl')

        grass.parse_command('g.remove', vect = 'boundary_county_nocat')

        grass.parse_command('g.copy', vect = 'boundary_county,boundary_county_cp')

        grass.parse_command('g.remove', vect = 'boundary_county_area')

        #Wyswietlic informacje o skopiowanych danych :

        items = grass.parse_command('db.describe', table = 'boundary_county_cp')

        for item in items:
           print item

        items = grass.parse_command('v.info', map = 'boundary_county_cp')

        for item in items:
                print item


        #Zapisac odczytane informacje do sprawozdania.


        #Usunac z tabeli boundary_county_pl atrybut kategorii, zapisac w tabeli streams_nocat. Odczytac wynikowe dane z tabeli streams_nocat poleceniem v.category z ustawiona opcja report

        grass.parse_command('v.category', input = 'boundary_county_cp' , type = 'line', option = 'del', output = 'boundary_county_nocat')

        grass.parse_command('v.category', input = 'boundary_county_nocat' , option = 'report')

        #(Drugie polecenie nie powinno wyswietlic danych)

        #Dodac wartosc kategorii dla poszczegolnych obiektow (linii), zaczynajac numerowanie od wartosci 1, z krokiem 1, wynik zapisac do pliku streams_lenght:

        grass.parse_command('v.category', input = 'boundary_county_nocat', option = 'add', step = '1', cat = '1', out = 'boundary_county_area')

        grass.parse_command('v.category', input = 'boundary_county_area', option = 'report')


        grass.parse_command('v.to.db', flags = 'p', map = 'boundary_county_area', option = 'area', units = 'k', col = 'cat')


        #Ustalic polaczenie z katalogiem plikow dbf, wyswietlic dostepne tabele:

        grass.parse_command('db.connect', driver = 'dbf', database='$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/')

        items = grass.parse_command('db.tables', flags='p')

        for item in items:
        	print item


        #Utworzyc tabele boundary_county_area, odczytac informacje o utworzonej tabeli:

        t=pipes.Template()

        f=t.open('tmp', 'w')

        f.write('ALTER TABLE boundary_county_area ADD COLUMN area2 double')

        f.close()

        grass.parse_command('db.execute', input = 'tmp')                            

        items = grass.parse_command('db.describe', flags = 'c', table = 'boundary_county_area')

        for item in items:
        	print item


        grass.parse_command('v.db.connect', flags = 'o', map = 'boundary_county_area',  table = 'boundary_county_area')


        #Dotychczas dane wektorowe byly przechowywane w sekcji wektorowej, teraz zostana przepisane do tabeli streams_length:

        grass.parse_command('v.to.db', map = 'boundary_county_area', type = 'line', option = 'cat', col = 'cat')
                            
        grass.parse_command('v.to.db', map = 'boundary_county_area', type = 'line', option = 'area', col = 'area2')


    
main()
