[Gvsig_desarrolladores] Migración de plugins de la 1.9 a la 2.0

Nacho Brodin ibrodin en prodevelop.es
Jue Jun 3 17:22:57 CEST 2010


Hola Fran
Hace no mucho me pegué con un problema parecido. Te pego el código que 
escribí y después te cuento lo que recuerdo del tema:

        DataManager dataManager = DALLocator.getDataManager();

        //Builds a new JSIRTree index. To do that we have to replace the 
default index and
        //when the operation has finished then it restores the original 
default index
        String indexName = "GEOMETRY";
       
        try {
            indexName = 
lyr2.getFeatureStore().getDefaultFeatureType().getDefaultGeometryAttributeName();
            FeatureAttributeDescriptor fat =    
lyr2.getFeatureStore().getDefaultFeatureType().getAttributeDescriptor(indexName);
            String defaultIndex = 
dataManager.getDefaultFeatureIndexProviderName(fat.getDataType());
            
dataManager.setDefaultFeatureIndexProviderName(fat.getDataType(), 
"JSIRTree");
            
lyr2.getFeatureStore().createIndex(lyr2.getFeatureStore().getDefaultFeatureType(), 
indexName, indexName + "_idx");
            
dataManager.setDefaultFeatureIndexProviderName(fat.getDataType(), 
defaultIndex);
        } catch (DataException e) {
            ....
        }

La cuestión es que no puedes forzar a gastar el tipo de indice que 
quieras, sino que gasta el que tiene por defecto. Yo en mi caso 
necesitaba uno concreto que era el JSIRTree por lo que hice una pequeña 
"ñapa". Lo que hace este código es obtener el que tiene por defecto el 
DataManager ,asignar el que tu quieres, crear el índice, y reponer el 
que tenía (esto es muy importante porque sino dejarías el tuyo por 
defecto). Mira los que hay implementados y el nombre que tienen me suena 
que eran 3 o 4. Ya me cuentas si te sirve de algo esto, porque mucho más 
no se, ya nos tendrían que ayudar los "gurus v2.0".

Saludos
>>
>> En mi caso, abro con una pregunta sobre los índices espaciales en la 
>> capa. El código de antes:
>>
>>    public static SpatialIndex createJtsQuadtree(FLyrVect lyrVect) 
>> throws BaseException {
>>        ReadableVectorial va = lyrVect.getSource();
>>        if (!(va.getDriver() instanceof BoundedShapes))
>>            return null;
>>        va.start();
>>        QuadtreeJts spatialIndex = new QuadtreeJts();
>>        BoundedShapes shapeBounds = (BoundedShapes) va.getDriver();
>>        int to = va.getShapeCount();
>>        for (int i = 0; i < to; i++) {
>>            Rectangle2D r = shapeBounds.getShapeBounds(i);
>>            if (r != null)
>>                spatialIndex.insert(r, i);
>>            if ((i % 100000) == 0)
>>                System.out.println("Inserting  " + i + " bounding of " 
>> + to);
>>                  } // for
>>        va.stop();
>>        // vectorial adapter needs a reference to the spatial index, to
>>        // solve
>>        // request for feature iteration based in spatial queries
>>        va.setSpatialIndex(spatialIndex);
>>        return spatialIndex;
>>    }
>>
>>
>> y ahora me gustaría saber cómo se crea un índice espacial en la 2.0. 
>> (Aunque esto admito que no es algo típico).
>>
>> En otro orden de cosas, en el plugin de redes se usa un geoproceso de 
>> topología. No sé cómo está la migración de esa parte. Si va lento, 
>> creo que lo mejor es que meta ese geoproceso como algo de redes, no?
>>
>> Saludos.
>>
>> Fran.
>>     
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>   


-- 
Nacho Brodin
Equipo de desarrollo de gvSIG
Prodevelop.SL
http://www.gvsig.org
http://www.prodevelop.es



Más información sobre la lista de distribución gvSIG_desarrolladores