-
Notifications
You must be signed in to change notification settings - Fork 5
Description
En algunas de mis pruebas con cat2osm2 he podido constatar que las construcciones internas y los huecos no se importan. Viendo el código creo que esto no es lo esperado. Además el problema que veo es que antes de que se descarten para la importación "estorban" a la hora de comparar las parcelas con sus construcciones asociadas.
Incluyo dos pantallazos de una masa realizados con las últimas versiones de cat2osm y cat2osm2 respectivamente.
El hecho de que se descarten los huecos creo que no es intencionado. Depurando un poco el código en la clase Cat2OsmUtils aparece este tratamiento para los interiores:
// Posibles Inners
for (int y = 0; y < p.getNumInteriorRing(); y++){
// Comprobar que los agujeros tengan cierto tamano, sino pueden ser fallose
// de union de parcelas mal dibujadas en catastro
if (p.getInteriorRingN(y).getArea() != 0){
coors = p.getInteriorRingN(y).getCoordinates();
// Miramos por cada punto si existe un nodo, si no lo creamos
for (Coordinate coor : coors){
// Insertamos en la lista de nodos del shape, los ids de sus nodos
shape.addNode(numPolygons, generateNodeId(shape.getCodigoMasa(), coor, null));
}
numPolygons++;
}
}La pega es que el método getInteriorRing devuelve un objeto LinearRing, y mirando la documentación (y el código fuente en Eclipse) vemos que los objetos LinearRing siempre tienen área nula. Por tanto, parece que siempre se descartarán los interiores.
Por otra parte, cuando se construye la jerarquía de shapes, hay un momento en que se comparan las parcelas con sus subparcelas y construcciones por si coinciden y en ese caso simplemente se copian las etiquetas en lugar de añadir la subshape:
// Si el subshape coincide perfectamente con su parcela o
// son practicamente la misma
// directamente solo anadimos los tags a su padre
if (s.getGeometry().equals(this.geometry) ||
s.getGeometry().equalsExact(this.geometry) ){
addAttributes(s.getAttributes());
} else {
subshapes.add(s);
}En el supuesto de que realmente sí queramos descartar los huecos, entonces sería conveniente modificar la forma en que comparamos si una parcela coincide con su subparcela o construcción. En este caso quizá sería conveniente comparar el "convex hull" en lugar de la geometría tal cual.

