public ShapeParcela(SimpleFeature f, String tipo) {

		super(f, tipo);
		
		shapeId = "PARCELA" + super.newShapeId();

		// Para agrupar geometrias segun su codigo de masa
		codigoMasa = ((String) f.getAttribute("MASA")).replaceAll(
				"[^\\p{L}\\p{N}]", "") + "-";

		this.poligons = new ArrayList<LineString>();

		// Parcela.shp trae la geometria en formato MultiPolygon
		if (f.getDefaultGeometry().getClass().getName()
				.equals("com.vividsolutions.jts.geom.MultiPolygon")) {

			// Poligono, trae el primer punto de cada poligono repetido al
			// final.
			Geometry geom = (Geometry) f.getDefaultGeometry();

			// Cogemos cada poligono del shapefile (por lo general sera uno solo
			// que puede tener algun subpoligono)
			for (int x = 0; x < geom.getNumGeometries(); x++) {
				Polygon p = (Polygon) geom.getGeometryN(x);

				// Obtener el outer
				LineString outer = p.getExteriorRing();
				poligons.add(outer);

				// Comprobar si tiene subpoligonos
				for (int y = 0; y < p.getNumInteriorRing(); y++){
					poligons.add(p.getInteriorRingN(y));
				}
			}
		} else
			System.out.println("[" + new Timestamp(new Date().getTime())
					+ "] Formato geometrico "
					+ f.getDefaultGeometry().getClass().getName()
					+ " desconocido dentro del shapefile PARCELA");

		// Inicializamos las listas
		this.nodes = new ArrayList<List<Long>>();
		this.ways = new ArrayList<List<Long>>();
		for (int x = 0; x < poligons.size(); x++) {
			List<Long> lw = new ArrayList<Long>();
			List<Long> ln = new ArrayList<Long>();
			nodes.add(ln);
			ways.add(lw);
		}

		// Los demas atributos son metadatos y de ellos sacamos
		refCatastral = (String) f.getAttribute("REFCAT");

		// El NUMSYMBOL 4 de las parcelas son las que a pesar de tener datos no
		// se tienen que dibujar
		// como parcelas de carreteras, la parcela rustica que cubre toda la
		// zona urbana y alguna mas
		if (f.getAttribute("NUMSYMBOL") instanceof Double) {
			numSymbol = (Integer) f.getAttribute("NUMSYMBOL");
		} else if (f.getAttribute("NUMSYMBOL") instanceof Long) {
			numSymbol = (Integer) f.getAttribute("NUMSYMBOL");
		} else if (f.getAttribute("NUMSYMBOL") instanceof Integer) {
			numSymbol = (Integer) f.getAttribute("NUMSYMBOL");
		}

		// Si queremos coger todos los atributos del .shp
		/*
		 * this.atributos = new ArrayList<ShapeAttribute>(); for (int x = 1; x <
		 * f.getAttributes().size(); x++){ atributos.add(new
		 * ShapeAttribute(f.getFeatureType().getDescriptor(x).getType(),
		 * f.getAttributes().get(x))); }
		 */
	}