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

Z GeoWikiCZ
mBez shrnutí editace
 
(Není zobrazeno 13 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
{{Upravit}}
Stránka obsahuje ukázky skriptů v [[Python|Pythonu]] pro [[GRASS GIS]] z [[153GIS2 2009 - 10. cvičení|10. cvičení GIS2]]. Viz také [[Skriptování v GRASS GIS]].


Stránka obsahuje ukázky skriptů v [[Python|Pythonu]] pro [[GRASS GIS]] z [[153GIS2 2009 - 10. cvičení|10. cvičení GIS2]].
=== 1 ===


== 1 ==
<source lang="python">
from grass.script import vector as grass
 
for nazev in grass.vector_columns(map = 'obce').keys():
    print nazev
</source>
 
=== 2 ===


<source lang="python">
<source lang="python">
import arcgisscripting, sys    #import modulu
import grass.script 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",
    data = gp.Describe("obce.shp")  
                                where = "NAZEV = 'Liberec'")
    fields = data.Fields
 
    field = fields.next()
idx = select['columns'].index('OB01')
     while field:
ob01 = 0
      print field.Name
for record in select['values'].itervalues():
      field = fields.next()
     ob01 += int(record[idx])
except:
 
     print gp.GetMessages()  
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]
</source>
</source>


== 2 ==
=== 3 ===


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


== 3 ==
=== 4 ===


<source lang="python">
<source lang="python">
import arcgisscripting, sys    #import modulu
import grass.script as grass
gp = arcgisscripting.create()  #vytvoreni objektu geoprocessingu
 
gp.Overwriteoutput = 1          #nastaveno prepisovani
for record in grass.vector_db_select(map = 'kraje',
gp.workspace = "d:/jirka/skola/vyuka/gis/model/"     #nastaveni workspace - pracovni adresar nebo geodatabaze
                                    columns = "NAZEV_ENG")['values'].itervalues():
try:
     val = unicode(record[0], 'ascii')
  input = sys.argv[1]     #String - nazev obce
    print val
  output = sys.argv[2]   #cesta k textovemu souboru
    grass.run_command('v.extract',
  f = open(output, 'w')   #otevru file
                      quiet = True,
  rows = gp.SearchCursor("obce.shp")  #vytvori cursor
                      overwrite = True,
  row = rows.next()      #promena row obsahuje jeden zaznam ze shapefilu
                      input = 'kraje',
  while row:
                      output = 'kraje_' + val,
      if row.GetValue("NAZEV") == input:
                      where = "NAZEV_ENG = '%s'" % val)
          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()  
</source>
</source>


{{GIS}}
{{GIS}}
{{GFOSS}}
{{GFOSS}}
{{GRASS}}
{{Python}}

Aktuální verze z 25. 2. 2010, 13:36

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

1

from grass.script import vector as grass

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

2

import grass.script 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 sys
import grass.script as grass

input = sys.argv[1]     # String - nazev obce
output = sys.argv[2]    # cesta k textovemu souboru

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')
f = open(output, 'w')
try:
    for record in grass.vector_db_select(map = "obce",
                                         where = "OB01 > %d" % ob01)['values'].itervalues():
        f.write("%s%s\n" % (record[nazev_idx].ljust(15), record[idx]))
finally:
    f.close()

4

import grass.script as grass

for record in grass.vector_db_select(map = 'kraje',
                                     columns = "NAZEV_ENG")['values'].itervalues():
    val = unicode(record[0], 'ascii')
    print val
    grass.run_command('v.extract',
                      quiet = True,
                      overwrite = True,
                      input = 'kraje',
                      output = 'kraje_' + val,
                      where = "NAZEV_ENG = '%s'" % val)