Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting.app / trunk / org.gvsig.scripting.app / org.gvsig.scripting.app.extension / src / main / resources / scripting / scripts / ElevacionMaximaYMinima-datos-tabulares.py @ 354

History | View | Annotate | Download (1.89 KB)

1

    
2
from gvsig import *
3
from simpleui import *
4
from commonsdialog import *
5

    
6

    
7
"""
8
Este script se recorre todas la features de la capa activa, y asumiendo
9
que tiene un campo ELEVATION, calcula la elevacion maxima y minima de 
10
estas, y con esto:
11
- Presentar un mensaje al usuario informando de cuales son
12
- Seleccionar las geometrias asociadas a la elevacion maxima y minima vista.
13

14
En la carpeta data puede encontrar la capa cv05_3d_polygons usada
15
para realizar las pruebas con este scripts.
16
"""
17

    
18
def main(): 
19
  #
20
  # Lo primero invocaremos a la funcion currentlayer() para obtener 
21
  # la capa activa del documento vista activo.
22
  # Si no hubiese un documento vista o este no tuviese una capa activa
23
  # currentlater() devolver? None.
24
  layer = currentLayer()
25
  if layer == None:
26
    # Si no somos capaces de recuperar la capa corriente, presentamos
27
    # un mensaje y terminamos.
28
    msgbox("Debera haber cargada y seleccionada una capa.")
29
    return
30

    
31
  emax = 0.0
32
  emin = 0.0
33
  fmax = None
34
  fmin = None
35
  #
36
  # Ahora recorreremos todas las features asociadas a la capa activa.
37
  for feature in layer.features():
38
    # 
39
    # Comprobaremos si la elevacion de la feature corriente es mayor
40
    # que la maxima calculada hasta el momento, y de ser asi?, nos la
41
    # guardamos como maxima.
42
    if feature.ELEVATION > emax :
43
      try:
44
        emax = feature.ELEVATION
45
        fmax = feature.getCopy()
46
      except Exception, ex:
47
        print repr(ex)
48
      
49
    #
50
    # Lo mismo pero con la elevacion minima
51
    
52
    if feature.ELEVATION < emin or emin == 0.0:
53
      emin = feature.ELEVATION
54
      fmin = feature.getCopy()
55
  #
56
  # Ahora seleccionamos las features en la capa.
57
  if fmax!=None:
58
    layer.getSelection().select(fmax)
59
  if fmin!=None:
60
    layer.getSelection().select(fmin)
61
  #
62
  # Por ultimo presentamos las elevaciones calculadas en un cuadro de dialogo.
63
  msgbox("Elevacion maxima=%s, elevacion m?inima=%s" % (emax, emin))