153GIS2 - 10. cvičení - GRASS GIS: Porovnání verzí

Z GeoWikiCZ
Řádek 15: Řádek 15:


<source lang="python">
<source lang="python">
import arcgisscripting, sys    #import modulu
from grass.script import core, vector as grass
gp = arcgisscripting.create()  #vytvoreni objektu geoprocessingu
gp.Overwriteoutput = 1          #nastaveno prepisovani
gp.workspace = "d:/jirka/skola/vyuka/gis/model/"    #nastaveni workspace - pracovni adresar nebo geodatabaze
   
   
try:
select = grass.vector_db_select(map = "obce",
  input = "Liberec"    #String - nazev obce
                                where = "NAZEV = 'Liberec'")
  rows = gp.SearchCursor("obce.shp")  #vytvori cursor
 
  row = rows.next()      #promena row obsahuje jeden zaznam ze shapefilu
idx = select['columns'].index('OB01')
  while row:
ob01 = 0
      if row.GetValue("NAZEV") == input:
for record in select['values'].itervalues():
          pocet = row.GetValue("OB01")     #pocet obyvatel zadane obce
    ob01 += int(record[idx])
      row = rows.next()
 
  radky = gp.SearchCursor("obce.shp")
nazev_idx = select['columns'].index('NAZEV')
  rad = radky.next()
for record in grass.vector_db_select(map = "obce",
  while rad:
                                    where = "OB01 > %d" % ob01)['values'].itervalues():
      if rad.GetValue("OB01") > pocet:
    print unicode(record[nazev_idx], 'latin2').ljust(15), record[idx]
          print rad.GetValue("NAZEV"), rad.GetValue("OB01")
      rad = radky.next()
except:
  print gp.GetMessages()  
</source>
</source>



Verze z 26. 5. 2009, 17:49

Stránka obsahuje ukázky skriptů v Pythonu pro GRASS GIS z 10. cvičení GIS2.

1

from grass.script import vector as grass

for nazev in grass.vector_columns(map = 'obce').keys():
    print nazev

2

from grass.script import core, vector as grass
 
select = grass.vector_db_select(map = "obce",
                                where = "NAZEV = 'Liberec'")

idx = select['columns'].index('OB01')
ob01 = 0
for record in select['values'].itervalues():
    ob01 += int(record[idx])

nazev_idx = select['columns'].index('NAZEV')
for record in grass.vector_db_select(map = "obce",
                                     where = "OB01 > %d" % ob01)['values'].itervalues():
    print unicode(record[nazev_idx], 'latin2').ljust(15), record[idx]

3

 import arcgisscripting, sys     #import modulu
 gp = arcgisscripting.create()   #vytvoreni objektu geoprocessingu
 gp.Overwriteoutput = 1          #nastaveno prepisovani
 gp.workspace = "d:/jirka/skola/vyuka/gis/model/"     #nastaveni workspace - pracovni adresar nebo geodatabaze
 try:
   input = sys.argv[1]     #String - nazev obce
   output = sys.argv[2]    #cesta k textovemu souboru
   f = open(output, 'w')   #otevru file
   rows = gp.SearchCursor("obce.shp")   #vytvori cursor
   row = rows.next()       #promena row obsahuje jeden zaznam ze shapefilu
   while row:
       if row.GetValue("NAZEV") == input:
           pocet = row.GetValue("OB01")     #pocet obyvatel zadane obce
       row = rows.next()
          radky = gp.SearchCursor("obce.shp")
   rad = radky.next()
   while rad:
       if rad.GetValue("OB01") > pocet:
           f.write(rad.GetValue("NAZEV")+" "+str(rad.GetValue("OB01"))+"\n")    #do souboru pisu obce ktere maji vic obyvatel nez zadana
       rad = radky.next()
   f.close()
 except:
   print gp.GetMessages()