[Gvsig_desarrolladores] duda con script en python
Francisco Puga
fpuga en icarto.es
Lun Abr 20 19:55:44 CEST 2015
Te faltan al menos dos cosas. Escribo de cabeza asà que puede haber algún
error:
* Comitear los cambios a la capa destino. Fuera del for tienes que hacer
un: output.commit()
* Añadir la nueva geometrÃa variable "intersect" en tu casa a la capa
destino: output.append({"GEOMETRY":intersect})
* Además sólo deberÃas crear una nueva geometrÃa cuando realmente se
produzca una intersección
if g1.intersects(g2):
intersect = g1.intersection (g2)
output.append({"GEOMETRY":intersect})
Y por último no estoy seguro de que el append permita crear un nuevo
feature sólo pasándole el valor de GEOMETRY, si no es asÃ, el código serÃa
por ejemplo:
if g1.intersects(g2):
values = feature.getValues()
intersect = g1.intersection (g2)
values["GEOMETRY"] = intersect
output.append({"GEOMETRY":intersect})
Esto te crearÃa el nuevo registro con los valores de una de los registros
que intersecan con geometrÃa sólo la parte que interseca.
Échale un ojo a este script que te puede dar alguna pista:
http://outreach.gvsig.org/scripts/buffer-intersection-condition-and-new-field-spatial-info
El 20 de abril de 2015, 12:24, Juan Pedro Ruiz Castellano <
juanpedro.ruizcastellano en gmail.com> escribió:
> Hola amigos,
> estoy haciendo mis primeros pinitos con el python y gvsig. Me ha surgido
> un problema con un script que estoy haciendo.
> Es muy simple, consiste en intersectar los polÃgonos de una capa y generar
> un shapefile nuevo con las áreas de solape, para identificar los errores.
> Necesito generar esta capa, por lo que no me vale que me señale los solapes
> como hace la herramienta de topologÃa. Además es una excusa perfecta para
> practicar con gvsig el tema de la programación.
>
> El script: es el siguiente;
> El problema me surge una vez que tengo las intersecciones creadas y quiero
> generar el nuevo shape. He probado pero no lo consigo.
>
> ¿Alguién me puede orientar?
>
> Muchas gracias.
>
> from gvsig import *
> from geom import *
>
> def main():
> path = "D:\\JJV_2E\\CURSO\\salida.shp"
> layer = currentLayer() # active layer
> ### proceso
> schema = layer.getSchema()
> newSchema = createSchema(schema)
> CRS = currentView().getProjection()
> output = createShape(newSchema, path, CRS=CRS,geometryType=POLYGON)
> features = layer.features()
> for feature in features:
> g1 = feature.geometry()
> for feature2 in features:
> values = feature.getValues()
> g2 = feature.geometry()
> intersect = g1.intersection (g2)
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>
--
Francisco Puga
iCarto | Innovación, Cooperación, CartografÃa y Territorio S.L.
http://www.icarto.es/
c/ Rafael Alberti nº 13 – 1º D
15008 A Coruña
Galicia (Spain)
+34 881927808
Este correo electrónico contiene información estrictamente confidencial y
es de uso exclusivo del destinatario, quedando prohibida a cualquier otra
persona su revelación, copia, distribución, o el ejercicio de cualquier
acción relativa a su contenido. Si ha recibido este mensaje por error, por
favor conteste a su remitente mediante correo electrónico y proceda a
borrarlo de su sistema.
Sus datos personales serán tratados de forma confidencial y no serán
cedidos a terceros ajenos a ICARTO. En cualquier caso, podrá ejercer los
derecho de oposición, acceso, rectificación y cancelación de acuerdo con lo
establecido en la Ley Orgánica 15/99, de 13 de diciembre, de Protección de
Datos de Carácter Personal dirigiéndose a Innovación, Cooperación,
CartografÃa e Territorio, SL. (ICARTO) en la dirección postal a C/ Rafael
Alberti, nº 13, 1ºD, 15.008 – (A Coruña).
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20150420/6add3da5/attachment.htm
Más información sobre la lista de distribución gvSIG_desarrolladores