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))
|