<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
<br><br><font class="ecxApple-style-span" face="Tahoma" size="2" style="font-size: 10pt; "><br></font><br><br><div><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> ></font><font class="Apple-style-span" size="5"><br>> > hola señores desarrolladores<br>> > estoy tratando de llamas unas capas de mi base de datos postgres, pero al<br>> > importar esto me generar error import<br>> > com.iver.cit.gvsig.fmap.DriverException; , saben uds donde puede encontrar</font><br><font class="Apple-style-span" size="2">> > ese paquete o librería gracias</font><br><font class="Apple-style-span" size="2">> > ackage org.gvsig.proyecto;</font><br><font class="Apple-style-span" size="2">> > import java.awt.Cursor;</font><br><font class="Apple-style-span" size="2">> > import java.beans.Statement;</font><br><font class="Apple-style-span" size="2">> > import java.io.*;</font><br><font class="Apple-style-span" size="2">> > import java.sql.Connection;</font><br><font class="Apple-style-span" size="2">> > import java.sql.DriverManager;</font><br><font class="Apple-style-span" size="2">> > import java.sql.ResultSet;</font><br><font class="Apple-style-span" size="2">> > import java.sql.SQLException;</font><br><font class="Apple-style-span" size="2">> > import javax.swing.JOptionPane;</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > import org.geotools.data.DataSourceException;</font><br><font class="Apple-style-span" size="2">> > import org.geotools.data.DataStore;</font><br><font class="Apple-style-span" size="2">> > import org.geotools.data.FeatureSource;</font><br><font class="Apple-style-span" size="2">> > import org.geotools.data.postgis.PostgisDataStore;</font><br><font class="Apple-style-span" size="2">> > import org.geotools.data.postgis.PostgisDataStoreFactory;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.DriverException;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.MapContext;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.MapControl;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.*;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGisDriver;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.layers.*;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.project.documents.view.IProjectView;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.project.documents.view.gui.BaseView;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.project.documents.view.gui.IView;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.project.documents.view.gui.View;</font><br><font class="Apple-style-span" size="2">> > import com.iver.andami.PluginServices;</font><br><font class="Apple-style-span" size="2">> > import com.iver.andami.messages.NotificationManager;</font><br><font class="Apple-style-span" size="2">> > import com.iver.andami.plugins.Extension;</font><br><font class="Apple-style-span" size="2">> > /**</font><br><font class="Apple-style-span" size="2">> > *</font><br><font class="Apple-style-span" size="2">> > * @author Felipe</font><br><font class="Apple-style-span" size="2">> > */</font><br><font class="Apple-style-span" size="2">> > public class Intento {</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > public void initialize() {</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > public void execute(String actionCommand) {</font><br><font class="Apple-style-span" size="2">> > com.iver.andami.ui.mdiManager.IWindow view =</font><br><font class="Apple-style-span" size="2">> > PluginServices.getMDIManager().getActiveWindow();</font><br><font class="Apple-style-span" size="2">> > if(view instanceof View)</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > View vista=(View)view;</font><br><font class="Apple-style-span" size="2">> > IProjectView model = vista.getModel();</font><br><font class="Apple-style-span" size="2">> > MapContext mapa = model.getMapContext();</font><br><font class="Apple-style-span" size="2">> > MapControl mapCtrl = vista.getMapControl();</font><br><font class="Apple-style-span" size="2">> > CargadorCapas cargador = new CargadorCapas();</font><br><font class="Apple-style-span" size="2">> > JOptionPane.showMessageDialog(null, "Esto es una vista");</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > cargador.cargarTabla("parcelas", 0, mapCtrl, vista);</font><br><font class="Apple-style-span" size="2">> > cargador.cargarTabla("pozo", 1, mapCtrl, vista);</font><br><font class="Apple-style-span" size="2">> > cargador.cargarTabla("marabu", 2, mapCtrl, vista);</font><br><font class="Apple-style-span" size="2">> > cargador.cargarTabla("const", 3, mapCtrl, vista);</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > else</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > JOptionPane.showMessageDialog(null, "Esto no es una vista");</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > public boolean isEnabled() {</font><br><font class="Apple-style-span" size="2">> > return true;</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > public boolean isVisible() {</font><br><font class="Apple-style-span" size="2">> > return true;</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > package org.gvsig.proyecto;</font><br><font class="Apple-style-span" size="2">> > import java.sql.Connection;</font><br><font class="Apple-style-span" size="2">> > import java.sql.DatabaseMetaData;</font><br><font class="Apple-style-span" size="2">> > import java.sql.ResultSet;</font><br><font class="Apple-style-span" size="2">> > import java.util.ArrayList;</font><br><font class="Apple-style-span" size="2">> > import javax.swing.JOptionPane;</font><br><font class="Apple-style-span" size="2">> > import org.apache.log4j.Logger;</font><br><font class="Apple-style-span" size="2">> > import org.cresques.cts.IProjection;</font><br><font class="Apple-style-span" size="2">> > import org.cresques.cts.ProjectionPool;</font><br><font class="Apple-style-span" size="2">> > import com.hardcode.driverManager.Driver;</font><br><font class="Apple-style-span" size="2">> > import com.iver.andami.PluginServices;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.MapControl;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.core.ICanReproject;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.crs.CRSFactory;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.ConnectionFactory;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.ConnectionJDBC;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.DBLayerDefinition;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.FieldDescription;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.IConnection;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.IVectorialJDBCDriver;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGISWriter;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.layers.FLayer;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.layers.FLyrVect;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.fmap.layers.LayerFactory;</font><br><font class="Apple-style-span" size="2">> > import com.iver.cit.gvsig.project.documents.view.gui.View;</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > /**</font><br><font class="Apple-style-span" size="2">> > *</font><br><font class="Apple-style-span" size="2">> > * @author Felipe</font><br><font class="Apple-style-span" size="2">> > */</font><br><font class="Apple-style-span" size="2">> > public class CargadorCapas {</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > private static String selectedDriver;</font><br><font class="Apple-style-span" size="2">> > private static Logger log = Logger.getLogger(CargadorCapas.class);</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > public CargadorCapas() {</font><br><font class="Apple-style-span" size="2">> > selectedDriver = "PostGIS JDBC Driver";</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > /**</font><br><font class="Apple-style-span" size="2">> > * Crea una capa a partir de una tabla de la BD y la añade al</font><br><font class="Apple-style-span" size="2">> > <code>mapControl y a la Vista <code>v</font><br><font class="Apple-style-span" size="2">> > * @param mapControl</font><br><font class="Apple-style-span" size="2">> > * @param v</font><br><font class="Apple-style-span" size="2">> > */</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > public FLyrVect cargarTabla(String nombreTabla, int posicion ,MapControl</font><br><font class="Apple-style-span" size="2">> > mapControl, View v) {</font><br><font class="Apple-style-span" size="2">> > String dbURL = "jdbc:postgresql://localhost:5432/gps_geored";</font><br><font class="Apple-style-span" size="2">> > String user = "postgres";</font><br><font class="Apple-style-span" size="2">> > String pwd = "postgres";</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > IConnection conex = null;</font><br><font class="Apple-style-span" size="2">> > try {</font><br><font class="Apple-style-span" size="2">> > IVectorialJDBCDriver dbDriver = (IVectorialJDBCDriver)</font><br><font class="Apple-style-span" size="2">> > LayerFactory.getDM().getDriver("PostGIS JDBC Driver");</font><br><font class="Apple-style-span" size="2">> > Driver drv = LayerFactory.getDM().getDriver(selectedDriver);</font><br><font class="Apple-style-span" size="2">> > conex = ConnectionFactory.createConnection(dbURL, user, pwd);</font><br><font class="Apple-style-span" size="2">> > /*creamos la definicion para la capa*/</font><br><font class="Apple-style-span" size="2">> > DBLayerDefinition dbLayerDef = new DBLayerDefinition();</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setCatalogName("gps_geored"); //Nombre de la base de datos</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setSchema("public"); //Nombre del esquema</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setTableName(nombreTabla); //Nombre de la tabla</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setFieldGeometry("the_geom");</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setFieldID("gid");</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setWhereClause("");</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setConnection(conex);</font><br><font class="Apple-style-span" size="2">> > /*obtenemos conexion JDBC*/</font><br><font class="Apple-style-span" size="2">> > Connection conexion = ((ConnectionJDBC) conex).getConnection();</font><br><font class="Apple-style-span" size="2">> > DatabaseMetaData metadataDB = conexion.getMetaData();</font><br><font class="Apple-style-span" size="2">> > String tipos[] = new String[1];</font><br><font class="Apple-style-span" size="2">> > tipos[0] = "TABLE";</font><br><font class="Apple-style-span" size="2">> > ResultSet tablas = metadataDB.getTables(null, null, nombreTabla, tipos);</font><br><font class="Apple-style-span" size="2">> > tablas.next();</font><br><font class="Apple-style-span" size="2">> > String t = tablas.getString(tablas.findColumn( "TABLE_NAME" ));</font><br><font class="Apple-style-span" size="2">> > ResultSet columnas = metadataDB.getColumns(null,null,nombreTabla, "%");</font><br><font class="Apple-style-span" size="2">> > ResultSet claves = metadataDB.getPrimaryKeys(null, null, nombreTabla);</font><br><font class="Apple-style-span" size="2">> > ArrayList<FieldDescription> descripciones = new ArrayList</font><br><font class="Apple-style-span" size="2">> > <FieldDescription>();</font><br><font class="Apple-style-span" size="2">> > ArrayList<String> nombres = new ArrayList<String>();</font><br><font class="Apple-style-span" size="2">> > while(columnas.next()) {</font><br><font class="Apple-style-span" size="2">> > log.info("Tratando atributo: \""+columnas.getString("Column_Name")+"\" de la</font><br><font class="Apple-style-span" size="2">> > tabla: "+nombreTabla);</font><br><font class="Apple-style-span" size="2">> > if(columnas.getString("Type_Name").equalsIgnoreCase("geometry")) {</font><br><font class="Apple-style-span" size="2">> > /*si es la columna de geometria*/</font><br><font class="Apple-style-span" size="2">> > log.info("Encontrado atributo de geometria para la tabla:"+nombreTabla);</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setFieldGeometry(columnas.getString("Column_Name"));</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > else {</font><br><font class="Apple-style-span" size="2">> > FieldDescription fieldDescription = new FieldDescription();</font><br><font class="Apple-style-span" size="2">> > fieldDescription.setFieldName(columnas.getString("Column_Name"));</font><br><font class="Apple-style-span" size="2">> > fieldDescription.setFieldType(columnas.getType());</font><br><font class="Apple-style-span" size="2">> > descripciones.add(fieldDescription);</font><br><font class="Apple-style-span" size="2">> > nombres.add(columnas.getString("Column_Name"));</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > FieldDescription fields[] = new FieldDescription[descripciones.size()];</font><br><font class="Apple-style-span" size="2">> > String s[] = new String[nombres.size()];</font><br><font class="Apple-style-span" size="2">> > for(int i = 0; i < descripciones.size(); i++) {</font><br><font class="Apple-style-span" size="2">> > fields[i] = descripciones.get(i);</font><br><font class="Apple-style-span" size="2">> > s[i] = nombres.get(i);</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setFieldsDesc(fields);</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setFieldNames(s);</font><br><font class="Apple-style-span" size="2">> > /*buscamos clave primaria y la añadimos a la definicion de la capa*/</font><br><font class="Apple-style-span" size="2">> > while(claves.next()) {</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setFieldID(claves.getString("Column_Name"));</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > PostGISWriter writer = new PostGISWriter();</font><br><font class="Apple-style-span" size="2">> > writer.setWriteAll(false);</font><br><font class="Apple-style-span" size="2">> > writer.setCreateTable(false);</font><br><font class="Apple-style-span" size="2">> > IProjection proj = null;</font><br><font class="Apple-style-span" size="2">> > String strEPSG = "3115";</font><br><font class="Apple-style-span" size="2">> > if (drv instanceof ICanReproject)</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > dbLayerDef.setSRID_EPSG(strEPSG);</font><br><font class="Apple-style-span" size="2">> > if (dbDriver instanceof ICanReproject)</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > ((ICanReproject)dbDriver).setDestProjection(strEPSG);</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > dbDriver.setData(conex, dbLayerDef);</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > if (dbDriver instanceof ICanReproject)</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > // el error lo da aquiiiiiii</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > // proj = CRSFactory.getCRS("EPSG:" +</font><br><font class="Apple-style-span" size="2">> > ((ICanReproject)dbDriver).getSourceProjection(null,dbLayerDef));</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > proj = CRSFactory.getCRS("EPSG:3115");</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > FLayer lyr = LayerFactory.createDBLayer(dbDriver, nombreTabla, proj);</font><br><font class="Apple-style-span" size="2">> > if (lyr != null) {</font><br><font class="Apple-style-span" size="2">> > lyr.setVisible(true);</font><br><font class="Apple-style-span" size="2">> > v.getMapControl().getMapContext().beginAtomicEvent();</font><br><font class="Apple-style-span" size="2">> > // Comprobamos si es necesario reproyectar</font><br><font class="Apple-style-span" size="2">> > checkProjection(lyr, v.getMapControl());</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > v.getMapControl().getMapContext().getLayers().addLayer(lyr);</font><br><font class="Apple-style-span" size="2">> > v.getMapControl().getMapContext().endAtomicEvent();</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > return (FLyrVect) lyr;</font><br><font class="Apple-style-span" size="2">> > } catch (Exception e) {</font><br><font class="Apple-style-span" size="2">> > log.warn("No se pudo cargar capa de la tabla: "+nombreTabla);</font><br><font class="Apple-style-span" size="2">> > e.printStackTrace();</font><br><font class="Apple-style-span" size="2">> > return null;</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > private void checkProjection(FLayer lyr, MapControl mc)</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > if (lyr instanceof FLyrVect)</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > FLyrVect lyrVect = (FLyrVect) lyr;</font><br><font class="Apple-style-span" size="2">> > IProjection proj = lyr.getProjection();</font><br><font class="Apple-style-span" size="2">> > // Comprobar que la proyección es la misma que la vista</font><br><font class="Apple-style-span" size="2">> > if (proj == null)</font><br><font class="Apple-style-span" size="2">> > {</font><br><font class="Apple-style-span" size="2">> > // SUPONEMOS que la capa está en la proyección que</font><br><font class="Apple-style-span" size="2">> > // estamos pidiendo (que ya es mucho suponer, ya).</font><br><font class="Apple-style-span" size="2">> > log.warn("Reproyectando capa "+lyr.getName()+" porque no</font><br><font class="Apple-style-span" size="2">> > tenía proyección asignada");</font><br><font class="Apple-style-span" size="2">> > lyrVect.setProjection( mc.getViewPort().getProjection());</font><br><font class="Apple-style-span" size="2">> > return;</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > if</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > (!proj.getAbrev().equals(mc.getViewPort().getProjection().getAbrev())) {</font><br><font class="Apple-style-span" size="2">> > int option =</font><br><font class="Apple-style-span" size="2">> > JOptionPane.showConfirmDialog(null,PluginServices.getText(this,</font><br><font class="Apple-style-span" size="2">> > "reproyectar_aviso"),</font><br><font class="Apple-style-span" size="2">> > PluginServices.getText(this,</font><br><font class="Apple-style-span" size="2">> > "reproyectar_pregunta"),JOptionPane.YES_NO_OPTION);</font><br><font class="Apple-style-span" size="2">> > if (option == JOptionPane.NO_OPTION) {</font><br><font class="Apple-style-span" size="2">> > return;</font><br><font class="Apple-style-span" size="2">> > } else {</font><br><font class="Apple-style-span" size="2">> > log.error("coordTrans = " + proj.getAbrev() + " " +</font><br><font class="Apple-style-span" size="2">> > mc.getViewPort().getProjection().getAbrev());</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > lyrVect.reProject(mc);</font><br><font class="Apple-style-span" size="2">> > System.err.println("coordTrans = " +</font><br><font class="Apple-style-span" size="2">> > proj.getAbrev() + " " +</font><br><font class="Apple-style-span" size="2">> > mc.getViewPort().getProjection().getAbrev());</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> > }</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> ></font><font class="Apple-style-span" size="5"> }<br>> > tambien me genera error aqui lyrVect.reProject(mc); y no se a que se debe<br>> > su ayuda me seria muy util muchismas gracias<br>> ><br>> > pd: trabajo con netbeans y compilo con apache ant!!</font><font class="Apple-style-span" size="2">!</font><br><font class="Apple-style-span" size="2">> ></font><br><font class="Apple-style-span" size="2">> > Andrés Felipe Jama Cuellar</font><br><font class="Apple-style-span" size="2">> > Estudiante de Ingeniería Topográfica</font><br><font class="Apple-style-span" size="2">> > Universidad del Valle</font><br><font class="Apple-style-span" size="2">> </font><br><font class="Apple-style-span" size="2">> </font><br><font class="Apple-style-span" size="2">> </font><br><font class="Apple-style-span" size="2">> -- </font><br><font class="Apple-style-span" size="2">> Francisco Puga</font><br><font class="Apple-style-span" size="2">> Grupo de Desarrollo</font><br><font class="Apple-style-span" size="2">> Cartolab - Laboratorio de Ingeniería Cartográfica.</font><br><font class="Apple-style-span" size="2">> http://www.cartolab.es</font><br><font class="Apple-style-span" size="2">> </font><br><font class="Apple-style-span" size="2">> ETS Ingeniería de Caminos, Canales y Puertos</font><br><font class="Apple-style-span" size="2">> Universidade da Coruña</font><br><font class="Apple-style-span" size="2">> Campus de Elviña - 15071 A Coruña (España)</font><br><font class="Apple-style-span" size="2">> (34)981167000 ext. 5493</font><br></div>                                            </div></body>
</html>