Fede, supongo que quieres hacer una extensión que realice la importación/exportación a través de código de manera automática, o algo por el estilo. Si es asi, la mecanica sería más o menos la siguiente (hace un par de meses que empecé a desarrollar sobre gvSig por lo que es probable que esta no sea la forma más correcta de hacerlo, pero tal vez te de una idea de las clases que intervienen).<br>
<br>Espero te sirva,<br>Antonio Grassi<br><br>Crear las capas origen y destino:<br><br>View v = (View) PluginServices.getMDIManager().getActiveWindow();<br><br>IProjection proj = v.getMapControl().getMapContext().getProjection();<br>
<br>Driver d = LayerFactory.getDM().getDriver("nombre driver DXF o SHP");<br><br>FLayer l = LayerFactory.createLayer("nombre de capa", (VectorialFileDriver) d, new File("ruta al archivo DXF o SHP"), proj);<br>
<br>Con esto creas una layer. Los nombres de los drivers puedes verlos en la salida del log cuando inicias gvsig. Si la capa es nueva, se creará automáticamente el SHP o DXF. Luego tienes que leer el contenido de una capa e insertarlo en la otra. Puedes hacerlo mediante el siguiente método (las capas que creaste en el paso anterior al ser SHP o DXF son instancias de FLyrVect):<br>
<br>public static void addLayerContent(FLyrVect target, FLyrVect source) throws<br> VisitorException, ReadDriverException, InitializeWriterException {<br> <br> if (!target.isWritable()) {<br> throw new RuntimeException("The layer " + target.getName() + " is not writeable");<br>
}<br><br> IWriter writer = ((IWriteable) target.getSource().getDriver()).getWriter();<br><br> LayerDefinition ld = new LayerDefinition();<br> ld = new LayerDefinition();<br> ld.setName(target.getName());<br>
ld.setProjection(target.getProjection());<br> ld.setShapeType(target.getShapeType());<br> ld.setFieldsDesc(target.getRecordset().getFieldsDescription());<br><br> writer.initialize(ld);<br> writer.preProcess();<br>
<br> int index = 0;<br> <br> IFeatureIterator fi = source.getSource().getFeatureIterator();<br> <br> while (fi.hasNext()) {<br> IRowEdited r = new DefaultRowEdited(fi.next(),<br> IRowEdited.STATUS_ADDED, index++);<br>
writer.process(r);<br> }<br> <br> writer.postProcess();<br> fi.closeIterator();<br>}<br><br><br><br>> Hola, me llamo Federico Jeanne.<br>
> Soy un desarrollador de software trabajando con GIS, estoy haciendo un<br>
> visualizador de capas y algunas otras cosas. Hace poco me pidieron para mi<br>
> proyecto la posibilidad de importar/exportar capas DXF y noté que la<br>
> funcionalidad ya está hecha en gvSIG.<br>
> Escribo a ustedes para pedir un poco de ayuda con este asunto, actualmente<br>
> estoy navegando un poco las clases de su proyecto (lo bajé desde el<br>
> repositorio SVN) y estoy tratando de rastrear la funcionalidad que necesito,<br>
> pero me está costando bastante<br>