Usando librerías externas ========================= GDAL ---- Hemos incluido una de las aplicaciones más comunes de uso en GDAL que se denomina ogr2ogr. Para usarla desde un script podemos usar las siguientes líneas, modificando las rutas por las de nuestros datos. El resultado es una transformación de un fichero geojson a un shape:: from gvsig import * from gvsig import uselib uselib.use_plugin("org.gvsig.gdal.app.mainplugin") from org.gvsig.gdal.app.mainplugin.common import ogr2ogr def gdalapp(argsAsString): import shlex x = shlex.split(argsAsString) print "Function: ", x.pop(0) print "Args: ", x ogr2ogr.main(x) def main(*args): """ogr2ogr from gdal""" """ ogr2ogr.main(["-t_srs", "CRS:84", "-f", "ESRI Shapefile", "C:/temp/j1", "C:/temp/countries.geojson", "-overwrite", "-skipfailures" ]) """ gdalapp("ogr2ogr -t_srs 'EPSG:4326' -f 'ESRI Shapefile' C://temp//j1.shp D://gvdata//countries023.geojson -overwrite -skipfailures") loadShapeFile("C:/temp/j1.shp") jfreechart ---------- Una librería que viene con gvSIG es jfreechart y la podemos usar para generar gráficas. Generar gráfica y guardarla en formato ``.jpeg`` en disco. .. figure:: images/pieChart.jpeg :align: center Código:: from java.io import File from org.jfree.chart import ChartUtilities from org.jfree.chart import ChartFactory from org.jfree.chart import JFreeChart from org.jfree.data.general import DefaultPieDataset #Save chart into png file def main(): dataset = DefaultPieDataset( ) dataset.setValue("IPhone 5s", float( 20 ) ) dataset.setValue("SamSung Grand", float( 20 ) ) dataset.setValue("MotoG", float( 40 ) ) dataset.setValue("Nokia Lumia", float( 10 ) ) chart = ChartFactory.createPieChart( "Mobile Sales", # chart title dataset, # data True, # include legend True, False) width = 640 height = 480 pieChart = File( "D:/pieChart.jpeg" ) ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height ) Otro ejemplo que genera una pantalla con el resultado. .. figure:: images/simple_pie_chart.png :align: center Código:: from org.jfree.chart import ChartFactory from org.jfree.chart import ChartFrame from org.jfree.chart import JFreeChart from org.jfree.data.general import DefaultPieDataset from org.jfree.ui import RefineryUtilities """ * A simple introduction to using JFreeChart. This demo is described in the * JFreeChart Developer Guide. * Translated from Java to Jython by Alfonso Reyes """ class First: """ * The starting point for the demo. * * @param args ignored. """ # create a dataset... data = DefaultPieDataset() data.setValue("Category 1", 43.2) data.setValue("Category 2", 27.9) data.setValue("Category 3", 79.5) # create a chart... chart = ChartFactory.createPieChart( "Sample Pie Chart", data, True, # legend? True, #tooltips? False # URLs? ) # create and display a frame... frame = ChartFrame("First", chart) #frame.setSize(100 , 100) #Position #RefineryUtilities.centerFrameOnScreen( frame ) frame.pack() frame.setVisible(True) def main(): app = First() jOpenDocument ------------- Editando ODT ++++++++++++ Abrir nuevo documento de LibreOffice jOpenDocument - Insert Field - fieldName Insertar una imagen Click derecho sobre la Imagen: Imagen - Opciones - Nombre: Imagen1 Editando ODS ++++++++++++ .. note:: Después de modificarlo hay que abrirlo y presionas ``Control+Mayusculas+F9`` para recalcular las celdas Ejemplos ++++++++ Editar Spreadsheet ODS:: from gvsig import * from java.io import File from java.util import Date from org.jopendocument.model import OpenDocument from org.jopendocument.dom.spreadsheet import SpreadSheet from org.jopendocument.dom import OOUtils def main(*args): #Ejemplo de Edicion de ficheros ODS con jOpenDocument #basado en http://www.jopendocument.org/start_spreadsheet_2.html #ficheros plantilla http://www.jopendocument.org/downloads.html pathTemplate = r"C:/joo/invoice.ods" pathOutput = r"C:/joo/fillingTest1.ods" #Acceso al spreadsheet y numero de hoja file = File(pathTemplate) sheet = SpreadSheet.createFromFile(file).getSheet(0) #Establecer fecha actual a la castilla I10 sheet.getCellAt("I10").setValue(Date()) #Modifica el valor a la celda 1,1. Seria B2 sheet.setValueAt("Template - 1", 1, 1) #Varias modificaciones sheet.getCellAt("B27").setValue("On site support") sheet.getCellAt("F24").setValue(301) sheet.getCellAt("H27").setValue(350) sheet.getSpreadSheet().getTableModel("Products").setValueAt(10, 5, 4) #F27 #Guardamos fichero outputFile = File(pathOutput) OOUtils.open(sheet.getSpreadSheet().saveAs(outputFile)) Editar Spreadsheet ODT:: from gvsig import * import sys from geom import * from java.io import File #from org.jdom import Namespace from java.util.Map import * import java.util.ArrayList as ArrayList from org.jopendocument.dom.template import JavaScriptFileTemplate from org.jopendocument.util.CollectionUtils import createMap def main(*args): #Ejemplo de Edicion de ficheros ODT con jOpenDocument #basado en http://www.jopendocument.org/start_text_2.html #ficheros plantilla http://www.jopendocument.org/downloads.html pathTemplate = r"C:\joo\test.odt" pathOutput = r"C:\joo\test4" #Creamos template templateFile = File(pathTemplate) outFile = File(pathOutput) template = JavaScriptFileTemplate(templateFile) # Principal: Establacer valores de un campo template.setField("toto", "value set using setField()") template.setField("a", "14") #Haciendo doble click sobre la linea verde aparece el nombre #al que hay que hacer referencia template.hideParagraph("p1") #showParagraph template.showSection("section1") #hideSection #Values de la tabla months = ArrayList() months.add(createMap("name","January", "min", "-12", "max", "3")) months.add(createMap("name", "February", "min", "-8", "max", "5")) months.add(createMap("name", "March", "min", "-5", "max", "12")) months.add(createMap("name", "April", "min", "-1", "max", "15")) months.add(createMap("name", "May", "min", "3", "max", "21")) template.setField("months", months) ddoc = template.createDocument() ddoc.saveAs(outFile) Reemplazar imagen:: pathImg = r"C:/joo/img02.png" ddoc = template.createDocument() #ddoc.getDescendantByName("draw:frame","Imagen1").setAttribute("href", "file:///" + pathImg,Namespace.getNamespace("xlink", "http://www.w3.org/1999/xlink")) ddoc.saveAs(outFile)