<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p></p>
<p>Buenos dias Oscar, utilicé tu script (modificado de la siguiente forma ) y me da el error que te indico </p>
<p>Saludos</p>
<p><br>
</p>
<p>MI SCRIP:</p>
<p></p>
<p>from gvsig import *<br>
from gvsig import geom<br>
from gvsig.libs.formpanel import FormPanel<br>
from gvsig.libs.formpanel import *<br>
import sys<br>
from gvsig import commonsdialog<br>
from gvsig.commonsdialog import *<br>
from java.io import File<br>
from org.jopendocument.dom.template import JavaScriptFileTemplate<br>
from org.jdom import Namespace<br>
from com.sun.jimi.core import Jimi<br>
from org.jopendocument.dom import OOUtils<br>
from gvsig.libs import gvpy<br>
reload(gvpy)</p>
<p>def main(*args):</p>
<p> option = "Abrir Arquivo"<br>
fc = commonsdialog.filechooser(option, title="", initialPath=None, multiselection=False, filter = None, fileHidingEnabled=True, root=None)<br>
print "Arquivo elixido:", fc<br>
crs = esriprj2epsg(fc)<br>
print crs</p>
<p><br>
def esriprj2epsg(fc):<br>
import os<br>
from org.gdal import osr<br>
from java.util import Vector<br>
if os.path.isdir(fc):<br>
raise("Should be a file path")<br>
else:<br>
pre, ext = os.path.splitext(fc)<br>
new_extension = ".prj"<br>
shapeprj_path = pre + new_extension<br>
print shapeprj_path<br>
prj_file = open(shapeprj_path, 'r')<br>
prj_txt = prj_file.read()<br>
srs = osr.SpatialReference()<br>
prj_vector = Vector()<br>
prj_vector.add(prj_txt)<br>
srs.ImportFromESRI(prj_vector)<br>
srs.AutoIdentifyEPSG()<br>
epsg = "EPSG:"+srs.GetAuthorityCode(None)<br>
return epsg</p>
<p><br>
</p>
<p>EL ERROR:</p>
<p></p>
<p>Running script Probagvpy0.<br>
Arquivo elixido: C:\Users\ovelmon\Dropbox\ribadavia\AnaVeloso\Area.shp<br>
C:\Users\ovelmon\Dropbox\ribadavia\AnaVeloso\Area.prj<br>
Stript Probagvpy0 aborted.<br>
java.lang.RuntimeException: java.lang.RuntimeException: OGR Error: Unsupported SRS in <script> at line number 24t org.python.core.PyFunction.__call__(PyFunction.java:413)<br>
at org.python.pycode._pyx78.main$1(<script>:29)<br>
at org.python.pycode._pyx78.call_function(<script>)<br>
at org.python.core.PyTableCode.call(PyTableCode.java:167)<br>
at org.python.core.PyBaseCode.call(PyBaseCode.java:308)<br>
at org.python.core.PyFunction.function___call__(PyFunction.java:471)<br>
at org.python.core.PyFunction.__call__(PyFunction.java:466)<br>
at org.python.core.PyFunction.__call__(PyFunction.java:456)<br>
at org.python.jsr223.MyPyScriptEngine.invokeFunction(MyPyScriptEngine.java:132)<br>
... 3 more<br>
org.gvsig.scripting.ExecuteErrorException: java.lang.RuntimeException: java.lang.RuntimeException: OGR Error: Unsupported SRS in <script> at line number 24<br>
at org.gvsig.scripting.impl.DefaultScriptingScript.invokeFunction(DefaultScriptingScript.java:561)<br>
at org.gvsig.scripting.impl.DefaultScriptingScript.run(DefaultScriptingScript.java:531)<br>
at org.gvsig.scripting.impl.DefaultScriptingScript$ScriptTask.run(DefaultScriptingScript.java:675)<br>
Caused by: javax.script.ScriptException: java.lang.RuntimeException: java.lang.RuntimeException: OGR Error: Unsupported SRS in <script> at line number 24<br>
at org.python.jsr223.MyPyScriptEngine.scriptException(MyPyScriptEngine.java:209)<br>
at org.python.jsr223.MyPyScriptEngine.invokeFunction(MyPyScriptEngine.java:138)<br>
at org.gvsig.scripting.impl.DefaultScriptingScript.invokeFunction(DefaultScriptingScript.java:543)<br>
... 2 more<br>
Caused by: Traceback (most recent call last):<br>
File "<script>", line 24, in main<br>
File "<script>", line 61, in esriprj2epsg<br>
at org.gdal.osr.osrJNI.SpatialReference_AutoIdentifyEPSG(Native Method)</p>
<p> at org.gdal.osr.SpatialReference.AutoIdentifyEPSG(SpatialReference.java:247)</p>
<p> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</p>
<p> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)</p>
<p> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</p>
<p> at java.lang.reflect.Method.invoke(Method.java:497)</p>
<p><br>
java.lang.RuntimeException: java.lang.RuntimeException: OGR Error: Unsupported SRS</p>
<p> at org.python.core.Py.JavaError(Py.java:548)<br>
at org.python.core.Py.JavaError(Py.java:539)<br>
at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:188)<br>
at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:204)<br>
at org.python.core.PyObject.__call__(PyObject.java:480)<br>
at org.python.core.PyObject.__call__(PyObject.java:484)<br>
at org.python.core.PyMethod.__call__(PyMethod.java:126)<br>
at org.python.pycode._pyx86.esriprj2epsg$2(<script>:63)<br>
at org.python.pycode._pyx86.call_function(<script>)<br>
at org.python.core.PyTableCode.call(PyTableCode.java:167)<br>
at org.python.core.PyBaseCode.call(PyBaseCode.java:139)<br>
at org.python.core.PyFunction.__call__(PyFunction.java:413)<br>
at org.python.pycode._pyx86.main$1(<script>:29)<br>
at org.python.pycode._pyx86.call_function(<script>)<br>
at org.python.core.PyTableCode.call(PyTableCode.java:167)<br>
at org.python.core.PyBaseCode.call(PyBaseCode.java:308)<br>
at or</p>
<p><br>
</p>
<p><br>
</p>
<p></p>
<p><br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="width: 98%; display: inline-block;">
<div id="divRplyFwdMsg" dir="ltr"><font color="#000000" face="Calibri, sans-serif" style="font-size: 11pt;"><b>De:</b> gvsig_usuarios-bounces@listserv.gva.es <gvsig_usuarios-bounces@listserv.gva.es> en nombre de Oscar Martinez <omartinez@gvsig.com><br>
<b>Enviado:</b> miércoles, 29 de marzo de 2017 15:30<br>
<b>Para:</b> gvsig_usuarios@listserv.gva.es<br>
<b>Asunto:</b> Re: [Gvsig_usuarios] Libreria gvpy</font>
<div> </div>
</div>
<div>
<p>Buenas,</p>
<p><br>
</p>
<p>Pues ahora mismo creo que la librería de scripting no está preparada para leer los prj, ya que esto vino en una versión más reciente de gvSIG. Lo comentaré y veremos los cambios que tenemos que hacer para que cuando no se le asigne un prj lea el del fichero
con el que viene..</p>
<p><br>
</p>
<p>Mientras tanto (un trozo de código que tal vez no sea muy correcto en la forma de hacerlo...), te he preparado una función que lee el prj que esté al lado del fichero shp y saca la proyección a la que hace referencia. El parámetro de entrada es la ruta al
fichero .shp en string. Como salida devuelve el crs en formato "EPSG:...." string, el cual lo puedes usar ya directamente para asociarle un crs a la capa cuando la cargues.</p>
<p><br>
</p>
<p>En tu caso algo así como.. <br>
</p>
<p> crs = esriprj2epsg(fc)<br>
</p>
<p> s1 = loadShapeFile(fc,CRS=crs)</p>
<br>
Me la apunto para preguntar lo que tendríamos que cambiar en las librerías.<br>
<br>
Saludos<br>
<br>
<br>
<a class="moz-txt-link-freetext" id="LPlnk623544" href="https://gist.github.com/oscar9/a92ca47eaaa9ce8904a6722db3cd76b6" previewremoved="true">https://gist.github.com/oscar9/a92ca47eaaa9ce8904a6722db3cd76b6</a>
<p></p>
<div id="LPBorder_GT_14908562441940.18127239350798563" style="width: 100%; text-indent: 0px; overflow: auto; margin-bottom: 20px; display: inline-block;">
<table id="LPContainer_14908562441870.27461856316694005" role="presentation" style="width: 90%; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top-color: rgb(200, 200, 200); border-bottom-color: rgb(200, 200, 200); border-top-width: 1px; border-bottom-width: 1px; border-top-style: dotted; border-bottom-style: dotted; position: relative; background-color: rgb(255, 255, 255);" cellspacing="0">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="ImageCell_14908562441870.18439711251066754" style="width: 250px; padding-right: 20px; display: table-cell; position: relative;" colspan="1">
<div id="LPImageContainer_14908562441880.8635160167131242" style="margin: auto; width: 250px; height: 250px; display: table; position: relative; background-color: rgb(255, 255, 255);">
<a id="LPImageAnchor_14908562441900.2807018735274678" style="text-align: center; display: table-cell;" href="https://gist.github.com/oscar9/a92ca47eaaa9ce8904a6722db3cd76b6" target="_blank"><img width="250" height="250" id="LPThumbnailImageID_14908562441910.5536375186284164" style="border-width: 0px; width: 250px; height: 250px; vertical-align: bottom; display: inline-block; max-height: 250px; max-width: 250px;" aria-label="Imagen de vista previa con vínculo seleccionado. Pulse dos veces para abrir el vínculo." src="https://avatars0.githubusercontent.com/u/4819782?v=3&s=400"></a></div>
</td>
<td id="TextCell_14908562441910.5975511740858383" style="padding: 0px; vertical-align: top; display: table-cell; position: relative;" colspan="2">
<div id="LPRemovePreviewContainer_14908562441910.7281770172903681" style="float: right;">
</div>
<div id="LPTitle_14908562441910.9821852327850189" style="top: 0px; color: rgb(0, 120, 215); line-height: 21px; font-family: "wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 21px; font-weight: 400;">
<a id="LPUrlAnchor_14908562441920.6203506573272186" style="text-decoration: none;" href="https://gist.github.com/oscar9/a92ca47eaaa9ce8904a6722db3cd76b6" target="_blank">Find crs from a prj file #gvsig</a></div>
<div id="LPMetadata_14908562441920.6578308829732562" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); line-height: 14px; font-family: "wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; font-weight: 400;">
gist.github.com</div>
<div id="LPDescription_14908562441930.41620468843685726" style="color: rgb(102, 102, 102); line-height: 20px; overflow: hidden; font-family: "wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; font-weight: 400; display: block; max-height: 100px;">
Find crs from a prj file #gvsig</div>
</td>
</tr>
</tbody>
</table>
</div>
<p></p>
<br>
<br>
<br>
# encoding: utf-8<br>
<br>
import gvsig<br>
<br>
def main():<br>
crs = esriprj2epsg("D:/Working/test/Huimilpan_Circles_copia.shp")<br>
print crs<br>
<br>
def esriprj2epsg(shapeprj_path):<br>
import os<br>
from org.gdal import osr<br>
from java.util import Vector<br>
if os.path.isdir(shapeprj_path):<br>
raise("Should be a file path")<br>
else:<br>
pre, ext = os.path.splitext(shapeprj_path)<br>
new_extension = ".prj"<br>
shapeprj_path = pre + new_extension<br>
#print shapeprj_path<br>
prj_file = open(shapeprj_path, 'r')<br>
prj_txt = prj_file.read()<br>
srs = osr.SpatialReference()<br>
prj_vector = Vector()<br>
prj_vector.add(prj_txt)<br>
srs.ImportFromESRI(prj_vector)<br>
srs.AutoIdentifyEPSG()<br>
epsg = "EPSG:"+srs.GetAuthorityCode(None)<br>
return epsg<br>
<br>
<br>
<div class="moz-cite-prefix">El 29/03/2017 a las 8:44, Ovidio Ribeira escribió:<br>
</div>
<blockquote type="cite">
<div id="divtagdefaultwrapper" style="color: rgb(0, 0, 0); font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 12pt;" dir="ltr">
<div>
<p lang="es-ES" style="line-height: 100%; margin-bottom: 0cm;">Buenos días y muchas gracias, Oscar.</p>
<p lang="es-ES" style="line-height: 100%; margin-bottom: 0cm;">Tu ayuda me fue muy util, pero solo una cosa mas:</p>
<p lang="es-ES" style="line-height: 100%; margin-bottom: 0cm;">Es script que hice carga un fichero “Area.shp” que es el resultado de unha medición de GPS, este fichero es creado por el programa de gestión del GPS, y también crea el fichero “Area.prj” de información
de la proyección, yo utilizo la proyección WSG84 pero otros compañeros utilizan otra ( ED50, ETRS, hay de todo) la pregunta: ¿Es posible indicar en el escript que cargue la capa con el mismo CRS que se indicada en “Area.prj” ( este fichero esta en la misma
carpeta que el Area .shp). El codigo de mi escript es el siguiente:</p>
<p lang="es-ES" style="line-height: 100%; margin-bottom: 0cm;"><br>
</p>
<p lang="es-ES" style="line-height: 100%; margin-bottom: 0cm;">Un saludo</p>
<p style="line-height: 100%; margin-bottom: 0cm;"><br>
</p>
<p style="line-height: 100%; margin-bottom: 0cm;">def AbreArquivo_click(self,*args):</p>
<p style="line-height: 100%; margin-bottom: 0cm;">option = "Abrir Arquivo"</p>
<p style="line-height: 100%; margin-bottom: 0cm;">fc = commonsdialog.filechooser(option, title="", initialPath=None, multiselection=False, filter = None, fileHidingEnabled=True, root=None)</p>
<p style="line-height: 100%; margin-bottom: 0cm;">print "Arquivo elixido:", fc</p>
<p style="line-height: 100%; margin-bottom: 0cm;">s1 = loadShapeFile(fc,CRS="EPSG:4326")</p>
<p style="line-height: 100%; margin-bottom: 0cm;">currentView().getLayer("Area").setVisible(False)
</p>
<p style="line-height: 100%; margin-bottom: 0cm;">vista = currentView()</p>
<p style="line-height: 100%; margin-bottom: 0cm;">layer =currentView().getLayer("Area")</p>
<p style="line-height: 100%; margin-bottom: 0cm;">vmap = vista.getMap()</p>
<p style="line-height: 100%; margin-bottom: 0cm;">vmap.zoomToEnvelope(layer.getFullEnvelope())</p>
<p style="line-height: 100%; margin-bottom: 0cm;">#eliminar a capa Area da Vista</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.shp2 = gvpy.runalg("gvSIG-reproject", "Area", "false", "EPSG:25829", PATH=[getTempFile("new1", ".shp"),getTempFile("new2", ".shp"),getTempFile("new3", ".shp")],ADDLAYER=False)</p>
<p style="line-height: 100%; margin-bottom: 0cm;"><span>#Cambiarlle o nome a shp2</span></p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.shp2[0].setName("Medicion")</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.Medicion = self.shp2[0]</p>
<p style="line-height: 100%; margin-bottom: 0cm;">#print "capa", shp2</p>
<p style="line-height: 100%; margin-bottom: 0cm;">currentView().addLayer(self.shp2[0])</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.layers = currentView().getLayers()</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.layers.removeLayer("Area")</p>
<p style="line-height: 100%; margin-bottom: 0cm;"> </p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.planta = currentView().getLayer("RV_Actualizado")</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.planta2 = currentView().getLayer("Arrinques")</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.Leyenda2 = self.planta2.getLegend()</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.Leyenda = self.planta.getLegend()</p>
<p style="line-height: 100%; margin-bottom: 0cm;">self.shp2[0].setLegend(self.Leyenda)</p>
<p style="line-height: 100%; margin-bottom: 0cm;"><br>
</p>
<p style="line-height: 100%; margin-bottom: 0cm;">def Interseccion_click(self,*args):</p>
<p style="line-height: 100%; margin-bottom: 0cm;">Concello = self.ConSixpac.getText()</p>
<p style="line-height: 100%; margin-bottom: 0cm;">if Concello == "00":</p>
<p style="line-height: 100%; margin-bottom: 0cm;">msgbox("Hai que indicar o concello SIXPAC para facer a intersección","AVISO" , 1)</p>
<p style="line-height: 100%; margin-bottom: 0cm;">return</p>
<p style="line-height: 100%; margin-bottom: 0cm;">else: </p>
<p style="line-height: 100%; margin-bottom: 0cm;">CapaInter0 = self.CapaSixpac = Concello+"_SIXPAC"</p>
<p style="line-height: 100%; margin-bottom: 0cm;">CapaInter = currentView().getLayer(CapaInter0)</p>
<p style="line-height: 100%; margin-bottom: 0cm;">print CapaInter</p>
<p style="line-height: 100%; margin-bottom: 0cm;">print self.Medicion</p>
<p style="line-height: 100%; margin-bottom: 0cm;">#Interse = gvpy.runalg("intersection", self.Medicion, CapaInter, "#")</p>
<p style="line-height: 100%; margin-bottom: 0cm;">#Interse = gvpy.runalg("gvSIG-intersection", self.Medicion, CapaInter, #, #, #)</p>
<p style="line-height: 100%; margin-bottom: 0cm;">Interse = gvpy.runalg("gvSIG-intersection", self.Medicion, CapaInter, "false", "false", PATH=[getTempFile("new4", ".shp"),getTempFile("new5", ".shp"),getTempFile("new6", ".shp")],ADDLAYER=False)</p>
<p style="line-height: 100%; margin-bottom: 0cm;">Interse[0].setName("INTER-SIXPAC")</p>
<p style="line-height: 100%; margin-bottom: 0cm;">currentView().addLayer(Interse[0])</p>
<p style="line-height: 100%; margin-bottom: 0cm;">Interse[0].setLegend(self.Leyenda2)</p>
</div>
<p><br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="width: 98%; display: inline-block;">
<div id="divRplyFwdMsg" dir="ltr"><font color="#000000" face="Calibri, sans-serif" style="font-size: 11pt;"><b>De:</b>
<a class="moz-txt-link-abbreviated" href="mailto:gvsig_usuarios-bounces@listserv.gva.es">
gvsig_usuarios-bounces@listserv.gva.es</a> <a class="moz-txt-link-rfc2396E" href="mailto:gvsig_usuarios-bounces@listserv.gva.es">
<gvsig_usuarios-bounces@listserv.gva.es></a> en nombre de Oscar Martinez <a class="moz-txt-link-rfc2396E" href="mailto:omartinez@gvsig.com">
<omartinez@gvsig.com></a><br>
<b>Enviado:</b> lunes, 27 de marzo de 2017 9:37<br>
<b>Para:</b> <a class="moz-txt-link-abbreviated" href="mailto:gvsig_usuarios@listserv.gva.es">
gvsig_usuarios@listserv.gva.es</a><br>
<b>Asunto:</b> Re: [Gvsig_usuarios] Libreria gvpy</font>
<div> </div>
</div>
<div>
<p>Buenas!</p>
<p><br>
</p>
<p>Por partes..</p>
<p><br>
</p>
<p>Para eliminar una capa:</p>
<p><br>
</p>
<p> # Eliminar layer de una Vista<br>
# <a class="moz-txt-link-freetext" id="LPlnk287481" href="http://downloads.gvsig.org/download/gvsig-desktop-testing/dists/2.3.0/javadocs/html/org/gvsig/fmap/mapcontext/layers/FLayers.html" previewremoved="true">
http://downloads.gvsig.org/download/gvsig-desktop-testing/dists/2.3.0/javadocs/html/org/gvsig/fmap/mapcontext/layers/FLayers.html</a><br>
layers = currentView().getLayers()<br>
layers.removeLayer("nuevacapa") # se puede eliminar por nombre, por indice, etc..<br>
</p>
<p><br>
</p>
<p>Si lo que quieres hacer es cambiar el nombre del TOC se haría con:</p>
<p>(Añadiendo al final del código del otro día)</p>
<p><br>
</p>
<p> shp2[0].setName("nueva0")<br>
shp2[1].setName("nueva1")<br>
shp2[2].setName("nueva2")<br>
</p>
<br>
Si es otra cosa la que quieres cambiar comentamelo.<br>
<br>
Para añadir una simbologia por intervalos por ejemplo está este script que es sencillo de entender me parece, es para crear una simbologia por intervalos a partir de un campo:<br>
<br>
<br>
# encoding: utf-8<br>
<br>
from gvsig import *<br>
from gvsig import geom<br>
from java.awt import Color<br>
from org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl import VectorialIntervalLegend<br>
<br>
def main(*args):<br>
""" Create interval legend """<br>
# <a class="moz-txt-link-freetext" id="LPlnk59311" href="http://downloads.gvsig.org/download/web/html/es/html/scripting_devel_guide/2.3/leyendas.html" previewremoved="true">
http://downloads.gvsig.org/download/web/html/es/html/scripting_devel_guide/2.3/leyendas.html</a><br>
<br>
# Seleccionar el Tipo de geometria<br>
# <a class="moz-txt-link-freetext" id="LPlnk27055" href="http://downloads.gvsig.org/download/web/html/es/html/scripting_devel_guide/2.3/modulo_geom.html" previewremoved="true">
http://downloads.gvsig.org/download/web/html/es/html/scripting_devel_guide/2.3/modulo_geom.html</a><br>
vil = VectorialIntervalLegend(geom.POLYGON)<br>
<br>
vil.setStartColor(Color.red) # color inicio<br>
vil.setEndColor(Color.blue) # color final<br>
vil.setIntervalType(1) # Rango<br>
store = currentLayer().getFeatureStore() # store de los datos a aplicar la simbologia<br>
ii = vil.calculateIntervals(store, "ID", 5, geom.POLYGON) # Calculo de la simbologia para ese store e intervalos. (store, Campo, numero intervalos, tipo)<br>
<br>
vil.setIntervals(ii) # aplicamos los intervalos a la simbologia<br>
<br>
currentLayer().setLegend(vil) # aplicamos la simbologia a la capa<br>
<br>
Puedes encontrar otro tipo de leyendas e ir probando: <a class="moz-txt-link-freetext" id="LPlnk776145" href="http://downloads.gvsig.org/download/gvsig-desktop-testing/dists/2.3.0/javadocs/html/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractIntervalLegend.html" previewremoved="true">
http://downloads.gvsig.org/download/gvsig-desktop-testing/dists/2.3.0/javadocs/html/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractIntervalLegend.html</a><br>
<br>
Nunca he etiquetado desde scripting.. Tendría que preguntar primero para echarte una mano.<br>
<br>
Para saber si hay una capa activa hay varias formas, depende para lo que necesites, por lo general esta:<br>
<br>
layers = currentView().getLayers()<br>
print "numero capas activas", len(layers.getActives())<br>
print currentLayer()==None<br>
<br>
if currentLayer()==None:<br>
print "no hay capa activa"<br>
return<br>
<br>
currentLayer.setActive(False)<br>
<br>
Respecto al geoproceso intersección, si cambia el nombre de los campos es porque necesita hacerlo. Si no me equivoco es cuando se duplican el mismo nombre de los campos en las capas entrantes. No hay forma de configurar esto desde fuera. Lo que si que puedes
hacer es hacer un script que te extraiga lo que desees de esa capa o editarla.<br>
<br>
Creo que no me dejo nada. Espero que te sea de ayuda.<br>
<br>
Saludos,<br>
Óscar<br>
<br>
<div class="moz-cite-prefix">El 27/03/2017 a las 8:29, Ovidio Ribeira escribió:<br>
</div>
<blockquote type="cite">
<div id="divtagdefaultwrapper" style="color: rgb(0, 0, 0); font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 12pt;" dir="ltr">
<div>
<p style="line-height: 100%; margin-bottom: 0cm;">Buenos días Oscar, gracias por tu ayuda y tu tiempo, con tus explicaciones conseguí lo que quería, pero para mejorar el script so lo me faltaría,: poder eliminar de la TOC una capa que ya no me interesa, lo
que hice fue ponerla como no visible,. Tampoco consigo renombrar la capa de salida del geoproceso reproyectar, aquí lo que hago es no añadir ninguna con el geoproceso y despues anadir a la TOC la n.º 0. Me seria bueno poder añadir una simbología y un etiquetado
por selección a la nueva capa desde el script. Para seleccionar una capa uso: currentLayer().setActive(False) y s1.setActive(True) pero si al principio no hay ninguna capa activa me da un error, como se puede saber si hay alguna capa activa. Y por último
la capa de salida en el geoproceso intersección cambia el nombre de los campos, hay alguna manera de que no lo haga.</p>
<p style="line-height: 100%; margin-bottom: 0cm;">Saludos y si puedes la ayudar será muy bien venida .
</p>
<p style="line-height: 100%; margin-bottom: 0cm;"><br>
</p>
</div>
<p><br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="width: 98%; display: inline-block;">
<div id="divRplyFwdMsg" dir="ltr"><font color="#000000" face="Calibri,
sans-serif" style="font-size: 11pt;"><b>De:</b>
<a class="moz-txt-link-abbreviated" href="mailto:gvsig_usuarios-bounces@listserv.gva.es">
gvsig_usuarios-bounces@listserv.gva.es</a> <a class="moz-txt-link-rfc2396E" href="mailto:gvsig_usuarios-bounces@listserv.gva.es">
<gvsig_usuarios-bounces@listserv.gva.es></a> en nombre de Oscar Martinez <a class="moz-txt-link-rfc2396E" href="mailto:omartinez@gvsig.com">
<omartinez@gvsig.com></a><br>
<b>Enviado:</b> viernes, 24 de marzo de 2017 14:30<br>
<b>Para:</b> <a class="moz-txt-link-abbreviated" href="mailto:gvsig_usuarios@listserv.gva.es">
gvsig_usuarios@listserv.gva.es</a><br>
<b>Asunto:</b> Re: [Gvsig_usuarios] Libreria gvpy</font>
<div> </div>
</div>
<div>
<p>Buenas,</p>
<p><br>
</p>
<p>Los algortimos gvSIG-* funcionan de manera algo diferente. Por ahora, siempre que ejecutes uno de estos algoritmos tienes que especificar el path que quieres usar. En gvpy se especifica añadiendo un parámetro PATH. Para esto ya teníamos una función preparada
en gvSIG llamada getTempFile("nombre", "extension", "carpeta destino"), siendo el último parámetro opcional. Esto imita el funcionamiento que tienen el resto de geoprocesos.</p>
<p><br>
</p>
<p>También ten en cuenta que este geoproceso reproject especifica y crea tres capas de salida, aunque luego solo vayas a usar una, hay que indicar los paths.</p>
<p><br>
</p>
<p>Te adjunto un ejemplo de todo esto.</p>
<p><br>
</p>
<p>Espero te sirva de ayuda, cualquier cosa nos comentas.</p>
<p><br>
</p>
<p>Saludos</p>
<p><br>
</p>
<p><a class="moz-txt-link-freetext" id="LPlnk447514" href="https://gist.github.com/oscar9/43523df6c76056cbde97f4a23f967ffe" previewremoved="true">https://gist.github.com/oscar9/43523df6c76056cbde97f4a23f967ffe</a></p>
<p><br>
</p>
<pre># encoding: utf-8</pre>
<pre>import gvsig</pre>
<pre>from gvsig import *</pre>
<pre>from gvsig.libs import gvpy</pre>
<pre>reload(gvpy)</pre>
<pre>import os</pre>
<pre>def main(*args):</pre>
<pre> </pre>
<pre> gvpy.algHelp("gvSIG-reproject")</pre>
<pre> """</pre>
<pre> * Algorithm help: Reproyección</pre>
<pre> * Usage: runalg( "gvSIG-reproject",</pre>
<pre> LAYER[Vector Layer],</pre>
<pre> SELECTED_GEOM[Boolean],</pre>
<pre> DST_PROJECTION[String],</pre>
<pre> RESULT_POL[output vector layer],</pre>
<pre> RESULT_LINE[output vector layer],</pre>
<pre> RESULT_POINT[output vector layer],</pre>
<pre> );</pre>
<pre> """</pre>
<pre> #Funtion tempfile</pre>
<pre> n1 = getTempFile("new", ".shp")</pre>
<pre> print n1</pre>
<pre> #C:\Users\Versus\AppData\Local\Temp\/tmp-andami\new-58d51c6267b.shp</pre>
<pre> </pre>
<pre> n2 = getTempFile("new", ".shp", r"C:\resultados")</pre>
<pre> print n2</pre>
<pre> #C:\resultados\new-58d51c62686.shp</pre>
<pre> </pre>
<pre> # Ejemplo</pre>
<pre> shp1 = gvpy.runalg("randomvector",10,0)</pre>
<pre> shp2 = gvpy.runalg("gvSIG-reproject", shp1, "false", "EPSG:25829", PATH=[getTempFile("new1", ".shp"),getTempFile("new2", ".shp"),getTempFile("new3", ".shp")])</pre>
<pre> print shp2</pre>
<pre> </pre>
<pre> # Salida multiple en forma de lista: [new1-58d51c7f20ed, new2-58d51c7f20ed, new3-58d51c7f20ed]</pre>
<pre> print shp2[0].getGeometryType().getName()</pre>
<pre> print shp2[1].getGeometryType().getName()</pre>
<pre> print shp2[2].getGeometryType().getName()</pre>
<pre> pass</pre>
<br>
<br>
<div class="moz-cite-prefix">El 24/03/2017 a las 13:00, Ovidio Ribeira escribió:<br>
</div>
<blockquote type="cite">
<div id="divtagdefaultwrapper" style="color: rgb(0, 0, 0); font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 12pt;" dir="ltr">
<div id="divtagdefaultwrapper" style="color: rgb(0, 0, 0); font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 12pt;" dir="ltr">
<p><span>Hola, usando la libreria gvpy en un script y al ejecutarlo la segunda vez me da el error de que el fichero de salida existe, utilizando el siguente comando:</span></p>
<p><span>gvpy.runalg("gvSIG-reproject", "Area", "false", "EPSG:25829", "#", "#", "#",)</span></p>
<p><span>Con esta outra linea funciona sin problemas creando varios ficheros temporales:
<span>gvpy.runalg("randomvector",10,0),</span></span></p>
<p><span><span>Tambien necesito ayuda para capturar solo la capa de polígonos del geoproceso gvsig-reproject.</span></span></p>
<p><span><span>Gracias y saludos.</span></span></p>
<p><br>
</p>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset> <br>
<pre>_______________________________________________
gvSIG_usuarios mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gvSIG_usuarios@listserv.gva.es">gvSIG_usuarios@listserv.gva.es</a>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:
<a class="moz-txt-link-freetext" href="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios">https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios</a>
</pre>
</blockquote>
<br>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset> <br>
<pre>_______________________________________________
gvSIG_usuarios mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gvSIG_usuarios@listserv.gva.es">gvSIG_usuarios@listserv.gva.es</a>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:
<a class="moz-txt-link-freetext" href="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios">https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios</a>
</pre>
</blockquote>
<br>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset> <br>
<pre>_______________________________________________
gvSIG_usuarios mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gvSIG_usuarios@listserv.gva.es">gvSIG_usuarios@listserv.gva.es</a>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:
<a class="moz-txt-link-freetext" href="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios">https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios</a>
</pre>
</blockquote>
<br>
</div>
</div>
</div>
</body>
</html>