[Gvsig_desarrolladores] Migración de plugins de la 1.9 a la 2.0
Francisco José Peñarrubia
fpenarru en gmail.com
Jue Jun 3 12:15:29 CEST 2010
Hola a todos, especialmente a los involucardos en pasar plugins de la
1.9 a la 2.0
Estoy intentando migrar el plugin de redes (ahora se llamará
networkAnalysis, pero las viejas costumbres cuestan mucho de
erradicar... :-p) y me encuentro con una serie de tareas y problemas que
estoy seguro que muchos de vosotros ya habeis resuelto.
Creo que sería una buena idea habilitar una zona en el plone o en
cualquier otro sitio donde se puedan poner ese tipo de Snippets para
ahorrar trabajo al resto de gente que está intentando migrar plugins.
De esta forma, también serviría para documentar algunas buenas prácticas
(y que el equipo de arquitectura señalara las que no son tan buenas).
Más o menos todo está en la documentación, y se puede encontrar, pero
requiere tiempo que se puede minimizar si ponemos algo como los "How
to..." o incluso compartimos clases que ayuden a la migración.
En mi caso estoy haciendo algunas clases de utilidad para los casos
comunes que me encuentro, por ejemplo, pasar una geometría a JTS,
traducir un Envelope a Rectangle2D para operar con él, obtener campos
alfanumércios de una capa, etc.
La idea sería compartir un poco todo esto, o incluso proponer un patrón
Façade que facilite las tareas de migración. Pero vamos, que lo que más
útil veo es poner un sitio donde podamos escribir los howto.
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.
Más información sobre la lista de distribución gvSIG_desarrolladores