Archive for the ‘Uncategorized’ Category

Entrada de FJP

Viernes, Septiembre 3rd, 2010

Prueba para ponerlo privado

Migrando el plugin de redes a la 2.0

Lunes, Junio 14th, 2010

Apunto aquí (a falta de un sitio mejor) algunas notas que creo pueden ser útiles para alguien que intente migrar su extensión de gvSIG a la 2.0.
Sin orden ni concierto, luego les daré forma.

- Desaparece addMapTool. Hay que usar addBehavior
- El equivalente a un FieldDescription viene a ser un FeatureAttributeDescriptor
- FLyrVect.getRecordset => getDataStore().getDataSet()
- FlyrVect.getSource => getFeatureStore()
- No usar View, usar IView
- ViewPort.getAdjustedExtent => getAdjusteEnvelope. Y usar setEnvelope
- Para convertir a JTS, se hace llamando a geom.invokeOperation(ToJTS.CODE, null); (O bien usando Converter o MigrationUtils)
- Para iterar por features, usar accept(Visitor) o un FeatureSet, sin olvidarte el dispose().
- ProjectTable => TableDocument
            ProjectExtension pe = (ProjectExtension) PluginServices
                    .getExtension(ProjectExtension.class);
            Project project = pe.getProject();
            TableDocument[] pts = (TableDocument[]) project.getDocuments(
                    TableManager.TYPENAME).toArray(    new TableDocument[0]);

- Crear un símbolo de tipo IMAGE:
            FSymbol simFlag = new Symbol(FConstant.SYMBOL_TYPE_ICON);
            simFlag.setStyle(FSymbol.SYMBOL_STYLE_MARKER_IMAGEN);
            simFlag.setSizeInPixels(true);
            simFlag.setSize(16);
            ImageIcon icon = new ImageIcon(this.getClass().getClassLoader()
                    .getResource(”images/turncost_16.png”));
            simFlag.setIcon(icon.getImage());

- Crear un símbolo:
                ANTES => theSymbol =    (IFillSymbol) symbolManager.createDefaultSymbolByShapeType(FShape.POLYGON);
                AHORA => SymbolManager symbolManager = MapContextLocator.getSymbolManager();
        ISymbol myDefaultSymbol = symbolManager.createSymbol(Geometry.TYPES.SURFACE);

- PointListener ahora te obliga a implementar el método getImageCursor():
    private Image imageCursor = new ImageIcon(MapControl.class.getResource(
            “images/Hand.gif”)).getImage();;

    public Image getImageCursor() {
        return imageCursor;
    }

- LayerFactory.createLayer => LayerFactory.getInstance().createLayer(String name, DataStoreParameters params). Lo malo es que los params te los tienes que crear con DynValue, así que mejor añadir algo a MigrationUtils.
- Revisar DataSelectionPanel. La forma de trabajar con la selección no es buena. ¿Usar Query sería mejor, por si es una capa de base de datos)
                            FeatureSelection selection = (FeatureSelection)featureStore.createFeatureSelection();
                            featureSet = featureStore.getFeatureSet();
                            features = featureSet.iterator();
                            while (features.hasNext()) {
                                Feature feature = (Feature) features.next();
                                if (itemToZoom.equals(feature.get(fieldToZoomIndex))){
                                    selection.select(feature);
                                }
                            }
//                            featureStore.setSelection(selection);
                            SelectedZoomVisitor visitor = new SelectedZoomVisitor();
                            selection.accept(visitor);
                            mapContext.getViewPort().setEnvelope(visitor.getSelectBound());

- ¿Como imitamos esto en la 2.0? :
        // Lo insertamos al principio de la lista para que los
        // pushpins se dibujen después.

        graphicLayer.inserGraphics(0, graphicsRoute);

            FGraphicLabel theGLabel = new FGraphicLabel(geom, idSymbol, aux);
            theGLabel.setObjectTag(tag);
            theGLabel.getLabel().setJustification(FLabel.CENTER_TOP);
            graphicLayer.addGraphic(theGLabel);

- Revisar la creación de los índices. No es sencillo crear un índice y no se controla si está duplicado.

- Crear una leyenda:
        VectorialUniqueValueLegend defaultLegend = new VectorialUniqueValueLegend(Geometry.TYPES.SURFACE);
        defaultLegend.setClassifyingFieldNames(new String[] {”COST”} );
        SymbolManager symbolManager = MapContextLocator.getSymbolManager();
        ISymbol myDefaultSymbol = symbolManager.createSymbol(Geometry.TYPES.SURFACE);

        defaultLegend.setDefaultSymbol(myDefaultSymbol);

- ¿Cómo se carga una leyenda? (gvl)

- Cargar una capa (FilesystemExplorerAddLayerWizardPanel.execute()):
        LayerFactory layerFactor = LayerFactory.getInstance();
        //FIXME: el nombre deberia sugerirlo los parametros?
         layerName = ((FilesystemStoreParameters) params).getFile().getName();
            try {
                layer = layerFactor.createLayer(layerName, params);
            } catch (LoadLayerException e) {
                NotificationManager.addError(e);
                return;
            }
¿Qué se hace en prepareOpenLayer, prepareOpenDataSource, prepareOpenDataStoreParameters?

- ApplicationManager tiene muchos puntos de entrada interesantes. Se obtiene:
        ApplicationManager appGvSigMan = ApplicationLocator.getManager();
y con eso consigues referencias al ProjectManager, currentProject, geometryManager, dataManager, mapContextManager…. incluso una función para obtener la proyección pasándole un string (formato??)

- ¿Cómo se crea una capa a partir de un driver (FeatureStore) => Porqué setDataStore() debería ser protected?

- ¿Cómo se carga una tabla por código?

- Creo que esta propiedad
           protected static final String FIELD_DBFFILENAME = “dbffilename”;
   debería ser pública en DBFStoreParameters

- ¿Hay algún ejemplo de aplicación simple para hacer pruebas (sin arrancar gvSIG).?

- ¿Porqué SHPStoreParameters tiene setFile(File), setSHXFile(File), etc públicos => qué parámetros son los que se deben usar con DYNCLASS => Sobra FIELD_SHXFILENAME?)

- ¿Dónde están las fuentes de org.gvsig.tools?

- Cuando no puede cargar una capa, podría ser más explícito en el error (Incluir en LoadLayerException la causa del error en el mensaje).

- ¿Porqué al depurar no puedo ver las fuentes de lo que tengo en el workspace?

- Añadir en la documentación los parámetros que faltan para cargar un shp (SRS).

- Esto cómo se hace en la 2.0? (lo de imprimir en algunos Linux):
            if (useDefaultJavaPrinting) {
                try {
                    m_cachePrintService = ServiceUI.printDialog(null, 200, 200,
                            m_cachePrintServices, defaultService, flavor, att);
                }
                catch (RuntimeException ex) {
                    useDefaultJavaPrinting=false;
                    Logger logger = PluginServices.getLogger();
                    logger.error(”Error showing print dialog”, ex);
                   
                    // workaround a problem with Java 1.5 with modern CUPS versions
                    // this try-catch block may be safely removed when we move to Java 1.6
                    logger.debug(”Opening gvSIG’s internal Java 1.7 CUPS printing dialog”);
                    m_cachePrintService = backport1_7.javax.print.ServiceUI.printDialog(null, 200, 200,
                            m_cachePrintServices, defaultService, flavor, att);
                }
            }
            else {
                PluginServices.getLogger().debug(”Opening gvSIG’s internal Java 1.7 CUPS printing dialog”);
                m_cachePrintService = backport1_7.javax.print.ServiceUI.printDialog(null, 200, 200,
                        m_cachePrintServices, defaultService, flavor, att);
            }

- Ejecutar mvn y obligar a que haga install aunque tengas errores de compilación (para ir probando las opciones que sí que deberían funcionar:
                mvn -Dnative-classifier=win-nt-vs8-i386-dynamic -fn -DskipTests=true install

continuará…

Instalar Tomcat + Axis en Linux

Miércoles, Noviembre 19th, 2008

Hace mucho que no escribo, y ya va siendo hora.

Me apunto aquí algunas notas rápidas sobre fallos típicos a la hora de instalar Tomcat + Axis2 en un servidor linux (en mi caso, Debian y Ubuntu).
(Fallo típico => 2 de 2 meteduras de pata ;-) )

1.- A veces la máquina virtual java instalada no es la que se necesita. Hay que instalar la de Sun, y asegurarte que javac -version y java -version devuelven lo correcto (LOS DOS). Si no es así, usar update-alternatives –config java.

2.- Tomcat tiene un fichero donde se configura el tema de permisos. Si has instalado axis.war y no funciona, lo primero que hay que probar es a cambiar TOMCAT5_SECURITY=no en el fichero /etc/default/tomcat5. Si después de reiniciar el servicio funciona, el problema eran los permisos. Vuelve a activar la seguridad, y sigue estos pasos:

  • Crea un nuevo fichero en el directorio /etc/tomcat5/policy.d que contenga los permisos. Cualquier nombre vale, por ejemplo AXIS.policy
  • En ese fichero pon las siguientes líneas:// permissons for apache axis2

    grant codeBase “file:${catalina.home}/webapps/axis2/-” {

    permission java.security.AllPermission;

    };

Desplegar Servicios Web en Tomcat.

Miércoles, Junio 4th, 2008

Por defecto, Tomcat creo que no lleva nada preparado para servicios web. Está preparado para servlets, jsp y ese tipo de cosas.
Si quieres usar servicios web, la mejor manera es bajarte el war de Axis2 (yo me he bajado la release 1.4) y parar Tomcat. Luego copias ese .war al directorio webapps de Tomcat, y arrancas Tomcat.
El .war se despliega y deja una aplicación llamada axis2 en el directorio
webapps. Ya solo falta acceder a http://localhost:8080/axis2 y probar
el enlace Validate para comprobar que todo está correcto.

Los servicios web se pueden instalar así:

Now you can drop a service archive in axis2/WEB-INF/services.

En ese directorio pones los .aar que hayas creado y ya tienes tus
servicios web. Por ejemplo, para el servicio CCSConnect.aar,
obtendríamos una dirección como ésta:

http://localhost:8080/axis2/services/CCSConnect?wsdl

Para servicios que queramos tener fuera de axis2, se exportan a un .war desde eclipse y se despliegan. Por ejemplo, para DDR se escriben en webapps\Ddr\WEB-INF\services y se acceden desde:

http://localhost:8080/Ddr/services/Version?wsdl

El servicio Version está ahí porque por defecto Eclipse lo mete así.

Magnífico FireFox 3 !!

Martes, Junio 3rd, 2008

Estoy probando la primera Release de FireFox 3, y es genial.
El interfaz es bonito y las nuevas funcionalidades son utilísimas. Y por si fuera poco, es compatible con los plugins que tenía instalados (Google bloc de notas y ScribeFire).

Ah, y por no mencionar que es de 2 a 3 veces más rápido en algunas páginas que la anterior versión.

MUY recomendable. :-)

gTimeTrack

Lunes, Mayo 26th, 2008

Hoy he terminado la mini-aplicación que uso para saber en qué invierto el tiempo (o cómo lo pierdo… :-( ).
La idea es ir metiendo las horas que dedicas a determinados proyectos / clientes y usar Google Calendar para eso (mucho más cómodo que cualquier otra cosa que haya probado. Aunque claro, hasta ahora solo había probado el Fenix….) y luego puedes extraer esa información y crear facturas o meterla en tu propia base de datos.

No es nada serio, pero se podría ampliar, claro.

La he colgado en google code (http://code.google.com/p/gtimetrack/), por eso de ir probando cosas, a pesar del jaleo que se montó el otro día en la lista de usuarios de gvSIG. Por favor, quien lo pruebe, que se limite a criticar la aplicación, no su alojamiento ;-).

Trabajar con 2 monitores con Kubuntu

Viernes, Mayo 2nd, 2008

Hoy he encontrado una utilidad que me parece genial, y que creo que me ayudará mucho para hacer las presentaciones sobre Linux (y dar un paso más hacia la despedida del Vista ;-) ).

La utilidad se llama xrandr (http://wiki.debian.org/XStrikeForce/HowToRandR12) y se usa así:

xrandr –auto

y también:

xrandr –output LVDS –mode 1280×800 –rate 60

xrandr –output VGA –mode 1680×1050 –rate 60

xrandr –output LVDS –off

Y funciona!! :-)

Mucho sueño…..

Jueves, Mayo 1st, 2008

Los pequeños retoques a la web ya están hechos. Aún queda lo más dificil, ir colgando algunas correcciones a gvSIG en el wiki.
Y todavía no tengo preparada del todo la presentación de Venezuela (y la de empresa ni te cuento, esa no está empezada :-( ).

A dormir, que ya es hora.

Modificar la contraseña de Oracle

Jueves, Abril 10th, 2008

Dicen que vale más un lápiz corto que una memoria larga, y tienen razón. Así que, aquí dejo este apunte que he encontrado aquí.

Por defecto la contraseña del system es manager y la del sys es change_on_install.
Si la version que has instalado es la 9i, por defecto cuando termina de instalar la base de datos te pide que la cambies, a lo mejor lo hiciste.
De todas maneras si hiciste una instalación por defecto trata de entrar autenticandote a nivel de S.O. y desde ahí cambias las contraseñas, esto es:
Ejecuta desde la linea de comandos:

c:\sqlplus /nolog
sql> conn /as sysdba;

Con esto entras como dba autenticandote a nivel de S.O. Ahora para cambiar la contraseña del system:

sql> alter user system identified by contraseña;

Reproyección por rejilla con MapServer

Martes, Marzo 18th, 2008

Luis a enviado este correo, que puede ser muy útil:

> >Hola a todos,
> >
> >Utilizamos Mapserver, diferentes shapes y ráster en proyección epsg: 23030. Configuramos ortofotos en epsg: 25830. ¿No debería reproyectar al vuelo correctamente para hacerlo coincidir con la demás cartografía? La cuestión es que no coincide.
> >
> >¿Alguien sabe si existe algún problema para que Mapserver no lo haga correctamente?
> >
> >
ya ha salido algunas veces en la lista. Debes bajarte el fichero
sped2et.gsb del la web del CNIG y ponerlo en la carpeta proj de tu
instalación de mapserver, y en el fichero epsg que hay dentro de esa
carpeta proj sustituir la línea
<23030> +proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0
+units=m
+no_defs <>
por
<23030> +proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0
+units=m
+nadgrids=sped2et.gsb +no_defs <>
Esto le dirá a mapserver que use la conversión por rejilla, que es la
rigurosa para cambio de datum ED50 a ETRS89.

Espero que te sirva. Saludos
Luis