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

Francisco José Peñarrubia fpenarru en gmail.com
Vie Jun 4 13:36:06 CEST 2010


Si es un lobo me come. Ya he encontrado el JSIRTree... :-p

Nacho Brodin escribió:
> 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
>>   
>>     
>
>
>   



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