<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">El 19 de julio de 2016, 11:35, Francisco Puga <span dir="ltr">&lt;<a href="mailto:fpuga@icarto.es" target="_blank">fpuga@icarto.es</a>&gt;</span> escribió:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">En el plugin de landregistryviewer [1] tienes un ejemplo de como hacer esto.<div><br></div><div>Respecto a lo de la versión ten en cuenta donde estás desplegando el plugin que estás escribiendo. Por defecto al hacer un mvn install, se busca un fichero en el home del usuario llamado .gvsig-devel.properties. En este fichero hay una variable que indica la ruta en la que se desplegará el plugin. Modifica ese fichero para que el plugin se copie a la carpeta extensiones de la instalación de gvSIG que te interese.</div><div><br></div><div>Que puede ser la que hayas compilado tu mismo desde el entorno de desarrollo, o una versión que te hayas descargado desde la web. Si no me equivoco al hacer el mvn install también tienes la opción de pasarle un parámetro para indicarle en que gvsig debe desplegarse.</div><div><br></div><div><br></div><div>Te enlazo una clase que uso yo para cargar shapes desde disco por si te resulta más cómodo. Puedes copiarla y pegarla a tu proyecto aunque se agradece citación de autoría </div><div><a href="https://github.com/iCarto/es.icarto.gvsig.commons/blob/gvsig2/src/main/java/es/icarto/gvsig/commons/datasources/SHPFactory.java#L71" target="_blank">https://github.com/iCarto/es.icarto.gvsig.commons/blob/gvsig2/src/main/java/es/icarto/gvsig/commons/datasources/SHPFactory.java#L71</a></div><div><br></div><div>La lista de atributos de una capa la puedes obtener con algo como</div><div><br></div><div>FeatureStore fs = null;</div><div><div>FeatureType featureType = fs.getFeatureSet().getDefaultFeatureType();</div><div><div>FeatureAttributeDescriptor[] attDescs = featureType.getAttributeDescriptors();</div></div><div><br></div><div>Iterando a través de attDescs y pidiéndoles el getName puedes obtener todos los nombres de los atributos.</div><div><br></div><div>Fijate que dentro del attDescs estará también el campo de geometría, por tanto si quieres saltártelo a la hora de mostrar información al usuario:</div><div><br></div><div>geomIdx = defaultFeatureType.getDefaultGeometryAttributeIndex();<br></div><div><br></div><div>for (int i=0, max=attDescs.length; i&lt;max;i++) {</div><div>    if (i == geomIdx) {</div><div>        continue;</div><div>    }</div><div>    String attName = attDescs[i].getName();</div><div>}</div><div><br></div></div></div></blockquote><div><br><br>Hola, <br>me voy a permitir algunos de comentarios al codigo de Fran.<br><br>para obtener el FeatureType si tienes un FeautureStore, no hace falta<br>pedir un FeatureSet, que no se sabe si puede o no tener un coste elevado<br>en recursos de obtener. Se le puede pedir directamente al FeatureStore.<br>Esto es en lugar de:<br><br>  FeatureType featureType = fs.getFeatureSet().getDefaultFeatureType();<br><br>Usar:<br><br>  FeatureType featureType = fs.getDefaultFeatureType();<br> <br>Otro comentario es un error muy comun, y esta en el metodo createSHP<br>de la clase SHPFactory que ha enlazado Fran.<br><br>Para crear un nuevo store, por ejemplo un nuevo shape, hay que crear una<br>instancia de NewDataStoreParameters del proveedor que nos interese (el de shape<br>en este caso). Para abrir un store ya existente se debe usar una instancia de<br>OpenDataStoreParameters. <br><br>En el metodo createSHP se crea un NewDataStoreParameters y se usa tanto para <br>crear de nuevo el shape como para abrirlo una vez creado.<br><br>Con el proveedor de shape, pasa algo extraño. La implementacion de <br>SHPNewStoreParameters extiende de SHPStoreParameters, pero eso es una peculiaridad de <br>la implementacion del proveedor y es la causante de que pueda usarse un <br>NewDataStoreParameters como parametros para abrir un shape existente.<br><br>Para otros provedores esto no sucede. Si lo intentas fallara. Y nadie garantiza que <br>para el shape eso siga funcionando asi en proximas versiones de gvSIG. El que funciona <br>ahora mismo para shapes es fruto de un error, o mas bien de un atajo del programador <br>que implemento ese proveedor. El dia que eso se corrija dejara de funcionar que<br>se pueda abrir un shape usando como parametros un NewDataStoreParameters.<br><br>Un par de cosillas mas menos que no son muy importantes.<br><br>La primera tiene que ver con como funciona la edicion en los FeatureStore-s. <br>Hay varios modos de edicion, el de por defecto es MODE_FULLEDIT. En este metodo <br>todas las operaciones de escritura se van almacenando en memoria y cuando se <br>termina la edicion se trasladan a la fuente de datos, por ejemplo a un fichero <br>shape. Si no quieres actualizar, si no solo añadir datos a un shape, es mas optimo<br>usar el metodo de edicion MODE_APPEND. Eso solo permite hacer insterts de<br>nuevas features, que se añadiran al final, y se van añadiendo en el momento<br>de hacer el insert. Este modo no permite hacer consultas, ni borrados, nada que<br>no sean inserts. Pero biene muy bien cuando creamos un shape y simplemente<br>queremos añadir registros. Lo comento por el codigo al final del metodo <br>createSHP...<br><br>  store.edit();<br>  for (EditableFeature f : features) {<br>    store.insert(f);<br>  }<br>  store.finishEditing();<br><br>Cambiado la llamada a &quot;edit()&quot; por &quot;edit(MODE_APPEND)&quot;, las inserts irian<br>directamente al shape en lugar de guardarse en memoria y volcarse al shape<br>en el momento de llamar a finishEditing. <br><br>No creo que en este contexto se importante, ya que estamos trabajando con un<br>array de features que no deberia ser muy grande; pero cuando estamos ejecutando<br>un proceso sobre una fuente de datos para generar otro store (shape por ejemplo),<br>en donde no sabemos si va a ver 10 registros o 10.000.000 de registros si que<br>puede ser interesante tenerlo en mente.<br><br>A ver... la otra cosa... tampoco parece muy importante cuando estemos<br>trabajando con shape, pero no estaria mal acostumbrarse a ello ya que <br>cuando estemos usando BBDD puede llegar a ser critico.<br>Hay muchos metodos relacionados con objetos de DAL que implementan el interface<br>Disposable, vamos que tienen un metodo dispose. Como por ejemplo el DataStore.<br>Tenemos que acostumbrarnos a llamar siempre al metodo dispose de esos <br>objetos ya que si no lo hacemos pueden quedar recursos por liberar. En el<br>metodo createSHP se le llama...pero solo si todo va bien. Si se produce algun<br>error ya no se llama al dispose y los recursos pueden quedar pillados.<br>Mi consejo es que se usen construcciones del tipo:<br><br>  FeatureStore store = null;<br>  try {<br>    <br>    ...<br><br>  } finally {<br>    DisposeUtils.disposeQuietly(store);<br>  }<br><br>Asi nos aseguramos que siempre se liberen los recursos. (Con BBDD pueden llegar a <br>quedarse conexiones al servidor cogidas y que no se liberarian hasta que se<br>cerrase gvSIG lo que puede ser muy grave).<br><br>Un saludo<br>Joaquin<br><br><br><br><br><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div></div><div><br></div><div>[1] <a href="http://devel.gvsig.org/svn/gvsig-plugintemplates/org.gvsig.landregistryviewer/trunk/org.gvsig.landregistryviewer/" target="_blank">http://devel.gvsig.org/svn/gvsig-plugintemplates/org.gvsig.landregistryviewer/trunk/org.gvsig.landregistryviewer/</a></div></div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">El 18 de julio de 2016, 16:09, maru.cristiani <span dir="ltr">&lt;<a href="mailto:maru.cristiani@gmail.com" target="_blank">maru.cristiani@gmail.com</a>&gt;</span> escribió:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hola, como estan?<br>
<br>
Estamos desarrollando una extension, y necesitariamos poder levantar desde<br>
la extension un SHP y listar todas sus columnas e informacion.<br>
<br>
Estamos en la version de gvSIG desktop<br>
    &lt;version&gt;2.0.106-SNAPSHOT&lt;/version&gt;<br>
<br>
Sin embargo cuando levantamos la aplicacion nos dice que es la version:<br>
2.3.0.2403<br>
<br>
Tienen algun pseudocodigo, o codigo ya en Java, para levantar un .shp e<br>
interpretarlo?<br>
<br>
Gracias!<br>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://osgeo-org.1560.x6.nabble.com/Obtener-tabla-de-atributos-de-shp-tp5276903.html" rel="noreferrer" target="_blank">http://osgeo-org.1560.x6.nabble.com/Obtener-tabla-de-atributos-de-shp-tp5276903.html</a><br>
Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.<br>
_______________________________________________<br>
gvSIG_desarrolladores mailing list<br>
<a href="mailto:gvSIG_desarrolladores@listserv.gva.es" target="_blank">gvSIG_desarrolladores@listserv.gva.es</a><br>
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 href="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores" rel="noreferrer" target="_blank">https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores</a><br>
</blockquote></div><br><br clear="all"><div><br></div></div></div>-- <br><div data-smartmail="gmail_signature"><div dir="ltr"><div>Francisco Puga</div><div>iCarto | Innovación, Cooperación, Cartografía y Territorio S.L.</div><div><a href="http://www.icarto.es/" target="_blank">http://www.icarto.es/</a></div><div><br></div><div>c/ Rafael Alberti nº 13 – 1º D</div><div>15008 A Coruña</div><div>Galicia (Spain)</div><div><a href="tel:%2B34%20881927808" value="+34881927808" target="_blank">+34 881927808</a></div><div><br></div><div>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.</div><div><br></div><div>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).</div></div></div>
</div>
<br>_______________________________________________<br>
gvSIG_desarrolladores mailing list<br>
<a href="mailto:gvSIG_desarrolladores@listserv.gva.es">gvSIG_desarrolladores@listserv.gva.es</a><br>
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 href="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores" rel="noreferrer" target="_blank">https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">--------------------------------------<br>Joaquin Jose del Cerro Murciano<br>Development and software arquitecture manager at gvSIG Team<br><a href="mailto:jjdelcerro@gvsig.com" target="_blank">jjdelcerro@gvsig.com</a><br><a href="mailto:jjdelcerro@gvsig.org" target="_blank">jjdelcerro@gvsig.org</a><br>gvSIG Association<br><a href="http://www.gvsig.com" target="_blank">www.gvsig.com</a><br><a href="http://www.gvsig.org" target="_blank">www.gvsig.org</a></div>
</div></div>