[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