Saludos Quisiera generar un formato en diseño de mapa que me muestre un predio a escala y su informacion alfanumerica, nombres, areas, centroide u otros que me extraiga del dbf. Agradezco de antemano su ayuda. Luis Castillo Perú > Date: Tue, 4 Jun 2013 11:30:43 +0200 > From: jjdelcerro.gv...@gmail.com > To: gvsig_desarrolladores@listserv.gva.es > Subject: Re: [Gvsig_desarrolladores] Script para exportar imagenes > > El 03/06/13 17:19, Pablo Alfaro escribió: > > Hola, como están? Recurro a los desarrolladores de esta lista en busca de > > ayuda. > > Necesito hacer un pequeño script para gvSIG que recorra las capas en la > > vista actual, recortando cada una contra una capa especifica (la primera > > por ejemplo) y luego exporte cada imagen en una carpeta del disco usando > > como nombre de cada imagen el nombre de la capa en cuestión. > > Básicamente tengo una capa vectorial del contorno de mi país (Uruguay) y > > capas vectoriales de polígonos con el valor de varias variables > > meteorológicas, querría recortarlas todas contra la capa de Uruguay y > > exportar las imágenes una a una. > > Esto se podría hacer con el lenguaje de scripting de gvSIG? O habría que > > desarrollar un plugin para ello?Si se puede hacer con scripting alguien me > > podría dar un ejemplo de como hacerlo?Se podría hacer con gvSIG 1.11? Tengo > > algunas complicaciones para migrar a gvSIG 2 aún. > > Muchas gracias y saludosPablo > > > > Holas... > a ver algunas ideas... > > Entiendo que tienes varias capas vectoriales cargadas en una vista > y quieres recortarlas a una dada y exportar el resultado como imagen. > > > Voy a asumir que la capa activa es a la que quiero hacer el recorte. > > Podriamos.... > Generar una capa con el recorte de todas y luego exportar el resultado. > Para ello, creariamos una capa nueva... (ver por ejemplo el articulo > del blog "Scripting: Generar una poligonal a partir de un rumbo"[1] para ver > como hacerlo) y en ella insertariamos el recorte. > > [1] Scripting: Generar una poligonal a partir de un rumbo > > http://blog.gvsig.org/2012/12/06/scripting-generar-una-poligonal-a-partir-de-un-rumbo/ > > Una vez tengamos la capa creada, recorreriamos la lista de capas de la vista, > iriamos calculando > el recorte y escribiendo el resultado en la capa recien creada. > > capa_recorte = currentLayer() > > # Aqui vendria la creacion de la capa > ... > schema_capa_resultado = ... > ... > shape_resultado = gvsig.createShape( > schema_capa_resultado, > "/tmp/capa_resultado_del_recorte.shp", > CRS=capa_recorte.getProjection(), > geometryType=geom.POLYGON > ) > # Y una vez creada la llenamos con el recorte > bbox = capa_activa.getFullEnvelope().getGeometry() > > vista = currentView() > for capa in vista.getLayers(): > recortar(capa_resultado, bbox, capa) > capa_resultado.commit() > > Y la funcion recortar podia ser algo como: > > def recortar(capa_resultado, bbox, capa_a_recortar): > features = layer.features() > for feature in features: > geom = feature.geometry().intersection(bbox) > values = dict() > values["GEOM"] = geom > values["OTRO_VALOR1"] = ... > values["OTRO_VALOR2"] = ... > capa_resultado.append(values) > > Por ultimo podriamos ocultar las capas que haya en la vista, añadir la nueva > capa a la vista, > centrar la vista en la capa y exportar la imagen: > > from org.gvsig.andami import PluginsLocator > > # Ocultamos las capas > for capa in vista.getLayers(): > capa.setVisible(false) > > # Añadimos nuestra capa a la vista > vista.addLayer(capa_resultado) > > # y la centramos y exportamos > actions=PluginsLocator.getActionInfoManager() > a = actions.getAction("view-navigation-zoom-all") > a.execute() > > Oh!... un error... no estan correctamente registradas las acciones de > raster... > bueno eso complica un poco la cosa ya que no podemos recuperar la accion de > salvar a rastar tan facilmente pero podriamo rodearlo con algo como.... > > def obtenerAccionDeSalvarAraster(actions): > for a in actions.getActions(): > ... if a.getCommand() == "SaveViewToImageRaster": > ... return a > > Y luego usamos ya nuestra funcion > > a = obtenerAccionDeSalvarAraster(actions) > a.execute() > > Bueno, tomo nota de lo de las acciones de raster para arreglarlo. > > He picado las ideas sueltas, faltaria juntarlas en un script y > probar. > > Tambien he usado una aproximacion simplona del recorte, ya que estoy > recortando al Envelope/BBOX de la capa, cuando igual te interesa > recortar a la "forma" exacta de la capa. Si quieres hacer eso, seria > algo mas complejo y costoso (en tiempo de ejecucion) pero tambien se > podria hacer... si es eso lo que quieres, lo comentas y vemos como > se podria hacer... basicamente seria cargando la capa de recorte en > memoria o recorriendola "muchisimas veces" cada vez que se ejecute > nuestra funcion de recorte, supongo que si sabes que tamaño puede > tener y no es muy grande lo suyo seria cargarla en memoria y si crees > que puede ser muy grande, pues recorrecla muchas veces. > > Tambien he asumido que todas las capas son poligonos... si no son todas > del mismo tipo, igual la capa resultante tendriamos que almacenarla en > un dxf en lugar de un shape.... > > Bueno, ya vas comentado si te parece interesante.... > > Por cierto... todo lo que he comentado es para gvSIG 2, no iria en > la 1.X > > Oh!, releyendo tu mensaje.... no habia entendido bien lo que pedias.... > bueno.... algo parecido se puede hacer a partir de las ideas que > pongo. > > un saludo > Joaquin > > > > > > > > > > > _______________________________________________ > > gvSIG_desarrolladores mailing list > > gvSIG_desarrolladores@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 > > > -- > -------------------------------------- > Joaquin Jose del Cerro > Development and software arquitecture manager. > jjdelce...@gvsig.com > gvSIG Association > www.gvsig.com > www.gvsig.org > _______________________________________________ > gvSIG_desarrolladores mailing list > gvSIG_desarrolladores@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
_______________________________________________ gvSIG_desarrolladores mailing list gvSIG_desarrolladores@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